{"_id":"@alexa-games/sfb-cli","_rev":"104-55ef603fc9f405100d01d29b2ec7e358","name":"@alexa-games/sfb-cli","dist-tags":{"latest":"2.1.2","nightly":"2.1.1-nightly.232104632.13","beta":"2.0.1-beta.18"},"versions":{"0.5.0-alpha.4":{"name":"@alexa-games/sfb-cli","author":{"name":"Ezra Kim"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"0.5.0-alpha.4","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-skill":"^0.5.0-alpha.4","@alexa-games/sfb-story-debugger":"^0.5.0-alpha.4","@alexa-games/sfb-util":"^0.5.0-alpha.4","@alexa-games/sfb-vscode-extension":"^0.5.0-alpha.4","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","path":"^0.12.7"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","mocha":"^6.1.4","nyc":"^14.1.1","rimraf":"^2.6.3","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"nyc --reporter text npm run test","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js'"},"keywords":["game","story","demo"],"license":"Amazon Software License","gitHead":"d7998ecb101af0909eb6eac02abe1b14aeded241","_id":"@alexa-games/sfb-cli@0.5.0-alpha.4","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.15.0/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-bj634xrKb/sdzKxYP44VAtWxXGUGCihpjolwL/HGPQ2+VX/f8U7JURb7NR+aH/70e0kUNXilOxYweG81L3qmMA==","shasum":"bcdfdcbbe4c932a92a34ea831b0e30bd05b15e15","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-0.5.0-alpha.4.tgz","fileCount":198,"unpackedSize":26870308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ4njCRA9TVsSAnZWagAAY4wP/0IErc2vwvdriswx30Sj\nVYzbEE63cf6e9in6yiv6i5F/ak+ZirNjUSBI73aCUv6fR+q/kvXwdHjQ9VAO\n2of+BxWfG1TVBnxw2vSI/Pct2X3FC2wB0jSKhfPb/pEjYSrK5Gr0fbctvcQ0\nVat7TdT1bf1IPMUJyxeia+fYLdaA2kKdV/+vUYum05LJoU7Qflr3iXEZ10S5\nL6QcTgGpIu6eo0aeRyIPkJsDWvgylyyKwU9BTOQph/Kiu1qljN9cSIWC594X\nuyq9IqwnV2BwnbxCkIW3xW4yeodd/fO4MciO16kW2Np7WuW/h8K/fgGFuzpI\nOkNAIUlnr0h78rxkaFONldareegu+d+vIU5RyGoL2VG6qPLAyoS6DQEscamk\neJCUTydtfBYQgQHkKyxbio7rbvLEp7DlL/ujNcJBcho+xo7fmPMJ7EDRuWlj\n+DiagphbupkEqlqjSMteGoQYGb/1lg8EwNnDDnq4ZM/iJ1wZNxc9ys9Vey4u\nNlIw6gxiIjJAI5pPrmUAsbuE3EhBK+bkkr5z3rANiKKYHzkTVT7DsY4Kjqz9\nYv43BYk4rappZCGoQ35PL7arJ4xGGYywyt8y/CaVNnAQNhLi+t92Kcnya1yZ\nH/bbungzE5gDDdhwQP/pVn8j03IlDB/9OfI7sYA57T2MxdYU21Zd7m3rZSEH\nm75M\r\n=FBwH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYJzLGHYjYOOwBHklGlT1MykV3B7mTFngPOUvpS7FN6AIhAIKGPL1XxNJ9mjCv5mOJzQCS7hDhxj/nKLSFrmboCrgw"}]},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_0.5.0-alpha.4_1562872290285_0.7138544991830309"},"_hasShrinkwrap":false,"deprecated":"Prerelease versions deprecated"},"0.5.0":{"name":"@alexa-games/sfb-cli","author":{"name":"Ezra Kim"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"0.5.0","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-skill":"^0.5.0","@alexa-games/sfb-story-debugger":"^0.5.0","@alexa-games/sfb-util":"^0.5.0","@alexa-games/sfb-vscode-extension":"^0.5.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","path":"^0.12.7","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.4","nyc":"^14.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"nyc --reporter text npm run test","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'"},"keywords":["game","story","demo"],"license":"Amazon Software License","gitHead":"a79a53dd173a27e8a4e52a387a8d851ba7ab70b1","_id":"@alexa-games/sfb-cli@0.5.0","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.15.0/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-s9kkQgyzRnbLa6oQJc1uxuv69fqFY5atgkecjdkfjR/po8BadY0+PJp2x+6ehehkxnd5aBV+s8X2PkF/hwEP4g==","shasum":"729373eeede9ad60b5b6074abef09cbceca6ebcf","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-0.5.0.tgz","fileCount":202,"unpackedSize":27153778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLjSNCRA9TVsSAnZWagAAGt0P/iwl2bqYsGHZk6t/+/vU\nXwK3dCT0pby/z4wl7oB3ZpTloxFf3xshAQvsW/wKEoVGXwjUAPXzK73dLHu4\n/MMcfNFQcRLJrsW5rBGGSIg58Dk5gZzMGnMxR4l+DI1FnS3DL51/wZQpjbqv\nx4sBIIxlRI8TOao3S1xBVkLrPNjP6A19r6aL1tn2nbfpVvMzCBc6apvxKSjc\nlf+cda3KkrFbduCMFKkQVvmWRJboChpm91m57rnx0dqwBjwpqV1uU9/dzgFj\nc4y2qAQf9Bbis1+SIddbE3aN5jPoFSPoWfV40bFk8/Amri9cA/Ok9DgJqtoH\njbhpt4gyD3OFT8HRTnomrdonBGX/GNDBQ5pnR59nC5KwKQLKZLkMNJBvEV9q\nkKEDcxWveX7wXkpFPM5L644egO7c1KyNJKLeoUjSmIa9rCbF7TrP/w+XSlxx\nQJiFMYSLefMewL2w/pXHTdQMkw6TOY9J/e5KLW3+c3G/EMDnA6Rfx3c0/xU0\nVYDne8hcp4J0srNMkJrCmJvzR+B4mOXnzfUFL6vZWTlahhX4qgyBHObdCsJ0\nUy9pbkJMfo+Zw1v0zmpDTqzC1eDsrbqctrovhNsZxK6FMKB89E4q6SrIHF/+\n203CQLc1qQTxmLAomYGtqN+OpDtPiCWn0nrL/RSRNPx92+6K+Yvrj9SJ5pvy\nYstV\r\n=8wBp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXHbeLlCTTe3R0145En0k24vfyy3SbIscu8XX6nzEW/QIgBUBxiOp2jAuK1dCiQi3Sh9vUtt5kQrg/jBkmOSymzgk="}]},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_0.5.0_1563309194921_0.35528114254665866"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"0.6.1":{"name":"@alexa-games/sfb-cli","author":{"name":"Ezra Kim"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"0.6.1","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-skill":"^0.6.0","@alexa-games/sfb-story-debugger":"^0.6.0","@alexa-games/sfb-util":"^0.6.0","@alexa-games/sfb-vscode-extension":"^0.6.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","path":"^0.12.7","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.4","nyc":"^14.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"nyc --reporter text npm run test","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'"},"keywords":["game","story","demo"],"license":"Amazon Software License","gitHead":"d3e7acfe2755149a07c37c4745f2614a6b19238b","_id":"@alexa-games/sfb-cli@0.6.1","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.15.0/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-YX/IiCM9PVLFpSAXSCMNX3G5bC1qGWsvhVv70QQPfiRbCoBm7X/+ePdwyIhsfyOMObetwMC3A9wGXmRsl7r/lA==","shasum":"4a5edb09a31015d8c546443e06ae382d63e7d5fa","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-0.6.1.tgz","fileCount":227,"unpackedSize":27354480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdL6BcCRA9TVsSAnZWagAA5dYP/0JVcUlSstqnmVka1y7B\nWFqrvUmocp6xjrOnXQXjAPaujCY2cC2NrTI6ZH7FvoNRtb+tm6hQK1B8UZjq\nnLG4uTb3eOD08pHXm4fhpZugwXk2c+1IN78nRwIEJblfPede3Xaps60uEW1E\nlvNdbQ09f4v+Y37+JF7HHvYwHBBXq/045RbbpvZdvPqqT3YBS9AjW6bgl0f8\nrXyCo1KSK3dTQPwOZLQIlNWpprlVR5cdupGqnl0VkxlQiZ4Pjk8nJ63jl93O\nU/VGzSjxZ3ocDYNfE17FP8UCjyoW1WUlFFDZsUEO3G7Ox0vvT5tNFfwAETaG\njkYw+HgknU+X2c9IqeAOvf8nlvaVg26iiHUrJgG7A6GaHizRSU26j+KDneeQ\na592cn4mOaWyUVzbx+dg8hMm0FwCksl3FeWKSzJSxx30QC+opNpxxpXx2Rzz\ns02qO/rLAce14l5xVIM0yJyC13a2E4HuCUcK5v88pBgFm3zzBierNu4TZMXi\nVqQeeh0uAur9DWBRLDuHxLGo46bGtKrpyss4fClai10bHpz8zfr1AuGzIGjc\n8nevxbl/XT+DoVEUpQAE6b5oUSvjGUYzqg7J2fapbH/YId1f4LIz1DxescIg\nA8gbovsMCByB3MEZ1LJuV4704aAbOXt77u4XEEjUD9E1ia8muxO12i2Pzf4D\ncjmv\r\n=DBKb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHYtQhG1smjdcXHce4en6JivlpE7HHZJa1ROByGQnE4AiBru9NWvPSyQJHrmPib0Xqcs7s6fLkL6v7KGraRpfB6QA=="}]},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_0.6.1_1563402331511_0.23612065968389628"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.0.1":{"name":"@alexa-games/sfb-cli","author":{"name":"Ezra Kim"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"1.0.1","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-skill":"^1.0.1","@alexa-games/sfb-story-debugger":"^1.0.1","@alexa-games/sfb-util":"^1.0.1","@alexa-games/sfb-vscode-extension":"^1.0.1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","path":"^0.12.7","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.4","nyc":"^14.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"nyc --reporter text npm run test","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'"},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"e302dfe3e8660d2f7f806f8016df5932b5b0643c","_id":"@alexa-games/sfb-cli@1.0.1","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.15.0/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-u66Qss/eZhgZr0/RdZM3UXuZqtqZS8NUmNtEWH8cifCpdAQidc5wVFdLE5MjHcQ/7n6FJlGNklmpbRnyLzkcDg==","shasum":"226940ac07cb93bbf2363adcffd2482317fb07ef","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.0.1.tgz","fileCount":211,"unpackedSize":26988442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMOaeCRA9TVsSAnZWagAAoPsP/RBqiUS0xiK+6WIlhSge\nh3mIGPSitKmAtjrmmLyDbNoMhDzGFXyszjGijlw0EgLOIVyl6CpXEqXDV1Un\nNunfcXN+1UMPcPqeUvQsIgU5Bd6kwYqy08/AfPUdoJAzZXkjb7OCnD2PKsew\nzeuo4jfFdqz2zqCD9dQ6jW++mOOqA3o56dGC6LEJ4q0q7FXOICI8H3Z2IEFX\n2zjGHEEY7/ckYM/VYaJ2N/M4X+agR0ual1klIks96sURjb+DdJrDOo5iGpEb\n4cRnm3dRkOVmwm5t4Z/DMRMfz5K/PSZcxJfhSmwKPJq4S6SuS0V6vD9cXTFF\nrhUtU8ZRObu0xL7IJRweeszSNtUEdJIgqs3Np1zjr7CNC3AuRhYz/ZWiG3m2\nS1oVNaGTnriDKwcH6CshfjZ5i3aVYWDPULG7XI0i7rKxeVmIvwwgtYPGW4dl\nPDFy+3Wz3K9LhrzDOAPl8gPxxbJiUMoiGi/kDJoyIRYjodZiI3g9e061D1RV\n4UDLVvTE4BGfgZnn/iqEkLUKcPBXrxZikCy0dGNfW4yIITJpU5JByAq3qBht\nvIhjcnsRfcQkmLQIIZ5EBe3a2vO80pChD3R+7MkLli/ahWErAnIo65Nq1d5I\nBt/dmqA/olL6wPlvpvFm1bhQybs8RDLQtg+3hQZkfKsSTmUtOm8NmvkP33wb\nXAQI\r\n=603r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVbwdGxJWBbkWhfSTLSQ1RzdZTDD/nlX3cE3+FxESXCgIhALbkiSxKQr/hLn8gDe/GBSe1UXyZijcyQsmSfZQphTd3"}]},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.0.1_1563485852756_0.6691393555868885"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.0.2":{"name":"@alexa-games/sfb-cli","author":{"name":"Ezra Kim"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"1.0.2","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-skill":"^1.0.2","@alexa-games/sfb-story-debugger":"^1.0.2","@alexa-games/sfb-util":"^1.0.1","@alexa-games/sfb-vscode-extension":"^1.0.2","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","path":"^0.12.7","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.4","nyc":"^14.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"nyc --reporter text npm run test","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'"},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"738294d63c8d42518d621535112806994c988971","_id":"@alexa-games/sfb-cli@1.0.2","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.15.0/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-K9i6Yi13g5NkVaK/vnXLpow/5RmWsjHPlRliZemGZKNzxwUKA1/z2I7BPmaJMu5hyNScn1yP4KV9z5PhZKUw3w==","shasum":"09c0abaf0a7a3b86735f0a91f6aabda038275118","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.0.2.tgz","fileCount":211,"unpackedSize":26988442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMOsbCRA9TVsSAnZWagAAStQP/2MZAiZ04mV0LKmz3qe/\nILtGdWN2s+oQ8J866h+yGcNYaWvzkb7pOIRq/XpduYLXbaTexlkQXVq011Vo\n8oXtPWSTb1yGYMhPhS5OIXkBNRttGiiUjOOhhKThpAXtvPJ8LUn0xi1+mwvJ\nVb9BSqEUVK9qvT2/YFijMzfGjQ8/OC0B4xO1qHNqimStMYCZlzbMBmtS3qoB\nV5FAXdmPTd5v2SEd45r/+Ii4JKysz4FF+zeIQiCa51DSBO9SlUoBJTFEYXyr\noPMSkD7BbMvpuretn6UECDuC6OAloERnegpR3z/Oew8yw5RWhiiqx18nDSg5\nvs+4TagFQT+68bNXgRx7v9w/7MKu0Wam79jYFs6F+1UlKQHgXWPEZFde0s/0\njzKaGzd2C8eO4obk0a21ErtiR9PYdxMDiq5rfpFZl+4Mnc+SE77ZxcHx7JZu\n1lDidPFFyzDQmctwW+OAsb/TnIW1MydE2L2a5vtO28RPgye4JfTvZ6Sp75gf\n8yf/i919uPyBhTosWOG2FClS0TIGAsym4s63o3Z5dqY0NwamXYkSoyE2yLaf\nlwE5lACcphbsavdkhWUHeF2RpPtzWxS5LNoKXFI2357EFf5NK3OGzW5ZeLYM\ntEleHc8aEbE7vfXNGN3MPFXMKCCYyw2x4hN/ed3zgxjmqS5udDAuNEQlvceH\ntfoV\r\n=Ay69\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnbbHqPC/8iXmvLGtk/mEB+DJzReh4fnEuiTPfK6AeswIgF99UUXZM/NS2T+WV6l/HH0k9tbzXFbEKjh/Mt9+g2AU="}]},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.0.2_1563487002781_0.8984963229890677"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.0.3":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"1.0.3","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-skill":"^1.0.3","@alexa-games/sfb-story-debugger":"^1.0.3","@alexa-games/sfb-util":"^1.0.3","@alexa-games/sfb-vscode-extension":"^1.0.3","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","path":"^0.12.7","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.4","nyc":"^14.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"nyc --reporter text npm run test","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'"},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"353ac3f881a3c3f73a5d503884bb8aa3dd7c4224","_id":"@alexa-games/sfb-cli@1.0.3","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-Czk56oGCm5ykqqc/0yqoOV6BEhWd/288x9ILxx+7PHKygkyHW16nBq/9N1cKbv+pLnyGg/BkMQFiOVLkBUNSBw==","shasum":"dae81f214ec737721144c5cbb8377a65e7c22244","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.0.3.tgz","fileCount":212,"unpackedSize":26988450,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPzC2CRA9TVsSAnZWagAArroP/0++zSBm6ugWUDWDcezo\n7XgrSIfn0jsFDOi/QoEQVolnpEUVIY44bTBpTaSyZG/AsIPH1NBAu2tb5AJi\nqvuGmLOdBGBdyjqf90RNfUjzkCLkV0UJw2AnEZkwKCf89J3bE0Ty96f7vKjQ\nHqZZehNH7qYw9/OTA6zUIgRRSs9TMg9vgLm3DUV9W4/wcWcWz8etVHrQkkGW\nmPQw0KuifzDcCAt1HfTWN0rmBXYhk6MrN/3ZkU9sRMjJekY/7w1WRILernJa\niO4qcyQxA3WSHuMD6ocI5W8os6nu2jzhw0RMdST3qnzA4LUR1/MGRQoPh2uq\nLjCp5sa+EIjPDyMWwIxSuF0ORxA21B8UT+ZUkcUKtKXDMs46BvaF80zwXAu7\nQ1CwTX6LieXUaiy5AwBowLEI9aQQ7EzTOx9vtKBpNxVjmfALVJQ4/jgxm/VJ\nC32kTrAr/OedB3qIVSZK2spsGH+f6zJ1Twzw5WHyesGB4ed53OKETi3yqkz7\naD5PAT5sSiXb8rFeJY+dY1iKL3T8NBlw3xqSd+1bXMyJhyDuES6XawmfRcim\nkP1NKTjaVEOSpHYs5siK5XZYAGrauG5d/4soHm6OXOCXv2jr6EjVyXj3CC3g\nQ4FQ/zuCHkPGHGYR0Bq8rknDLX7PTbEJHJqE8vJBKjXThhFUFdUob9luYIOC\npY4F\r\n=DbSZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmM4QVGR7h82mmO1oxaYTbzzCRZ5ukVU50p3WqlRPM1wIhAKGA6BsjxFL9hGHTF/kmzE8D3nMA3eqAsRT98JJkmIW9"}]},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.0.3_1564422324782_0.9736993240236969"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.1.2":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"1.1.2","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^1.1.2","@alexa-games/sfb-skill":"^1.1.2","@alexa-games/sfb-story-debugger":"^1.1.2","@alexa-games/sfb-util":"^1.1.2","@alexa-games/sfb-vscode-extension":"^1.1.2","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","ffmpeg-static":"^2.5.0","mocha":"^6.1.4","nyc":"^14.1.1","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"nyc --reporter text npm run test","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","posttest":"npx rimraf ./.out"},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"d2229835cdf2f25d28b2c484dc1dcbe4a750b949","_id":"@alexa-games/sfb-cli@1.1.2","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-HtuyKiwJ6yruF7ZP1r6nOAD1EmzQ5aVwQkjF4NTd4wEKm28QpS28mVh7BwO4Fms2vtBaNj5hJ1sAoc0+O7GmJQ==","shasum":"01d5125029fb40bd00e0fe0a5f5a1620ffa744d6","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.1.2.tgz","fileCount":193,"unpackedSize":72922889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddw7CCRA9TVsSAnZWagAAK9oP/0L65A/qQCG5AydEaLvd\nKUrUIBoqyfQwa2ZIIi1116a5p9w5J/WEO5J9LzoKqJ6wPY7H9J8g7Ymyokk3\nAj/Yga42K7ht3U/j+IuMNPJovlm0Wq/RkOMkzHQ/c3xqmCrcdJHh3rF9jJK1\nWpExYeeAW5i8rxj97P8ad8CTnjKhve1cEIfm+km4/cr99cy257pYr5FMwoYb\ngeVTgU7bg+mBElokicg5HnQYG7la6o3Qlz+c9z/CH03wKjyAF6q2zTL88Yv6\nv2dFRX8/cHsJ5nyD8rYVSz30LiiXLYrBL8454H+5fL/Dsmjd/7HC1n5Jsg/7\nkWlUMVkvMqcOOg3XQ9GA9FpKRI7YXXJiz09gBiTG9ksdMYiT0Z7B1LF6Z+aC\n6Dn86BxzTFOAqvdbNuRwL2h0bXOmDQqq6UJNN7qphPd8Ry6nNp6h4AuUsxpF\nW7eSHqt5Y6x6Nd2vMlO5AGV3o9XF6EEsFdPkTY4JyJCXiJwOp5vEUOZOo+im\n0HnJfe8UCeqC1zVPoiD1/BoQ2Ic/WLtcxlKc4C84kBEzAt5vV/ZzTB8Z1srB\nfjneZKVsaf++rNhtZW9TKRbsoEucD/unqTt4Yj6g/wkixbUF1lna5qe9SoPI\nWqYND4OEYhzBwuNKeJ39GHg0O/mgFEwp+0Pyg6ap7RMbzBbWQuMrSbv/HN+g\no355\r\n=74us\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCThWGrpojmoFbjtE/k4h6e3ifAyYCgv200kNeA+JVaxgIgZVxZd5gf0mIcuRZsoOKOoIcTZ7v7S3uOVixqk2BEE/o="}]},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.1.2_1568083648872_0.9246646279480786"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.2.0":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"1.2.0","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"1.2.0","@alexa-games/sfb-skill":"1.2.0","@alexa-games/sfb-story-debugger":"1.2.0","@alexa-games/sfb-util":"1.2.0","@alexa-games/sfb-vscode-extension":"1.2.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","ffmpeg-static":"^2.5.0","mocha":"^6.1.3","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"68cbd119a74a104523e5cf44c5da3d8a4c535c6a","_id":"@alexa-games/sfb-cli@1.2.0","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-474Y2qkg3Vq02u3JXx+mR+HkBc7ETnm+z+ECFFNMeO7kroVXT2V/g4hWYKDVpH5KxaUZBdfDiE3zkqw6nUtwCQ==","shasum":"85d6cdd63681b7c1f798761bf515b667d3e32951","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.2.0.tgz","fileCount":195,"unpackedSize":72964109,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkoM4CRA9TVsSAnZWagAAWd4P/1yldz7m0Sg5+SaBIioM\nNTb5F/LXhbbyob6g7WApFnrNpPS8pdbr92EyWc8Qwt2KXj4u59ZTblITkXvk\nLm8fD0D+z9RBDZzEdzpAWgPsBZXMwHcPKXa/fmhbD2vpGL+r5CCGE1HYS5+r\nzT02AQUJys6ugoyysNBuXTVdqyJDfXK/KZdL8L7HxaOqEeAiEdEBc6KQqNOk\n/I6n2M60kYxma9N4ls1qhRqPwVNXqA1V5B3ZmqBfcj3bsf+0gomIGg7vxZRU\nFE919U9EqbpIPsguBuvvs0TBBMZfwDU7nSDuBpCN514BFe2bxck6sZm61TPd\nt1DHDXsas4CwHzbPo2TrCD1lE5rcOoXOY9ItOp9IugOp9SknQdO43OdCmR1a\nJYrUfxvJCpYP6MV6YDtHtdqvGJfTYk1tvbOuZtQrOvUHMdo9MYPDLVsTbJbK\naO9LAebagikYTuXyU/L5e/5Y8IOGTMtw6zwqiO/zGXsuQmJEmhIUIxcbN2Ko\nVAaN5zYyfLENUeyVsUpo3AHMzizdEThETHhkN6bR5+RJs+wMV/lkYzk5u5ek\nmzUgqErhhrw7hY4rLIX3SSIDmvvsheBJc7JNRO4nqhRFvAw6sP6FPgSam6gy\nI2DWwSo7GeebQLW931aSnp8BmWa6eIi5paXBFcCDDgWnQcZJWLopR5A3DuBe\naRuv\r\n=2Cc0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVu8rzAg0Rr3usknZxv6x7MXDKoMJ7gTE+w/joyVLXFQIhAPSQQx76vRPkeTVdSeI5yw508y9rw0YaXyqzV0pNZVsG"}]},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.2.0_1569882934285_0.16389256083498083"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.2.1":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"1.2.1","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"1.2.1","@alexa-games/sfb-skill":"1.2.1","@alexa-games/sfb-story-debugger":"1.2.1","@alexa-games/sfb-util":"1.2.0","@alexa-games/sfb-vscode-extension":"1.2.1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","ffmpeg-static":"^2.5.0","mocha":"^6.1.3","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"fad2ffb1234b98a65c415f824ef3bdcca074eee7","_id":"@alexa-games/sfb-cli@1.2.1","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-nfQMt+yhTyjOhlM/wHcel95fXQdgGxi1FnjjLh0I9Nakff4ZIoTrrbYMOPh3ofolLBftK0quhJYCD7Q++lySPA==","shasum":"7ca54d40b2a3832c5b214a3ceca633f9d040020d","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.2.1.tgz","fileCount":195,"unpackedSize":72964670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqKeJCRA9TVsSAnZWagAAgasP/0TmS4VPuCJj8zGSHFdf\nx+7o1vHdIn4vbC57YLSkNPHgjlPf5WEyXOK9u3VCqR1Dl+wAbuOKGmbUAMeM\nI5oNsPuj+tAyRTrPmSzbKPm1HlwgNP8i+ryz22NkU4anzDWsyJNoOB58ewwe\nmzLDwncYIE1072+fAirNHBt/z7gfbKLvgFP8tWpAsajLy3JrAM6c8krV2Yvr\no6MU5pfogQa1LqrN+lMdFF7D5q9EeSdEkTdLnoVI8R0Rxf8U/XYfO1wYdcwV\nAQmGZjuMtXRLSWxe0nzlUSV1IL8adjJtZ5E41Cu1c3n405hH2qP9Hkn9q1Q7\n1MJPXFtHbXnCxOd9c4RXe/PYrL8Sq3Mx99mLEt2qsqb/Qu8SJSIoaU7wJ30B\nlcKRzLX23vbpv+4bMkcG+2xvvr/fHZYgNW1iN8JxFiy6XF4cREW95aaiHo7y\nrJCWrKhMWMH+Cy00ltjX9JuuXuQNoeIIFqKp5/RB3Usj+qQbUlbWedDfqfmj\nb5W9VqxirEgrluen+d0VcnDh2RPW3rybwTgQax0sr+GYYdE8DmgmCzsD2mKC\nVq8L5mET01Z7DXubd36z0sPrO74vhF/LHGXMJYDVCUt8HuEhHnrG9PoVPv1W\nW3qyBP7NC7nTWcDfMao0hsPJCGrFin4H4sO1UxTDnJ74RJaM2D3ZMZFPS1lM\ndaET\r\n=KMgG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXChOw54I4wLkkXoC31X1nr87MI7kqTBa161nO6GtGcAiEAowVcotF8T/zNm/23cZam9PMWZh2y3KwF2KXllcspTy8="}]},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.2.1_1571334024806_0.9008592172949086"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.3.0":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"1.3.0","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"1.3.0","@alexa-games/sfb-skill":"1.3.0","@alexa-games/sfb-story-debugger":"1.3.0","@alexa-games/sfb-util":"1.3.0","@alexa-games/sfb-vscode-extension":"1.3.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","ffmpeg-static":"^2.5.0","mocha":"^6.1.3","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"e40f094c3d1224f64f44bea979844f7bdeafbbae","_id":"@alexa-games/sfb-cli@1.3.0","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.18.4/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-uwitYm1dOI+QLR+igPzwdnJDKDlCBbVTApOjzfzi2stCHsQi6u50zIeIxR8utXNgxnCOlzruKbWk3CqhPkg0sQ==","shasum":"b4833da4a6c733a5d0b3e819abe0b56dcfaa2e98","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.3.0.tgz","fileCount":250,"unpackedSize":75400912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3GJlCRA9TVsSAnZWagAAj5sP/0AzgrIVgS9y2/w5BKQF\neMsTCJoFVPQ1hvh83++KpApY9TV4QZ4WhU3cbK6abdPpuAyrvd5advprdVUt\nVW1HDLA5A67+cxSrGrls0nRuAFPL9xqcCihgkCG/feeAzmaFe0X/Mo335vtR\nK8qWDm9IxltGC2y6lWTJMOg9l/Ew7W2gIR/MKAB7YtbHCpOML8mWNS29M5OR\nCZR7vQq1Wm7N6HahfyDtjLl7uKJyh0dawZ03zt/m2BKB6PEEJa5w+V0U+Ldd\nmoX+BFj50b9WDmzsnIq5VvIXDsTJcjfJmGSXRolQswufVZqQzk1XQXGRnUw4\nNICMQmf5TDFbbN9+QbO7h/MIqmpgSscWaO2iTWkLh/mOQOZpdOZOe8iJmQ1S\nCwS6eegSUvrP3J7+aAZfY/jVS25eyPE98AzKqfWdLhynN2jj2BCZICr3vaTI\nTNVQMfzQJ/fFSSP4jGldK4KeiHvNnOOv6nTOjrsFaOKo34nrYllM9oCy2SY0\nkexKdu02scUYuM4j0yBrTlTHAaI7Ln2NPDoNOaJ7ik+GKkRWJ7pnxAPdYypS\nG7DiiLl40SY0itE7Gj9mii1cIRQSz4YfBioZ3PPz0X9Dwl5FC/KzrUwC7Lyd\nlNxL9zCr9NwkP9RrviWjjw8e/BvC43lIxE5sejzXcYzlkasW1vZjCp9Y4Fyq\nQSgd\r\n=j+93\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoUUSFKtlFyT5tSV79w1Nl1W8BvkjRpvtWSFTE/peEBwIgJpl26mW8cpStiElwU/TRy7eq1fRlo2MIPtTswgWUwXo="}]},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"ptidwell_amz","email":"ptidwel@amazon.com"}],"_npmUser":{"name":"ptidwell_amz","email":"ptidwel@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.3.0_1574724196347_0.38995776104255175"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.3.1":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"./dist/bin/alexa-sfb"},"version":"1.3.1","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"1.3.1","@alexa-games/sfb-skill":"1.3.1","@alexa-games/sfb-story-debugger":"1.3.1","@alexa-games/sfb-util":"1.3.1","@alexa-games/sfb-vscode-extension":"1.3.1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","ffmpeg-static":"^2.5.0","mocha":"^6.1.3","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"65f3569b2c7255834392517f4868a2c4a1a3266e","_id":"@alexa-games/sfb-cli@1.3.1","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (win32)","dist":{"integrity":"sha512-KTX+LiD6dg1vZaXlY2KOIQ9KlyVwNSv3M+kfYCKBVUpR3qCupDMzzHOznyw2wTsGWkIfNxKXZS8XWggxVY8zxw==","shasum":"409f16afa1b3e55f7d007e9880c67c70277895e4","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.3.1.tgz","fileCount":250,"unpackedSize":75411139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5w36CRA9TVsSAnZWagAA2pgP/ROszFLQ3rIbzNdO0nf1\n/VAYN6g45SuqREdBhGdN92hGhRHmR4G/MM5hrajzq5cQY6PxvKFj0RxTfj3U\niE78WYP6C+tWSLv4fcXzKQki4yPgrKGJ4ghRae/FlCBeBT5mjK/RNNn9Txem\nTDWIID4Ewsqqd8vCfZ5bRHWuPJkPT5Wg5jMl+PLViG2gT9gCGH/jRdF5J8pd\nsSZN0f8t9ND4VGsZF5As8RKZdmOBSU5dRxbdxRFw+WE+VtnW4HHbYzSjpW9/\nM3Pdair/FJmOezxHZEisuRB4y+tpBw/8Bpmot1uBAUuxX3GWrhWgv+FCM34g\narmzAzV2iUaMLQ22rzzC6ELa7Ka3uW/7nEldFw4qAk89cRejXL7yT1fWFVIc\nS8KtJLnT2AcTQnQpWhZ04hLGRm0ZsCCe0Nac67KkPrpn+sIINHi7qptM+mmY\ntogAy5LumFQgcPoIozlbRPNw/ch4CG6WHWuLPo4shii0HgDiN9l3bl5DgmTy\noqpCEXKBlw2Ed3kj7GDVodigUQA/kngbEmy6cp8ofE4e7N2qN9lhQSSOyho7\n8QkWamHYggZDxJgHr1wL0GNi68vXG3bkVlVH+su5h2Uerid6yivQH3sHN5Et\nMM94gVRd92ohTbGjNYREKNgXGwyNcnPq113EKruD5HexQ/l9fVjaR00LNjiS\nCkAT\r\n=1CpS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIECGnzDgnAqCxUHg4qxbUkjEtKQuTJSp6jxtLWSvxLfOAiBSZYpnBeZDkRNoi+PN96e15iC2dVhTwMY26QdpkXibgA=="}]},"maintainers":[{"email":"alexa-games-npm-admins@amazon.com","name":"alexa-games-admin"},{"email":"alexa-games-npm-builder@amazon.com","name":"alexa-games-builder"},{"email":"wangdani@amazon.com","name":"danielwangamzn"},{"email":"larpente@amazon.com","name":"larpente_amzn"}],"_npmUser":{"name":"larpente_amzn","email":"larpente@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.3.1_1575423480997_0.04299458116356658"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.3.3":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"1.3.3","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"1.3.3","@alexa-games/sfb-skill":"1.3.3","@alexa-games/sfb-story-debugger":"1.3.3","@alexa-games/sfb-util":"1.3.3","@alexa-games/sfb-vscode-extension":"1.3.3","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","ffmpeg-static":"^2.5.0","mocha":"^6.1.3","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"adad3affd0fdf76eae82eced4e8d2c2923da58d0","_id":"@alexa-games/sfb-cli@1.3.3","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.19.0/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-BjT7X0Js1AWunyUvVYWDDmYGeJBmqrzvxbHAKlvhO3MBj0vPRk01zPDxUDRn6Zi4g66l+q8kYFTqP2g2mfEz9g==","shasum":"9052956aa0be0114099810fe1ac235167cf48932","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.3.3.tgz","fileCount":250,"unpackedSize":75401667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGR+5CRA9TVsSAnZWagAAkbEP/2knu//AjBQ6UETd4onX\n5cnDTPqKFnQyh4qu4gCMIRpdQw2dh9F1XVlciR7NFWGjdJlKO3DELoCdmTcy\nZUk4U+YW2W8R9vQEfLV3CM+Uwp+zVGcJpg7+dD1coq0/EebgpHESjaQYf85l\n2U4bZMzIDQgLKukcAGuaEMb4A1eXCOcw1a3eF9A9lq03KFwFEOZ8liKkopSC\nPSPTqKCq0bitKRcV4Zl7Ds24OvpRSk82iEjWYzCNfMDgIVcVR1mjD/P4ViBX\nzWB4up1orTsDb0DkxXfO03nLd83ByaKDXZlmkoZ66z/BV1gNXJBm6Xc/QQ+G\nEkFuUQ70Do4LtV5BCzKsbUaYIbWATQtYctGlLbNcYyntNFRa1SN8USdx3hbL\nzQ/X2n9jJaUys5a0ejxbY+23lEm9rwmUhcIuOoXI86QY+3sUJk+VFhA0YAdv\nOM5o9YPfLartit9MqLdf7ufNcgs2qHCeWrrJtBNT0wpOhWV0ToSR5q3jv+JH\n+xGMjlh6YO3uG/7L8hXx9pKGXpb9oY+22HI9szi5RyA1WQSVuRDwAZowoSoG\nWYYmzE4A8CEKsR5T4I0B9p3gWY7RUsR5LwhbtKgVD4pXpUEpHGoVPSgbHuZW\ngHA9aRb9mgDaq9NrGu/Y/Ls6DDqP+abm7wKAPBfYNscu5sJLy6EwMA6Dx+um\nqIrH\r\n=HLUW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFHG6joip2T/DvsjbzJ9tsYUkKJ8IQs2TIXBSbO4/LdXAiBVerKEZYB84s2od1v0BcMcla1V89u2zt7YYCayfi4K0g=="}]},"maintainers":[{"email":"alexa-games-npm-admins@amazon.com","name":"alexa-games-admin"},{"email":"alexa-games-npm-builder@amazon.com","name":"alexa-games-builder"},{"email":"wangdani@amazon.com","name":"danielwangamzn"},{"email":"larpente@amazon.com","name":"larpente_amzn"}],"_npmUser":{"name":"larpente_amzn","email":"larpente@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.3.3_1578704824390_0.10920545417559091"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"1.3.4":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"1.3.4","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"1.3.4","@alexa-games/sfb-skill":"1.3.4","@alexa-games/sfb-story-debugger":"1.3.4","@alexa-games/sfb-util":"1.3.3","@alexa-games/sfb-vscode-extension":"1.3.4","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","ffmpeg-static":"latest","mocha":"^6.1.3","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"Amazon Software License","gitHead":"f126bc1cab05915868e46e28e7d5871d3ab4435a","_id":"@alexa-games/sfb-cli@1.3.4","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.22.0/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-KKGTho88IYrWknc6Kq8wzOVhoAjdtVPTZU21NxbDUvmwZl0TwCEbp9jr/CABNJTm3yowJvdXJ3ne5eMgZYT6CQ==","shasum":"23e153ff7d07d91e227720076fffa784e8ac42fd","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-1.3.4.tgz","fileCount":250,"unpackedSize":75412413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezu2LCRA9TVsSAnZWagAAIFkP/jF7RtqwOwUJaQcCcGMl\n3r2G73zinO9RHGNVNnfHwYwdFuaiFYdIq6c24kYOF7xWkmGZM1/KdEUO4CWX\nEMPsjzxYS3tALnmrmKvS2tXLCbbzpGO9PAq+VP6b1A4gbhmzkE2/Wg/VwQvE\nI2RAobPPMxYjuh7O4xQ9doBhCSJzihxAwU98sBobigUGeoJ5KgTlakrT7TQr\nt2n7ljV7G6qEZQzSMr0TOX7nlyq+eVfben85/d2MelfWBxapwWH+nMbxNLKl\nzZxKw2iUM4llIhvVJN3v78GddItXeltXDlk0KuF1ydCbJ62B3MK6wozcC5mT\nrVX46G61Sex7MHdTkcM53ZRSDDF2D3+OYtO3wkxwlYBnWU3dqECRjk2/a9UW\nGu7FlFgxkXJfF5hhT1tSzgpC+ont91m1LL7Erg0m5lwaFDYki6OOLzcOJNRx\nNCsFKYk4VQ99Sq5tcfDaEEWy0Z5h261T13MFm7M7l8llGpSpc1ponGHXgTB0\nohfDya0IfkfmVXGxAKFbL8Pg1OdF+tGw9wzRRJXzT3htLdEcldFlg8JV/d6X\nPawMoeMY8SLgC4G4bUqDnDelKr7zmlqTtyxORiEjOArxcc+TNUHzUdS9mpb9\n56NlbsbhKamop/f3M6byF0VreWsMnBYYxzqSBJdv/hs/5+nikWla2p3LNGAi\nOxBx\r\n=l0gS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWX7m5IxkeqyBXG/v12wH3lx8Z6g9J15e1ECJ7K0DpmwIhAI0CBtclTpPHcKYzdVoxaamAiRQcdV4k/A87IY76SMAH"}]},"maintainers":[{"email":"alexa-games-npm-admins@amazon.com","name":"alexa-games-admin"},{"email":"alexa-games-npm-builder@amazon.com","name":"alexa-games-builder"},{"email":"afanzio@amazon.com","name":"anthonyfazio"},{"email":"cvalliap@gmail.com","name":"cvalliap"},{"email":"wangdani@amazon.com","name":"danielwangamzn"},{"email":"larpente@amazon.com","name":"larpente_amzn"}],"_npmUser":{"name":"anthonyfazio","email":"afanzio@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_1.3.4_1590619530634_0.1958591292667773"},"_hasShrinkwrap":false,"deprecated":"Please upgrade to sfb-cli v2"},"2.0.0":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.0","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"60552e6252f4d7aa3d4772a930369d29cd106949","_id":"@alexa-games/sfb-cli@2.0.0","_nodeVersion":"14.5.0","_npmVersion":"lerna/3.22.1/node@v14.5.0+x64 (darwin)","dist":{"integrity":"sha512-rzWWOMHtoKJvoJFvd0jEa2gEpITOmTkwY9HcCgDalsK1b8gCKZDze0NwiQV/qIkjnJUis3URX2wcl+QGxvGglw==","shasum":"65b2da902a456899efdae89aabaee1082fcd8fe2","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.0.tgz","fileCount":294,"unpackedSize":25088822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhJNzCRA9TVsSAnZWagAAdIcP/RK29Tj0OwPykQUv7tlU\n9cq6HXTTabyw9Y2vSZXSjkAFlN6fjTaf6NS8fKHJm60ykBTD6GyXfwJTzsns\n4Urg48bsZ1roFqJoGHq4HYspKVN4rFwKmRcge+fbAkyEvLDdITomO+GNB6KA\nQzePY/GODvckhaTLmV4fQspQT5WmyvbYNpm5UAmdU+EYeJp7cmwz7WWj1Fgp\nUF3rIdMyuXWqaUUJezlkxLi1iva7+fbD/eMxr1kWrs7ZiuofAT1XB/Bliulz\ntBCGb2+gXmCUzEYVAhXf3b5+JmIYuFl+2VdbK5iiexIMF4g0+2gbaBZXo+xv\nH2dwqGB1BgPhnFKCeJZlAANkDQEQXBQx1+ZT+FTeEPRNIFsXL/zCK5Gkh5nB\nOPnTi5UjY5jAYDFGAFyaNFvZylM4dYbP1M8QW5OCKY3/RWrCHdi0zx1q30Nd\nrZ298Cu+7RM6k0f4QqSC5E5Diemfw4NpLw9RIdr/ivcrZhgkMYjZiheC5QKf\ndi9Mx6sB6sp7ui+tfJM6a5EFa8V0bShNu2cps2PXA1YwFPDUlOGgwr4ni2Nx\n2VJBxCxNj73/h8UZKNkPBdUirG00deDhsqBOTPcWzek8oFG9OlpuoTPm1l5Z\nFApt7Yt24Ni2xzYR6+vg4IfcadmIoId0N/DO6LVFfURheSFzNmFyeSJ1ifJB\nmb6x\r\n=EX62\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOm7WqjMht7JNXw9spXw9S15fnrOWqdcPTw7BZkpRsDAiEAoDvxyxT9tKmIkjwHeyajMmaQcnYyeYXge65INToQ/vE="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"anthonyfazio","email":"afanzio@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.0_1602524018537_0.4763886808317941"},"_hasShrinkwrap":false},"2.0.1-nightly.190375924.7":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.190375924.7","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d72b89288ff85a4047af8eaa3f4a6532bf712d8b","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder](https://alexa.design/sfb-editor-landing-page) for\nmore information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Smiling...');\n    if (this.smile) {\n      this.logger.status('Waving as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.190375924.7","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-wFQ6yxZf0cmc75P3eHDxzOHZnHoubKBmub8FRhCO+n9lB0PBlqKNb/ZNacOKYp4cSw64pEQ/eQd1KQgjhWMMPA==","shasum":"c09d74848190c1d62a2f17e1f8b31285a8821cc9","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.190375924.7.tgz","fileCount":292,"unpackedSize":6313653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiQPSCRA9TVsSAnZWagAAs94P/A6z6odNXDs+7yqNVrBb\nsZj8phbxD/L5r3NAHx9UcVBT+rTGogMFjA2FQldn8T1HgFZUu+8J1ghC5SNQ\njpH7j19Ueleo6DgD4S41+6+oUHfSGyM/kYRO3ylrAPOYQru5Hs869JujGfLY\n2bPIrSVZTV56uz99jgh6vQwYtUfjHgJKx2NfZB5WLHn/abW4xOj4LSdGaNB4\nR3AeDPouUTHlddQC10ivSKSTtCCGfv2XCY3Z3wJV5KWlyyPp+8vSEgcqUHzx\nVrNvJoiP5QGEgh+X37Iz3orichnlVSnmB8/LcLk3EKeJCXYSNM5fFJNb9Kq1\nT7VQsInxUh1vcDqjFyvlZcVbyLnFMeamk+fFbo33lHo1piS2fAZmJDmWWqOD\nLZ51mE9b/jK8O+G9KldccosN9ADE1cyTnm8Sv96ZQpV2wBhjpcR21iUvSm67\nGSH8Dtt2gk0OHcQoXM1f7VqJWRgKt+UdMbZi/MKScFLTGgb5u0yl2lpSMVQI\n7SayUeh1NgzUAfYvookLhSwIvEm+PKDRaorC1275wO5gtYfZ64/F+wBwrfcs\nZgo70aoChFtiGoCL7d0VVCasWxrOxIIY2CLIA/Ar06z2DBkrQzuphsBZ8Ju4\nx2nEXHmPBbys9+SvKPqsGIdOD0gXHpQHPcgbRrWTReNQk9e4C7fpru62r5bU\nzvJ/\r\n=Zioh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDy4Mbm68qeg7sBwB4v/lL5AuV9++sipbt5Zp8bodLy0AIhAKzyDLoc7emCWf0rtKxv+SnIbd1ovL45KgSayWY9r3yO"}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.190375924.7_1602814929519_0.8271620219722122"},"_hasShrinkwrap":false},"2.0.1-nightly.190606101.5":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.190606101.5","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"f8acdda47b38d310b3ed65ce26e1acb234503742","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder](https://alexa.design/sfb-editor-landing-page) for\nmore information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.190606101.5","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-DDXTadSN1HIUuF7RwsZf7f3jMcnW9+9Dt8NDVwVCL4P2SyosXlg+RPAsUOiAgch0rymek63qb0VVLGlTiNQaww==","shasum":"23e96df83a52d7bf056b8e82ba710aa173c6d83e","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.190606101.5.tgz","fileCount":292,"unpackedSize":6313896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiliRCRA9TVsSAnZWagAAEzUP/3yGwUS1ksaauCRkl+8i\nOV+e8gHgueB9M/fHt09+mv9XbZMhwLO8oGW2UvOWSqowNKah6rbKG9MHT47K\nsVZeCpG4kixt7CtHiRiHkqSVr6oQ2N88i2p8k1doABiGBX0FeutBwp1hr0Es\nJPu5YyfKVFkoQffBp9ifo4xysHg8zTRRCO8p6FQCO1DLl8feI++bResqc/3S\nhIbaOC0UsP52oennuJMuEKeGJZeRJOhXLzyMZJxeVSstOaUbB5BxiFTdf2k3\n2W+9tYAQWjosH2Br7V7Gi7774QHSUVqe3MZyRmGUJYRdJTQXf/RIjWkexKJ8\nOLumCi5AT6q/c/0f29rfX72R71ETRMAQnAgrF4aZxZ638ZcYTbeZptOmX7kJ\n4sFxBJKrXzH6aam9cLVl9jh/DYP8lXrqNgYSwyaCFqwwkxQbTe4n1PrYusFT\nNV0lWWs1087lK7BmPSxoeWvJTNPuo/vI5nnzWY6ma0v2MMUTsyLwyNj6QoH6\nJkZoGTazaRsGYW+aegZoktO9b7NjqRRzxMqrPcHDdz30WDyZI1tUkb/tfX4H\nNbIqMka2xyTZmoPKNUzpnwID/qFoJYNxa90HnQE5GgOeuwpYL7BEAHxzyykK\ndohPzYHnGj1pjySf6lMfeBHJ7RpFtqCXbJRxlNb7rnYDc3LhXQ/aQbwBC18o\n1jH2\r\n=YWOt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTxCZVoF81GSQPxz3DZYC38dS2y/sleL957S8nSYyJKwIhAJxJ2W0akDYe9Jb85jgKmeWr6vrOYhJgCBBye00RSnT+"}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.190606101.5_1602902161144_0.049400460750698816"},"_hasShrinkwrap":false},"2.0.1-nightly.190712754.5":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.190712754.5","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"f8acdda47b38d310b3ed65ce26e1acb234503742","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder](https://alexa.design/sfb-editor-landing-page) for\nmore information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.190712754.5","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-UcjCAhI5sxxKUMkIHw3gjXneX1YHcdwXcbhkC2ybvG0IJuhbKVxmZxiyKJKTLeRqKQKhJt/dtUGCxihxsCV/Zg==","shasum":"841872bffa414fe579692f976b5a03ca328106bb","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.190712754.5.tgz","fileCount":292,"unpackedSize":6313896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfi6+uCRA9TVsSAnZWagAAgPMP/AvmE8bDV6IHccuUeCq2\n0yanVvGW0eAtHAQlG5HxaWB79IXiRJbsh9H+UbI0VDpwDzTxYifzaf0a/bx8\nu9Mk4jgIa8O8dgsJnUTZfW/MfUDQjiwD1kpebH+r9789A5j8UAWqIVeB1bFq\nD3UBcoOPG71rFUHvOdWNpk1rFnXuhGlBZ3zm54VOhE9nmomythNAXtzcqhQi\nEGhhPfJMhnh+FYJzcQk+CgipidVEtj2exAQ94AfdP0itUmrTzzBvFG5UaMVA\nBSZVR2iYVCbdu6FCF6I0Kpnu3NIapG6vOTRPpiX32P5ZRgMGbvmG14BAwRcG\nVz2Txieov7mGJOaw7iXNTHA7PBNGzobuEJLt1E6s79gZXx5LxsK0m2M9rlSd\nTVCORdPv+17qhaGwGMsbsZynADEXwjO7shi+JUUpCGeEL9wQqOUz8CTRVl5N\nEuqck/hurZNhoD+H+eijYFgXOWp5FJ9y4y7Y5H7o+NDX/JWO+A4M8QXXBPRi\njhO7eCcTWEGOMxB1KnvO6PyDIX29kqKIw0oN6L4nq2aEOxkVlnsBmpUfKHuA\ncqAT8fOPoIahZ0Ql2NydBgwdSF0Ac7g3FO16qk6hH/9oasQMM0r4Xd3W8DvS\nR8S+tTwSE3rtV5ipgb++vlaw5zuNuFrw3gMaFVDUpk66lQxkVo67SwYQZCus\n/RNs\r\n=REMX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZTcdq9sDhA4KqCFXM6oX/9eoRRYa1d7r8uPB/WCKoswIgOb/A12Dl2Mk8257WWxH27v45ICvsTDTfPaKd27WIap0="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.190712754.5_1602989997655_0.4810910890873539"},"_hasShrinkwrap":false},"2.0.1-nightly.190723673.6":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.190723673.6","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"acbbeaa5ba1096f6ad285217febaeac4ac2f4a98","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder](https://alexa.design/sfb-editor-landing-page) for\nmore information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.190723673.6","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-REOG37C/wtuw7bIEfYKZ5GEuGDzwOYKfIY9NXP7ekUhqrUT2+EklWQKipNqwVSx7dBkfNedEoxKzQYzyLIEVgQ==","shasum":"2eac5b7083b8762d7cff10b760c32784c698563f","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.190723673.6.tgz","fileCount":292,"unpackedSize":6314354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfi9p3CRA9TVsSAnZWagAARHYQAJpDtKJ1yrU6DAt23VZM\nGlWf6GIfSrS5hp0iuwDeeaIx+ONanjjUauW79sJ8Yw5CnbLqcqkTwmIru5tp\n0k+dvE3DrzjoFb/S/9zWnd4+2Gg2TFrv5npkq3/qTAiudppYlIE2p/c8KAb3\nltzAyrIXeYyGf2X3EApZG5an5caEXQXazLSvVp3M32ZjB/8tBjB+KqVI3ml3\nRdXgAvyezVT1h9w0EXP5NwjxZl0kpaor3FOSAFya2vRAK4TY5HFPyOyH7+t3\n5R6NRFKrDq9fXDpprvASkev7TQao71XkW/XrGo+bvAbiDvlKjJXJ6s4h1Jv7\nIKhPV/2lETgBgwMHBWFe8I+CteB11ahR0J5NIEzk2DRCWuUMKBj8icAqcHB6\nGIPZBGTOvBvZ3k171p6zhxCbPjpCllMHhlYnPEzVqEXEvejlsTuHLu5aD6pC\nPwUjU1yAhTBsDcdrRVIZKcblJvkaBC52MWmI58kPVRmAfUCh182uYLCtrk8a\nTcZg7Jq2C0ZMC11VUc3nqR3jsoY/UVpwAlq7X3KqkDRhvVB5MQ6C4WVsnEkW\nXDERqQCMLKqXKz7HE7w67p90TE3oqUh9o70Ot+qi4CW1al9D8j7UFboG0eRM\nkI8lyhDQEuCu9qI1kjrsCjCUCJnRrteY/75KgGnZ+bWmNWo21aNvh6twXiHS\nXjM2\r\n=zcpM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+fG2thLRP8JBjrrI7+ATHEnf5/1D1/UjZrHz9CqFLxAiBPspo7Smh0+U+bPhob7ntXHLezpr+5kcAKH4nrYsy6mA=="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.190723673.6_1603000951142_0.5447963026853779"},"_hasShrinkwrap":false},"2.0.1-nightly.190723771.6":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.190723771.6","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"acbbeaa5ba1096f6ad285217febaeac4ac2f4a98","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder](https://alexa.design/sfb-editor-landing-page) for\nmore information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.190723771.6","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-zxhr7fTBIiCicZs6ktZ76Laujf4WmP241TkkKWrg4Uij+N9eKMhSgJxUamZSfs2Ka1Q2qzws5FiRnxlZVFdkjg==","shasum":"01e5c304be58092e5f732194b2cd5344e5d33324","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.190723771.6.tgz","fileCount":292,"unpackedSize":6314354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfi+B3CRA9TVsSAnZWagAAUKQP/1usiEhz2QUFJV+AjRFh\n/1vmIlwm4NWfTgEkwWJh/7bnuMWWvf9NfBRFzle1VcRljtbsMCQ2+GbW9oNB\nvnHQjpMmu034//FsZKRieFlfu1/hgQtgqpLAPhMhMde640/PzS68nOY40AQE\ngJa909e1SGJfiPGtO7fmytZ2QiFmSV7ypdo3z6WL3HSyPOudS4Kth5004ZZ5\nOmQehX38qc3gnZRzjfyaapa2FVZIbHcRYibtM6g4oalpFhmAVVGxHwlDvkaL\nrslQ+VD25YG8Oe4V3t9A4kC5PxHVY4CK7ViiYuUMGl2A9Na+cTw1UygnEw79\nrBfzn+hIzDoYMi7imGkUGp1jYiqIfD3pPbgvnUDn5Y/3cX7cx7/XltTOc75o\n5cZ8j8AWTfdShiC6o8lA32Nie1bdBCiMg+siF+RjkymvpZdsQLsJy6z5e7i6\nSR8GrLw4M7cYVwD+8moe8pz45baFcsA8RFpPLwLcEzknn8zpglM6poRQCIE9\n06LcTeM2UXZcXn1QHPkV7LQkRzBrprcQFUVq2L3FfS3XqYHAn4MKM8ghHmul\nH2cpn+9hsbOXz/ZsSug3gqE68K0kvlllMQCEPvcpBaOkyXYxQ/Hi6Nr+O7ID\nncRgqG9THlroFPDW8fLNEVGe6r1QGYE7Ba0pG0L4IvMMtO23lPThfpA+Cl2+\nCxVd\r\n=oBGF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKjGzfVs0/gVjZuRVnDUcWUo+76q8QegeMVWKsovKGQwIhAJs0Fnf0JiwaMkc91J/ogaTwKmOwMq4b90VOssXgw22y"}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.190723771.6_1603002486357_0.36571200698468975"},"_hasShrinkwrap":false},"2.0.1-nightly.190886605.6":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.190886605.6","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"acbbeaa5ba1096f6ad285217febaeac4ac2f4a98","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder](https://alexa.design/sfb-editor-landing-page) for\nmore information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.190886605.6","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-GhRuMT7Ta2iMeyo4AxuGCRd2285/ROSEDZ75RpgF/xqXIVNfVG1BNcyT3eY/r9SvA0PP/JX6a6VeFvFkJpppWg==","shasum":"c7862c83ba56508600251730382cebc866287bde","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.190886605.6.tgz","fileCount":292,"unpackedSize":6314354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjTJnCRA9TVsSAnZWagAAybsQAI6RH2SdQNAgFEs3hP8I\nhvIIywJkUMKUzDmKNOmVwlRM41ICCHTD6vACiu8vqJVvKTjy3w0HI1ZBnvKS\nNVKME6ipYcvuM+Fnrj8JvxOzwomBIO/HAKSWs8y9K1rta5Wt9d/50fYprekk\nDQwBhY311KNYa133k/rbfcYeQz9Y7nUqYjYkysPx8Sn9hO33uApj73m7/kcC\nDWL7oBdpX5amkhDv4TfcJ02YzJpMCAlmvvK02r6ESJ2UYKMMjC0Mc6K5Z0bI\nFeW+/OMhgfLSKdGuQA0f5q12ZgqDi/E9W3bpBkKy30y28tgLRuv6td+2Q92l\n+6vvLWhr/PapvfnTNxhOMQdsMafvTBEq+x2CMLO94rcjpHi/SFEhl6Qe3IeF\nNaoymGcx4/dwNivY8qwzpOXKP4+U3wdt94KKsWgb5bN+17jaeEa+ALTREKNY\n1+q84nv+9nP2DbAs0t4yqLn/YzF7ghQ6J0C/ic9h/rZdd53RHgYVq1MoRZVR\nIORr6QpsHr6SNE58EsNxlE+5rlWtNR2Lz/vo2p+1LhXZUgCAhqg3AMJyZ4GI\nrNHAFeUVyxUiCRQwYMOOZLZb/2W7uRgQaCnqsodsfHEHA4bFI1MPyo0anV+L\nFjyGorRBm1wLyM5W6GiEOmIvwHX8uNeBpwU6f1KcjsLaCq1rN5gN9UXk23sz\nBfE2\r\n=j8dZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDnYoDOznCOTgQBMNw/+O0QCC1XTjD/0IrnfRSDmOYBhAiBzstN9Ij/iaaw0JpK21Dz51VAHqtFnlypgKFoDpVVy4g=="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.190886605.6_1603088998468_0.5265960862543491"},"_hasShrinkwrap":false},"2.0.1-nightly.191064231.5":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.191064231.5","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^13.3.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"ceac7e78897c544f08f4381c90988dedd5187725","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder](https://alexa.design/sfb-editor-landing-page) for\nmore information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.191064231.5","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-LC2tr4IrLmxqmvQyGmIY6wtJRXpH+Xi1iy6CeSNTFSb7EujdCPLK3UXlIXXMWkBV5tJeMZueKoo3tuq5OaL6PA==","shasum":"0f70659373c393d270f8d70eba93f1db6099a8c2","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.191064231.5.tgz","fileCount":292,"unpackedSize":6313654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjiNjCRA9TVsSAnZWagAAwYEQAKJcpm+RPMe5xa+79xt2\nU7hHEj1CGACS/C/EsOR7OEdHgPeJQRjmBcgsHosslRYrqrLJIOjqhNe8hG8C\ncu9KHs5Sn0mP77lX3jwQ7/KbglYaYOWXX96ar9qQgsoZkKxD3dzDnby1xNht\n/ay7Bdku5YfkRS+U4+JNHXS6clljirrxujGqRMXVJgyjS8l3anP4Bfbaa93B\nM820ZwADaEtyhplZSAEwxKO0rLMDvxwpQzOlj8JFx/zt9uLXflT1+DMd43Q2\nByIcYqBE+zkco1lpOo2hxk/TrzEFyjNACgZZU5lD2WnOQH5EKGn2Ii4h6mdc\nI/h1LZIHer8P0jVvyMBWzszZy7UvoxAwPWSyo8pqTjhPe/ZOGYNH0rPmzv2h\nGydBmwIx9aHPDf2UfwCTbuOIpnn+SL1oob3xYZrLdYyUtj8r6j4JlY040Atu\n8vGzsIvOnXCkEO6fYLuoJgWO6rZZmu2vG54Jk7Yqsp5dOJlMzBWy8DhzgzMo\nQnrD8DodZeEueBI6knn645SWsJB+xXhK9Cf/tNK/KQ3mTtr9L78DsCHTOgnb\nuVDM4wcrjiZ5pI+BN87fA3HU4FbQB7gR2Eqn6j6vWoAoQX7XsoCT1fEF3Or5\nVQezklVVSwUCL7dM7GZtIijPvKFCNzW7whBhs3YaMWqTS/h1uvKesw/kE85k\nNvBh\r\n=Ptk1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtBwJ8ODVa33PkX0K1xkPyIcO+cXRJNkIzrIRhLCXNyQIgS4Hc17tNY7tzWOQo/wtluQR9pVcVrKNYQLRkBe+rl60="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.191064231.5_1603150691337_0.9353460766324833"},"_hasShrinkwrap":false},"2.0.1-nightly.191290864.8":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.191290864.8","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.191290864.8+6a0a963","@alexa-games/sfb-skill":"^2.0.1-nightly.191290864.8+6a0a963","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.191290864.8+6a0a963","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.191290864.8+6a0a963","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"6a0a96350a3ddbe006a5af15972ee5ac69eabe1b","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.191290864.8","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-S4VFtTJ26rjY/M6Q8qNvfNfOyML0FgdOQRHKvADK3qL1OJs2WXhrdTE8OSiVKb8gES0xlWZ6cWtUTi02te+ueA==","shasum":"3e61533474e02a122cf767d166b5637c1ffdd502","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.191290864.8.tgz","fileCount":292,"unpackedSize":6319561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj23qCRA9TVsSAnZWagAA2ngP/j/XBBQfI17GgnQfH2Rj\nUNKD/bdH1t+vUIy9TTLdWUCH7bKdTbicwr2BfqHds0g5WoPNI2rfQeI9RPEU\nv1aE2e+qvHVQKXzM+rz0C7yBwkAvbF5GBoRuE4cjfSCfjMs4Avh7xV6+Nw5X\nfZjcj+vjuDnM6WtLM95reK5vDJ2hMcMAJ4GjMV3h5hr/ELGVtaPO6dogQSaI\nClmv9N5RUVFzXHwECgLHXgwE8VDDiwl7ZjGZKsgzP6sI+DwFDOBPBfV8BTyZ\nX6cRR40MkJeGClozefCa/u2DzCUUQWZyZvZkLqmR52dXwMz4uC2vm3hMPD/z\ng2h/vYW9Jky6AuZdKShmynmH2fHAxblHODTLILMZyNqcEQ5tcVIV6fizQspV\nMjg8Es1Mfk0hvALAi2oVOPlvZKm1Q44BzwlR/k0hz7GUoyZsfQaG8+SFfi6z\nyypCvG+0C0J2E3DAe7hZVNoim1TXXhg2XdJjNUo2lp3++OhgqWPi+3040qDc\nvJzJpyQIO2jYPNH0PMYijc1LJvCEqe+la8N8uVgyc0/g06v859RcIi32hUan\nwdseq9Y7naGZhFFSj743nLBs2OPssJ+1LznyJlOLxsbsU49dY7DPVhcz6Pwf\nNuozwuk/J/xYxliAbmlKWxjUe21u9tS+vpydfXM35OiikPLi7dw8vp5KQg9D\njI9t\r\n=P+9Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKGEVy9AeZB4RzfxfFgh0EoUsuhGBozNhTcaL+aew4kAiEAhfm20oF1zD8IZkHAIvaElJaqeTAiLK2N2MMC2vXHk7Q="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.191290864.8_1603235305997_0.8462617239165524"},"_hasShrinkwrap":false},"2.0.1-nightly.191551805.8":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.191551805.8","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.191551805.8+6a0a963","@alexa-games/sfb-skill":"^2.0.1-nightly.191551805.8+6a0a963","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.191551805.8+6a0a963","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.191551805.8+6a0a963","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"6a0a96350a3ddbe006a5af15972ee5ac69eabe1b","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.191551805.8","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-dzEiQUcstHNnFGlhLpFyw8OR7ZIaAYYxVK4LooMsLtt1aXCl8BYCHuhOCxnKiwuTBqHJ8ex91+sA8EEkHRgMdg==","shasum":"3562c2aa0e27e267ac72c07c6c931636419f1d16","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.191551805.8.tgz","fileCount":292,"unpackedSize":6319561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkL+ECRA9TVsSAnZWagAAQugP/3N6/KCq0qZ5Nyos3+oT\nEDT0KTQSYpKW1YJqLBMPjFsIIT6rK4jRp47TqBycSWzqmEvGuA8neTUErIUA\nkHJItImd0j8O0flnIGUUBoytQaIK2SqBtVfGmpx5Wq3kdgbcXUtWps4iHCN/\nj7cff4GZniIBb2eNKnxh0iGsQ2mIxieOg2mIj6qmsKiT7gF1JmpmaHhNfl+S\nQGu5H4P+VcviRrETeRfltrrtJ5xtDL+ziCrYVQtWNbjiFLT8Sz4cr1/7Mt/8\n6pRYMSWkrdXN+bvqO4bKVXWKDAx8aE5O9HcD4Gqnkj2/0XCXbCzMvcskV/OS\nvd8nKJpmkMduj5E7gVaSTFQwp+/JZQJHf83RDmPwm9zClt0dDagFXgyWGHf7\nJFYwWenkdQuKk12xIroHDRQMHb1x+h0vZmyxRjDIgOwGwh68m8ucsxTIeoL4\nqJ3BkDPJPu0WbHvrwsM3RTydHouE3Y/0ew2fLK5Ld82C9XecxOzr/DFYZ/ag\nMstA44lp/mdge5Ks60zUzGAlMGArE22+2zLt+1HQBjikPDLGq8MV/5RdcQ66\nGV0+bxgRVcgAXbFMvebnr1NZ7IEuDsgFm/GriZPvuP42Mb6bbESOmLF8PjQr\nUAQ+v4qJ+zsDEzOGgYSHgUMQ5JJl4CBxjfQVbr5rf2Oe5lJmHlCZgMNEbi5A\nXPR+\r\n=Ye+G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICzqgxvHQ8POFwa7lkJ35Q0NsDwxG/NtAmIJIfT6ttB7AiEAnwu3QjqvUx+lis2ILC/LfI9NJ0Uzm6mani40UWN+0E0="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.191551805.8_1603321731817_0.9985979504240359"},"_hasShrinkwrap":false},"2.0.1-nightly.191774115.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.191774115.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.191774115.9","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-CoCl6+U6VP68ZiFCq40wdPGTXDUCpu8cgv2eNWC5u7i8gf6D7AQaWBnvSnh2A6Qu9zvL2jYIsjHDLQxCM8jkhg==","shasum":"708dc0eb84fda531564ca53e15ef79b414420e7f","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.191774115.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkhSbCRA9TVsSAnZWagAAqHMP/0lhAwIAF8JiAEjU2fcF\nf+5UcKTHirntbmRKPehn5x2cvdVpuyr7C7MeCHgye6UKMYZL4f1Uqbqu1e8g\nhS+tR2MPZgzp7m82/84ol7Xk4WR5s0DvFzV0lKINF1Z4K/k+ShpH+46Gnyc0\nAjCCeGyDu/6Z35NEwhlKpVS7zlG/O8GzR6xD0DFCuN4vHL5nxlE85kz6ScQD\n4LwvsCuDLsTSz9JXPGjlpQpevGWWUJe9F3MBrDDt3t+yuW60aR9DtXPOAvii\n4CnJxvAjzM4jfXi7kvLytizsORnx3Z/Fv+/mYtzlvA3A93QB+u6RRVmlourA\nRPUMZ9jNYBi7qjHwTbwbITCAUiSFnXEuzuqF3dqqkAQs8XyJ+btw9l2BgZQV\nHvL9OQcXE3z53Ufbzx1mlQKPeUnXYoNOGWNgA8VVJ+naUCprVUGY1/AOhsDN\n4dhDlozNZ3m6ASMsQslN/Ei/25W6LddyrL5CQWV1tJ6131XtQtjjn4+8LtOe\nhlbm4OPmx6zW3VmPXYgwKuroH3PNxv+nZMgGOJd7V0xKccZFlmFH8PZ+wLbk\n0EWE6YJjnMWGKdkT5FNHk4UlHJp2t0Mkt0+ZXq4goGNJZFQUsIUUuOkNh70e\nU/AYMeHlhVrKO/IlUSV4UBcdbaoEBPjuIdo6rFGSQ8fqojfreWHUbBXR7Rg6\ns3ww\r\n=niPY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWczhLf7YHi2yIA64L5wOpuUXPqa032tO1Mi0C2OWvaQIhANH/on70pzjnY9eqk1enX1UDp65aSz6hBaFuRKpcay++"}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.191774115.9_1603409050462_0.4266354290381449"},"_hasShrinkwrap":false},"2.0.1-nightly.192418753.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.192418753.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.192418753.9","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-MeyhPhYqS3+mL6ODSvv03vps2U776nBbsaUHW29OpNgm0ScVNX2mkxBN8/TojJKtcBINXbDWY4mUuCbP3Hz93Q==","shasum":"bf7429e17deb3416198ef908d8077fd4bd2ed54a","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.192418753.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfk2KVCRA9TVsSAnZWagAABM0P/Alp18YmiRJ3pSaeNyqW\no5dvk4h/0HSyk0b71Jl+vxLho7LIip2/9c4sbiVGagXtG50fnXr2M4Yf2+ES\nFSpdXKJndt6nPOy2xW7pdRibPMv1e9ep+YxvsWZwNjnq33GubPqjPumbpCWb\nyikuSjBAFCeL7nZTnO6rAkE//InBxiQuHJ5QJXJeXSxcb2V/3uXNjRz28J6N\n4Uvx23WYVpv+fuaun8k1PLy/zMPcH3sNzgv39iJUGBYh72bp9SAA99gkNA5G\njsPraZ+5fnRG9dzvZ/FTdtw53IkQzStrwpL+OvB4z3GpQehW+VTwJ4qXyF0Y\nxCWM/GoqJKnh2lzs/Lp3WXB3UZnNgOYvKAD1vZ0VYUIPQZqZHOa3UpilC0v6\nRQDN6UwLXLhw6J6/aSJ8j7ZC2LiX3IR/9tOqrG9QDMmWsEWb6UmtDvv8BI/d\nQFj+h1EyUzKrkVwDcYIGJTDLbH6vBlQLli6qYs8kT+yCIZaPlLPZlKCnLpHK\neKlMb+HOckHK2RlzRUZuNUz+hUIaB//rUXGxLjvvonqhSysPPYLdWkvdJ7tb\ngyYe0Iiadm0+bIkMZwt2Dw8+g6aVxYbh2A/BeRN/2aEJbNV+4hfkF2FfulDp\nEljZpbczIaqM7Ux8TM69SHbwk4nSEKTM2Eibzq0kxKD+du3UftsfOt2flz71\n3yme\r\n=E59+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZMvsg9vZ62vuyK5upstQwMeao2ffjtUHSyPZ0kABjAAiEAhDS09cxzR0QoXftqU/AL2Zt9A8ygPLrRWeaHdC6umEg="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.192418753.9_1603494548451_0.5851092645798133"},"_hasShrinkwrap":false},"2.0.1-nightly.192586289.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.192586289.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.192586289.9","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-ooNvMjKPoxT6IN1At7GUigYNBw/cpQ7LBVKLGk5MYmsZB7hkW8V5ueZxun6mkLT6o1CWWl0dBSDrq5cCy6JxZw==","shasum":"dcbfe5b5bdcaafd0047d9aeede28dcb7800a78f8","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.192586289.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflLPdCRA9TVsSAnZWagAAJjIP/09cror5CkjgazbaLVCR\nTdgrmrhz8ZOSBOKRC2i8a/OiKUVMnCSYiF+1WqPYYCqGnxzS7bERXFqqzPib\nxuSES3fZoO3CmnVJtoINg/b837jTvgiJtpquLo1t4xlzpDlRNARNdAzXOsWw\nA18Reo61815ZjaCj7uvYGR30R0aFiec8Bt95VHwqAqV/n5QCYiFJTf+UL4kV\nFn37XUKRw2zpdb9YS7FQtYCOJzC0L9MLJ5plm65ntwiVhONe78uuV7F7emLo\nn203cjqumr1YRVFxJWT9n4go3Dwmeqj2jUjsGFSZ9uLJ4/ybODDvR+ppoZiI\nB1KdTtHm82SWXaxnf2Pebd894mTvoUFa88PyTtPxMJLIce8rJKulvvbqlHG7\nT4i/F8wSsrMaBGqI+6jYbHN/0cT3N8Te4zSVijs0vd58Rvhk2e5yr5w6Xryj\nNwRymACIaLNnS0B+Lv3e0fdgr8ASZhdTYGKQ+Y9KwP0dRCjhq150jLK7mkKR\nxm/VqElKI4Pl4D0QtIfKRdK6JGHThX+fhwtFLzGF5BetM+YeULyskkiyaQES\n6YAy1pv1kTroTSYqzKtjkbaM2bBY1I2gO0ZNGLujMWYnaM+GP+HoJGRxv8ET\nI3KV7VXzl2j2XpMzYaMJAxt3Z3BQpgE15bw6oUMFvOVhuZhr39XnJgoV/nFA\n3suQ\r\n=V4uR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBc7aO+xcnWqn6i9rytrTS/06K8cPxrge4JEBZxbu7u+AiEAgvVRmIXOR5ZHWyIoHxJaHMqvIoBU7QNC44uKSCkkdHs="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.192586289.9_1603580892496_0.619590287785575"},"_hasShrinkwrap":false},"2.0.1-nightly.192649875.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.192649875.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.192649875.9","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-Pi+wqdalE4PikdclnZJuQLjBtU5zzKkG9hBZ/RJdFRsbDPmXODZiw6vcqank37Wf+CO3/9kOZYwynXw0RAJ/SQ==","shasum":"b9fc22384aa6895c5132eac5388afa7ed10f9206","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.192649875.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflgWGCRA9TVsSAnZWagAAwsAQAJrvI9xltOqnPlbLPjwy\nocZBxRQ7nECX3qk83bQ3VIc8ykh2bUDfa2d+OIfTDe3hxZAqS4mjIJM3kL/D\nJy8k0NzCdhsZ3UGZd0yr/m9pya3WYNSdGi2Wy69Q9M3QvhSaJzLMXpxPSAPh\nCwNYr2xHIaxGmBx3xZMjPPpzJBIWbkFqrzZS0+u7q4qBaSJNqSXbd5anfLow\n4dkN55jLicPuNsAGkGgFHcG2osO67/t8tON/e0GPlvbblBWYs/oMAVpk9+js\nlcQWDFOwJHp0OMUvY3q533wFwtjT3yCc8c8mXvWLMi1Tdf0ohLwEO4hwyIq0\nN+Bl48uWdobMKe10MBk+a3l0FCC785MyPhHVsHXIkYQwXOSBuNkr5p6nfk7D\nptBkQFlT3Y2u5Ohf/oaQDyKlu0mrbe8P0Sb36uxw5RX7i/2JLd0HzoLYwfQe\nEBRq56SIH4iTS8MC1iYQispygzCFmdCZLyu2SQItNIYWxjsYuj41DHeyQWmR\nBU61vPZcMzfY54FbrHeGFwHQShXbMepLfBqr7p2Q7JwvwL3L9zAoQMuqZNPV\nM9ns5utwpEgAQUxE5akoWjmL3urC8jcgBZ56cL+sw6bX/2vufwSIOtZV7drF\naPCNmilth7OJLsqSR0QA5op41qEQcWcbXnaZR2k9ACOx9I8416eueBLUH2JM\nKrNh\r\n=yJE4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIADmZo3pOZNwR6/MxkC0vsVVkoekAZ0s4k9IUryZnNogAiBfo3Z/IBo+JKKh+KiQKmhstMmU9XG+jESh4nAxRhWEjA=="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.192649875.9_1603667334026_0.5809037532312862"},"_hasShrinkwrap":false},"2.0.1-nightly.192989542.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.192989542.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.192989542.9","_nodeVersion":"10.22.1","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (darwin)","dist":{"integrity":"sha512-umc/hDqMFS32yCS8OreENpKJDK383PluZpyU++QZqrNEbA1IZfjHL12RFLWL2oxCZKOj3q6VT/89MhhcECK5zQ==","shasum":"bd8d87994724ebc5c9fb33906d038b755b2edf7b","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.192989542.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfl1ecCRA9TVsSAnZWagAA168P/RmJWPTT97cl1UYuVuzl\nIj+sNInTPMe+WWCFs1ADqyxDAMxQ2qTF/C/N/ilixPtFBx8+F9rFyAC8KaeJ\ne4Kvfncap582tdJrZe1Mp9Z/kiF9fMZodDRox5zb6rZSpOJJf2HhMAMbV9Zu\nPsfozXV4mwH3YNgOXFvCHo7tmt39opge6lvBhQJrssauzkVrgnbLlFxbmLqF\nvxMEIjFirvo+UxaJrUtyJFlgKeHYpnScR4iGlJOLSHLy+LVA3mHbeDLYrrbV\n0wkHBQ93EGez7NCf0zJOnUVwcxZi5XhuiKJq2ZBaZhTnhZGHAkimtbCuWsvb\nPgA/pVVeerv7Lvm99W7miFj0MS/gn7FU/XkcXRcvmau+G+5ku63BjXP81Uu2\ncAPyGvfkgEboyrq4geNAscDiwHLbz/htB/X3f9sDkDTsmxYrg6t54o3kyg40\nxTS4KWveY3N5dz8zoudTGVnsKPXOuWhs4qyRuOVlUm9EDUjSofS6jOUfwceK\ntBD9FbS/EF2a67rvtrYPZxKkmi6I+V4uIH39HvWptsM7oiyLUL7UX3Xe22lP\n1/1x3nHbiKXNzP8KiSCaGI8BcW2N+OEPjF8w+sin67cYz8Z+XOfR2JltdUuy\n2UJ3djY6kTojHBQiuEgaz4x3WCqyD/OoxYpkLc3on4fHQ7bp3BXm2y7LdqWd\nhiOS\r\n=DJM1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEFPtA1ChEUCSu6JHbek6FEQEUylZn5mHJ4JUFmDxCW7AiAqf1SkE+6GACwuUnIRrRQa4bT+aAguBoDb2bRnH2vXVA=="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.192989542.9_1603753883771_0.4073543239390309"},"_hasShrinkwrap":false},"2.0.1-nightly.193887211.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.193887211.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.193887211.9","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-+BxZOe7RxMF3vLWSJGSK4GI0dTQyszygM4Vf8fVE2hBdw/yl8Yen2hbhHPRDfarM0+waYlEMrL2jrsDy9cyvdw==","shasum":"fc313a2dca3c0cb9db616bcf62e52fc3195dc246","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.193887211.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmKkmCRA9TVsSAnZWagAAbDEP/1NbNQ7D81uZ+RcE8+xx\nCVuR0UkNcDlAM9J9LI92XBLZR9tenfpqR7/g5ZCN/oBkJ+nN0jLjQtpq/H4E\nDNfhQ/04RQX1ihfmuMCzybnNT6N9UtjThsGGl2nFdNx19YAqR8SybTur5LTH\nqSw+bfKTIvqxpkyAe+OMQ9Erzoo5jFVWsC0cgzbMqkb8daI0TvHRiAtcv3zI\n5t90IZ+TLj2yGU3/V7u6CKSrPOWKz6csYn9KPQPayWTs4A5yC0ezX7rHdDsb\nZzbyNjr86ULV1kwUzNyFjrnHpySM83qYRFu3wNIe+c42lBsMSoJ9SZcemxxq\nrKnd9FibfDtQBug2SV7wzxyAe1kQlw7fNc+CR1W56DPhq4TVE+VH4RVL2U0P\n/iFzvGURqB+Ov/WNLrgtSAn9d63j974u+VqcRy3XKwTTGRnYuf45HJ+PXJjR\nubHGsXf8ALEhW9bQjtGVaiUvHDmJLiDZiB0FJ++VwLRXLrAw9TKavtNhDdsd\n8vzWE2UwB7kVtEqxsFDPxztKJJs7MetydHXwShB7Q1IdVbfMGky23qEJ7c8m\n087qlgZDD64d/mvq8kUEC+tLtpeNt5BQWv0QE5XMi2+15Rc4kSFivqYuxXup\nVa5N6EyV/jOkFC9GZ6isPQNYchGHSz7JRB5PPQRmvopaaf9BPHiS5QAoZDqJ\nKbW2\r\n=v4bj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIR7m7VjuTIOOQv8Kh8Xp3JFkqtRoV3ygusNz7a5dIQAiEApVm+5jR1ravhH6oNpXma/x412nv/T+OnvoYe5s36bQ4="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.193887211.9_1603840293519_0.3263024452979064"},"_hasShrinkwrap":false},"2.0.1-nightly.195173404.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.195173404.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.195173404.9","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-lCS6DPRq2aQ3lx8LqeWAdrv2YTkci2tHtt7f1cOWWwPnpymgFUyLpAjqr36xDyusUb0C385WL0MY/k4RGHLPyA==","shasum":"84a7193d7194fa4242e3d55be2770e900811abe5","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.195173404.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmfrCCRA9TVsSAnZWagAA6xgP/3CEvwCzrU+T+3O4wbWR\n4NihM0cJINLa/r1VLkZjuFhc0WQhgx0XkPLYP/nEIjox5FknvG4N2iXXvKGK\nTg5HtKgYke4PeFnZ1NOl+zEt2TKuWI01YJ4apK1ojc1QIdNv4t10AydP56JH\n6LOGnwOfSZlitK4TS1vBAt76o9iwR2nhdqJw01c/rd5YdJ+abYYVYu7QiKc4\nqON1MZ9Gm+ibFVucdgwi2sxq9r4UJX4jUvx1uoXhC2kItRXov6EcmASjy0l5\naeZLJDtCUATPYg7AP+RV4pLAJY/hv9RvooiyWHFC+UTqEKJSEVP433ftAbo5\naXxc1Cr7flMJqDEfcTzcIQRHN1tLhC61sSCiFembjsbGowi2jBoMaiKqcmVb\nk+u21RirRTdQrnzDTCXHrd0E8+0kN8S43cGVj/GQICpJ4x54Ojt4e8uvfOVk\n9GdsFhH5I3IwcUCqqgI0Ve39QWf/+Oyjsoukv0CVIZp7hPS/rMZ6jjoude6M\nZzn+mV8j8pUMjQoQwY6W3uk/8aLycWXMyUe7KV2vjX7J9WIHw9KrIFp1xZC5\nF1h0J5niTeqRjFVkFaTQKQSdZFRmKa1JAYLOep4o7LZVvCSicYK1gpl9kDRP\n5srXsi0iq8euHO41P+DFtNpLPUh8U/KLf6V1U4CJgDS8HmLGPO8gU7+lW2SG\nElVC\r\n=ZVIn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfWRaZcTDDk/yxfyn0S1f9N00teYAfBccqDl2M7GZNLQIgT3/HvIJSUxJLaoniR0bLNzOymSvBuhkIg3zZhvM3u5w="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.195173404.9_1603926721434_0.6587972944398768"},"_hasShrinkwrap":false},"2.0.1-nightly.196209186.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.196209186.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.196209186.9","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-yI+T9BLvFmnNHYSmtSK7BiqO4UdASmDeQt6t5wUbdx27+qeEmcFk5GDj0X8gniBVsLrA261F78/fUb9ffTawjA==","shasum":"eed0578743f136438840397b607f40a5b49efd19","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.196209186.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm0yiCRA9TVsSAnZWagAAP1sP/2WBAve82PC7byTUpdBH\nB1a3jkZ1c7EBcmzNh6ZVUXg0wQExpgTvlwwqJ+zj1I8vwCz6FDaWJ0BW021Y\n8ZYQtfcKSJmofbWWkU1deHaqFvVXJIiHaYchgyx6bxSIdIi1YF7E/yQFUsPf\nwRgfglvSB/SODQ/J86olCL6GZ7WvYCmiNCE/EPm6Xhqy4TgU0RS3OTQcDW/3\nh5DCZFQWqLIJdqeI16LHDF6e3aKnIi54XGEXwTENm0u2mqM2SFWaycmCE9ZP\nGupf2BVBrQ47tkUYEP+dfh/y3jiwK/gSHCUumTsXkZJTuVFrCtqEDdYInHzP\nG3rlxdhE4ekc/ZzdwYjrAE1/POJMfVrAw6To9Tg6eGzzz1pUiFQ9ey2Vlr3A\nQNo6Mzcf+nWqUhjoade4IeFkkELqS5+/j/Zucgn+dOHufIPPligguc/e67/Y\nVjSd/zkPoyP5yhMEzxsvXvn3640tZ3E4au9GOxmecvOl5UaOjdBUjbBz5yf+\nTr1/NvVLPYilmPNueC2yZV1QnNLpv8Dj1ITGvZ8AU2tK7gRnmA+mvHqiOCT3\nuNNHpYde8bbs/QiHx3xzqiAIKDXyJuyrfE57jZwcB8+XRxBNP7b3Se5G/akg\nExUV5Tq7dIIEcA6vON4oYFh3dcJtwIV6coIDf9S0CUG5XtS0iKev8iOIHU0m\nTXmX\r\n=GPJ9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyxzRAUTPGUlo3uU9hJ195YrqyAGyrFvVBSPibm2HULAIgUysC/Q6x5LUNI4lH3oV9BOU+LQL7HyQmUFhNkbIoj+Q="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.196209186.9_1604013217625_0.9856174870863257"},"_hasShrinkwrap":false},"2.0.1-nightly.196824287.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.196824287.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.196824287.9","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-NT3oCTaqri15UhtCRuVMMv4+8MkZJbEXr47KLIwfOZhDXsKXnMZa4X6b/JeQ6zwo/bTFCYkc/QPAw1JQND+b2g==","shasum":"8cb675736757ab7288f357737141bce799632a89","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.196824287.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnJ4mCRA9TVsSAnZWagAAoTAQAJxrucnqKnHaXlDVhfHm\nvVOud0g0joU1geCYt9gNdg2K4Ew6xN54UceYgbyATFatH3h82l5qfNn9LoWt\nCARRwEWb3cIZf7gsMzLRe68HTr5ewpxgPS6zpPQiR6vtuvs2D0LqcsGw1+Yp\ncvb9nqv+qD6UgRxK29su1EmDe+bedRTnBOdFfqddFAqS2gTleIB9cSj643s0\nIrbTOxuFnR7THlrDgBaa2bcVnyfcVa5hp0YB7pay1QDo3XnHliIlJmyw+EuS\nFzbwvOXIXIhDw75+qqir0cbPdBWYgGOAJm6YIj0Q8bO883gYYJzY/xrOfdcs\nAMD3eCspDkbr/qXD/YTNJQLQvb+CjqEqXVCfEEqQcYIw691ZoG9RQCeQF2jX\nM8cBx+9xMVQnry/KUQbBI9h6POHrnmmjSX7PtufKJ7ck2Npk+HMZLP/7l3MT\nkw71ux9y7RrOkcak3Kd0xwPQZvD29BKIayTyUkkJwpSSnyoAFmgLd3xhBn5c\n0BCMIq3VnOdk/nt7TjGV/tZNZWo57mDhnpqDsh6htr5G3ypd0rUKPtQE+GHs\nPzQ1iAU9Dcx7dFzL6MzGZu+kkxJRVUv6E/1Ufw2rkN9rVUas1Bky/tZo70Ml\nmWH7+bLKNfXY07nz8EiZ6+vD9ithCzYC0gskOwRddeayCoVZmDsGH40grska\n9xgv\r\n=s5E/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAkEdh51/+8NegcdQ+nm2MmJJa0ygTqtqxTNf0IkWrElAiEAwbeNwiBmNFEbKDbzpYZVLERlznLw3Bcx1fdULuPSaBA="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.196824287.9_1604099622300_0.8259501591714336"},"_hasShrinkwrap":false},"2.0.1-nightly.196970558.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.196970558.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.196970558.9","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-1Wn9sbx5qKSNJiLWFdZBvjsqdOGRAJGPXcgmIuan8QA7yCbrfZEPUwn3UDfhkrfHzEvAJgrGSdyJfD683zzFgg==","shasum":"3fbf12b2f2aa54d01c8f22a7160b31656e72e3c8","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.196970558.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfne8zCRA9TVsSAnZWagAAEXgP/2SOC7R4ZUxscBs3VdnH\nRpsjl6OS+AuShQV3xmpdmHwHd5zBAtFLB6vPdMaNz1JFelh1+6qvBePX/Uov\nJ4x94O+Rwar4A8bcN/HfmovuWASN/ob76eHuVX96BjoK9rmrZnNJSXGJOofY\nijzthGY2QZXQxrlusZiMuLO74djpdE2Ptmi4YAhdqMr1aB/ThiaVPAUpOquQ\n/LqmNth3y7JgH6emm2lYMXPBzDkWXpVIzxBN3tOEk3CJLL/6xSARqkq18jmt\nq7mboxTKI8ZGINQo0swTTMcOVh6LtWU9pZVPEi6yUddPkzl2K31UeFw9Tcfh\nU/amTsfJS430tZWXob5Mj9Z605IwLwwFbw/1vj9DjjtEnPqMw4+1BZutyUpk\nkX275+lUPAyD+bjMPqA+R1pSsbhuhzLxGjiK/UZMzJsES5KmPOJj7ac0U1xy\nP9k6nbNBHltIjKgd2j7nDkA2FAZHlsCLpELZUDTMvIT0LSSrZIYoRn4nLciH\nLRhPR6ehGvr+Lz4li4p7seKvKjFIF+kaZacZorrSodRYXvb65SG4xF9VoHIv\nX+DDcaze//h8lEGBLZC+dzGqJrpnqbFslPrU858J3A4sMZLkKgmBXzAsSDo/\nCvGttXu3TyWWG45dDgdwc04WmS5Gm3INMoM9EF0Kb3NQBY3dYeZdnsc+qoGR\nWzZK\r\n=0UK8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1vflh0+qswj0MJf9THARv8mT00Ufr2fB8jZ5sUMUxlAiEAyMakA0fSirsAhN8zmF9R2kH1Hx9W8wwUVR+WOKwmKXw="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.196970558.9_1604185906639_0.5334469727045283"},"_hasShrinkwrap":false},"2.0.1-nightly.197048906.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.197048906.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.197048906.9","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-8YwsCfjTkKUhrdU8tsqwXkjdJY7xLQ1gq0M+ddnzBfxRaOkCWl5NPjjToWh+UtS0n9Zh1b5I2PEpJ1COXDOtwA==","shasum":"ae779ff989516fd5567d0077079d9cb4f3bacb0a","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.197048906.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn0CyCRA9TVsSAnZWagAA8/AP/3PZTO3W1mFFv7EdXNR3\n3Vm+6vm0ljlwsHzHGBXTAj+t98+MMz8jYvUmuqjWzepLnH+ML0SjAMD46mze\nvppjsYp0M+mgZcvO72SaIUP9FtyieVYbe+6kU0LG1iNEAefhv1CgrcpYofVP\nfhI38otpjsLQzFGybx8WGJHPKzzHCTlRBAh+oWvt0RoT55xBQlNQ4VSX+n9Z\nEcCDz6gWRvNzvZJLB5Q8jvvMvR/I80sGBAVzfppTGmj5qYvFnDHqkHHl20bU\nBAgWxhllySEegdcy1qQVPZqMTAURZ1s4/ZDzq4dxmZ8LgK92TZIyqsvop1KW\nhiNtEPWKhlXF4ML91RDbbyh8sVIOeTOsWgk33F7EDiInKvj7oMz85NesUiSq\nMF+MTGdCeoU3ahg+/1zLBZC8ubW86wFdWBY60UVZ5zPJvZjUxGQlTSfhyf+D\nWFvhgYdMy0f+08pVxOpcjhU2/KTmEgr99WRxC9jlrAsp+HPDBzisTGNReSqk\n0jbJQFoXiJlOAkiNxRvJwJSHcxdAveJXwE0RFZuzrI6sflvJmND8KsP1qJkS\n+Yo9n7+AycXjr3RDm37HBz2H4EroIwYcO6YriLHUgZhNHAPNnmvoR/BQKBk6\nrmrawlMkzxdfBmZIaoQnQ30s3dRYlvei+aoY0ujbn7SCatn07t8AyUiFBynv\n6/0R\r\n=7CtF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSl/FNWzje1X5UTE71wq9RtxSQbXNQipxS+//lWS5mdwIhAIuo1+fxaDFEtQKUynNB34lk17cz1UXFnG2OpIkVqtvy"}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.197048906.9_1604272305590_0.8986396511228647"},"_hasShrinkwrap":false},"2.0.1-nightly.197462345.9":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.197462345.9","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.0","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"1eaf287984c5160bd6a9115e60e8b3bd33e36383","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.197462345.9","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-/3onfbpvPspRIBDCPb4BZ9Po3CtwFcR+Hp//WeeGJu3X8wQiN/GrO9UmSa218tgD5eR1ubdqftv36HiDwBVJng==","shasum":"673f01300c38d16fcf87c74485d2242c87f3ae6f","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.197462345.9.tgz","fileCount":292,"unpackedSize":6319482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoJLKCRA9TVsSAnZWagAAlyUQAJG5oDO0o8NUU12dUZ74\nK3NhFzQ03nSS4XPrdwpFkk6yE6yrvsCAmqh8GKJJ745kCsyP2+b1V8m8tp06\nZv9dnS4uPOaCrYnR8GntS1j8SPmYJ2q6uL4v+aXxuHZOCej4f+JgxQxoavva\nzd7ZFVqigeZc078emenSA6U1hId1wom6LPsQgYOp0tglnf6uI2dozoE8BP88\nGOTlFrruWlvPVc1JaBoL4Ik6Hx1rUaEGgSwqAGxPMBCX03/kHMfbmDvQtAXV\nQN9FBnDRN4W1n67icIik9kFcnFF0UgMbOS+evOJ+q1Rz9E36HUDeLcCrwR8G\ntoOt0BJYCSihi/cw4c621vRJlIM/XUgPWQTzHC89BwRERnB9zWhh5eyB4zZI\nfvPOUWXhcbi0PwnZCiD7KL4EwtHZAz98ugQy387BTj0+BAOMSAfXcMwrKVyo\ncCIQcVhIoypsGi/EY1jNMnur65oN9fzEff/ta5lWZu3VUaKjIlEdCH/qposy\n460Cz/sHy0+HCRtiqV4Wo9fVQn0mr14y4/E6JS9M5Mkk9SE7vnsKTgBPipka\n6Hyj0ip50cpg7qS0QakT4n2ZgKbvt36Yis56rTjXzp1G/GCCbOCjCqNBMpB9\nTdJSd/RIVKu9bMWjC2bjBMDt4O01wo0pyKozD5L+T+Nwm/kdcitnOK1ux63t\ns2OU\r\n=HI+p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/FneiRW5aB7LXvq7tA9Ai85jm7xwJX7y6TBjV2nvu6AiEArG3Pu+dS+QlDHhAyaQ1WsG9btkarBKi9DFPjFn5yp54="}]},"maintainers":[{"name":"anthonyfazio","email":"afanzio@amazon.com"},{"name":"cvalliap","email":"cvalliap@gmail.com"},{"name":"larpente_amzn","email":"larpente@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},{"name":"danielwangamzn","email":"wangdani@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builder@amazon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.197462345.9_1604358857430_0.3970424817925793"},"_hasShrinkwrap":false},"2.0.1-nightly.203679785.15":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.203679785.15","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.203679785.15+d7b7bc1","@alexa-games/sfb-skill":"^2.0.1-nightly.203679785.15+d7b7bc1","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.203679785.15+d7b7bc1","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.203679785.15+d7b7bc1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d7b7bc1f23749fe53d0ed46e21f18bb0440f2c2e","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.203679785.15","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-H/hZDTzkrRd8yzN0DO5FA8Hh1rZIRPkJ5J3ICNl1wEU12R3rchkptHIjJL5VQzxxe2o1VeSstw8ZuSgycRFMxw==","shasum":"6ddb8933a4ebc02fda3ee9dc30418a019f8f163b","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.203679785.15.tgz","fileCount":292,"unpackedSize":6324559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvFFQCRA9TVsSAnZWagAAAa0QAIPHMbLV6Oq91fE+43+a\nW9Z01gMd0AygZHs+CZyORP2KekyJ8D/64mYgj52OmrzKyEVLQ2zkeMvmx9Yf\n9inSJ7VSP/06QAtdpLrcyfK7vijnO07zi7Jc2hDKkLuVCmY/7Y8WXuGFG2mG\nGP3TjFL0kM4MSAlXei2Gf/fMULqcqcJrMMuE8Vbi4T/NLHJeKPVIGaFC8g/Z\nwkvBRWtzOtYnPmFGdQfjc7H2RUm1PvfSOi9ZX8NIps0KnzJxru5cI1EBLIhM\nCPgLugn5NUnfYRYKChwlcSBojPmgcclaaI5q7Ug6ZJ+kxBrOXAbDLKFZ21h8\n+7GAjFB+EDW7SEQbyBmdxdpsAWFIa31oEO/d46Z9zUbjgYX+/2x6lbIZeAMA\nfcj/A5Q+0YPdbB5MOX96PqyiAAl7hlwYNUekCIwbdbs7IbUnWNzeoNQML7Pq\n338StvjWh+Hf7O5cuOb2Xzf6ITRE1JY7c/iV3tPiZbQOyd+AIZ5IfcGAQOWr\nau9cqVAkZs5WC/xgH3xWq8jDiXDzKPVC6Lg1SPIqhVz10RB7mlEV+Gql+24W\ncMeU3ACk7wuSQtxnnF/WsT8Q+ZS0AyusMP0Two9aVQXYsKwmlvU9vU12bJca\ndLfRLzCNnGHgrVRzngjqA1xsGoQ8axHa1X0znPO522g8alatXmXjdkI3z0OQ\nmNQJ\r\n=VaIA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5EJwhBvi6FWU53nf0aAGL2n+HPE0nL3+WOMqh+QY2FwIgfcYzCTV0+VAJUFZlW7QltZJPIcaKpQcnFC2vKkSqYx0="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.203679785.15_1606177104157_0.2295261559083599"},"_hasShrinkwrap":false},"2.0.1-nightly.203993240.15":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.203993240.15","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.203993240.15+d7b7bc1","@alexa-games/sfb-skill":"^2.0.1-nightly.203993240.15+d7b7bc1","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.203993240.15+d7b7bc1","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.203993240.15+d7b7bc1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d7b7bc1f23749fe53d0ed46e21f18bb0440f2c2e","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.203993240.15","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-/GRA/fzaeFBn5VvCMwrbphoiOL+lZB3whcHq7pbe0Yxa2YM3NycAAfAXpPO2c0xbLGjUnO7HeJrGWZ5tYJWF2w==","shasum":"742da38d94871bd86014c5d53a42f0d5f9c33618","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.203993240.15.tgz","fileCount":292,"unpackedSize":6324559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvZVhCRA9TVsSAnZWagAAS6gP/09o7DxSUYPhvUJtYjzp\nxGI74j4HUJG7+rlgGenqgIC4347J7eiKoQu3M9qP+03ZTZzAUdtbVL5O8+T7\nD19fCpkbOnq9DqNr5dVHM53VxkqjWMYmjQvurQn6oHEXWg3CTdZaUSspT2IG\nBJM7YMHPr162LYt/lgLAuw3eFhUECzWI4mdSr6+O0s8odpKMYtWERCef6fcq\nrOaEb6bUkw9lz7PeE2bnd/muOSg0CIZNUcYZ1ld4ya/jZMGebSxnAUAHVMri\n/9lY/KlKtZjW76ZImwLAR5BR7XxV27Eck5frNKZQv+jJxJ6zATpywN7QWDLM\nEbnungXv7EzFvfgl4ofH4pFWwsQd3OsiP3dI0G8zYu43YhB2SZMWCEvBmrXW\nf+duHLd1Hg0sUM9sOoU4W095YBNkeeg/3ABj70poYFgRcDjv9UAuF3kjRmaH\nvWiUQ071dt++cNGZzfg4BIONBDSpjz04qGS5qfekiEL6w+Nr65dxMpkQO/M3\nBaQtQel73xzIklxocFJ3PfMM/XYluHKqIGqmiJqN97lwNOLnJ14SZB6FO41C\ndiw/HCwsOcfZeec1SfwIL1Wt0ig7pLXarLdgogaUOQajLQi1U75epbp3aIRf\nxqy90gGv4HNypCl2MMtiQ9g5hE55C8w7y0HHW/4NP3LQstu8+oChg3xDezIG\nCYTW\r\n=rP5o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0/gutGDi7jGk+u3Zg6m1NCc96c2Ph7P1e247xAAvj9wIhAMfotAFnPhXbQEi3OGNJnuM/wRvq1j02/Pieqhe7g+3a"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.203993240.15_1606260064512_0.9708997581684504"},"_hasShrinkwrap":false},"2.0.1-nightly.204529068.15":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.204529068.15","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.204529068.15+d7b7bc1","@alexa-games/sfb-skill":"^2.0.1-nightly.204529068.15+d7b7bc1","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.204529068.15+d7b7bc1","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.204529068.15+d7b7bc1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d7b7bc1f23749fe53d0ed46e21f18bb0440f2c2e","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.204529068.15","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-1jhI8QlnXP6E4fBL5FwjjavUAER4h7Iku7kfY4yBeaNfUp5EzYayfcuji41vhE1E7UCl1xz2/6mMPMjpw9jr8Q==","shasum":"e4d98312e8651ed332a9c248ed5a5eabbfa0e9da","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.204529068.15.tgz","fileCount":292,"unpackedSize":6324559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvucSCRA9TVsSAnZWagAA7FsP/3Q7U75rRNZCsM5njQZm\njH7Q2atWkLOcr/t2y72ENh917S9Tbd+qG9MubQYhSltx/Hd856HdZydrLSRG\nmdwF9FsHq2ZrBBqefQAVMKnEGwnVu65T4KiJSxpxdCzdkFDVnfhgnHYmuAWv\npGJW6J0OB7gtxt2D0UNwVI1hUFf7LYy039XNwa0dkhmeZbX7lM8U65PQE4gh\nHzEhEvz9CA4kUFWSmmuW7t8jUJ73EU8aEXOZikTqIzhdqwfy6x/B8vqTL38Z\nkxdeC9hcrdMZH2mzaJ/UVyEUKwc8JUfcv/m8RZUw6NawgtrwxpT+IgszHr5B\nPJH34nJ9TG4sv9dW+KXd3cuEXPV2Km71VJDAmdmw8PD4J1Xuv6p2JXSJhi2k\nyrRnnCQGAC0eKN67hPi3wcCM82pA8XOUytHnRXREuuEXTgJ0IWEbWfjNHHAv\n72PyLlpDhsrfDbqEuk3GPkhByCkx9tIC5iGxlXC3GAeE4kAzhHdDikJ6YxWL\nzaE3eV5HaYEdl/6Zj47hCB1Mlo8cvFNHA10Ozk5Xj2PrLlnP6GSC82PzVj79\nVOOx5q/7aMwFu371qlAACTSbyu97b20/2x7vPw7ewSEGw9WIPBX5LSke3jLD\ncqbwdhF+A7S/FOoSIEcObA0N6yOXyfRHnO7tcz0l4CJ9eNpGAkwLP9p2NFqG\nDImf\r\n=t+tk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEt1YU63jLBIyRr4mKLQBgHaix+uEChjw6uN0A7n7EbzAiAR+EappBuH7k1fJc4ChqjcezW4BDtSSXH0pXA2dH2xEQ=="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.204529068.15_1606346513521_0.9926681648118845"},"_hasShrinkwrap":false},"2.0.1-nightly.204790339.15":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.204790339.15","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.204790339.15+d7b7bc1","@alexa-games/sfb-skill":"^2.0.1-nightly.204790339.15+d7b7bc1","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.204790339.15+d7b7bc1","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.204790339.15+d7b7bc1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d7b7bc1f23749fe53d0ed46e21f18bb0440f2c2e","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.204790339.15","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-8U/xfuLdSYsFgmNcaVOyreFpiWwTMp/flNhZ8WJWG99y/MY0sXTREkwCXMTgsqHYlMk/cRajyE7gCosAIpLXTA==","shasum":"8f1f6399c355565092be5124c6dfd6b6c96f0b20","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.204790339.15.tgz","fileCount":292,"unpackedSize":6324559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwDinCRA9TVsSAnZWagAAlPEP/2uGdDxqpU3Dqne8coH7\nnX9qBMNH2FufoU5gzsvDyNZ2e4Up1Dm1ty2AWsSCp1OdwE+upoQa6v5hnzBc\nQdy//WMov2YBl6tNa4UI8VrC5GGy/LzYgHVqAlK3Srt7VFTo77iTWGy9HnjF\nnCsqXFbuzuQypvp4QeV7nhKqlx/4FvNz7AiEumAroCbOm5FGEkuvmUAYaueR\nclso+6gtAq1sZhR6EajiYtBMCIKsqoLBt+w+eNvLBDaxY8UNHx894h5O606v\nla78UarwtvPv6WunMS3j9bG5rIA5J1pBQlOGQI+IJCHcwuql2FV8BVT1dqTg\nRH8mwb0G0y6xgcwwI8YYbAStuSHByerEUa4wPOu84l1szofPCgv/M5O1GOym\nQiJDbuKiY5FTf5AGajbVEI+tYPgO7tvMW3cKw1v8xJdptwzE0zs3aDoamXhY\nB1Clgn6+4fNQrQvKkPYQee1WFHqw6QKWNsM2X/oo1a0KIpdTONBTZbsbKCDU\nvv6XiYV16maFpUymhJeOhbHTpiUx2mKlYnk0C1h10nHJUDpygI7T5rZCIcvn\nxVxne80GmvVGga/TRfB/D3fVAbGTMiJ0SR9I1K3pLpFmJZY9xfi2dDdcmspE\nKavPjcrmMxF3LlVz/c67Wjm2dQaVrnN8qAlLdeHSce/sAzRCHEjmFgmJ3eQB\nDdRB\r\n=1y19\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs0NOFAX7u5IEYtTeyFQ6QVp47PNLD8NU/YI24LnIucQIhAJpYkBS3kDKZiWvwAIN14I+Xvf6BWklRgKWCSqh8mPyy"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.204790339.15_1606432935169_0.8402738730560164"},"_hasShrinkwrap":false},"2.0.1-nightly.204993531.15":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.204993531.15","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.204993531.15+d7b7bc1","@alexa-games/sfb-skill":"^2.0.1-nightly.204993531.15+d7b7bc1","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.204993531.15+d7b7bc1","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.204993531.15+d7b7bc1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d7b7bc1f23749fe53d0ed46e21f18bb0440f2c2e","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.204993531.15","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-ZRxHCQiJZ2N238tlqkjw5xa/Q0GFXFsh5djOPvzkp08i0ibiHkEePZ/b+APz3QMBOWb8PKZr7qmOyfTcDxdL5g==","shasum":"898f3867468c6d187fcc77256fa25a29b95849d8","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.204993531.15.tgz","fileCount":292,"unpackedSize":6324559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwYp2CRA9TVsSAnZWagAACRYP/R1jBHFulVh2oaDFdGYp\nr87xHAfRXzTCGhWpZSCW/YwdRnQxLJlA2XredGtx0Ge1ioBXxtmV8TqqSCdA\n3PPTJ5SgHpImmRbcUCqO/PMS49ZGWyFgnRlHyip/gpyGCCMH29CrdBbOGoJT\nh1pTDeDc5mGHVayZkwKMmQtqFYnZT+tqTLFSXvjj7AT/pqlCm2qCBhqzhTr7\nQfBG8PgGclgE+ZffMFg7CwsjNmsusbdz4VQ6TslvpR3WrfM7FzM3i7/ImYbQ\nQ5iiJhxuTKe6sW4M2ARQz/m8cNHETW51v8jQVKlNQG82vtdZs5HR1AZbFvyW\nkjtVN+d1s7xb8m/UiC5dSGL4jGj+zdfUea0KooEbRTxQMU/ksF0ZHP7BEzUb\npBunZv8YH0/PvS5MIuatrcmP6NdQi0qwtM7e4Qd3V4D9PICrzUBBBEyj0kqd\ncp0/t0ovwnYIRqgkbLPxDpNY6vZfNd+SGWDQOKPsI3wRZOwSxfh8JnhMx+1i\n/6Cy1+/ocAdfrhlF29x6L1GcRqao/sgoV4KKHJzioAVJW7fy3LALrWJD3Ooj\nrIdlTyXqUODd/3VaGylDa/VMbcOcq8EwT+X62RFG7J+g4g/Afs8GMD9s/HVh\n0XxkxPKeHQj6IR9axcIH5H5rC9tZBpligKytVr8QL2f9zvc15HNcma+rv0qc\nEsiS\r\n=MRrq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLtZ6IM6PdJZJEZuXj5uL6UafNgi2tgyg+FTKhKfh9BwIgHsA2fjoihHD+cLzSFg9TAgwlm/QPtyYUvQI0m2Tm7oE="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.204993531.15_1606519413947_0.8626731642127867"},"_hasShrinkwrap":false},"2.0.1-nightly.205066779.15":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.205066779.15","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.205066779.15+d7b7bc1","@alexa-games/sfb-skill":"^2.0.1-nightly.205066779.15+d7b7bc1","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.205066779.15+d7b7bc1","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.205066779.15+d7b7bc1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d7b7bc1f23749fe53d0ed46e21f18bb0440f2c2e","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.205066779.15","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-tOyO2cI7ABgbgOmbuqE+EXkmHtY3WrN7gXdnh93FsCyyKr2gNDV/3uVd8Wakq32DNSG1q85cs9OAVsua3Kmhsw==","shasum":"3068da5dc5828dabcf2fc93f98eeb6a0f66f1577","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.205066779.15.tgz","fileCount":292,"unpackedSize":6324559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwtzSCRA9TVsSAnZWagAAyioQAJ4GhSNTQBgJ/hpHP6hj\njCDfgf2r+Er7+4Li2Z44+R3rJn+dhjjy+s/ycTxX4+tHTlA3j63zQYXaPJvJ\nOZsm2xByh6AUbyqN/06GyprjZLlbDKbz0M+ZkoSnI3a8fttqdOVPBRvZZWB0\n+KNVvEdc9kG0u2ZlrLbdtbSFjmU4nwI+4J2KUUPOhDdg6l6yL2AV9UqZYS47\nlHWeyF33jta44j1ph+6W83AOj/NokuaouQ00XkrxKxHniszWDDrqO5v85I3W\nJJ05987UN5Fnlsnw2RZAskEQUr4FgHpFgcCaPfcZqftdWcCjMkQHZcYfCM56\nPSu5lnNrBMpmp+F6pFTdCIX3OOxLqi4vEA33NPTCL+oawXCbScfP+/98tRR6\nOkWTpddtcYBgjXspkGiIKBRaAFXIby8WJ2YGQmFSjSBEm29090p+ki24Pf5c\n98giLWF5SVKSLFnUJIH+LIe6HqW1HHjsha/gDCHIxYuAonxTrdWUkYmueZnM\nB5HF2KeTSCdSnwBCKP6fbpSpSe8jhDAnBIaOiOScjew6n7plzG72N397sPbw\nB7JJZJS7jo357pbc4LYFpUIsmZo2aHEiOylXJjK6XUpa3Kpgzyf8vaRoYpQ7\naKjAOJLEO/8UDH41Yx2MiaosQhGS2TB5HlFObJybVsj82NOtJq2n4zgKanAO\ncnAo\r\n=Yjtg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLXKQ9fS10w67ViUrpQCEPd8ERdYS2bpHLqf7Ia8t6NgIgNLN4RRJZ42VXsZc219DnDkHcPmSVaYoqAFfLGpCCuiU="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.205066779.15_1606606033914_0.07393862907374604"},"_hasShrinkwrap":false},"2.0.1-nightly.205225457.15":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.205225457.15","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.205225457.15+d7b7bc1","@alexa-games/sfb-skill":"^2.0.1-nightly.205225457.15+d7b7bc1","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.205225457.15+d7b7bc1","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.205225457.15+d7b7bc1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d7b7bc1f23749fe53d0ed46e21f18bb0440f2c2e","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.205225457.15","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-x+FMtXB/MOTk40MdniUdZto2+P/8ufvnRRMkKezIsDwWIu7X62F6kjD0ZiwsdtjE3tfbVuQ+2NazP6NVlFrIlg==","shasum":"68b80bc4b0b758de9ff7dec93e5c15f1f04c1e2c","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.205225457.15.tgz","fileCount":292,"unpackedSize":6324559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxC3RCRA9TVsSAnZWagAAuwoP/0D/IFhutHscqVZfc3XJ\ncxF0cdhrPVOZ2tXHUwgbeV2dmPpxuydprKMl65O+J5oAWYWCDJtuAAVbIMLb\n9ZWdWmdcvMjsNbPkFzdEGMSEmG2to/3DneCRzj2g8s59HC64meMM6N9VBuMD\nMEcRkTSITJ092PmA+yWexaaxW0tjc3Unyz7C3ZTeFx+BzBMyY1MzPeYf4c4u\n4Xhs9SRVDbUM2toMdKTOxjJbPh6kPYfVr35Hhua3o8ZtyYA430d730rMGeQ/\nHq6V+UhrmH4UeG1RnZT3sZbWiJ7/kr9xeNJjyIaFBMx+wHZ1fL3kSZe2szE5\na4+TnnY/l5bNuse1rV6KJy+ROQsJOQrCm7gk6g6s6Or36jaHL6CHPztVqjgG\nSkLmq824+8ltAU92uDMnHRNv/gNaWq2GUeRJZNsDsfXM+pAduYg84H6Kt2lE\nuewiCJUHeZrY+TyvsI7qmryvF+AwE5EdNHj0CJZN15+jDn9VJsAMkggRJyaM\nJHxNy6hWbZ4ogUPs3pAwG3uuSFb/nP0KGlrBABe6fonNUcUt8Mhj0l54+2Zt\n77nleyM+1yPOqmvnXd+MD7fGpYjop+GSxnUMt7C1U4tlKygO1IS2cpO9a7FN\n1TC3pz72R5rzfLOsoJXuXqWzxUOKfy5mDt2IS0a93iObbmPdETp4KPZMf5k9\nd9Km\r\n=3/43\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPRzOYmU7OWI/z26IhnMBQuLSCZnLKjFNtpTj4WslV/wIgI4Hb/wvwYOEb1VOni7FuaAoDl9urNWiATf00QakyURw="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.205225457.15_1606692304788_0.921450557475044"},"_hasShrinkwrap":false},"2.0.1-nightly.205506399.15":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.205506399.15","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.205506399.15+d7b7bc1","@alexa-games/sfb-skill":"^2.0.1-nightly.205506399.15+d7b7bc1","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.205506399.15+d7b7bc1","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.205506399.15+d7b7bc1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d7b7bc1f23749fe53d0ed46e21f18bb0440f2c2e","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.205506399.15","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-5uyGXAaowS7sGs9XuM3hwHY8Ir4thaB371DO8aijE/l1f683Khjwj7+l7cDdr2T6u8hOGkjDdl9j3Vlop+6RaQ==","shasum":"5ff69470fc356c192bf2bd33a1790a36c3c59abf","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.205506399.15.tgz","fileCount":292,"unpackedSize":6324559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxX+UCRA9TVsSAnZWagAA+J4P/09EA04//P3d7+mCX11I\nZLgobAKxvGT2TRmvURzIHwqqKPrRejZdpKCaD7bN3KctKdsJddoXFcX2XN+j\n8tM8h1Ni2lHOHVmyVOTCm3y4DcUVQ71AC/h0cCKWl3eJduRDorA6nXyJPxhf\na3bBrHyffiGjwQ0+0ceIjA+/7YjGhUzqyIDtiEfaUdfYMc2D73tMN3+L/HlV\nSZXj0IlypiIG3KWy3xjZiJ5ink1m3VxE4Cl2dl4JFfSLZkKFcU5oPTj8wwX8\ncxntekc1zhXaiD7inxOwH3/NKrx7McSK1Rhueyp1AmblIdOX5tacYavv20Or\nVrg+q4D0ScpqmRF4hCfe6kTBhQYg9B8hYVnFtJxq75krFZx0lGBA+GJGyZPR\nttmo1hvaWL/POS+GmrAtUO5cC9H80WriJI4xPchqZUUb/MBNv/+w3zlyHQcq\n4B4hVJiNl+O64usmVcEHaJqwsLd0ZUpDRXXO0XYYX3v3kDeE05mR03/aOpy8\npT1zsVSlgQ+nytMATiIBpvUEbd1/1kx1007wmC7aq5IcRxlrha1DWYAruqmj\nYSqA5S9mZC+XR515mjxTnqnmMgAhRFmaTv9xE9PFJ6iK/TEN6HlcIC/4ftJ5\n5TKkpb+IlQV5yEwETKpMShHHZz6wMax/ViSERXkK1l7XkyqB60zAi8fcE/TV\nTooS\r\n=tFqS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/Qr33Nb1Xg4y9cjVo0rV0mMEklCWXgFQZszhPWnHwMQIgDTmTO1ykrAO9usFq44rQ9HOMzSpA8G4pSWeYJv5wd3M="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.205506399.15_1606778771685_0.12309477142533876"},"_hasShrinkwrap":false},"2.0.1-nightly.205794510.15":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.205794510.15","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.205794510.15+d7b7bc1","@alexa-games/sfb-skill":"^2.0.1-nightly.205794510.15+d7b7bc1","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.205794510.15+d7b7bc1","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.205794510.15+d7b7bc1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"d7b7bc1f23749fe53d0ed46e21f18bb0440f2c2e","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.205794510.15","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-B0V3Ss+7vRtLSHuXiWPVuUWlRVYMbf23yRvxui6reyYVEqjie4FTLZIZyZgL4HTjOePRPUD0dCg2V1UsEWscOw==","shasum":"0f72b90a66065610dbb218116bd53e1393100036","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.205794510.15.tgz","fileCount":292,"unpackedSize":6324559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxtFBCRA9TVsSAnZWagAAt2oP/RZYRniKST0cmGytMlPy\nwvbLZAkAjt3Nbz69sw71nkorVLeTwZCQ2VjRdPUkWSOwgAbZl1TgDZnqTC/D\nAmZnVtMOJA7YGgJBM510tWVuPXcfsROSGxQ5OpNHpTUYCjFgvB+vD2/Rvze6\nCUtjf+nADe+m9HriayfmbO6hCSb8MyJQkw+EvRv/wGwYnmX3AsS1f/kCQ+Am\nHvA+g+JtJXEh3KlSHkKBu/MdG3x065mzaiiOkqlsyxMf0wDCAbWuyCI/s6qP\nUZu464BVp8Q40hgi8rPjfGa9v73Oee2K4aKrZD4Qqhz11221onJo6+4b4l7o\nW4fE6RR3eC8Hw7knzsgCXspMMEXcerRSAf7U6w7VWGv7jtRQ2Jlz+flSW3ZU\nfH3tVfkzJLiF8WFlLlw1l/U2kM5FxgV5go+tjg+G+iO/7VgIx/Fxkp5ekW6G\nvq1lQ6oFaswjqdb0HrYdGbXSUxcpzZj28sGEGAXdCvqgx8U7dTT5STJA3hrc\n67MK7DDCDeg05X8lNqjySDH9Xy6nQpCcNAnQTqW1SyEQ5Cku+ABf+eovs+Rs\nw1FgsaATXofmaGtHGfxo/hYZpXwfHHzgfdEpt6nOwB1/I//Z+yX7groIWX99\nm/1FgDdurpUJk4V9+YoNw26gYqwu9Ly8qNZcbFjcK1KlCb7vj7ymnIXAKyVp\nVgtU\r\n=lot+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDoFmwCrgvAYlqiEhpgykQk97U8mWbM747tfNlBSo62+AiEAiwSvz+gBINugA074NZURIjGPXNbvHbX3zYttOro2nsU="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.205794510.15_1606865216763_0.11506409497862014"},"_hasShrinkwrap":false},"2.0.1-nightly.206087558.16":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.206087558.16","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.206087558.16+205254f","@alexa-games/sfb-skill":"^2.0.1-nightly.206087558.16+205254f","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.206087558.16+205254f","@alexa-games/sfb-util":"^2.0.1-nightly.206087558.16+205254f","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.206087558.16+205254f","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"205254fd6096f8a88820f77908096b1ef48d6156","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.206087558.16","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-Jq+zshw0OWiFcB4F+3G2xHjaU2B0FOm1p1644QD/JYj+lYjNV+XXEdztb/KfKcswEH939aDQxKoPna4S4A0Xrg==","shasum":"8663e6acd9f110e906983a83fc2e802f7f10abe2","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.206087558.16.tgz","fileCount":292,"unpackedSize":6327303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyCLVCRA9TVsSAnZWagAAWYMP/0jS//YcBJK9F9k8i0br\nBC3gvZMfFE91hnUsAc1ngeXUUOlO/P87WOainSYFwRQN/HqHkUbQgRmBNgCt\nZu3Jft+KHAzaPtvjRQEj6L5uJUYLrlLbGeOIEStPqeQEpiqyDposDQmApgGc\nIthpwfQfFPaXg8w8ged0X1dfwgdpsFqeaDNUgfb1NLK5zUYNo2haO0xsxbO7\ne5MdR7MM+2rqAGGeny5lzQgbxalT/W9aewBSecNAU39azzJKnbhEbRUftuY9\nPSKwX2OwoXVtSwXwhhQAfEXyZuAuoC+o/EXZLbIAPftmDn+NWYu10YLKgCDx\nBWJvGuPRyiy1t78imMwCywkJB/clhPiZ8fACqMzAaWr7t0BlquL2rLJPCCsO\n3maFjmyl/Aim7k0R5Aahha9H7l0geO9TGfElebnju3gtkWEFFgzcWEP2sYxO\n5gBXPFO9N9ZO9T3gT6JYmESWkCFtR097Sj7zyivFDwG43Q2njFiTkBulPbNU\nmdlelV9pmsBLpvFPty5PDXwvnDGVPqj94HxlmsXilVk5h3k66wViWwTcgMmZ\nDHSQTP1HDBhCI8gaJSuK7l/CtWVqNLSiO1FHkjoAbhZ2331vGIEAuP2Q+Yc+\nnO4oZVUwLO0NF6ab1hZWOmAUkTl73ZvhB4GQF58VtpjVsgQ/DIdQ4SFsSWtN\nd6Ns\r\n=Znyd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQ88BMNmVzu8q8bZr5q2/w4f76X1yHaBHUaLZ+uc5xjQIgERTnWWpSK3KucoDwFzh29pxMfr94duec0NEppqsChp8="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.206087558.16_1606951637069_0.8850597558586037"},"_hasShrinkwrap":false},"2.0.1-nightly.206458165.16":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.206458165.16","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.206458165.16+205254f","@alexa-games/sfb-skill":"^2.0.1-nightly.206458165.16+205254f","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.206458165.16+205254f","@alexa-games/sfb-util":"^2.0.1-nightly.206458165.16+205254f","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.206458165.16+205254f","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"205254fd6096f8a88820f77908096b1ef48d6156","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.206458165.16","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-QfIE95Y0Ss15WEgX5treEDyxo9bkjdDw+FV4gX8oMYf1qvdneGfXsAg3Y5MOhym41KQV8hIPejn6eZodXcwFMw==","shasum":"6d725dfd509909549a033e0a647237b4909352f0","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.206458165.16.tgz","fileCount":292,"unpackedSize":6327303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyXStCRA9TVsSAnZWagAAy4UQAI++AeOUXzuLdCpq+u0r\nHvdMqS/pY13tS8bkVricUJfk/UX2I6KLlifGMU5t5hBNbGd1XFqIzGOYKJBT\ntWtgQQ9Vg93Q2bY2eYZmZpXqaGPz7nlQFUsCA6TcBrUHpPfk+Qo2QVyAl8Fk\nk1kBf4/ldo3zW857P1OJ/B/UBMHFa1i2NGaiesuI46xuP9vvYAQjn/Mytn3S\n6e742z3o39nGzs0EhqfcNhzN0O3V1KzWWZK0Hs4RVwFXWxnzlLPYQOe9Q62Z\njSEWrR7VzLyuXxaR3AjU6PWn5AZY+LZ1sh5uFnmWLBzNuLNmxfeH8eS6scIh\nRTYeP/eLrIcExpQCV+3S0emBasr2cNFKcb9v5HD01wsFvxF2b6Qv63jHQry2\nxxOpcsQ8erjov27DgzVlYb5eftyUrTR03CHBx6jwIj0CpQS/ZXcnwQEoYTMm\nxvycUCxiIRWJGZhTylpjQNabn9oEmIMXwskgmRZP0E4B4n3JDeHwmgoGInVN\nu1hWGj+Qo+tTNj8DQ/DcDQ4IA4jQo6B5SHtDSf63/Xk4u5UnJr5ZgfgyAnnb\nYD79QQvEE+bGAMxr+wkRHmny2xwE9XZOut7M0AkNHqfYJY/MiUUvORBGIoTn\nT8Pwrj2FbOhy5mRgIqkBE2lRNylELWBwVCL2Dxkrvwsu3FPuJNs2ezc72kU2\npXYK\r\n=oWwf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB1w4Rm2q2AzTbEJEDLbmXpXKZWwnSmep4S7Gxju8PbdAiEA0CRGU6L4dv5QWwI3OJsEB/hlthkBeAJgdcaLkNuD9I4="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.206458165.16_1607038124855_0.2276012354414394"},"_hasShrinkwrap":false},"2.0.1-nightly.206717822.16":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.206717822.16","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.206717822.16+205254f","@alexa-games/sfb-skill":"^2.0.1-nightly.206717822.16+205254f","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.206717822.16+205254f","@alexa-games/sfb-util":"^2.0.1-nightly.206717822.16+205254f","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.206717822.16+205254f","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"205254fd6096f8a88820f77908096b1ef48d6156","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.206717822.16","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-vjMVMcdFnw9P18cXm8LpqaIvYn8cJxMRerqdZlcG83ZwJInsNsgoYtP6e91CImE+yL+r0U9Y/AnyWvQUo58XHw==","shasum":"98339cf971f8850920ec270facb241e5cb1e1d64","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.206717822.16.tgz","fileCount":292,"unpackedSize":6327303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfysjLCRA9TVsSAnZWagAA1wYP/AxhXLH0MGaHjsTty1fU\nOOA6YYA0ju5n5JbtVAsSO467kFAd6IAgdWnKDQUC25vUKGAgssS2GzlBjQFq\nJYIMWm5gORtodmU0I68Krap1J7VJyhTNpmv+pWLkOqdOBqX58D6eWQ54f/HU\n2yC80EDF3YAjcdwCbwrvJPniRe2Q/8dUb5GGrJ3g3KDQ63RQJSc2nCwJfbL4\nGHPjrQpjLHezBSf+s+wJEEKbVLRxh/4Pte/wCEH0+PKcNtCax61laaFBixH9\n598KBffzgFH/3r7yHC8v/L4BT4YCo9ZAJ5LpN3pFsyk7+375YBm8KopOv8zA\n0XYoLVvC56FaJ/V/scgY4FR9GzycPfp6nsVxgDbFBov/XPwcgCbjTkyP9V6X\nwM9s1e2HoKsp8Vxrbtbkg3zFA/cKHsr3yLSzTZ9QAL5v3vv4Cry9ikWSaSLt\nJyMhVgiKpG+t9CRhW4hOMImQB4mT5CR2PTOg3vgGh2xN6u6UH/VpfrlA3MtK\nLPBxNdE4IzSAVJj3wUcRdiT7TLRJhyWFf9hgEPfSupTdNiANTnlWA4STVi4a\nHWkjwXzHApL5qnx1lFIfCdmweTiMRJrKx5WV8aps8HxMFNnLM61I7w9Z42wN\nwrESh9v08SzdOgtPYxiputL2XqS9+mNTCHV0cztfsTGveqijHQGJLlMp1yhE\ne+4H\r\n=eOa8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsi2YUO+AWwutaL3EGooB16UMvWQJEvr9PJx7wiPdRCAIhAJpYEBZGZZu8Kl1TICLh7QiOOURKDeqlHZIBMeiyT6BC"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.206717822.16_1607125194936_0.2981220533277331"},"_hasShrinkwrap":false},"2.0.1-nightly.206823160.16":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.206823160.16","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.206823160.16+205254f","@alexa-games/sfb-skill":"^2.0.1-nightly.206823160.16+205254f","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.206823160.16+205254f","@alexa-games/sfb-util":"^2.0.1-nightly.206823160.16+205254f","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.206823160.16+205254f","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"205254fd6096f8a88820f77908096b1ef48d6156","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.206823160.16","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-OAOL7z38nQ6iqO5ZBzoWV/fYBrLqHsc+lFc4ODw3LQsBvUr0NF4mjydC2VFvvXm8g4GXaFbI+EUJhU5v6GIwfw==","shasum":"413be709a4632bdb8a02fb4f2c2eae6d7cc391cf","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.206823160.16.tgz","fileCount":292,"unpackedSize":6327303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzBd4CRA9TVsSAnZWagAAb4sP/jqFsqD3WOK3N1VDvc8q\nOWr7BxznlZd69Tt11v3Ywv66ZO3qX1Dw8lubXGYYUc7mE2w1aEvWVSbVWgsS\n1ln8/PYjpaWP8ewAatYTqD9CIse6nDP3XH29JwG5H2Z9A/GzSQpwETzXKvh6\nhlcfFOhgWCIi8l92/c+8V3mDYzakLPDVYwnlujphWp6q2qHGhuR1yqMb6yZ1\neqdS/D3cTMhVB5uXQPFVa17GinUYIufAtc3XBrQpT8dXa6jv828ngD6WA4U0\nBvycSnuZUcnpdHAyx+6Ya0FLvNa10Joj1UDPMRBZgPXEXI10oAXJpmhtq7+6\n93KlaLudpp3vM/+KSk96WrHqigzS5ZB2NNQ/NEbaRlHyM6kThqp6so3rpCXr\nXKAgRw+HJCHYL7df5619PuHf0xWGOe5jE1aitYKs2ERxCeIjTlsSzNQhYRbj\nkYUujrTPfR8Nvvd8UKCWTqa6OkjSr6eJKo0LpXKf26yYWoxv7EixKAuGTxpp\nks/EIdzCVqGfLbpBEjM0oyLx5HQHPqFmUqunmSKVHQiH5TXk5E0HQ3+cDTUv\nD3RP2ZHpOgHcqJlL1wyDrxSr275VqI5HJBq66ZFYBmdj6FVN26tHdXqeMIG9\nFycDrjigwKJOfPKCUuj/b2vDvT1MFTuXSD1wFZimgtLwr7KNxw33KnR0oB1p\n2+7a\r\n=JxUM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0oddAFrajGeMEohsHz2QYaMrMkA8Bgf/2/jW1CRYY8AIgU3pA9vflPkyVavK9/9Z2qJIGQhsBo4B8XedojIVGFok="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.206823160.16_1607210872008_0.9684596925604518"},"_hasShrinkwrap":false},"2.0.1-nightly.206922353.16":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.206922353.16","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.206922353.16+205254f","@alexa-games/sfb-skill":"^2.0.1-nightly.206922353.16+205254f","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.206922353.16+205254f","@alexa-games/sfb-util":"^2.0.1-nightly.206922353.16+205254f","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.206922353.16+205254f","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"205254fd6096f8a88820f77908096b1ef48d6156","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.206922353.16","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-u03rYbhfryMDioDH0Sr4sX0K0pn+u9+wQCuBV0OD7Ar+7og/r+dHewX9SFIIdhxhBilV5EucbHsNf1w6x3IIMQ==","shasum":"4c2f3d7455161873e7df357c25c16aff9171b1f9","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.206922353.16.tgz","fileCount":292,"unpackedSize":6327303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzWj2CRA9TVsSAnZWagAAhXkP/311Cz1g3rlFRpJGvL+d\n5bxeZ7M+zTr/U/OdOuur5/6yk4ea4KvZ+KsJiVHZ5ZNvH7YLrUoUClewGbne\ntz5x7ZP0frIdkuE8kTlBavD6kbpi4eIhUgyFpxXrfehWJYO+IcHm8hWlVjX/\nT+wFP5YcJnFJ9e5xvGzwZbW+xZMVXt0mFpPjR3vNEfLdl1+CMEm5JgGGJhgb\nC45AHfvkUzWIPm/AYQtP9+neLrKLyOYek+pplfXNeYY74SxEH7CRoWk99M2y\nR859ICbuobDVe/sHTUKXhZ0aZQzrwKTKkP8myF/mmEVe8wBwLXbHkNm2iKtg\nSIQDdwRTtK7j9D/tpkR1TA2DMV57l+ZRdLVwUsjpVCI32czn7tScYzT8hzcn\nW2Qcy9bl72NQjp9YneRXIEk/gVMa93MLLm1TpHM751aK6I+6h0vQFVJoIlEq\n8pS6QIMWngaUftPkCzQ0K3LSsPZoC8dsAbcruIFiny/QUdiXAhUcTGYQ/923\nK/S+f6Nsex+H1CgAsxkVA1HF49QhmmJwPvrGyraKZuNrAWhWozV9gpsdHKWz\nhNzD9c5kg21YSu2syauyHeuwwPgVsaT3jybyezPhGkk7vA14+YuT68Z0CAxN\nTIpVYrOflXWgWfMCFinyXY3+NQ9RdGdQORsn9dKudad4mZ0n3K58tOiq/xqT\nfWH/\r\n=EDxJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICYFR2jgPMwKXrrR2djzuXCcW5/YR8Kpanc03kAmXfGYAiEA+FQcZcB338kCe53Gq1eq5GRC4u6XGJt3YQOMAWQSe9I="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.206922353.16_1607297270111_0.4057966298191056"},"_hasShrinkwrap":false},"2.0.1-nightly.207167783.16":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.207167783.16","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-nightly.207167783.16+205254f","@alexa-games/sfb-skill":"^2.0.1-nightly.207167783.16+205254f","@alexa-games/sfb-story-debugger":"^2.0.1-nightly.207167783.16+205254f","@alexa-games/sfb-util":"^2.0.1-nightly.207167783.16+205254f","@alexa-games/sfb-vscode-extension":"^2.0.1-nightly.207167783.16+205254f","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"205254fd6096f8a88820f77908096b1ef48d6156","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.207167783.16","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-MIlHhAUdONM4/qu2rNkrck6XHx49EESbaRGfpXEEmFGKElroa6LSHIdVFEmgdQFFIdGZr7rH1ywh8OH3t5iHww==","shasum":"375b77df19182d44122e7b66fd3a27fa6c184afe","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.207167783.16.tgz","fileCount":292,"unpackedSize":6327303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzrsoCRA9TVsSAnZWagAAK8MP/1ugLsbWu9pA3Em8AHAF\nAoBkdcZ67W2RKApGw+VvMv4CA47eRA1TvuFndOJ46WbUS63NOIKmUfIEcxFW\n9lxT56xy2iJnLm6gvmQu1eJ/xhwEmQbhhOMbb4ocezK2Qr0KL5LnqG5Z5/yP\nOYDOzeyLOJSJ+pVmcucTmmQ/yg2XqEl5weW7BokNXPK2SpzCD6Jze49QgGW+\nzhSwgwlpEBsgRKaaoOY1nYrTQ0YZXeXyQ9x25SB1yThYCDXxfIJdVCVGyJfn\nbkyf1t4msTKCZQNFvW7kvCrYBfK+rAM7HBBdFFTgPW+CFA35DNXwwaALhMKh\n9k9NrNMU/BcjRTv4lhi7H4cdDkLJkhNoHp93ogEajophSyOHcm7kTp8cTdzC\nDrr0P21mwwEiluPKERJqOEK3W8LQwgY4LYlCcNtFPaIqNULnd4mydA8ciXAz\nVhWt4xak5ZeZ9M9d36C8YDRq3QRPENcKlFFVPYP7ldmsrfzBChg1P7O9j8Gn\nG2w4werX+okJaTureF3XXReS7mlV3YyFqI4w2VDvbKm1zWfshkFIViR9zX0A\nsIdyh62iVmz7trfz77Hv89t9jJ1FO+r5YpRVfIoGVeoYomzDDRVpEgCi1Xw3\nF5D3huxinGgj0dNEh20jhlVA3HlyZevwMwRGoYHyxwLd9pG/0T77KV/6fL1z\nQZg3\r\n=DQ/b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeCGVcguCjI2RjWekqq6/BuJkLVFrdynUiEUNoJM1DxgIhAOpxZaga4nuBROCKIf6kTzJasntzNgKIHbFefB9+/esd"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.207167783.16_1607383847450_0.7162278205886907"},"_hasShrinkwrap":false},"2.0.1-nightly.207361046.17":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-nightly.207361046.17","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.0","@alexa-games/sfb-skill":"^2.0.1-nightly.207361046.17+7b09c83","@alexa-games/sfb-story-debugger":"^2.0.0","@alexa-games/sfb-util":"^2.0.0","@alexa-games/sfb-vscode-extension":"^2.0.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"7b09c83371129df0fe5ad82f64382bd0b229488c","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-nightly.207361046.17","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-MOUri30+N4qKWKz0ZYZcZ5pRLp3RGoTATSGdKx4htAuO+2muf5sJIbypjQWrFIiO+2yo0ZIkgVub/mlue/jFKQ==","shasum":"1a2e751254e6131102c13d0bdbf3557add05820e","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-nightly.207361046.17.tgz","fileCount":292,"unpackedSize":6332717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0A4mCRA9TVsSAnZWagAARhcP/3NxCeyRk5+A1T4GHFzh\nvCUNJ8LQd03EPs58Ax7AVw9mDGEHwNlP8l7YeGyjCvVOQ6JU4eIVnf3W9FcQ\nCLH+HxkeWIW5i6Ok9f0OjT+hIwnsjm5/fzSn0Uyk4smZYtq2/3iAbiuvTTlL\n9r6HnPdx1Xtzsc8bkgX91mXYUf5xqqaDIGnZkw4IgMp0H33ZStJgxNWhdhJP\nwKEHWMLrT5n5TG+DtNfqZAvs3QYOV/zBuVkIM50D5LaWZaWya3pu+lGHM3yr\nngGje4e8sDVHEhGLd89yaCyml7C9E6dyeA5AZyXGmYVBClIxW1EpiyhmTpW4\nVwCrAjMZvJKEV7W3n8LAVWPGu3A9t0btDRDca7Yyppwpql88OA6B2Y1UP/qO\nzv8W6/x2/6uuWetOil/EwzeAwDJshS97NGfoWf3IugeyDVjRiqNc4LiPlfT+\nbZyHmezd9xxwdXb7AHyh3s38qrUiCW8rg1laiAsbZydsL+FB3zBPS5hqUTlh\nuQl9P0R6ZQfQS9INm2VttOXdBzyHh8xybGpU8bnVD1hz3BmImHkCsSmCEEAP\nc5ZPIT6bLbdzqFbxu720izxFvdTUaPdnfRnkgIYY5q5mkeD662xsdZIRhmDg\nGnzo8lyE8sSt4v8S5TzWSeC9hqsA42OpbAK87H7mQoc/RoWmP3BbmhsJL1sH\nq99V\r\n=xTjd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCP7t8ql6/tRqLonyJKBZ3D2n9imsPUba0wfltpT+BNIAIhALFEys2vfRoW1bJT81n3saRXbTZtT98T/zURB2bIrQx0"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-nightly.207361046.17_1607470630224_0.8584085963812063"},"_hasShrinkwrap":false},"2.0.1-beta.18":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.0.1-beta.18","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.0.1-beta.18+5abedbd","@alexa-games/sfb-skill":"^2.0.1-beta.18+5abedbd","@alexa-games/sfb-story-debugger":"^2.0.1-beta.18+5abedbd","@alexa-games/sfb-util":"^2.0.1-beta.18+5abedbd","@alexa-games/sfb-vscode-extension":"^2.0.1-beta.18+5abedbd","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"5abedbdfe73f2454f04a7347e9357fe5aaab101f","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.0.1-beta.18","_nodeVersion":"14.5.0","_npmVersion":"lerna/3.22.1/node@v14.5.0+x64 (darwin)","dist":{"integrity":"sha512-Z7CarhvqQpMYIK+5bFmGH++fmYULKo591DkW11nQMcfsOr6JNZDlOKrtCwKbqcaKKjfce3vr8SxAK3YzV+XgyA==","shasum":"128d80ac893a2bdd6208722ac8c7c554a8e1268a","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.0.1-beta.18.tgz","fileCount":294,"unpackedSize":25107952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0ReWCRA9TVsSAnZWagAAuZYP/RjJvmd8sJZWJXATCSJQ\nN9ws6lzGYXYLazmozeZS1ZQzYfJfbYj1srHLwxo6fv39JMc/zBfKiywG2YIK\nMiMDDrpIH7/CeW6UAND0nUqJF5o2H+2VGlyZP0FOPNMtNwcCcMTvgzsZP9Iy\nAMhihSHRqu3NwK1IWh7q4yW2iYouf+WbaO8qPC4+lWfjmcb0lS1CFuOk2ZRw\nGCtOkeu24dXI+uezEq/6y/Ce3ebb3XKeK4yKrf2QK3i+5lHjg3xwZC0xhrED\nqPv9x6jiKz8uEIFtyRq8t/Cfza5vII54MQA5BzXwXASkuaiT1TTvR94ZrAuw\nFU1om8dNKOs7PNMyK9Bz3P5o0GJsG9GgGTFIrTUVRTdVkIWpbCTCZDsG/wis\nh6o6gd1+CR8VjOb+aeEXQtNfhynh/NL3QmZWJ7raZVmXpTnR+ZBtnKO6Isc4\nBBvZeL1pHi+SH3HAfJJpsVcfrN4s115xAINimOMVvHdjG9b+qRvfUb2bLexa\n2Dhn6sMv/j4o3ZYpjp80KGrBhuqwvVgrOHRxufvM4f66k9AlcrJM0QWQCBFU\n8YILuCHAu/6Q8lnk9TFgsg9VrkVyw9al5b0CH/eAJv8LHHGIdlAsi7IrcfRn\n7sAgEicoUNtC+ABdtBR0CkAok4GJ8lSzIgXTSc6+ItYTw0KRKn3P8vImk3hf\nfWl0\r\n=F5U6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIACHlDq4Lem1+laVKGJcoESaxrt+nKyiKDYijXdsKoG6AiACaDaHpIyL9U+IDSYgUMWYon4aCkqmwmDEb9xMMULRug=="}]},"_npmUser":{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.0.1-beta.18_1607538581902_0.9526224606213791"},"_hasShrinkwrap":false},"2.1.0":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.0","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"2.1.0","@alexa-games/sfb-skill":"2.1.0","@alexa-games/sfb-story-debugger":"2.1.0","@alexa-games/sfb-util":"2.1.0","@alexa-games/sfb-vscode-extension":"2.1.0","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"b9005941c27b0a86120910b8e6ee7caab6dea0ea","_id":"@alexa-games/sfb-cli@2.1.0","_nodeVersion":"14.5.0","_npmVersion":"lerna/3.22.1/node@v14.5.0+x64 (darwin)","dist":{"integrity":"sha512-pW+23owbO0XBVsiPYd1j3djoWjtQ2bl1JgQ1Nm9ZvsRGLeaWWlQZgbDpzIeWuBI0io7q+1gRU4jH3uLGwUz0CQ==","shasum":"105075e297209b9f0a92f4ad9a982f2fce384b09","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.0.tgz","fileCount":294,"unpackedSize":25109420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0S3hCRA9TVsSAnZWagAAYmAP/jtqoirV8cmNWXsZ3n1j\nl7KxzWEvrW93U/EedgIwJgIzO7fxai3O2BE2ivA1sHI+yanBEvz29M+HC+qN\n+UuwxiEz+sqM2ig25JSuLgoQE19QdwLjLNATeR3jXgjPOIGsyC4VAGm4M4Xu\ns9ibwFBOuzHKFA1VtUf8fAIynQUQgYQZ8LkXoX8FIzSbNI4ngxlVG9/aYr5h\n+bHzxKgqQnPUH8+4cFEkFhqIOPiKGGF6XNc9uMn2+xqekkhrK7Cjr25GirD/\nkDFDB1BMNjHG3LEVYwueWRz8MenAwDrgB7dIYwoMiiKs58Jta4Axf9NSdvvS\nF1IPPD5WlScRCCXl45CjJ8bMZXar4i92SVWqDz4lP8oXu0C3qxS4QkUUii/3\ns4xh8K6G/fth+kxYBs2mV4+1ACALbLFYvWscrDfjSGoFPukCRmYVB7EWgLNq\n928r1SVmbVBkL4i41fp41X8+vop/1XPdcQmEJkY4KNldv6eYsffEfarPO018\nkUOv1dChLwgQ1HLFaWe2iZIhB18ixUpsKCngY7iz9pgdlrKKFxX1PzBitf3p\n3xzslKT/g6W+jQ2TAQ1BF54Cs2+3rh8LqLAuf4t8mJf+7qzeHSs3Crrzsxk4\nm8R244Wqls7S4PKXgNqgrNroF2T/M52pK8uvFIfIIk8eleeVTLBwz0MzkFKn\n3a5R\r\n=mQqx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5Bjb9/Vx3Bgtgzyi4JfD8HvRs1D/8oA313p/XW/dCSQIhAI22aI5E6B7DNrargV/ts3+xOnQUVA+YtXBBYg8ffkaR"}]},"_npmUser":{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.0_1607544288635_0.25009377768628194"},"_hasShrinkwrap":false},"2.1.1-nightly.222998180.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.222998180.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.222998180.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.222998180.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.222998180.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.222998180.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.222998180.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.222998180.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-6bfO+Awui8eQKZY+4t1xEQq2EdxkD4w8VKJVi+Krsl+x3JRWXZuVVrIO5O1Oh9PHASR1xtMnhaXPWgj9EJ+dvQ==","shasum":"7e7ee0f36634a85134501242d7ebe425a7e89bf0","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.222998180.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdjjrCRA9TVsSAnZWagAAZKAQAIoCSkO5bvLZJFb/Pdy/\n0GsgzuawQWgSE4ukqEGhWgCyTKy9oG6Tv6F2mwLC2kB3XC2WwyYGXZ8ZGD9M\nETsj/ZDFlFauqTSHCPfNrQoDS/3GTSedwOghL/cvhMfp/aJ/Rq6dalzJXs5i\nbdoUREYFf4/XuHYkK68ru06uDrAysd/RgdEVd7cvsJm04brfizsmBZdhzO08\n16aDkSMeuJm3uP8BajHUoyOpe5/n0syPJHo53v/QD/aEy/8mTNBlG4QdBsIy\nGsuSKyR4pWKPUYXMBw0ipUOJgP7iA/H0MA072UeOY5zIIboi6pL6It48qJGn\n32ER4ElVH7ht+Gpz1lmY4zfsLaayu87DJXSfnnVqJZFxOTVNRDuIzW869m+y\nmIZ9ES41eDDvTPmgXgEYxBzaJ0UTEeqlyxPhtTPAhMLpoDY38oelo1FuqPHg\nbFWUG5Qkhro9rMVKqsMfQRsnJMxKGm+/10vglbatkRSHlkxubYc8h6L7Pobu\nxb6POdcd/43btUVf6m/dqCvpc0YvZ/3fvBhlrjU8orzEg/Uqna1aG30HqRwp\nnYMDvkS34/8jn0gPjwwskxsLmFKg6iuvrtvYofnlkvI5IrYtqHTBfffYbwk2\nkNSwiZjWE/93AnUQo2TEy+WZSTGcsnnYKGr3wzbNX7p9vmdAE2FbZdwjlMCD\nR23B\r\n=PJTe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjGznSRMGXceGN7azkGlqMuMEpWZzmD14JJEsshS/QdAIhAOqnNSVnKQ9N/zbRAlN9xsOOXG4ESAZNgQcD7BDbYhoh"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.222998180.10_1618360555071_0.22952988618913217"},"_hasShrinkwrap":false},"2.1.1-nightly.223114844.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.223114844.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.223114844.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.223114844.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.223114844.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.223114844.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.223114844.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.223114844.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-Sp0jGvr6gNdiW4jl3nVP7E2LSWe5RYotGfaatKpU71GopxdUYi122j1vy3HmRTqrN1JajHEeVOD/8DX72sSHeA==","shasum":"a30ce455b5e2017ada641611c507c1117976e52e","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.223114844.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd4rVCRA9TVsSAnZWagAAhlMP/R8ee7kICd//1YMJulyj\ngUVlN5C8nxRq0Bqgf/ZZHNBBdLJv4AijwojSArcaMT9v9oJlOrf/QaAQk7LM\n4zjNxy4kkPnwJ0jTNq0pRFneR7SUfAG5o7kCPvI42EaHjU0YzEwAqxoDVIgP\ncl8g+fq6EinJqaWl1ALykF/+doQn2omSaNsmS2NEz7bUW447YXXFIvRR4kXM\ntX9C/WH2aHpBFB6yTyi1c86+vs7Eoa7MQlExXzo1P4KXkaRf+vPy/9gzAGy4\nBYYS0ZaHAFq6MUGYd767PjmJZczo00ntHmVpJqM3eDfnSeaLG44CxSQpSfBw\nIEa6L+pS9tBthD/yk6KMNq8etoRCXfviO04j0ofDWdCXlN2b4ZIWt6pqA90J\npLyYt+xXvz2Tm6KYvZSBr/Vre/S9qAI1vliWSzimu7uX9K9tNnAhm918G1qC\n7W9dKABfd0H6KlRMI9kv1liHLmNQDIWenljEaIZgCtDqx0LvbEC8B+RToYIW\npfbo45abNIET3WxsJloa70opTCCv8GXwjEx9IyWhfsoU5Vyd5cfuA5cjkyuK\nCq3Zo64CSIIv/ss57fZ0KtXYQpyGeln81wSYRQXjQcfRfDcGmxz9ZCIGzo5n\nfY+owl7tM6Z3tkd4ieqm2xRShzgmw1fD2g/tPeMzvxmWGwSgGr30Lm6/V7W5\nII4z\r\n=zrlr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1bodCs/axz/YT5NMAwRicCh6kQagzTQ2i7tDgnnSalAIhAIeMs6rrqtU2nAnoXeAKfMMXD2XJUiGCGzRWYhU8x1KA"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.223114844.10_1618447060806_0.45117422348890357"},"_hasShrinkwrap":false},"2.1.1-nightly.223246371.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.223246371.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.223246371.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.223246371.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.223246371.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.223246371.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.223246371.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.223246371.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-TlyuM4aBsbws8XynfgDkha4IvHQ+8ahIFRd1drY376vPmSFxrLkuIJjN2Bm0acLgOY2NKKUzA77VXjlSgGMiyA==","shasum":"dac9d001711da46105d9ad15ef41b94fc28541e4","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.223246371.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeNwgCRA9TVsSAnZWagAAzCUP/22ZvYsS8azR5lPrV7mr\nrRDSvTL27uDQTgKbDrejIfmRrOdwBru6SASNTp/LnPXZbO+diVLsRQ5Caq6O\nokqAZBcAZPKekBmV6AAQMrcBTR0Hz3aFu5NgcL4glr6H3mwbmebQ5WxhFELw\nSgbRkvmkfToU4zK1mMDmDLKskD3WAlWmXrmZUwMAfF433TZxYVIY3hjKxmED\nHuEIVZnbvFtXk7KZpvUPyDvBTyL81Qsj+STJPKo9j+U/C/yQcQiOW49RnACJ\nP3GuUheT/1T/fcbtQ9vvDhYoxY5AgKjlcPDYctlOqNRTlSaF6YzGGbR7tabB\noCVsjQq4xs90oFVTqQwoyCQJ7ZMwLMWBUMBGGLF/VxNoVVlgQEbOyhWTTkr7\n/EXg4/tFyBMZPCst2ZE/hutxiogawpKNy04sSWQsuZpUigPlCN19LjUJLOJO\nTFQ+hgVbWSV4hOlBNJY8jEFOk4zGUR2eC8TmAQ+oi7CeFit+8AUxrk5ek72L\nYqbaUO4mBpKd/q4QJt8foh6xCJU3EPT3Z05t2OfBujh7+K8Cn5SUjbqnGrTC\nrD1uFyuk5QGmekeVzG/oqQXqvEqNxvo7m3VDykbAfu/fLVxJPgCGqtKZm2nx\nL+54kpoQ0lmpUh3HfbqTIuMJU8mCw/b+aGd+q4MiUi3oCSqmr++D0bON8li6\nVa1h\r\n=dwiM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDT4dZqZAE2hZvZzsrSZIgqz/m5jUNF5wJCyfux2TemWwIgJmjz4k8XIrigzmSHWTHIfO5Wi0PpbEXCjNgMaoZc3Gg="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.223246371.10_1618533407561_0.6577102249797386"},"_hasShrinkwrap":false},"2.1.1-nightly.223356168.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.223356168.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.223356168.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.223356168.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.223356168.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.223356168.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.223356168.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.223356168.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-+wOZNpNkYme01d9Qk1YJmi+OZ2RF4oyAUAilLJ8SuA1FrXyBfIdxvYBuPeBTgWKCWUdu84+ppcUde0PfNwSJ7A==","shasum":"18f60f10f40850fb3c123ebb3b980b84cc367dd4","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.223356168.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgejAhCRA9TVsSAnZWagAAHX8P/RF0QsAS3o+Y7BDxD6AH\nUv9ZIDGff/UBfxu4QUZq22IyUp9vH6OLcB9Ug4ZSaTbHTfIH981A0GKY+MwO\ndEIN2fcx51Oz1bEGFQ1j4euhmqVh7Qot1qGuJsTp9YTNK+APn1+pUUIhngA7\nRsscmCrjOAwlWvspgMIpD0jSAbYjEQIGM7Vh6eEFZQliXB026NA+UE9DKWw5\nbF9NNTMIqy/YWvQ6izZfEgKxDe4kISn9CCarR1adYfj3PJIzPQTEojcT+8us\nyekyQOfpcyAlXCgDB3Kugl8q76PfTyprq/2/0LYByVZBoRQDC5YQfvLc0GFS\nECRkH5JEclOrOhVmqfgq/HyXPmCJwXMXvVnUqu4AzGJnkeAwEtJ4fCVrG4sp\nRQmdDqS5cEV8Hn0z4c6yrpI8LlgdZaqzhjXAQ0nNzuGtQbW7h3hizzEEN3PZ\nGPmo4+vmQn/fYnKRVa0xo7rEv/NhovTGYv+bTO/oerJE6h2ZOJS7jHqMkmGA\nh2Z7Vjo0sxIeiTm7jVqnEaILgZwYl9nYlK797cFn9uKrKh4tqZmfGVQKq4oQ\nQqDYwGYbPEjd7FyQBi3ygmyLpOb2z1PYKDNIN+ZyD7y9FzqoJpWYihqJH4ou\njh649SrcE1trJU68iUv8GUeswGLQN462oMW1s1Ffp3C6LXUXff42t1OZc7w5\n5f08\r\n=BRP2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDckCCgVnrKtQ8dM1MxeXkvLEHpuH1LE0ynXtqe8jRPSgIhAN5F5Op7sxMn4ShtCov7FY2BgUyTLDU2d7JtIwHIxpKn"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.223356168.10_1618620449321_0.2494902005847921"},"_hasShrinkwrap":false},"2.1.1-nightly.223383941.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.223383941.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.223383941.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.223383941.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.223383941.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.223383941.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.223383941.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.223383941.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-AImKHN1bpYYx5/VxTEo9TIEGCAoj+fHsxs9tzWBAD8nDVX5S3NBPZDJAsfWmqzEs9vOKbhQFgcYxH/41SPVi4w==","shasum":"5e6fc4f114f9a5cbf6df8504e46940930a548233","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.223383941.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge395CRA9TVsSAnZWagAAZWEP/3WUd4S37ErtsSVsSXih\neFVyDeD8c+mAIYy3YLPs0vW/i1SMc7qSNFapjl71RQN/IP6ZZ5/bgiAMS5bE\n2X/XaN0EgufmMvIphqPJ/KIT5KgcYXHszutLhIMn45uAPd2j/MzxlN+DpemD\nlLEokzYeaJPEIMRHcZgQOLLuvYAzd6fl0Tk7KBDhk8aGqwzPu2KizUdvikJ/\nC89tHFIPABRkCGTrgPwP1b1A9kyWIC1iovm13JXe7ypa5JxgsEy8yiLekd7Q\nhYeaL66rgudXRrs16HUx/MnBxPVEv9SXOYZqpvqJ8JlaDCya713XbbOXxZh6\nuQir7FbTT+MuDOQeRaqycGzTWN4Y7lwg5cYyKzWBVBm/6Za6bccXIQ0DjGYS\nf1rXg/qlaMggjRxYFdNbHK09F7ge1Gpefbi/DWzEqgQhq6a2zPAWycILnIe6\nXe2L8ohxgiQwKcQnc4Q/0Ulv+tSl888mtIV1L7wnpUwU+K7CF07uJS1ULdEC\nQEient5nGPqBAFyCvyaSVZLFVaHF509BTNXbL5scr2AxIa0H5xamRShi6nV2\nUYbDkymX0BVOr8DJBjygn42m0P9TRPBCX65XqAQmKv/xpQguIxU19qe886Cu\nqXDwdaE8Kg4cIHpq7NVQHI6PionVm7fmlLOyko4mx6o6TyUs+gvVue3eFzul\n3zBa\r\n=c6GX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLq7LDZzrsVJPi590mCuEVgag7+7eiYFUqCJ2BOnsYewIhAMUza3yQpxV67x4zw63MnnltE40ItDh7v9/1p4MQC/Q4"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.223383941.10_1618706297162_0.6097938493023298"},"_hasShrinkwrap":false},"2.1.1-nightly.223416837.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.223416837.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.223416837.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.223416837.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.223416837.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.223416837.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.223416837.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.223416837.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-uWJXBgNHD8DaZB1CzcHivlGf8gDmDfgcGzbdFJWFd7ccmyBBMdij84HFnBzFkEkst6BNpomMSvQVopIc4XuRGg==","shasum":"46b3cc1409ae6be99b7fb65ea99cef1e2132f0a6","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.223416837.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfNESCRA9TVsSAnZWagAAi10P/irv0V5eAgb+T0aPjAw7\n1WuI+H9quCiol4M8QbxSUr2OuQ7GqOHys8ycjhPWacxLqsREww+OYC/k0fAA\n128lOO5vkxkdYI0B4cS8hQ9N3aGUPM0pjNJ0m982JTIYGDRXf0FXEQ8LHXyc\n01kMa9BHSCygvGUJiCVifx23Uydx6EkVaXEdJ6xUJYVRmTYMR02dVLHeZcBg\nPltGFrTTJajko4/9Lzd3PZ8/mfcpW6x4+y1hsaS0pfjLS0/A9Pyxt5X1vY3X\nTDltaXk6ldqR8WFTVM/+f0S3q0j5mx5zwPSypsqbOwncD68ko0hn7Ibc2k+n\n708s6SBpThmm1RwtTAtKUmuml2phqSA/4hVC/VfsjH29LAvDMBFzA/CxzVBI\n7SeydcYlsNuZIzJvraLpqPOZo2xOEZphiIgu8GPuCaDZoEtDzE7BCLZ4nwWU\ngM8zhsNiDRMdNi+xRJfeYJRB63jjx045glNMlrtQahy+IgIsDwi4uu7PQYqG\nF87QQeuAQZwu+UUiIRTTuW99oHPyyCNs/yZgyU3ZWhk9Sl5g/FsCQ27ko7Do\nwhzwKsVViHbCFE69DhUh59gy0kgDMM1NhBda2tFAtU+MpMSNztMgGt+4u+01\n0CSHuDyfGe5+JLbUlUExUWmkbQ9g7sZqN6JSLv0nY60BN7WuG3BBONem9MVc\nlNea\r\n=Yj5X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuSb8aWGdUwabuR2IfvpBy/FHVzmbZWzmuHhrPwYjLugIhALySBA8irzRr8Je+MZ+sp8oFx1VsEPoD9wMWo3QQ8a7I"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.223416837.10_1618792721452_0.7551994207149382"},"_hasShrinkwrap":false},"2.1.1-nightly.223534090.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.223534090.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.223534090.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.223534090.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.223534090.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.223534090.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.223534090.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.223534090.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-2SPM8S3vp8z9/1Hl2JyP+wN4AUEbsSkxOutbmKfUaSj8g0K5YobRhoLI0d7+gnykyytcI+W/cCHOlDYvhOPqFQ==","shasum":"2a88107cbbf1a1527fceca4e554e1a6e6c6054f2","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.223534090.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfiP1CRA9TVsSAnZWagAAauQP/3h+dfG7vrcnkuYWH2ZV\nXNkOB6NXHvMl6a2ORXC61xsKUoOIhMLwWEPQp+e0H5LZDoNunX2KyTsEouak\n97JUGKKpiXmKEKYJFlnSL3hf0gwJ5mhcNBWgQ704UUbYASub4sRlVb6PzDRd\nGNPHCcz30sTOv+OXfQCDQWNsy5YWdsOtr187OK3hEW7Iqe5UialjLk0mcyXl\nVuh3+7C1RrtpXY+D1w1O+zm3Jx4fxIqv/ExiT5c3qFJjiaQP3f2UH9QQ/okS\nq23zQbA5S+73P5ZkAkycgPqyj824jqlozrpQmKHEyLhalszXkbPOuWjOhlWG\n2/Yp8HAEPAlYY+Dj/FqHR3L9QTtMaHznbLSKGAFxlxQEL5N/AAoJbZ3RU0SP\nIQMyH4ZF8xEUBSKMd0m7VAPjqmGhiGFfNimMf90g2JCJo4L4LCMWzdoWKx4w\n3gXs907NFnZjko/rTAElW0+ZbNVAVA1HbMXU8AGwfIbFMbB0rZhy+SuWQPDJ\nzhnTcyQn7mbo9oBrhw3xpcDquQw9GimgHNTFSrrOAo0Jx2ITpZDvR45AXYDA\nV+MoK2tdeMzqdTg6sjemTtFrt31oZoCD/6Cuugjnec0lzXryHY2HLl8S9rLQ\njlqMQYDiAxvZ/78PtjRWvH47okDAkBpUhzD7eLBAu10CJlsFuW4ExaZhmU25\ndNeL\r\n=/REp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAr6lmfGeAJn8OEv1yLGJLUnnkc7SKN5Z+05lD1enJshAiEAyQzei2+Q/trLWrdz8x9vXxvvm6Yf4hHS8WZYH/8scfY="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.223534090.10_1618879476628_0.003793237272747829"},"_hasShrinkwrap":false},"2.1.1-nightly.223809396.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.223809396.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.223809396.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.223809396.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.223809396.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.223809396.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.223809396.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.223809396.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-gOe4h7YhsYYYXbBOi1lGLPYfMT1zNTH49wqIGaRhC0uVOf+lRh3jezDBMsQbN5WdfOQQ5MBP4a3V71V0CeF3NQ==","shasum":"aaf7ef9945f1e71e14c6ec83e99f3046c7589ec8","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.223809396.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggMZUCRA9TVsSAnZWagAAJ9AQAIaE1UZqeoEIDc2wKkZ2\nz/tYqbn1RnwZpsIX1LwatjBDN34fFi0EuLMOqKLmevV+qHAzrmJ0zZ88Lw8w\nuNGpvgO6edvx1SbvhfsunDpI5Q8tHLlJF1f4cR3JCvCpMeLgEQ9fAF0inlyR\n2dGQe2QlK27IYQ+m2fVt1ICwUM8HUlu8TbuL/Shsq3CD+GrRuWRJCXYMnSpW\nBZprc+5OTTOJubiMqN2RSlDMp/VEk9WDknX8BrwldOCsFogdnYPF340pTKMu\nTZlTzO/W9NDk2B6CJwyiv94kpx6bWEp6ZmI8oJW4+zn/YQikDjkebATpLNvu\ntfbBRS5BN0zs7R0z9Rk9mLd2jg62GliYxNyzWBNCFFS2GjYT8pbe6RppjQpu\nwnxlDQ4rRCKXnmgPY2oms5zb70mUeX92+ajDga2iPckQKLLKFQowvhhRPunl\n1h5Efd1U6ZS8g2sRJRpNHCu16cgI+e79Ej3N2vZgqRzTyBdi7juump6Seh9s\n+pWqPpfTVylPlV1AXEiwa06Q8MUIa8uaHiGeYuPlVYDNYOFCJzB/l/SslDm4\naVxPRU0Rkv0wZsHZDoJmJCeH9gv1JDRSZjBs5YY9dfsQHkKqFil7fEp8auux\n9bxUCo7tSLWORR8jjnv63qirjKkF+edzc9Dsgv3M1qsZcW+hf97zElgtR2nP\n+PD3\r\n=xIlN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/KHcTbE60IQjavcYkHkjaqWYQ5u39HZueOITYUuazNgIgZHmZdr9n9o4xrFU+jdYPvN27KZcp8ZckacMc0tDSszY="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.223809396.10_1619052115652_0.3263803120223543"},"_hasShrinkwrap":false},"2.1.1-nightly.223941226.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.223941226.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.223941226.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.223941226.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.223941226.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.223941226.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.223941226.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.223941226.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-NeqFpzqQK6VmAglDxqW1ygBRYvZLAuGpz2dMQ7dnJDUKPC5oPw6eUM2JGAMyPz+o6hxUgcTuLGJR+rFc6b7pbQ==","shasum":"b495279536f5349430c91b63845b76557d78a73f","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.223941226.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgghfvCRA9TVsSAnZWagAAB/AQAI9XWKciPSPTHXMAaeqN\nkS4BneTZcis6xT3KgSvct0O2PZgCN8L9CXsJp1wjO6F+F0z46IxGCaOShYmX\nFqc/CL4fmil4LxkRPeLA7q9gx5PpABmI0pTW63XvJcILydQu2c2ntFlesUVq\nNP7s2lvjxGHjAujdEUFjWhWaipLNKQazImMod8dXOdnZjxM/rDYM7GflcMRp\nq1gKy9/xErestqrdfh1ghRg3Y7GJGBNYrSeG7zgADhuWLIWLDc7b9kVasqHz\njdJ2L+udb69lHA0SDtajeI4CLhAG88UwFafdp6SxEy2+JEcLTV8LElxMId8m\nO2YGqj5Xnu3Ke4RaL8424zxRqSredzcVQAOiyonpFW4Sk6saBvpY2Ny+mb0+\nP/wCFULV695qUgce94mUgTripHctkx2+kkjEQaF+PQgNRaefNnlejQvjdBuE\nUzURg1UenBgLgILYrdcsPCawji6escU8pPotkpzczLbCF7WtUcJmMPE318/m\nmhXyNLChochs31ahRoM4hVOsQHtDG2+Hkeztn71fzLwYCDiUM16xrinlZSFW\nxUc0fQz0jxIYt8N7UgNVApZg/AOnqSBtsw63hz99VCfXjMAZ5QZVcuyWNtoA\n+cp03GCBgMaFbwmrz941ExN0h6PKXCgrBq1u5vw9M31oWzx4KzZ2xAVOMdyJ\n3VCg\r\n=5KtB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNZWV7Ga3D1rwKLJzow9Xe/tcRUx/lhDzG9Pki1JNapAIhAKgp08rcI4EAj1QlxhlvFO7e+xGI7JtLy35hJk7xUy0+"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.223941226.10_1619138542369_0.3142143898481329"},"_hasShrinkwrap":false},"2.1.1-nightly.224042439.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224042439.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224042439.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224042439.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224042439.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224042439.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224042439.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224042439.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-7F415Bpvu95Ag+0hOvQ6f3xDjQ5P1+91VVc5Vz9fSW6iGSnkQ+PGYO3cp0/HuqAkA9TzhKJBaofjn2A0W3DA1A==","shasum":"684c2cae7387b6971ff37a580f281a8bf43dc13a","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224042439.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg2meCRA9TVsSAnZWagAAzvQQAKI61ya9YGovUN4A+9NU\nSDJNsL4wkB6WMU/JT8+Ww7HUdWd/mQYRXFLFH0bYJ53WWhMbeu5pYhE2qSjq\nIgSF3uoGSUJV1ycQeTNq4//DZdzKG7J+fV40+EU+JghsQ0QtJbfxCBvH9PiK\nkqPu7hX6ium2zm2QkwzPyxWXyqAH7n4xN2lFBxmSKuFTs7dkMZKzdJl1Ua2N\nS6RRCOgqt0Gyo4yR0vKDLckZJzzQjS8xaMMyh+RS5erD0m7k0aXvwblWgVd2\nWNBsZ0ER6Q9UZGLzFjxNZfXAshTNiN87ceFN/VUrrDd7Ox26dlKhFlvQ0Cx0\nF46+/wlgreDBi89crsEU1VDXOY8bzk4GwsNUVuODF/vxQblowpdXSgHFZRcr\npexg403cmhPD+r79KfsKiS/L16o4vYh5emBPDykgM6A1kGOsTIupM2hYXxuU\ncW37ztYFVmVu2y0Z/bN4zRsvsaFRLxS2fgZ7KLFpQYySA3hnK2KkaBNpnQJ8\nmikZTXNJrvGsFPJmUDKEwYoO9Tb4flCrLhUdt2s2y2D4O/bySZWlPfK2r71j\nVuccL0CT9Za1pKuQ4gdbCEXTaQHP1CForVe9Zo6FWcZr3i76B8P5i9x6/LJZ\nFIyYFdBusPli07MgBcT4ORtF3Mk4inQMSTt3eQ9j1m51FKQxZCSkt34XRghY\n0X6g\r\n=wQDz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEhJCakglTSCkzu1mE3dwUXlmKlAuBENeJTO47+H51zAAiEA3IE53AgZUQ1yQW4ZLXBe0bd0Z4QLxhWcm9VRZZzS1EY="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224042439.10_1619224989874_0.8642522087920541"},"_hasShrinkwrap":false},"2.1.1-nightly.224076856.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224076856.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224076856.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224076856.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224076856.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224076856.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224076856.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224076856.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-DFJtPfn8+BeKOUcPInzUXzJlHkC40VJHpMLoMAdkqSEvEDtfmL1g+cp+UVvQ8W1BOVvW7INI85y7Tuwumg9cew==","shasum":"fb19ea33a07886b5e608c4bb951a5266f6f8a9fd","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224076856.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghLsYCRA9TVsSAnZWagAAZ2sP/jAlmj0HFWfSmQZ9/PMZ\nT0vAisZf/1BXUwxyYBI+st5Udq+f3CBXdRhZkU3N1jT2q0oeIrzrazDvgphn\nH718Q/0ZeVJpX58Qca0Wv0lLEl9NhJrIxU70U7314jQjC2QfCmsVuiy410lT\nEXC48VokvkfYYh/n3dHihAKggDdmqaOq4OJRDBLEl6l1tCZ83qvv1pRNJT+A\nQ/sf7z5HkH2COuO4yd5mgIpAUlxOB/nFP7oGWKLcto8L5PHg6jSkSZiJkw3+\nnENE8LvGrJGRl04AR7ol7zUtfCbNWTuI9G5YsRxY7b1G6OATmSe82h3U733i\nkTxj4tg37oIeroEaf7cWFKM9tUug+V12EOUUwHKQiBD2uCMhW6iorX7Xc9jy\nc+vWhyTbwsoWjxI1cr1t7htYiV6VW9Elc/kWlA0+eCpWrbaWncClxwgC2NcY\nJorYrALpyOPbsnoj5yBHUkoJWX/yO1jetP8ibJL5NaEyzHuIJ0wu3/E4xZu0\na15YYt7e8sr6sEuxcLfQW4Zwy9WdOkO5aFYn9nCKxt5x4NZrqHiyw3rQIdBf\na0/KOyuLsGQpkDm1o3K+RRzys1nYnGxtBT+4R0b20EQ+ZwlnGeJz7fgreoz/\npdYECzVWkFEmrE+w6jILxPjFBFYyR0gqepI9pZkHBO40GbppGljZvWeK4R0p\nYXpG\r\n=Q+sP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHnwEUztcO7y0qTUtVqFWk6qGfL92dkCphM8OBSqY94EAiEAiKb3JKlke5IbCadB5iY8tqhiAjcfZbZAc/lnXJvjzqc="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224076856.10_1619311384181_0.8072667524259618"},"_hasShrinkwrap":false},"2.1.1-nightly.224104607.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224104607.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224104607.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224104607.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224104607.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224104607.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224104607.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224104607.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-Rk9txED28CgM5p6yIYdPKSW9mGWNZpu1FhtM8ra73sL7D+LhF3d56a+peE6XzYvqCmqSarLoc48lgIOfbZWYCA==","shasum":"67b5a544a2fc72e53ec2aaafd5b6e3715835b14b","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224104607.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghgyRCRA9TVsSAnZWagAA0jYQAJamGluTJPrn/8I95Rz0\nJSffCY8evO1wTkcspm5OwE1AjpvYAhT2aoAp5GmCiDxQqAcnmeLbaJSEMrWo\nlO8pQSGBczuTLZ1FczONuMRo6Y7QFI8iKPG4pAdJeu/dnW4WX2rsJW2gpWyS\nQ/HsvrymQo9fiWrxw9eOczKmDacXse7tpA3Zp5Ak0YjuyC7hVYLPLlPMUwkX\nzYT6KVNvCd1bdn2uzDL57QgBMjC0mH2p9r8JRTz0ux5bZ6256WGTQkvqOU5k\nDdleZBKSG2q4wg9/Yua7mkrxHoRvTNIg3iRbbRxCj0MT/jubGGWINYa9Ol+P\nJXNSE5zZ+PIshtPjKhkRxHailQNBCXRNqLaXZRnxyPfTFY47x2bH11HLalPO\n5I7imiPEEAXtWyDrrRU+eJqgdB5E6J6q432cKk9Tog8bwU8Pkoa11cO6LVl0\n1VByJ22yAB34l7FBzawjwU8ySDU2D/EJU9sIwNMmVS/uRRjjDHdPiuutXk9G\nhGHN250r5xw6oLDiyztRMQwfv0TQ5gq6Xq1KkwsoMXxGbSCeKXNsmdzSXHMz\nnQAa9nBC3BGWy3nB7h1ZVvhnvgSQwahKBPOYHU/MKn4qT9I9DI2AWK3AKgCC\nrzpwNoSL1pFq2TBpYP6yRO0VeMFe5qCBN4dApFGTOab9EFQ9vPa4n79c9vB6\nQKEW\r\n=Ma3g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHK3GRJd2M17eBWJd4Nm/+gXpCxr23B5fHUWfCtle8QkAiAbDgBg/MS/C4OgAPzrzU6O0RYQxQd63JcDuIPdPuoXbQ=="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224104607.10_1619397776472_0.9120851613773255"},"_hasShrinkwrap":false},"2.1.1-nightly.224217643.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224217643.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224217643.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224217643.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224217643.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224217643.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224217643.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224217643.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-uqukma6flHb96X42ETmMayDomMANUqZyitHrRdYYdVuheGLL2uqbib1OAqfShMdc+e8YVAsOrXR+l3c8zzqiqw==","shasum":"9d6b6d5bb6dcbf4c530b1cc1af86dfdb1f1298e8","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224217643.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgh15FCRA9TVsSAnZWagAASPgP/R4mhRyrwSTtF4YOBuko\nQM3IprWeOrV1rtB4il5A2cZodH1Wfrlbkum1+e+pRUtaAEP1ABdSqSoKQncp\ng16mg+GD8lMCfju+7yXYsP1kP6eJfQbiqG1gfm+xlZsQYsjmguFOMagvV9CN\nyM2AmFy3bW++5XY9IJiAmAd2XbEJpocGwEfj3NSgOTsJvz/dQXdDG1ZahHQY\neGQvf0mx8LpXTQScQ0LwRQ82YznC4A2BIuAu9SsozdZHl4nD5ZK2MOW0CmXy\nGQFWL4KrpJ/JjJYo7OCcIggOfniYQ+bd46rHdtdC0m/tAmIlonrECvvoGq+1\nG9yFoWbiJyeLBGKWiX4G1fZBYZVf7m5X0E2qEzbDiAij5mkvc9Wep0nbdmoF\nkd4Z5w2J3BoVN675DZdtS8z/Crg+vs3zb1h0re6IheHLg17jCTOpdsrjXSD0\nqnKsxYzyeOT4guTRRKYu+ovPkYA0Fjs/UCNZziVjRinNnBRj/CVcu/fgVYwP\nqCLjvUZTIsGBVOBUOigxMtRPhjL7IyhCXi83jT3w8/SoBuK7ROfHR2ajQHgV\nnnk5ZqiTU0svzJT0DAeBE1h6cwlmdWM1HE+bLGCKv3BXhhIIDnJqwMx22+9d\nj3xvXDYQlpxqiA8L6vE0aG7RMPgQIUbm9+Hagab36Avr+MQryvp4YsA7v8e6\nHvD9\r\n=NJmn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/7dGAJ9tOm8jMxzkmmAFEYACRF3diKbP/XZTf/WeW6AiEA6w+idNFg/d0yEnmFphBUn/IZG3+Em+1kt8xzNnbunjg="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224217643.10_1619484228869_0.4113307115889935"},"_hasShrinkwrap":false},"2.1.1-nightly.224332497.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224332497.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224332497.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224332497.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224332497.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224332497.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224332497.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224332497.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-xoH3uwaacg/gdzhwg6CGe2edQyeXBHe6BPztwoGab727G4hZeCrOsxB8p0Et1OuOmx9K6AdL2Cu1VjYU29xGIw==","shasum":"e44ffc33d6d464f829262f2498637fde87341997","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224332497.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiLAbCRA9TVsSAnZWagAA0KoP/3o9jub5+vUI6LbOaXuJ\n0ROkUddRNnEo66q2JScLJdzA+eUJgtfgk4E4Vcd6SvcjfY0HQUdh+HV7i23z\nhKp4korjeimHsXenXVnAXfBS8ySeqtr88j4rEi20S+sK86mw/ioeCesdaRtq\nfvpD/8yMImErlHVmiHkFUN5bBWvO8DLKno/vAHqPtuZT2CN42kXeI+gAVUM4\nLtOY1+woK0k+ReHDe+pxrfYh2wLdHcrw/dzyd7CLbqULM8drB+jgHMjg5CvV\niTa70v3mFYnBckv7icipzc1zVLf2LHy6v89326aW/TG5pZfNY/MB4O83G/0R\nMOzINDpGYRk3uNIfuJbCl6cO0s/zvUUVBcNt37TExcDCyv+93bTg1WTv4OW1\nRm0q8xhP+I3UlLIN3j88OWD4MTPWm3KLP69KKogpLKmJ6grdNT2I72cB6C/z\noFs0wJhlYOcAwm+QqGh1LTZW7hciGJC3IlG6LbYrReyqebg5rzHgytqQRdMd\n7jMTLMXz4Pl6BDeYDT6kQQg+mUGDHwyAXrBEMYE7UC9xX/D0HN5DstvbdAXp\nVwvShR7aAd2ttaYwIlAu9gz6Zneskkn2u82r5NGCj+LUxNpR5MHfeIwElFk+\nKpnoS9ptbhIt2fDnax1y6Y3RA7KU/FVZ0WuPpRD9dFdu2NUw90/FZm8UDmdU\nEuWH\r\n=4Xjn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSRu7ykXRSWTAXzu98Dp5D+HpAdL0rk73DPE7QgNnHHQIgL2UNtITodbBDOXsV4lUTAnNrWkulMZa2nWVuyQoP2w0="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224332497.10_1619570714912_0.7851932583749266"},"_hasShrinkwrap":false},"2.1.1-nightly.224450567.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224450567.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224450567.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224450567.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224450567.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224450567.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224450567.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224450567.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-XPGFnyuLId63wh+GHB6TFhjPLtcHqNA38C5Uaq0m6tO8mytDFIUi5NmhkyAh+jeUjVJv8ZILtR3ZDmntl3tPXg==","shasum":"65c10ea90aad84c25e6d7ef60fe5835a2c6300be","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224450567.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgigHQCRA9TVsSAnZWagAApGMQAJAqTZ0dXex1cOYdAW/6\nWCU2pF0v1MeqRT7jsZJCL9kDr+MPdpwelt89Ft6QTzpkxsMrxt5oKhncDtYJ\nXEJNjdH7eTLO9N/8aRNCWjPiw1jiL3s5/IyvLT8BlKI9HdF57netytK05a/n\nwmURvNN0HGtR3UQWb9ls4yLJmSFLOg/KVU2441K26rUOhSLRsel3+6IoTYo8\nhEsli4MW+shLUKqsKf2aXfqMRsZTPdZ94rq3GJONy8P3yCcVJoOvkgfkc0aN\nHrLEg2Pv1tzR0HMzL+JGG3fzDWvAuZKUIeoy5YlsxsHEuZ57yN/PVECR73V5\nHXjdbyteTPW9RilMhxNWTfFdu/BhTNAhVsvSD5CLzdDQxMzf5x1iOV0/RrZv\nmEc+gEExjeXF0PL6ZjEasVEKmUowFveUe4U3PTyqHO52GpNmu4xV24HqjEAV\np7oPzVlvIk2JN4YJiM6GS4IVdl5SgwW30DP+rLI9Um5IgApkkxwU/PqpVvWa\n0RCd3Vih9FinSrwYd/wf2G9IuxoiWphbJRVa0YOg3OXr1ZXzZJMRMPtQyxDT\n3Zf+8BaYMWKgb6Reb+mKF2J0Riiqe8PUGJm/CIkwZ+OyxcXd+eK9Kn/ncYMr\nSpA0A1fjMiw4ZN0U3w0cJqXeb57up7brX3umbKnZ7imdLEW70+SLjQLZj/wc\n1lRM\r\n=ZwDi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBa/zvVLVZPaFY0VhCTmfXiyWjRWYJxCBB9COZIU01DSAiAxu1qCkG9gqmszKaZLJKFg+eirxygVcYjtjYjse5/UhQ=="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224450567.10_1619657168126_0.8528971776820868"},"_hasShrinkwrap":false},"2.1.1-nightly.224565873.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224565873.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224565873.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224565873.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224565873.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224565873.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224565873.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224565873.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-AzZ4cDA7kuqz+bXfwpesJ0m+ebOMK8xXtaw/Ps3Epr6vWdtsQgAZKj57JWMaxIwDtfz8Mcfyb8EKv9Bz/wUsDQ==","shasum":"93c2ad22a75e1eaaf351bb5c7606b5c0b178ef60","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224565873.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi1OUCRA9TVsSAnZWagAAdT4P/RRXy1aRYKKx9QZMz1W0\nAJdVF0iF1FRZlOND04j7rGaxJ/j2xF9uyshLKswesDApAXkPX7l1nyU1JfWN\ncB+ZYPlQxyDNLaMIUmZEI6mjgr+96dFfwcV30z/3q7LLe/O9nJSPyN88h6sQ\nKFn3Y+3Z/bhye72Ur4CWRgKSumU/CIRSTESKRYZuFLdUyRLZ/URC3UpI7nNx\n9rvB/47t3UhYbfSjH57sfrT+gzjkyw0HRG56skl6e9nD6b5+CqgdaRh0w/wF\nXQPkWTCEKC9TCVN6rDL0+/zVTqoulhYf0TrxzvDCzCOrbUcmBDVVqegU3qPC\ndarhn0ojdvCKNHuEDGwfvwXXlWndi6ijEXrwJdWU+w5hq+7jCKERBHUdRIdc\nFk23jOahT8fnHQv1kUYjv1NB78SAnrKq0N1+Abc+eRb+ESXKPHWqE3xQD03o\nkU5NqG7TUEgEVeUFFLV3P1MVAWNIGIrwCdtegdc/3juDyLN1dfA0983coY+4\nonCbZgwCgfpAb1Zr269jKwQ4VG1pTYCv3zk/Mj49gRt3y5mk/6FCDGnVXj/2\nf+E/GTMkiRKwYLZS9zclx+JZK6sA5++V+6RtrpMhdC1n/VSs2zkZpsrQE94j\nrElmmBbHKGKC4jlrP1DI8kSXabkvOnILeM4Va9HBf1UhMyP9vPJT8FOtsthQ\nGH+4\r\n=rzct\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWSrijFgRlR6Sqe+IGnVqpqKH1BQkOW4zaCirAhZi57gIgfrAkSt2NS2Maz25TQcqmIwYApwy45i0TiyIJa35KHik="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224565873.10_1619743636092_0.9397112897516078"},"_hasShrinkwrap":false},"2.1.1-nightly.224674011.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224674011.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224674011.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224674011.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224674011.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224674011.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224674011.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224674011.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-UDgp52jczwl2hkFVytDGBMUCy50fPuxCTO31Apnifj5bjtO/1cKMRulSPBRH6LyoB7VwrxfOk9j+vXvgKXEkww==","shasum":"3d901d269d39cae6f0675d07a0e86a0f3c989c97","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224674011.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjKUKCRA9TVsSAnZWagAAAboP/Ra6m/Jz7iKjn8ZyAj8w\n7VlanD4p4XrIb1zq9WAbj97vURMgv2D5V6to1hfwrk4YqV9rEZftz9epObAn\noReTkezM0hJWPBIOF4HFgqvL0jChlcqZAvSFz5dN36D9tUaLdUvKkdQw1FK6\nAoQXR10n4X0E2tqMGveYrqz+jj4xRe6ewIqcdW4wivqBp4z+35yNEKK20svo\nh1jInGn6orv393v/vDBGppQLzzJGUDyvtd4rEwMMIvEIYdAkLNoEPK1aJgw5\nHEuoulSlh3yKQqq4YuOLZbFL6roV8byK8POjln7h9BUjaYTGLmdC308J46ed\nZsKUKQ7NexruvKiL3T0F5juwzhlzCVb5QJwrRMvcEGyWwvaCQrCus2pyexUH\n5yujHTlG0WJwTbxRy50pw+2gP+V8tGzXivE40lxCPH62L2MP5Da4oQJ4GeHW\noCuCU/jSlilhZfZg10F32ADXIvdXF0uwTW0W/t03MCpHJf7lp1L64mXiYsXU\nObdhhGfuInmsO9lmKn6lQQvVlmwJ0J6qOn85BkBJiVmIBgBLw8oJ8NmDv6Si\n0zZOMlABCPjFofZIZkfd4UaXMM+swFmEvjyKwMUhN0A1FLMasM6Q371SJMMO\nmKqXkVXzFZ77R21kDHbmEwnj4Vj+Yu88NDLdkqlgpBe7vnPtFWByZ+DDMTPB\nEPM3\r\n=o7as\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwEe6njY/5X6qXz3AxQ/z2IULjzf1VDgqRaabCsYqrOQIgR0cQS+xbBcHux+Y3vN31c/UyC4iw7jCG3nKH0tfr880="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224674011.10_1619830026045_0.3178015274360173"},"_hasShrinkwrap":false},"2.1.1-nightly.224699870.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224699870.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224699870.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224699870.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224699870.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224699870.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224699870.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224699870.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-F5ezpoDs1FMY9xvezvd9+DXAjxE6JaBnl0FUXpPAwnOqpEUnUd/3jm9W5FNMe1S4YIc3cKYWTwwlhbU64VuEXA==","shasum":"ee849da52fcb887e9a5becd0c142c83920fc56af","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224699870.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjfaeCRA9TVsSAnZWagAAXAcP/iIkTSqcIcTZuOWAyyeW\nlxaiO5t+wgD20M0aloMdiUeQpIs3V+Iqkqz2iatb/EBMhqS4YjGYGemHzxW7\ncTruprZ4Y/eQNwkuuDm+fCp/stThD4yN8rCNadzVHehrC9x9s6tmpVQCWnhf\nBNyMFlGGUIVDAq4dxAQpj78ukIEE6ZK/qzXiON98zivYi2/J08m23qrocS8y\n+M4xqpmydTtNAz8Fe/1XEEimYwBq4vONKrPOaX5R/+ljW3AllLK+W8LnQ0MD\nd89pzWfW1hFzuGt8Fsr3JgyVAzC/Z3n5Agi30rLiGMb+4wz94xXc8FQce219\n38NVaK3KzILYg8bDJS35G5moxi1r2sfD30NBpPecsrc5JC53FSOC8MmYb5E5\nVLsxRKuhUY3wz+gzeVuBESF6GieXmzY3s+mei/ThD7wJLOIBpbvJAX2myEXC\nqL9vfknV/Z8p/XZTtAy6OaS69ksiCfsq3qkw2jq4YLWR/si50Q7lNiR6a/Hk\nUANy/6ZMcr4Qx652dA9natlDOBUbR4F91UvQA41jxnYsmiRCJ4jdsRedfUZ1\ng7Ok7607MzbL5scW5+f5JY0kJIq1lFiLTE8cwmerK+QHpxYLLrfp0H7btUI0\nT5AFd7h/H5mWT8d2zMV9PGSxeqGQ3zlVs2cwfnhP5PJoN5oeJZBpQukyaYKR\nnHeo\r\n=vSzu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3f2YGtEJXNAaOPq5mW/hrb+7bd69M9PWvltJyQSk+IwIhAIVT2EAOTos6FPBsTRt+ZJIeuOhrH3uxR9uqoeKLmm8/"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224699870.10_1619916445649_0.08500798746828431"},"_hasShrinkwrap":false},"2.1.1-nightly.224725748.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224725748.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224725748.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224725748.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224725748.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224725748.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224725748.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224725748.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-xyTMJ3Wch7sjoSmx5/L1UClHWPP7hH5OUBa7DDyNR3xPLJbwHbiIVJa+Ecis5TOOps/UvwOMZMabHx3we4H19g==","shasum":"e63c632c786d6821a503f8217a3e10cfce5970c1","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224725748.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj0g5CRA9TVsSAnZWagAA3SQP/3KunpQP2D0tJPOQ+TZz\ndHxVyAmGmCzS1P/bBZsyCLjcKHUALbFQ7E2SvjulkkjUmKutrhyzC1i6JVzT\nrjuBWfCvJJeigfqQw99AAZ5vb6nwI7BQhZq14jUcl4TRzgvsSKTvYG2rGysW\n+4n7b9hohaFjxWvhuDEIeH44uL3by0KF1Iv3aNtoUnT/YWcUMZ2BhUImosV6\nLf+dRO6Ifffk4JUSiSq7xp8q1vUyvtTXsE8ZA33oPbApm14swHuWTr+6gRwO\nOjuukfGsHl1a0o/STsHSTD6y/WNTqqXNivctjgkYjBBZjKwMTcQf5qPyoBoc\nhcMJOql/DOBJlIakmzMFXIoioeRpP6n7cXIPATWzNgBAyYgY6X5JYa3vN9ws\n2OBu8GdE7Dqy0ZWPUntU5DjdBJQKCZcN9O7PZDDViqt6UXLQvx4PiIxrfuU6\nw02FodSKB069tXteNYRZ3z9WCBUu4kuTYU6EmQNPw4RiLILc8819XO1CMswq\nvS06PvokmPRXfY9RBdDorwV14N9+yHjkTrN/Qnt/W2s9DQCR+hw0aQVn2/+d\npJHNUShU33g8Yj07K2jEpZmDivMYub4zAJ2xFwWp6yAW4DR9V8KaJy7y8SeR\nAUpKjiFElXG+GOVunZ/V1gFKRluqY2se4sjo+kQmI1t9ZYFLihwfUOsrYNt7\nwuQi\r\n=E3s4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHghsps6Uz/XxGDgwd1N0YuxLF38vKD8CuM/kmcKhz/QAiEArlnCpKGGxTHyfQiK/7SqCL2x8IFSyvmUMLqnkeEFx9Q="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224725748.10_1620002872784_0.27909141343623456"},"_hasShrinkwrap":false},"2.1.1-nightly.224815506.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224815506.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224815506.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224815506.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224815506.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224815506.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224815506.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224815506.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-h3s+xD+HvWj6qAhOnw52uoKkYt3XgSijF9n1rATfW1bhdtnWZ+tlp/ziDf9zNL7bCewG9PkrsYkUV7ntbJm8+w==","shasum":"86c2b4f751ea7d5b5588b40e47190e615e2825d7","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224815506.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkJpvCRA9TVsSAnZWagAA8w8P/0NdOaTMi8MyL6ihPffZ\naZ/Ha9ejFQoedgbmpgUCbl/MK5UUhn8tRm70EhY5wDH5sge8GV8awbooUg0x\nFo4R4CX4u6zV/3z1mZkv+6XGwerrUHgKoPU8lbefKG4JA+OP/cMkyeZwFXdL\nvIpFBSpR0S7da9m/KonjU7fc3wdAZTjUy+NklFQzZJ/G4hXCDG4TIGzH94X4\nnKXKhVM9GkCSebCeh9+XeCn0AGmcekHj95KuIhYvVt2RoNKvL6JnE7yr0zTQ\nJwIJKkABbwg+729awlFSvVMVWNWpe4G9fSlQkAJTFks2nTusf544vwYECrJW\n3BW46nSlYM3Uu94Tl6qKq05pNksVvVAiGF34+Hft3vqZ6EJUc8E6KyyGIbJ/\nutWlPAd4Cg1NWKwsskiJAlYcmtt4yTc+bRtp0LwARJAx5nX85tAWt1vZW8+e\nH1pDloOYDXiCbfIaqRIEr5CXSW9E256gVKygGlt5dQqM6g81oKngqmdSFbCx\n5mpS94BcaIqaPwncYSJaNXWDQDkB3tIM7doVJBvZlRMJiav2nX6vecVpji4K\nrZ/E052j38PjqRlHRK7bO5LhUG7unaw1DJ83CukCuxnDc2gcx5pkVCwasIUC\nD2IuOVsDLUrfph3KmIxnNR/ZsWBK/WNPlGe+k0XhCmT5tiDYkCn5lpWecSGK\nzjxT\r\n=LsFB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG7H/mDQMkWPS1GRfyEF+1MeJOlXIfjBWtW7Q7rLtq+vAiAIHkAJVWvtjQJJWG0EOhqsQnrmr+ov0bxbCCIVPMy9XA=="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224815506.10_1620089454710_0.3906955238720986"},"_hasShrinkwrap":false},"2.1.1-nightly.224921011.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.224921011.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.224921011.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.224921011.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.224921011.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.224921011.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.224921011.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.224921011.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-/V84XW7TH06ZA3xrmbOOvI2L3L1JeNhQtMWO7r3nVetZkJNbdBi8DlumqLqxaGP1x3zx9miKlyzJeZ0lMRozRw==","shasum":"6812fc6adecd0712ed8e40a5c37bd9fa224f0728","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.224921011.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgketxCRA9TVsSAnZWagAAvp0P+wTND0WKXhSvuHcpj6Xi\nXqjImJG5dQCKj9xNmUohJflEcuT033UUL009NRGPAjtwK2ldp2y0Be34MPMe\nlxLnBkMSrCxi+3ORnyUYkE9x2hcmCyBAsAJo5ddSKBl4jAeq08s8L9qu4Ryy\n2u2BVpgdfE5gslwp7kKKsM9x5n+69tigr0wNVsJrmyLjofOJLgefgIBNAkns\n+KLEtenr//tVHIwYiWYvz5TJ9BqPk8iCooVIzSdkRgLv1bbFTyMlLtCXBxnz\njIV5LKr32jhSj8wX87TxeNWhuf8oyi/brzx8Zr49x9p5MgVjaKUplCmAJzzO\nf4fMKQsrP8yLO+hgBzSmioDpFyUblLf4I6vgACSQfHR1kInJ1n5h5+Juw7Vm\n/1Z8moukKC9LW2BINw6pZjnfiykhXX88Lh6seA6xSMJnG9Pp37l9HV65KaJo\nfYW5/Fb3+CpyJBGjLVjaiaHB+GdXxuLuTKGUcC6uer7IaHdmnhbQlDA2RFzP\nvQBs087wPIN7q5UUTk1U1JkMl5l5TyioWDD8sVdfYMpW0OeCqUm503338aOy\ndpkm3N7zefAwZ1Z2Igm2Ab3q6FvCUjGo7+uCwUFjCD7eKGuXDiBTfRmNA39J\nSfNAYYwzqwhLkppAHjAG689J5k08MvtiWWIzqemk1S3YaMRElY4LJ+AF+hwz\nVopq\r\n=g4Fc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAKN2clvV3t5DQQ1fxqExbQiiaDXtBEh0ktL0JEQyGDAiB9EG080njauqlTj6YwGmtMk7bMPjkppKHyeiksXlm9iQ=="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.224921011.10_1620175729364_0.8321482851675044"},"_hasShrinkwrap":false},"2.1.1-nightly.225026743.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.225026743.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.225026743.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.225026743.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.225026743.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.225026743.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.225026743.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.225026743.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-GlKlqMtCl/aGQEqJQXop5vJ66r/xczXE2T83Jyg5THJHUzlgemL5rR8CFGZ2PitvZalKNcfyfqSGDt5WFRUHxA==","shasum":"9873d39c8ed3e66f9aa6655c1a46e976a5802c25","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.225026743.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkz0GCRA9TVsSAnZWagAAgD0P/i3kqySwgyATOn4UjcEm\nzKa5CbOZQC7y4UHlzmSQSPoEfdIWfObfFzYEWNgmvJdeEXXARkhOzdSEm3vh\nAQPy5EPdnaR2byDcXghjSBhkh4/m6V9QSD9TGfUr/1ratf5a8soPEnifBqca\nsVWfR5N1ws0go0cIkQVDYgDU9Ge4eocoSc5oa7spThzQlWYQtHZpyEoiD6Xz\nJzIze/JoYeJyzblCouyZ8pWNAsBScr16svkaZCkPnh+cCf1z7Knn9CwhAn7x\nWhzuaNGI67wMTkmkiU0kg/j4qYcjaRdDMtbLQP9Il97a0cFOpgbjm+LN16tV\nvcmXKGBQvQOt6o17NJDPu6qnoKVH+x6dxplt4gjfiQh/WEEGY7xvkJwkzoy+\nvc+FjaMis45++2zHb2TK82Ldj36NRnQ9f8KdQorMK44xt1UIc0VlGz/D+VEZ\n1a150aXXxjuKbYpB5yFxh1H/fTo/XjGWbeAWmrkKBRA3bevBWvGDJg2f6ZTr\nrzHetoQtuKx2FlYTt4CfV8CdHhBYxuzOeEuhaH85jLLtYljWdSqWtzxGj6LX\nBK4rO7GR7T1Ek8S/6S27bl9rL6k/uvAc6HGeQoKCqmm3C4wuHmoTRers8h3c\ndL0fOQNFazBfHxnSZM/0wQcCZwdYnKBNpWefFUilyDPTKsI+v/XgUwdP9n7Y\nG9fp\r\n=oZr0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFqYqNFTAYBZs6PXiCr8LKlDJXDQZBres3Oij7lbw2cRAiEAqxOX4hyK3VWXr3ZGHMm+62YlelyDX02K+X3Nci3bj2k="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.225026743.10_1620262149641_0.31586543352798424"},"_hasShrinkwrap":false},"2.1.1-nightly.225146630.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.225146630.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.225146630.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.225146630.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.225146630.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.225146630.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.225146630.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.225146630.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-H7zCTtTwIYQzkh0MqZBNbp9d1rmeU0kPOv616vd6pyyF1mBVhWA5EVB1gC6uPKJc4K+4id0MC9+RS3SLYsyu9w==","shasum":"0acb6d2f99894867e449424e4be1f8cf91a25583","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.225146630.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglI7HCRA9TVsSAnZWagAAbiMP/0TjI2kSityHUinmT/1c\nRd9BCd54dInN3MF7WcMcFXvycIrhTrKxaKiEelDr7qnteZFZiV8RcV9ucMPa\nknI8No0ko1SjYevg/2/GTAA6G+EVA66Y0TdsZKEtVRwU55tD9oumFPC3UIHd\nZ+3zZfvWG/v/TSkFybRDibmVazv8IT0/6TRS4cmU7oc0Xq0wt/M2CHwYgpB2\nQ0D3iekLPpkcvCGmUcXSoMXZuk/EG44wCl3jQL66rL0gYXrtA3tioQpR3h5s\nalHL5Jw0pROe7UctZYK9dStwvFbbuJrV1/CulwDdp1nqw3Yf1nQ5X8hZ+ho4\nfjx2xONZpN/MPhSOlckLWES8SRDV4mv1HjTeTNCyZY8ro7krz8Za3xS7w2dS\nAGyrZXxLsH6CohWOxkicebE68jcKR+6vOlS6FNLxkHSX7rE8NEL3EA0uZCT1\n9oi73JOh5XkkVXH2+G1zlAAmdQQ7SZNRiQZTgAYVBxhSBin0bWG7OFTKqsGo\nIm8VzFbAoGZ9JDBflQfAghddYz9isByFn9eWKRucTvqRpP8zDOGF+KdrB314\nEGryBRD64iolFEs79hYzqk765GxEx6diK+GKVpeoyjWy1uWf0ir7/bzJFOJl\n8fTc/ncLadKdXoFX4TOk7M84D7v4FQVjh2PwByK6gOSWoTdS35O9KISQRa11\nZXZp\r\n=jRMu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNl61IpTQIqCYhrIBHhWPjBfFgbbD/OPjvuMOBM+CF2gIhANqmapY8Qqtzic3tnPpOONmopXOh3vtAYinJHpqbJ3vx"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.225146630.10_1620348615010_0.12746514596780378"},"_hasShrinkwrap":false},"2.1.1-nightly.225272623.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.225272623.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.225272623.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.225272623.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.225272623.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.225272623.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.225272623.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.225272623.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-F3cbKdALEroKHsVYB6UeBuMxemLt/j9zrfX2qDi2H94PAuXovY0k2ZAJjvkCXVxys22R/QuUWQeQREu3G/pg8A==","shasum":"676982d00107a591f533c9105ee14cfd2becc991","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.225272623.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgleBGCRA9TVsSAnZWagAAsGoP/jv2Rl3XygYaIAhgi2kA\nVgOx33EOoD+zQO7iMjr55qaJ2cliOGxmxseF7gKXcPrnJs80HKUEyfAmW97s\nqdPwK0SZ7K6wVlCFe0HYn+dmh+2gihTe6L/4aWkmRbIdTwdpPivwBFujt7fZ\nL7Gz9W7NZrVkfGlQCArbMmJ9yOWVBGhGfrbMH/HwN4aSC46Xfz7WWWQsdTNX\nepxtERs2IdhY5Y3sjdP+QJM2V/ItKAxpV4KVkh95h5EAcmfQ2tpXg5woX0pw\ndWycpQZ0gkZznLmtRFwYI7o8fYqciFOC/7IcMbMmKzUaH+E1ThnbjixAhlGj\n/vl7oVugv4cE6JTZNj3e5BCwNcXFoc+y7s69oDBrLlT/+9XPctHaVklitVNF\nGFr7yXhwvL8s6p3elMxs92hoAXZzYy35Cyf+SF5984MsD5pvKFKbFLyOZEG+\nJs35df/f5h+sjY8JdDXp1QOFDpun1O/UC2vADmx01GAjUas4YQKyOlaXYitm\nSEvV4ui2T96fXgOVAAUhfV+uL+WSTsuepnC8C+XKwWE57t2cCG4DTh4RqqWI\nmYuWV1YT36e4l3Wv9Y6syfqnMprK1nyBAaplPXbvFFgptEDrB7ExuG8YRqBM\nun2WltlAa2Rjbb31XN29qzgeRkEc5EUTQXS14K4ftV4HXay9kds45y11Ejlm\np2R8\r\n=egMU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA1XCxGdTGev0fWkqHsWKwR7FpXO7dujEHoAGLCEpmBAAiEAxeQElxYpvWfSHgo/BX4JGMUIMG606S/IjWx268NCtSY="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.225272623.10_1620435014342_0.2854339672777719"},"_hasShrinkwrap":false},"2.1.1-nightly.225334798.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.225334798.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.225334798.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.225334798.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.225334798.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.225334798.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.225334798.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.225334798.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-exhAlTUrRP20xSlhSMdq7FymbIwJ6jeZYD+k0LLJb4j+X9WxCVGl+v9H7h22vlRAez8CFDtHiPy5SupDQDtg2Q==","shasum":"8319ca75e76feeae1f8f58de1f8d781cde8d3245","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.225334798.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglzH0CRA9TVsSAnZWagAA4mAP/R4piCoEIOZUQW+iJije\nEI4rVPE8YCO2XA/G1IdOyTIoWg0AgA5fY2dSw1Hvn6Uf9TiXB4/5xEP44iCK\nlyWEzrGWvugXX1p7Lgo0u5CigIbVJHZDLJebgHeW0IDh3s953WZWqkO5vQL3\n48//7JeAiAxZy/bH9OgLaKrX7VVqSypH0QsnCInm96BbvKopx49GIxyFFK3w\nf3brqXnh5yv04mVMxBnlSoh193YsaZFnbzCNn4tp78RAEJWxV25wGPG7GU0a\nRC5Z/OIgISJhSf7+dVtmhMX8uQTXCM8mU016KKxSttEnjNLi68luMspXEv/8\ntDT9CtKMdXC5LJ2eVwcsivT4LdFAdxG31u/fGNu9sXnytKrPt2R/XCfIAZFS\n22dqb+6LRNLCJzd66e/rPBMegMXtHVg6wSicjjIBFFxi5YXHZgc/Z+zRvbSM\nI+tgP68omHgTMOgVCE247NuCE/J+MP8l3+wMTsa5TwDiiQeNMmc4FCXvQFXJ\n8RFf6C4AIxg0GwoqkmrpORpsnyAPHmvNiiX2ZtsAocYDiA/GHniL+MLxkrpB\nP5CF5b5AQt1LdGP2JDWFspa9foTei/X678ssy6Crq4wZFXIhAsd1OmFqiZDP\nNBNsSEZyiBooj/kCmhi+2kKbzacg/845utyBi1K3/Vj2xFyYHTcwKUV0rN2u\nLVBY\r\n=MKEe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBaPBRhRY4gNbrlP4eJzjWoywEor0uYNLqmQgXcRKHxRAiBJeGPMzLIQh6T2vbKKS5diq6HIIr9G3HSxQ7yVC0cr8Q=="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.225334798.10_1620521460127_0.8354576649602299"},"_hasShrinkwrap":false},"2.1.1-nightly.225391484.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.225391484.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.225391484.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.225391484.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.225391484.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.225391484.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.225391484.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.225391484.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-uitoYxHgzYFHvgwXbCOwi6z2iFkV0mMfLDgAa8c8O0iC/71ElHBrftQQL7/5i7L94qT46BRdJjl1LaVkurOvIw==","shasum":"3df2eab982ad78e64ac1e7f0a0564c47820c3ab5","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.225391484.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmIOKCRA9TVsSAnZWagAAHFIP/1K7nclyAbvD4F6Ximgq\nWit/m0F4T9RjEJyHy0keFKO1MoNgG1V6XGG9LDvbh/yYuIOMqpzadbQ2xpfw\nWuWSBC+ZlFkY068PxvMeDGr1fpvx+bAj2yEmC7YouuMVTAg8iMc6pjH7RZi9\n9fWZajI5pIsgnAOqNcbbjoU+BRdu0C7m+uytdOBlJx97rJIyV9Uxki8jDAVE\n8+7Vbwf6eWRjU/1mK7KRknj4VPdaOJwsTwv3DEgvKd77fy4vE+MQjeP4cr8T\nf5NHVcLJ5Teczu6qIBrUuQzdIQoVs9zKbLkNl3omcYqEvfK1vYQup32n+TFX\nhCtO2jzeqwKxu4wlZJPDBcduB6cgOgrkLP+/YdhILSbCcciYSBCRztQtMjZG\nvIFBmVDftOqMloYicf9muJ4qj1qm7Nt0gHBUg3jtjOeUr6A9Y+0wb1PVqe1d\nwlenC/6WrqrTvvSmfxP9jRFBZDbZrMIN1AqyYsuOS1oa81QY7CHFlGTw/Vx4\nrcp01AUDOUHlx+rrBVQvWvVP8u6RvU12zWqrX2mb9fxtvaryyJYt6d70BiSr\nNUMyTVEReDbuaobaPG5UufGcokCpd0+yeIUiZ/J2SN/JDYu7OV8yn9taiqIj\nqKnOej+VS1tCZZAkgWsGNeRgeM1wVkIJRuS7NERRgXzw8bzoFQglGUixz2fZ\n/cUp\r\n=woM+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMCLXDIfmc3Y9EosMX8+dW9z46k30Qk3BfiVwuHOoTsgIgHfTNNJuMcEs2VuTkZl3PDSqIK9rQhtDm6yD9XqPRKW0="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.225391484.10_1620607882364_0.36673316134968426"},"_hasShrinkwrap":false},"2.1.1-nightly.225529813.10":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.225529813.10","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.225529813.10+adfa879","@alexa-games/sfb-skill":"^2.1.1-nightly.225529813.10+adfa879","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.225529813.10+adfa879","@alexa-games/sfb-util":"^2.1.1-nightly.225529813.10+adfa879","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.225529813.10+adfa879","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"adfa879f5debe979317a6f87eb8746b7c4d07400","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.225529813.10","_nodeVersion":"10.24.1","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (darwin)","dist":{"integrity":"sha512-8hupnrChFHRisuisF6I98BOep883PUuNSOVdQbrvAIiXCUHo0vqRWA8C34cccOk4Hv1VXiyDRTT6bUuW9kfc3g==","shasum":"f7f241a37784b845c86fdf7cf530a0a6c1a44ae5","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.225529813.10.tgz","fileCount":292,"unpackedSize":6336318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmdWICRA9TVsSAnZWagAAy8EP/jnp5hSlMbsPu3Z41UKm\nJZJSxEg3jZRz5bHCn4tpaJ/CCktDaiR+1lT5Ti4h6GcOpC1gguH/VneWgvUs\ngi6lO0syrj+zM0CkNu2XzFzM9UX51feyU9KmQCqEzEnMH7lSTNncdK0ASr1h\nWLgJhBF4X2SywU5lf5oflrj/cZx7UA+a/dEz3xhrn9es4fPnDI/Y82nXVivq\nGZ6KwbR3czV5tOKZaYPJyU/aq+dSxNfEhsjE7W7/rM3aPEjFbzFeI/0lmEKk\nrWY+KJiP6ZhGtiSNbpjer01H+x0WSuIKDFxg4S/trFvDiH+UL8wd5PHsssTE\n+gALeZNXMFA7RUII1bSjHS/RNzedid6ZZY2RZMd0+CJMKuShVhypEAuSt3sR\nR1Mr34pAtiSah0GaxqRY2D1jN/0nfAoCQd05aUV1WupVydqoy7JZ2lqm/HmT\nTWEfDOtVqho2v5NX4mdKVGEnfG3LuzipTz/VSsrd00bpQngI/PpmVbLYXwq+\nKpzpotYvYqqMPJh2xloDLqBAb8YjmhqxIcsdtUsrwz+aEho5zPCCVEpnlQaW\nEClseZuJooCehc+664Pt6Ajn3E22bUK/JY7zJI96jFpAakvH+FgGruHWD682\n8DvQzHPPF7Y9gDsM3MihQip7XJbsx3WC6JHD7ZAeRmJwhfA0dOLVaOb64rxz\nw8CA\r\n=G1j0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbNR0LIRinJF6NZKZOGT7J5ZF90bb+wPsDGzRNy0W0kAiEA1cdNfF6VUuQ13rQYVLJzUvilzqttjjEFXRQNRTVPuto="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.225529813.10_1620694408075_0.5711620576177794"},"_hasShrinkwrap":false},"2.1.1-nightly.232104632.13":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1-nightly.232104632.13","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"^2.1.1-nightly.232104632.13+ab6b385","@alexa-games/sfb-skill":"^2.1.1-nightly.232104632.13+ab6b385","@alexa-games/sfb-story-debugger":"^2.1.1-nightly.232104632.13+ab6b385","@alexa-games/sfb-util":"^2.1.0","@alexa-games/sfb-vscode-extension":"^2.1.1-nightly.232104632.13+ab6b385","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"ab6b385b07fdba2034858b62ee3bd4facca5db4a","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md","_id":"@alexa-games/sfb-cli@2.1.1-nightly.232104632.13","_nodeVersion":"12.22.3","_npmVersion":"lerna/3.22.1/node@v12.22.3+x64 (darwin)","dist":{"integrity":"sha512-m4hD2RBUJe1pUaoR4YTc1nceIHwBQy2LaacnaiInInRkuPru8lpzaIvxSzLO6O4UEiTGKxNQZGaovkg5firaMg==","shasum":"7a33ffafaa15189ec49add5a6f61fec8a8cac2e4","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1-nightly.232104632.13.tgz","fileCount":292,"unpackedSize":6337782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5lPGCRA9TVsSAnZWagAAgSUP/iNqOU3xj5XuirRYJ/Ot\nJs6welrnNjTozUpyz4hQ3NlRfzMOivoUcLUaWXHDOkVgs3ZM7//l38uO8+Et\n+kwauo+DbdEzXnK5vGkWalFalMcD68NmEP3zk9jy8BhD9SOok6Q2NRxEw0fn\nUal3thql/f/hPKyzRTVOuwQBDZHezahsTD1fZb6fOthRoBw8NM+kZIJtTGle\nR1N7R0xMtPwN1Dme6MLt6DOw2vtH5llH6CriBBUMF722la6IKr49fA0OlVOm\nGua7AoSHVxvg4SRtp3WMxS4Djrmk6no4BGdYDRFyAadY5WC5LgNvLQ3HhroH\nXUnQn3bo6/+JCLiopmWZBbP36ExNuAI4hbLjqIg3cN+U8h+iKYxr9dYwxkSR\nICtMmF685Dn+wq3UoNyKiSXBBv3SJB4mzyp4kx3BUBnMa2pDri+ji+lhdbVl\n2x5NrX8oD9G/XC8srMLzTtDhAFSE+r1mMesZJNYhZuEctRE/cA56k+HCB2Mm\n1pfqao/aAoJSoMpZWvlZDG6uA4V7418wcyLzXWsDfbQ5+NZwugGtax9xPKM9\nT4BqsD86IaJ6BxaKcOx14TP3TBJ00jPRKzFohf/ZwYFaNH9/hgpaHsowvR1p\nHujCcv3j0jAOQ7e+/6N9LDHC3ilvnkj2xN5IkzHCFtKCs8Vwd/XB2XSxhG0v\npUZX\r\n=aEry\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKNvhucgiusyri/V22RkHYdrDwLiPQP5vytDrnlRtZNAIhAIcqLYYDEaI+1fZu2nQuIoGCM5tz9O/Lo4cF9bKyhQNt"}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1-nightly.232104632.13_1625707462307_0.9697856260664284"},"_hasShrinkwrap":false},"2.1.1":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.1","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"2.1.1","@alexa-games/sfb-skill":"2.1.1","@alexa-games/sfb-story-debugger":"2.1.1","@alexa-games/sfb-util":"2.1.1","@alexa-games/sfb-vscode-extension":"2.1.1","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"449f2c8f7cbc448f582ae70ba6b563d1beddb602","_id":"@alexa-games/sfb-cli@2.1.1","_nodeVersion":"14.18.3","_npmVersion":"lerna/3.22.1/node@v14.18.3+x64 (darwin)","dist":{"integrity":"sha512-KTdn6pHfgPLsJevMwHA8K5inO3h12wKkUChl5oHXXKm/c6EFiIWRQIXmcWcsp2o3NgtGIkt8ADhI6Fm+HNWmUw==","shasum":"a1308b1aca1fe9984d6d696359a1ac45086779cc","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.1.tgz","fileCount":292,"unpackedSize":6336139,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8aCzCBtYyfVK2Z2JUGuEXOjJW1T3HmOe34raY6CtNXgIgVLf/hRTzUSRcnHdDiGYvaEFltVH9DPFvHvZna0vBGfE="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.1_1697059252398_0.06891786170192193"},"_hasShrinkwrap":false},"2.1.2":{"name":"@alexa-games/sfb-cli","author":{"name":"Amazon.com"},"bin":{"alexa-sfb":"dist/bin/alexa-sfb"},"version":"2.1.2","description":"Alexa SFB build and deployment module","main":"./dist/lib/index.js","dependencies":{"@alexa-games/sfb-f":"2.1.2","@alexa-games/sfb-skill":"2.1.2","@alexa-games/sfb-story-debugger":"2.1.2","@alexa-games/sfb-util":"2.1.2","@alexa-games/sfb-vscode-extension":"2.1.2","chalk":"^2.4.2","commander":"^2.19.0","copyfiles":"^2.1.0","semver":"^6.2.0"},"devDependencies":{"@types/mocha":"^5.2.6","@types/mock-fs":"^4.10.0","@types/node":"^12.0.7","@types/semver":"^6.0.1","@types/sinon":"^7.0.13","mocha":"^6.1.3","mock-fs":"^4.12.0","nyc":"^15.1.0","pseudo-localization":"^2.0.2","rimraf":"^2.6.3","sinon":"^7.3.2","tslint":"^5.17.0","typescript":"^3.5.1"},"scripts":{"compile":"npm run lint && npx tsc && npx copyfiles -f ./bin/* ./dist/bin","clean":"npx rimraf ./dist","coverage":"npx nyc --reporter text mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","lint":"npx tslint --project tsconfig.json","test":"npx mocha 'dist/test/**/*.int-spec.js' 'dist/test/**/*.spec.js'","package":"./buildFFmpeg.sh && cp _THIRD-PARTY-for-package THIRD-PARTY","posttest":"npx rimraf ./.out"},"nyc":{"exclude":["**/test"]},"keywords":["game","story","Alexa","skill","voice"],"license":"LicenseRef-.amazon.com.-AmznSL-1.0","gitHead":"148f184cf801176b54482814d72a2995eae9d245","_id":"@alexa-games/sfb-cli@2.1.2","_nodeVersion":"14.18.3","_npmVersion":"lerna/3.22.1/node@v14.18.3+x64 (darwin)","dist":{"integrity":"sha512-OaVyWRhKtbFsCgA1OQ8joa0GtPfHpCuvjPg+PaevTpWBsR59VM5cMhm0Pxn6JpLCj0BUc5bRYqQIXbVU24XaBw==","shasum":"7717a8e71f7f0be5b3d2e8b7c82b7880436bff00","tarball":"https://registry.npmjs.org/@alexa-games/sfb-cli/-/sfb-cli-2.1.2.tgz","fileCount":292,"unpackedSize":6336366,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXRqc1BAP+BvkCYBK2+ex/zPLZsk0b/MTQaFFYUBWwkAiEA5CkP6o9otsOgvpHJpX1sbpFuhwtUSqamS3VYI5tmmxw="}]},"_npmUser":{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"},"directories":{},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfb-cli_2.1.2_1697059561164_0.49576591709700923"},"_hasShrinkwrap":false}},"time":{"created":"2019-07-11T19:11:30.284Z","0.5.0-alpha.4":"2019-07-11T19:11:30.805Z","modified":"2023-10-11T21:26:01.920Z","0.5.0":"2019-07-16T20:33:17.335Z","0.5.1":"2019-07-16T22:13:26.909Z","0.6.0":"2019-07-17T18:29:33.466Z","0.6.1":"2019-07-17T22:25:31.924Z","1.0.0":"2019-07-17T23:22:14.002Z","1.0.1":"2019-07-18T21:37:33.395Z","1.0.2":"2019-07-18T21:56:43.194Z","1.0.3":"2019-07-29T17:45:25.252Z","1.1.4":"2019-09-09T23:25:54.878Z","1.1.1":"2019-09-10T00:48:42.210Z","1.1.2":"2019-09-10T02:47:29.509Z","1.2.0":"2019-09-30T22:35:35.958Z","1.2.1":"2019-10-17T17:40:25.428Z","1.3.0":"2019-11-25T23:23:17.203Z","1.3.1":"2019-12-04T01:38:01.826Z","1.3.3":"2020-01-11T01:07:05.113Z","1.3.4":"2020-05-27T22:45:31.407Z","2.0.0":"2020-10-12T17:33:38.934Z","2.0.1-nightly.190375924.7":"2020-10-16T02:22:09.855Z","2.0.1-nightly.190606101.5":"2020-10-17T02:36:01.524Z","2.0.1-nightly.190712754.5":"2020-10-18T02:59:57.997Z","2.0.1-nightly.190723673.6":"2020-10-18T06:02:31.433Z","2.0.1-nightly.190723771.6":"2020-10-18T06:28:06.624Z","2.0.1-nightly.190886605.6":"2020-10-19T06:29:58.787Z","2.0.1-nightly.191064231.5":"2020-10-19T23:38:11.546Z","2.0.1-nightly.191290864.8":"2020-10-20T23:08:26.295Z","2.0.1-nightly.191551805.8":"2020-10-21T23:08:52.109Z","2.0.1-nightly.191774115.9":"2020-10-22T23:24:10.732Z","2.0.1-nightly.192418753.9":"2020-10-23T23:09:08.840Z","2.0.1-nightly.192586289.9":"2020-10-24T23:08:12.725Z","2.0.1-nightly.192649875.9":"2020-10-25T23:08:54.276Z","2.0.1-nightly.192989542.9":"2020-10-26T23:11:24.053Z","2.0.1-nightly.193887211.9":"2020-10-27T23:11:33.805Z","2.0.1-nightly.195173404.9":"2020-10-28T23:12:01.869Z","2.0.1-nightly.196209186.9":"2020-10-29T23:13:37.860Z","2.0.1-nightly.196824287.9":"2020-10-30T23:13:42.594Z","2.0.1-nightly.196970558.9":"2020-10-31T23:11:46.980Z","2.0.1-nightly.197048906.9":"2020-11-01T23:11:45.886Z","2.0.1-nightly.197462345.9":"2020-11-02T23:14:17.711Z","2.0.1-nightly.203679785.15":"2020-11-24T00:18:24.444Z","2.0.1-nightly.203993240.15":"2020-11-24T23:21:04.784Z","2.0.1-nightly.204529068.15":"2020-11-25T23:21:53.802Z","2.0.1-nightly.204790339.15":"2020-11-26T23:22:15.415Z","2.0.1-nightly.204993531.15":"2020-11-27T23:23:34.381Z","2.0.1-nightly.205066779.15":"2020-11-28T23:27:14.121Z","2.0.1-nightly.205225457.15":"2020-11-29T23:25:05.167Z","2.0.1-nightly.205506399.15":"2020-11-30T23:26:12.007Z","2.0.1-nightly.205794510.15":"2020-12-01T23:26:57.001Z","2.0.1-nightly.206087558.16":"2020-12-02T23:27:17.390Z","2.0.1-nightly.206458165.16":"2020-12-03T23:28:45.141Z","2.0.1-nightly.206717822.16":"2020-12-04T23:39:55.232Z","2.0.1-nightly.206823160.16":"2020-12-05T23:27:52.345Z","2.0.1-nightly.206922353.16":"2020-12-06T23:27:50.401Z","2.0.1-nightly.207167783.16":"2020-12-07T23:30:47.726Z","2.0.1-nightly.207361046.17":"2020-12-08T23:37:10.437Z","2.0.1-beta.18":"2020-12-09T18:29:42.331Z","2.1.0":"2020-12-09T20:04:48.986Z","2.1.1-nightly.222998180.10":"2021-04-14T00:35:55.380Z","2.1.1-nightly.223114844.10":"2021-04-15T00:37:41.090Z","2.1.1-nightly.223246371.10":"2021-04-16T00:36:47.818Z","2.1.1-nightly.223356168.10":"2021-04-17T00:47:29.624Z","2.1.1-nightly.223383941.10":"2021-04-18T00:38:17.489Z","2.1.1-nightly.223416837.10":"2021-04-19T00:38:41.736Z","2.1.1-nightly.223534090.10":"2021-04-20T00:44:36.936Z","2.1.1-nightly.223809396.10":"2021-04-22T00:41:55.902Z","2.1.1-nightly.223941226.10":"2021-04-23T00:42:22.807Z","2.1.1-nightly.224042439.10":"2021-04-24T00:43:10.181Z","2.1.1-nightly.224076856.10":"2021-04-25T00:43:04.458Z","2.1.1-nightly.224104607.10":"2021-04-26T00:42:56.847Z","2.1.1-nightly.224217643.10":"2021-04-27T00:43:49.197Z","2.1.1-nightly.224332497.10":"2021-04-28T00:45:15.225Z","2.1.1-nightly.224450567.10":"2021-04-29T00:46:08.500Z","2.1.1-nightly.224565873.10":"2021-04-30T00:47:16.471Z","2.1.1-nightly.224674011.10":"2021-05-01T00:47:06.376Z","2.1.1-nightly.224699870.10":"2021-05-02T00:47:25.912Z","2.1.1-nightly.224725748.10":"2021-05-03T00:47:53.042Z","2.1.1-nightly.224815506.10":"2021-05-04T00:50:54.993Z","2.1.1-nightly.224921011.10":"2021-05-05T00:48:49.569Z","2.1.1-nightly.225026743.10":"2021-05-06T00:49:09.889Z","2.1.1-nightly.225146630.10":"2021-05-07T00:50:15.539Z","2.1.1-nightly.225272623.10":"2021-05-08T00:50:14.635Z","2.1.1-nightly.225334798.10":"2021-05-09T00:51:00.356Z","2.1.1-nightly.225391484.10":"2021-05-10T00:51:22.595Z","2.1.1-nightly.225529813.10":"2021-05-11T00:53:28.372Z","2.1.1-nightly.232104632.13":"2021-07-08T01:24:22.594Z","2.1.1":"2023-10-11T21:20:52.810Z","2.1.2":"2023-10-11T21:26:01.659Z"},"maintainers":[{"name":"alexa-games-admin","email":"alexa-games-npm-admins@amazon.com"},{"name":"alexa-games-builder","email":"alexa-games-npm-builders@amazon.com"}],"description":"Alexa SFB build and deployment module","keywords":["game","story","Alexa","skill","voice"],"author":{"name":"Amazon.com"},"license":"LicenseRef-.amazon.com.-AmznSL-1.0","readme":"# Skill Flow Builder Command Line Interface (CLI)\n\n> **Warning**\n> **DEPRECATED** The Alexa Games team will no longer support or maintain this official distribution of Skill Flow Builder. Thank you to all the folks who have used SFB to make great Alexa skills over the years!\n\n\nThis module interacts with the\n[Alexa Skills Kit (ASK)](https://developer.amazon.com/en-US/alexa/alexa-skills-kit)\nand [AWS CLI](https://github.com/aws/aws-cli) to deploy and update your skill.\n\nVisit [Skill Flow Builder on Github](https://github.com/alexa-games/skill-flow-builder)\nfor more information.\n\n## Installation\n\n### Prerequisites\n\nThe following needs to be installed and configured:\n\n```preformatted\nNode.js (with npm) # Note: Requires Node.js version >=10.\nYarn\n```\n\n### Installing From NPM\n\n```sh\nnpm install @alexa-games/sfb-cli\n```\n\n### Compiling\n\n```sh\nyarn install && yarn compile\n```\n\nThe compiled code is built into the `dist/` directory.\n\n### Testing\n\n```sh\nyarn test\n```\n\nThis will run all unit tests in the `test/` directory.\n\n### Installing CLI with local repository\n\nInstall sfb-cli globally using `yarn`\n(you must use yarn):\n\n```sh\nyarn global add /full/path/to/AlexaGamesSkillFlowBuilder/packages/sfb-cli\n```\n\nThe resulting `alexa-sfb` binary is built into the `dist/bin/` directory.\n\n## Usage\n\n### Options\n\n- `--help`\n  - Output tutorial output for a specific command\n- `-V, --version`\n  - Outputs the version number\n- `-v, --verbose`\n  - Increase verbose output\n\n### Commands\n\n#### `new <story> [-t <templateName>]`\n\n- Creates a new story given a story name\n- `<story>` Path to the new story\n- `-t [templateName]` Template to create a new story from. (`example_story`, `tutorial`, `adventure`,`quiz`)\n\n#### `deploy <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your story to the Alexa Developer Portal & AWS by running `ask deploy` after building on the deployment payload\n- `<story>` Path to the story to deploy\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-metadata <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Deploys your skill metadata to the Alexa Developer Portal\n- `<story>` Path to the story to deploy the metadata of\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `deploy-via-zip <story> [-o, --override] [-s, --stage <stageName>] [-g, --skill-stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Build and deploy skill using a zip file transfer to S3/Lambda.\n- Used for slow remote connections or when exceeding the command line 69905067 byte limit.\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to deploy (i.e. dev, test, beta, prod)\n- `-g, --skill-stage <stageName>` The stage of a skill to deploy. (`development`, `certified`,` live`). Defaults to `development`\n- `-l, --locale <localeName>` Locale to deploy (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `build <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-d, --deployer <deployerName>]`\n\n- Builds a story without deploying.\n- The Build Life Cycle\n  - Code Build: Install dependencies and run compile script for `code` directory.\n  - Pre-Import: Run `extendSourceContent()` on content source (included *abc files) for the attached ImporterExtension.\n  - Import: Translate *.abc story content into StoryMetadata object.\n  - Post-Import: Run extendImportedContent on resulting StoryMetadata for all attached ImporterExtension, and write the result to baked/en-US(or relevant locales)/baked_story.json.\n  - Staging: Generate .deploy and create a deployment payload with `ask new` command, then copy built code, imported story, and assets from content/{locale}/resources to the resulting deployment payload directory. If metadata exists copy skill.json and ask_config from the metadata directory for appropriate stages.\n- `<story>` Path to the story to build\n- `-o, --override` Overrides the version check\n- `-s, --stage <stageName>` Stage to build (i.e. dev, test, beta, prod)\n- `-l, --locale <localeName>` Locale to build (i.e. en-us, en-gb, fr-fr, etc.)\n- `-d, --deployer <deployerName>` ASK deployer to use (cfn or lambda).\nCannot be changed after deploying your skill. Default is cfn\n\n#### `simulate <story> [-o, --override] [-s, --stage <stageName>] [-l, --locale <localeName>] [-q, --quiet]`\n\n- Simulate the story locally\n- `<story>` Path to the story to simulate\n- `-l, --locale <localeName>` Locale to simulate (i.e. en-us, en-gb, fr-fr, etc.)\n- `-o, --override` Overrides the version check\n- `-q, --quiet` Quiet mode\n\n#### `clean <story>`\n\n- Clean out the `.deploy/`, `code/dist/` folder, and any extra `node_modules/` folders for the given story. Run clean when initially creating a new stage/locale to force the creation of a new skill id.\n- `<story>` Path to the story to clean\n\n#### `upload <story>`\n\n- Uploads public resources to Amazon S3\n- `<story>` Path to story to upload resources from\n\n#### `vscode`\n\n- Downloads and installs the Visual Studio Code extension for SFB editor support\n\n## Contributing\n\nThis module uses the [`commander` package](https://www.npmjs.com/package/commander)\nto handle command line interaction. The general flow for all the commands are\nin the files `sfb.ts` and `commandFactory.ts`. Each command is then separated\ninto their own files (ex: `deployCommand.ts`, `testCommand.ts`, ...). New\ncommands should follow the same flow as existing ones. For example, a new\ncommand `alexa-sfb wave` would require the following changes:\n\n`sfb.ts`:\n\n```typescript\ncmd\n  .command('wave')\n  .description('Just smile and wave...')\n  .option('-s, --smile' ,'Smile while waving')\n  .action(async (name: string, options: any) => {\n    await Utilities.wrap(cmd.verbose, async () => {\n      const smile = !!options.smile;\n      await commandFactory.buildWaveCommand(name, { smile }).run();\n    }, consoleLogger);\n  })\n...\n```\n\n`commandFactory.ts`:\n\n```typescript\nimport { WaveCommand } from './waveCommand';\n...\nexport interface WaveOptions {\n  smile: boolean;\n}\n...\npublic buildWaveCommand(storyPath: string, options: WaveOptions): Command {\n  return new WaveCommand(storyPath, options.smile, this.logger, this.stdOutput);\n}\n```\n\n`waveCommand.ts`:\n\n```typescript\nimport { Command } from './command';\nimport { Logger } from './logger';\nimport { StdOutput } from './stdOutput';\n...\nexport class WaveCommand implements Command {\n  constructor(\n    private readonly logger: Logger,\n    private readonly smile: boolean,\n    private readonly stdOutput: StdOutput) {\n  }\n  public async run() {\n    this.logger.status('Waving...');\n    if (this.smile) {\n      this.logger.status('Smiling as well...');\n    }\n  }\n}\n```\n","readmeFilename":"README.md"}