{"_id":"@sap/joule-studio-cli","_rev":"3-ac5051fee5e44f8cd9b1e66d0466df5d","name":"@sap/joule-studio-cli","dist-tags":{"latest":"2.0.4"},"versions":{"1.5.21":{"name":"@sap/joule-studio-cli","version":"1.5.21","keywords":[],"author":{"name":"SAP SE"},"license":"SEE LICENSE IN LICENSE","_id":"@sap/joule-studio-cli@1.5.21","maintainers":[{"name":"sap_extncrepos","email":"mob.extrepo.stores@sap.com"}],"contributors":[{"name":"SAP SE","email":"*@sap.com"}],"homepage":"https://github.tools.sap/DAS/digitalassistant-cli","bin":{"joule":"dist/esm/index.js"},"dist":{"shasum":"1f4689e96a07425cba994473b2feac5fbd516e49","tarball":"https://registry.npmjs.org/@sap/joule-studio-cli/-/joule-studio-cli-1.5.21.tgz","fileCount":729,"integrity":"sha512-9Ompfl+xdwJxbepk5+BbyDDxC+oYpBtZEwEIbJtAkslKyW89uDIrd1AWVdaDm72ghtffK0cxLAtAMsZLbp2PrQ==","signatures":[{"sig":"MEQCIBbgf9cUtOav0d5s9bW+6+6qhCrTEJkSVS0m3LQwOaWyAiA2qCmd0c1KNHqM09KyKtluvabr7dGillvSY5UNYmUibA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1179328},"main":"./dist/commonjs/lib.js","tshy":{"exports":{".":"./src/lib.ts","./LICENSE":"./LICENSE","./README.md":"./README.md","./package.json":"./package.json"}},"type":"module","_from":"file:joule-studio-cli-1.5.21.tgz","types":"./dist/commonjs/lib.d.ts","engines":{"node":">=20.12.0 <25"},"exports":{".":{"import":{"types":"./dist/esm/lib.d.ts","source":"./src/lib.ts","default":"./dist/esm/lib.js"},"require":{"types":"./dist/commonjs/lib.d.ts","source":"./src/lib.ts","default":"./dist/commonjs/lib.js"}},"./LICENSE":"./LICENSE","./README.md":"./README.md","./package.json":"./package.json"},"scripts":{"lint":"eslint ./src","test":"mocha ./tests/**/*.test.[tj]s","build":"tshy","joule":"node ./dist/esm/index.js","coverage":"c8 --config ./.c8rc.json npm run test","prebuild":"rimraf dist","clean:all":"npm run clean:coverage && npm run clean:pkg","clean:pkg":"rimraf node_modules package-lock.json dist","copyfiles":"(shx cp ./joule-studio-cli-releasetoggles.json ./dist/joule-studio-cli-releasetoggles.json) && (shx cp -r ./schemas ./dist/schemas)","postbuild":"rimraf dist/node_modules && npm run copyfiles","lint:tests":"eslint ./tests","test:sonar":"mocha --reporter mocha-reporter-sonarqube --reporter-options filename=./reports/sonar.xml './tests/**/*.test.[tj]s'","test:xunit":"mocha --reporter xunit --reporter-options output=./reports/TEST-xunit.xml './tests/**/*.test.[tj]s'","test:mutation":"stryker run","clean:coverage":"rimraf coverage reports junit dta.rta.zip my_test_compile.zip logs .joule","dev:json-server":"tsx ./tests/e2e/jsonServer/index.ts","coverage:pipeline":"c8 --config ./.c8rc.pipeline.json npm run test"},"_npmUser":{"name":"sap_extncrepos","email":"mob.extrepo.stores@sap.com"},"_resolved":"/home/jenkins/agent/workspace/npmjs-build/joule-studio-cli-1.5.21.tgz","overrides":{"keytar":{"tar-fs":"2.1.4"},"brace-expansion":"2.0.2"},"publisher":"SAPSE","_integrity":"sha512-9Ompfl+xdwJxbepk5+BbyDDxC+oYpBtZEwEIbJtAkslKyW89uDIrd1AWVdaDm72ghtffK0cxLAtAMsZLbp2PrQ==","repository":{"url":"https://github.tools.sap/DAS/digitalassistant-cli.git","type":"git"},"_npmVersion":"11.8.0","description":"Deploy and manage digital assistants","directories":{},"_nodeVersion":"25.5.0","dependencies":{"ws":"8.18.3","ora":"8.2.0","glob":"13.0.0","yaml":"2.8.1","axios":"1.12.2","chalk":"5.6.2","which":"5.0.0","dotenv":"17.2.2","keytar":"7.9.0","multer":"2.0.2","semver":"7.7.2","adm-zip":"0.5.16","is-glob":"4.0.3","inquirer":"12.9.6","read-pkg":"9.0.1","commander":"14.0.1","minimatch":"9.0.5","cli-table3":"0.6.5","handlebars":"4.7.8","jsonschema":"1.5.0","mime-types":"3.0.1","properties":"1.2.1","configstore":"5.0.1","@sap/bas-sdk":"3.13.0","jsonc-parser":"3.3.1","jsonpath-plus":"10.3.0","@colors/colors":"1.6.0","url-regex-safe":"4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"10.1.3","shx":"0.4.0","tsx":"4.20.5","chai":"6.0.1","nock":"13.5.6","tshy":"1.16.0","mocha":"11.7.2","sinon":"21.0.0","eslint":"9.35.0","esmock":"2.7.2","rimraf":"5.0.10","globals":"16.4.0","mock-fs":"5.5.0","ts-node":"10.9.2","jsonpath":"1.1.1","@types/ws":"8.18.1","@eslint/js":"9.35.0","sinon-chai":"4.0.1","typescript":"5.9.2","@types/chai":"5.2.2","@types/node":"24.2.1","json-server":"0.17.4","mocha-param":"2.0.1","@types/mocha":"10.0.10","@types/sinon":"17.0.4","@types/which":"3.0.4","@types/multer":"2.0.0","@types/semver":"7.7.1","@types/adm-zip":"0.5.7","@types/express":"5.0.3","@types/is-glob":"4.0.4","@types/mock-fs":"4.13.4","@types/jsonpath":"0.2.4","chai-as-promised":"8.0.2","@types/sinon-chai":"4.0.0","typescript-eslint":"8.44.0","@types/configstore":"5.0.1","@types/json-server":"0.14.8","ts-paths-esm-loader":"1.4.3","@stryker-mutator/core":"9.0.1","@types/url-regex-safe":"1.0.2","@types/chai-as-promised":"8.0.2","mocha-reporter-sonarqube":"2.1.1","@stylistic/eslint-plugin-js":"4.4.1","@stylistic/eslint-plugin-ts":"4.4.1","@stryker-mutator/mocha-runner":"9.0.1"},"_npmOperationalInternal":{"tmp":"tmp/joule-studio-cli_1.5.21_1770143510042_0.2361587227968276","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@sap/joule-studio-cli","version":"2.0.2","keywords":[],"author":{"name":"SAP SE"},"license":"SEE LICENSE IN LICENSE","_id":"@sap/joule-studio-cli@2.0.2","maintainers":[{"name":"sap_extncrepos","email":"mob.extrepo.stores@sap.com"}],"contributors":[{"name":"SAP SE","email":"*@sap.com"}],"bin":{"joule":"dist/esm/index.js","sapdas":"dist/esm/index.js"},"dist":{"shasum":"f05b04f7e672c0d7caab5578010252d3227d3f81","tarball":"https://registry.npmjs.org/@sap/joule-studio-cli/-/joule-studio-cli-2.0.2.tgz","fileCount":596,"integrity":"sha512-Xzwl0KmA9URkrGJm9jVNV0cso8mYILRGl3CkG9fLZmhGO+kmeMR4AYCpTAUqGiGWmbjiKpV5gsmR0J1G7TFQwQ==","signatures":[{"sig":"MEYCIQCmCw1duIdjuOIhuHssV2v8HuE29zWKiZYX0Q3v3liLVQIhAJsedy0SxgoPWmzGAk4vNPDZu7q+yFcRrzUwI1Y5DGmm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1050810},"main":"./dist/commonjs/lib.js","tshy":{"exports":{".":"./src/lib.ts","./LICENSE":"./LICENSE","./README.md":"./README.md","./package.json":"./package.json"}},"type":"module","_from":"file:joule-studio-cli-2.0.2.tgz","types":"./dist/commonjs/lib.d.ts","module":"./dist/esm/lib.js","engines":{"node":">=22.0.0 <25"},"exports":{".":{"import":{"types":"./dist/esm/lib.d.ts","default":"./dist/esm/lib.js"},"require":{"types":"./dist/commonjs/lib.d.ts","default":"./dist/commonjs/lib.js"}},"./LICENSE":"./LICENSE","./README.md":"./README.md","./package.json":"./package.json"},"scripts":{"lint":"eslint ./src","test":"mocha ./tests/**/*.test.[tj]s","build":"tshy","joule":"node ./dist/esm/index.js","sapdas":"tsx ./src/index.ts","prepare":"echo 'No prepare step needed'","coverage":"c8 --config ./.c8rc.json npm run test","prebuild":"rimraf dist","clean:all":"npm run clean:coverage && npm run clean:pkg","clean:pkg":"rimraf node_modules package-lock.json dist","copyfiles":"(shx cp -r ./schemas ./dist/schemas)","postbuild":"rimraf dist/node_modules && npm run copyfiles","lint:tests":"eslint ./tests","test:sonar":"mocha --reporter mocha-reporter-sonarqube --reporter-options filename=./reports/sonar.xml './tests/**/*.test.[tj]s'","test:xunit":"mocha --reporter xunit --reporter-options output=./reports/TEST-xunit.xml './tests/**/*.test.[tj]s'","test:mutation":"stryker run","clean:coverage":"rimraf coverage reports junit dta.rta.zip my_test_compile.zip logs .joule","coverage:pipeline":"c8 --config ./.c8rc.pipeline.json npm run test"},"_npmUser":{"name":"sap_extncrepos","email":"mob.extrepo.stores@sap.com"},"_resolved":"/home/jenkins/agent/workspace/npmjs-build/PUBLISH/joule-studio-cli-2.0.2.tgz/joule-studio-cli-2.0.2.tgz","overrides":{"glob":"13.0.6","yaml":"2.9.0","axios":"1.18.0","keytar":{"tar-fs":"2.1.4"},"lodash":"4.18.1","flatted":"3.4.2","minimatch":"10.2.5","picomatch":"4.0.4","brace-expansion":"5.0.7","follow-redirects":"1.16.0","@babel/plugin-proposal-explicit-resource-management":"npm:@babel/plugin-transform-explicit-resource-management@^7.27.4"},"publisher":"SAPSE","_integrity":"sha512-Xzwl0KmA9URkrGJm9jVNV0cso8mYILRGl3CkG9fLZmhGO+kmeMR4AYCpTAUqGiGWmbjiKpV5gsmR0J1G7TFQwQ==","_npmVersion":"11.19.0","description":"Deploy and manage digital assistants","directories":{},"_nodeVersion":"26.7.0","dependencies":{"ws":"8.21.1","ora":"9.4.0","glob":"13.0.6","yaml":"2.9.0","axios":"1.18.0","chalk":"5.6.2","which":"5.0.0","dotenv":"17.4.2","keytar":"7.9.0","semver":"7.8.0","adm-zip":"0.6.0","is-glob":"4.0.3","read-pkg":"10.1.0","commander":"14.0.3","minimatch":"10.2.5","cli-table3":"0.6.5","handlebars":"4.7.9","jsonschema":"1.5.0","mime-types":"3.0.2","properties":"1.2.1","configstore":"5.0.1","jsonc-parser":"3.3.1","jsonpath-plus":"10.4.0","@colors/colors":"1.6.0","@stomp/stompjs":"7.3.0","url-regex-safe":"4.0.0","global-directory":"5.0.0","@sap/joule-studio-cli-core":"2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"c8":"11.0.0","shx":"0.4.0","tsx":"4.21.0","chai":"6.2.2","nock":"14.0.15","tshy":"4.1.2","mocha":"11.7.6","sinon":"22.0.0","eslint":"10.4.0","esmock":"2.7.5","rimraf":"6.1.3","globals":"17.6.0","mock-fs":"5.5.0","ts-node":"10.9.2","@types/ws":"8.18.1","@eslint/js":"10.0.1","sinon-chai":"4.0.1","typescript":"6.0.3","@types/chai":"5.2.3","@types/node":"25.8.0","mocha-param":"2.0.1","@types/mocha":"10.0.10","@types/sinon":"21.0.1","@types/which":"3.0.4","@types/multer":"2.1.0","@types/semver":"7.7.1","@types/adm-zip":"0.5.8","@types/express":"5.0.6","@types/is-glob":"4.0.4","@types/mock-fs":"4.13.4","chai-as-promised":"8.0.2","@types/mime-types":"3.0.1","@types/sinon-chai":"4.0.0","typescript-eslint":"8.59.3","@types/configstore":"6.0.2","ts-paths-esm-loader":"1.4.3","@stryker-mutator/core":"9.6.1","@types/url-regex-safe":"1.0.2","@types/chai-as-promised":"8.0.2","mocha-reporter-sonarqube":"2.1.1","@stylistic/eslint-plugin-js":"4.4.1","@stylistic/eslint-plugin-ts":"4.4.1","@stryker-mutator/mocha-runner":"9.6.1","@stryker-mutator/typescript-checker":"9.6.1"},"optionalDependencies":{"@sap/joule-studio-cli-test":"2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/joule-studio-cli_2.0.2_1786526380399_0.34131628651046575","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"_id":"@sap/joule-studio-cli@2.0.4","bin":{"jl":"dist/esm/jl.mjs","joule":"dist/esm/index.js","sapdas":"dist/esm/index.js"},"dist":{"shasum":"b3e130f92a5a3ee3fa9c1ab4900c92976d2d9960","tarball":"https://registry.npmjs.org/@sap/joule-studio-cli/-/joule-studio-cli-2.0.4.tgz","fileCount":596,"integrity":"sha512-J4TQnGE5d+4S2cmIHgrRuudSb/KcM6Xdq0A7+0fRDiAAtGE99l583vTmyKhowTy9+97mA9Fzw7+i7WIFtkY0fA==","signatures":[{"sig":"MEQCIBepFitvrJz2Oblw/dgcAVkvAidOTNpR++YwVOtaC+HuAiB2X/hBeOa06V7f0j10n13NQn/Ae8uR4U1iCtpSD2K1Yg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDyB+xS5FLPQkiKaA4euQnTPspOfjYjrAp5RHDs5RzOnAIhAJ7qzlyGleBRCHkGOmZS4OsSE3KJ6CDj8h1FEs5DP7KS"}],"unpackedSize":1041346},"main":"./dist/commonjs/lib.js","name":"@sap/joule-studio-cli","tshy":{"exports":{".":"./src/lib.ts","./LICENSE":"./LICENSE","./README.md":"./README.md","./package.json":"./package.json"}},"type":"module","_from":"file:joule-studio-cli-2.0.4.tgz","types":"./dist/commonjs/lib.d.ts","author":{"name":"SAP SE"},"module":"./dist/esm/lib.js","engines":{"node":">=24.0.0 <27"},"exports":{".":{"import":{"types":"./dist/esm/lib.d.ts","default":"./dist/esm/lib.js"},"require":{"types":"./dist/commonjs/lib.d.ts","default":"./dist/commonjs/lib.js"}},"./LICENSE":"./LICENSE","./README.md":"./README.md","./package.json":"./package.json"},"license":"SEE LICENSE IN LICENSE","scripts":{"lint":"eslint ./src","test":"mocha ./tests/**/*.test.[tj]s","build":"tshy","joule":"node ./dist/esm/index.js","sapdas":"tsx ./src/index.ts","prepare":"echo 'No prepare step needed'","coverage":"c8 --config ./.c8rc.json npm run test","prebuild":"rimraf dist","clean:all":"npm run clean:coverage && npm run clean:pkg","clean:pkg":"rimraf node_modules package-lock.json dist","postbuild":"rimraf dist/node_modules","lint:tests":"eslint ./tests","test:sonar":"mocha --reporter mocha-reporter-sonarqube --reporter-options filename=./reports/sonar.xml './tests/**/*.test.[tj]s'","test:xunit":"mocha --reporter xunit --reporter-options output=./reports/TEST-xunit.xml './tests/**/*.test.[tj]s'","test:mutation":"stryker run","clean:coverage":"rimraf coverage reports junit dta.rta.zip my_test_compile.zip logs .joule","coverage:pipeline":"c8 --config ./.c8rc.pipeline.json npm run test"},"version":"2.0.4","_npmUser":{"name":"sap_extncrepos","email":"mob.extrepo.stores@sap.com"},"keywords":[],"_resolved":"/home/jenkins/agent/workspace/npmjs-build/PUBLISH/joule-studio-cli-2.0.4.tgz/joule-studio-cli-2.0.4.tgz","overrides":{"glob":"13.0.6","yaml":"2.9.0","axios":"1.20.0","keytar":{"tar-fs":"2.1.4"},"lodash":"4.18.1","flatted":"3.4.2","minimatch":"10.2.6","picomatch":"4.0.4","brace-expansion":"5.0.7","follow-redirects":"1.16.0","@babel/plugin-proposal-explicit-resource-management":"npm:@babel/plugin-transform-explicit-resource-management@^7.27.4"},"publisher":"SAPSE","_integrity":"sha512-J4TQnGE5d+4S2cmIHgrRuudSb/KcM6Xdq0A7+0fRDiAAtGE99l583vTmyKhowTy9+97mA9Fzw7+i7WIFtkY0fA==","_npmVersion":"11.19.1","description":"Deploy and manage digital assistants","directories":{},"maintainers":[{"name":"sap_extncrepos","email":"mob.extrepo.stores@sap.com"}],"_nodeVersion":"26.10.0","contributors":[{"name":"SAP SE","email":"*@sap.com"}],"dependencies":{"ws":"8.21.3","ora":"9.4.1","glob":"13.0.6","yaml":"2.9.0","axios":"1.20.0","chalk":"6.0.0","which":"7.0.0","dotenv":"17.4.2","keytar":"7.9.0","semver":"7.8.5","adm-zip":"0.6.1","is-glob":"4.0.3","read-pkg":"10.1.0","commander":"15.0.0","minimatch":"10.2.6","cli-table3":"0.6.5","handlebars":"4.7.9","jsonschema":"1.5.0","mime-types":"3.0.2","properties":"1.2.1","configstore":"8.0.0","jsonc-parser":"3.3.1","jsonpath-plus":"10.4.0","@colors/colors":"1.6.1","@stomp/stompjs":"7.3.0","url-regex-safe":"4.0.0","global-directory":"5.0.0","@sap/joule-studio-cli-core":"2.0.4","@sap/joule-studio-cli-core-v2":">=1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"12.0.0","tsx":"4.23.13","chai":"6.2.2","nock":"14.0.17","tshy":"4.1.3","memfs":"4.71.0","mocha":"12.0.0","sinon":"22.1.0","eslint":"10.10.0","esmock":"2.7.6","rimraf":"6.1.3","globals":"17.12.0","ts-node":"10.9.2","@types/ws":"8.18.1","@eslint/js":"10.0.1","sinon-chai":"4.0.1","typescript":"6.0.3","@types/chai":"5.2.3","@types/node":"26.5.0","mocha-param":"2.0.1","@types/mocha":"10.0.10","@types/sinon":"22.0.0","@types/which":"3.0.4","@types/multer":"2.2.0","@types/semver":"7.8.0","@types/adm-zip":"0.5.8","@types/express":"5.0.6","@types/is-glob":"4.0.4","@types/mock-fs":"4.13.4","chai-as-promised":"8.0.2","@types/mime-types":"3.0.1","@types/sinon-chai":"4.0.0","typescript-eslint":"8.70.0","@types/configstore":"6.0.2","ts-paths-esm-loader":"1.4.3","@stryker-mutator/core":"10.0.0","@types/url-regex-safe":"1.0.2","@types/chai-as-promised":"8.0.2","mocha-reporter-sonarqube":"2.1.1","@stylistic/eslint-plugin-js":"4.4.1","@stylistic/eslint-plugin-ts":"4.4.1","@stryker-mutator/mocha-runner":"10.0.0","@stryker-mutator/typescript-checker":"10.0.0"},"optionalDependencies":{"@sap/joule-studio-cli-test":"2.0.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/joule-studio-cli_2.0.4_1791392473551_0.09239764647515214"}}},"time":{"created":"2026-02-03T18:31:49.919Z","modified":"2026-10-07T17:01:13.921Z","1.5.21":"2026-02-03T18:31:50.269Z","2.0.2":"2026-08-12T09:19:40.545Z","2.0.4":"2026-10-07T17:01:13.701Z"},"author":{"name":"SAP SE"},"license":"SEE LICENSE IN LICENSE","keywords":[],"description":"Deploy and manage digital assistants","contributors":[{"name":"SAP SE","email":"*@sap.com"}],"maintainers":[{"name":"sap_extncrepos","email":"mob.extrepo.stores@sap.com"}],"readme":"# Joule Studio CLI\n\nInstalling `@sap/joule-studio-cli` gives you two commands:\n\n| Command | Description |\n|---|---|\n| `joule` | Joule Studio Legacy CLI — compile, deploy and manage digital assistants |\n| `jl` | Joule Work CLI — create and manage solutions, agents, MCP servers, and more |\n\n---\n\n## joule — Joule Studio Legacy CLI\n\nThe `joule` command provides capabilities to:\n\n-   Compile the designtime artifact into a runtime artifact\n-   Deploy a digital assistant via its runtime artifact\n-   Test deployed Joule assistant\n-   Get a list of all deployed digital assistants\n-   Delete deployed digital assistants\n-   Launch deployed digital assistants\n-   Run static lint checks and convert YAML test scenarios into `.feature` files\n\n## Installation\n\nYou can install both CLIs globally using npm.\n\n### Requirements\n\n- Node.js v22 – v24\n- For Linux: libsecret or a compatible keyring (for secure credential storage)\n\n### Install\n\n```bash\nnpm install -g @sap/joule-studio-cli\n```\n\n### Update\n\n```bash\nnpm install -g -f @sap/joule-studio-cli\n```\n\n### Uninstall\n\n```bash\nnpm uninstall -g @sap/joule-studio-cli\n```\n\n## Usage\n### Important Security Notice\n**The Joule Studio Command Line Interface is designed solely for testing and development purposes and is not intended to manage personal or confidential data. Users should ensure that any content provided for testing contains only non-real, non-sensitive information to maintain security and privacy.**\n\n### Available Commands\n\n| Command                             | Description                                     |\n| ----------------------------------- |-------------------------------------------------|\n| `joule login`                       | Log in to the CLI                               |\n| `joule compile <source> <target>`   | Compile a DTA folder into an RTA artifact       |\n| `joule deploy <assistant>`          | Deploy a digital assistant to Joule             |\n| `joule list`                        | List all deployed assistants                    |\n| `joule get <assistant>`             | Retrieve details of deployed assistant          |\n| `joule launch <assistant>`          | Launch the Web Client for a deployed assistant  |\n| `joule delete <assistant>`          | Delete a deployed assistant                     |\n| `joule update <assistant>`          | Update a deployed capability                    |\n| `joule remove <assistant>`          | Delete a deployed capability                    |\n| `joule lint <path>`                 | Run the static linter                           |\n| `joule config`                      | Manage configuration for the digital assistant  |\n| `joule status`                      | Display current login status                    |\n| `joule logout`                      | Log out from the CLI                            |\n\nRun `joule help` or `joule <command> --help` for full usage details.\n\n### Global options\n| Option | Description                                                   |\n| -------|---------------------------------------------------------------|\n| -V, --version | Print the CLI version number                           |\n| -d, --debug | Generate a debug file in the current directory           |\n| -w, --no-color | Disable colorized output                              |\n| -h, --help | Print usage information for the CLI or a specific command |\n\n### Login\n\nTo log in to a production landscape, run:\n\n  `joule login`\n\nThe API URL will be automatically determined based on the authentication URL provided.\nTo connect to a custom API URL, use:\n\n  `joule login --apiurl <apiurl>`.\n\n## Example Workflow\n- Log in to Joule:\n\n  `joule login`\n\n- Compile designtime artifacts into runtime artifacts:\n\n  `joule compile`\n\n- Deploy the digital assistant:\n\n  `joule deploy ./da.sapdas.yaml`\n\n- Launch it in the web client:\n\n  `joule launch my_assistant_name`\n\n---\n\n## jl — Joule Work CLI\n\nThe `jl` command provides capabilities to:\n\n- Create and manage solutions composed of typed assets (agents, MCP servers, workflows, etc.)\n- Set up pro-code projects for AI coding agents\n- Validate and build solution artifacts\n- Deploy solutions to Joule Studio runtime\n- Manage assets (create, delete) across all supported asset types\n- Interact with MCP servers (list, inspect tools, call tools)\n- Send agent-to-agent messages\n\n> **Note:** `jl` requires Node.js ≥ 24.\n\n### Usage\n\n```bash\njl login <joule-studio-url>                        # log in\njl solution create --name <name>                   # create a solution\njl solution validate                               # validate\njl solution build                                  # build zip\njl solution deploy                                 # deploy to backend\n```\n\n### Example Workflow\n\nLog in to the backend:\n\n```bash\njl login 'https://my-backend.cfapps.eu12.hana.ondemand.com?issuerUrl=https://myias.accounts.cloud.sap&clientId=<client-id>&appTid=<app-tid>'\n```\n\n> **Where do I find this URL?** In your Joule Studio tenant, go to **Settings → Develop** and copy the URL shown there.\n\nCreate a solution and add an asset:\n\n```bash\njl solution create --name my-solution\njl asset create agent --name my-agent\n```\n\nValidate, build, and deploy:\n\n```bash\njl solution validate\njl solution build\njl solution deploy\n```\n\nThe following are required depending on which skills you use after running `jl init <agent>`:\n\n| Requirement                                       | Skills that need it                                        |\n| ------------------------------------------------- | ---------------------------------------------------------- |\n| **Python 3**                                      | `sap-agent-bootstrap` — scaffold and run Python A2A agents |\n| **`@sap/cds` CLI** (`npm install -g @sap/cds-dk`) | `cap-development` — build and run CAP Node.js applications |\n\nSee the **[CLI Reference](https://help.sap.com/docs/joule-studio/joule-studio/joule-studio-for-cli-pro-code-development-in-joule-studio)** for all commands and options.\n\n> Built on [@sap/joule-studio-cli-core-v2](https://www.npmjs.com/package/@sap/joule-studio-cli-core-v2).\n\n---\n\n## Documentation\n\nFull product documentation is available at: [SAP Help Portal – Joule Studio Tools](https://help.sap.com/docs/joule/joule-development-guide-ba88d1ec6a1b442098863d577c19b0c0/joule-development?version=LATEST&locale=en-US)\n\n## License\n\nCopyright © SAP SE\n\n\nThis project is licensed under the [SAP Developer License](https://tools.hana.ondemand.com/developer-license-3_2.txt)\n","readmeFilename":"README.md"}