@kern0x1b/penstock-cli 26.10.0 → 26.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/THIRD-PARTY-NOTICES.md +1646 -0
  2. package/dist/grammars/tree-sitter-c-sharp.wasm +0 -0
  3. package/dist/grammars/tree-sitter-go.wasm +0 -0
  4. package/dist/grammars/tree-sitter-groovy.wasm +0 -0
  5. package/dist/grammars/tree-sitter-java.wasm +0 -0
  6. package/dist/grammars/tree-sitter-javascript.wasm +0 -0
  7. package/dist/grammars/tree-sitter-kotlin.wasm +0 -0
  8. package/dist/grammars/tree-sitter-python.wasm +0 -0
  9. package/dist/grammars/tree-sitter-scala.wasm +0 -0
  10. package/dist/grammars/tree-sitter-typescript.wasm +0 -0
  11. package/dist/grammars/web-tree-sitter.wasm +0 -0
  12. package/dist/penstock.js +1076 -419
  13. package/dist/syntax-worker.js +5 -0
  14. package/dist/web/assets/AgentSettings-B_c5K0Hd.js +1 -0
  15. package/dist/web/assets/AgentsDialog-BtgwT_49.js +1 -0
  16. package/dist/web/assets/BpmnCanvas-BeOwGJEV.js +1905 -0
  17. package/dist/web/assets/BpmnDocument-DioCJiv7.js +24 -0
  18. package/dist/web/assets/ConflictDialog-B9V39KUg.js +1 -0
  19. package/dist/web/assets/DiffDocument-t0gjzCba.js +1 -0
  20. package/dist/web/assets/DmnDocument-ChFDTt1F.js +41 -0
  21. package/dist/web/assets/DmnDocument-VhMjHTN6.css +1 -0
  22. package/dist/web/assets/FormDocument-TEeVD6T7.js +32 -0
  23. package/dist/web/assets/FormDocument-URLcKn84.css +1 -0
  24. package/dist/web/assets/FormStepView-DLNQ8jVN.js +1 -0
  25. package/dist/web/assets/GraphAwareLayoutService-DFtkFUrn.js +21 -0
  26. package/dist/web/assets/NewFileDialog-BPBljAGC.js +34 -0
  27. package/dist/web/assets/QuickOpen-DOe23FAR.js +1 -0
  28. package/dist/web/assets/ScriptPane-DzBYUW23.js +2 -0
  29. package/dist/web/assets/ScriptRunDialog-BtLkIreU.js +1 -0
  30. package/dist/web/assets/SettingsDialog-YoMl6NJ1.js +1 -0
  31. package/dist/web/assets/ShortcutsDialog-D0_aCcNe.js +1 -0
  32. package/dist/web/assets/SourceDocument-p3iREvQI.js +1 -0
  33. package/dist/web/assets/TextDocument-DWg1EqKB.js +1 -0
  34. package/dist/web/assets/UnreadableFileLayer-ep6zQMtt.js +1 -0
  35. package/dist/web/assets/UploadDialog-ZOy1owan.js +1 -0
  36. package/dist/web/assets/Viewer-C7pbHtwq.js +4 -0
  37. package/dist/web/assets/apply-B8eZkNJ6.js +1 -0
  38. package/dist/web/assets/array-move-Bc4mVEdq.js +1 -0
  39. package/dist/web/assets/bpmn-0HrGCizt.svg +228 -0
  40. package/dist/web/assets/bpmn-Cyvp-fAH.eot +0 -0
  41. package/dist/web/assets/bpmnTheme-CebWk9Ei.js +1683 -0
  42. package/dist/web/assets/bridgeInstance-DzSjLJAc.js +600 -0
  43. package/dist/web/assets/clike-DaHM3zHz.js +1 -0
  44. package/dist/web/assets/colors-dark-C7vOziWz.css +1 -0
  45. package/dist/web/assets/colors-dracula-CXhMcc1Z.css +1 -0
  46. package/dist/web/assets/colors-light-CyT40N4M.css +1 -0
  47. package/dist/web/assets/de-DG3quwSS.js +1 -0
  48. package/dist/web/assets/dialog-Cn1DzN2I.js +1 -0
  49. package/dist/web/assets/diff-DMf6xJj1.js +1 -0
  50. package/dist/web/assets/dist--ADMeFWW.js +57 -0
  51. package/dist/web/assets/dist--PmHUHDp.js +1 -0
  52. package/dist/web/assets/dist-2wOiLlcG.js +1 -0
  53. package/dist/web/assets/dist-BYu4mHLv.js +23 -0
  54. package/dist/web/assets/dist-BaWEbDAw.js +1 -0
  55. package/dist/web/assets/dist-BnLLb41E.js +2 -0
  56. package/dist/web/assets/dist-BqwyxNP3.js +1 -0
  57. package/dist/web/assets/dist-BxuUJA8B.js +1 -0
  58. package/dist/web/assets/dist-CHkSydPE.js +1 -0
  59. package/dist/web/assets/dist-CHluRwHI.js +2 -0
  60. package/dist/web/assets/dist-CRJyslwo.js +1 -0
  61. package/dist/web/assets/dist-CxyFqsL2.js +6 -0
  62. package/dist/web/assets/dist-D0cjZCsW.js +13 -0
  63. package/dist/web/assets/dist-DBnQKg4d.js +1 -0
  64. package/dist/web/assets/dist-DIdDTNn9.js +2 -0
  65. package/dist/web/assets/dist-DXXc07IK.js +1 -0
  66. package/dist/web/assets/dist-DgvQWhKm.js +6 -0
  67. package/dist/web/assets/dist-DlbES2QN.js +1 -0
  68. package/dist/web/assets/dist-Dup2uTdL.js +6 -0
  69. package/dist/web/assets/dist-TNwbKIWT.js +1 -0
  70. package/dist/web/assets/dist-f4FXNtig.js +1 -0
  71. package/dist/web/assets/dist-zHmj1-pd.js +5 -0
  72. package/dist/web/assets/dmn-2EwrEScy.eot +0 -0
  73. package/dist/web/assets/dmn-eH1_eUsy.svg +90 -0
  74. package/dist/web/assets/dockLayout-CxOMo-Nl.js +1 -0
  75. package/dist/web/assets/documentBridge-BXU6mgKl.js +240 -0
  76. package/dist/web/assets/documents-XvKodSic.js +1 -0
  77. package/dist/web/assets/duplicate-CKn70NtG.js +342 -0
  78. package/dist/web/assets/ed25519-DTYhEcYX.js +1 -0
  79. package/dist/web/assets/engine-BPUfS3r2.js +1 -0
  80. package/dist/web/assets/engines-BaW52xZ_.js +5 -0
  81. package/dist/web/assets/es-PcpRjhXP.js +1 -0
  82. package/dist/web/assets/files-Chpd_QD0.js +1 -0
  83. package/dist/web/assets/formChecks-TAsEqw2_.js +1 -0
  84. package/dist/web/assets/fr-BQIO41QS.js +1 -0
  85. package/dist/web/assets/frontend-By89859W.js +1 -0
  86. package/dist/web/assets/go-C1TRUqzB.js +1 -0
  87. package/dist/web/assets/groovy-C2AgVf_z.js +1 -0
  88. package/dist/web/assets/html2canvas-DEOnTJc-.js +5 -0
  89. package/dist/web/assets/httpHost-DPT9cNRG.js +1 -0
  90. package/dist/web/assets/index.es-DXehkcd9.js +4 -0
  91. package/dist/web/assets/index.es-fKIKPRSg.js +78 -0
  92. package/dist/web/assets/index.esm-CTLpq4ik.js +3 -0
  93. package/dist/web/assets/intelligence-_ijxuAw5.js +3 -0
  94. package/dist/web/assets/ja-CJkgGd9w.js +1 -0
  95. package/dist/web/assets/jspdf.es.min-DXxYWA_o.js +79 -0
  96. package/dist/web/assets/ko-BaifpU2V.js +1 -0
  97. package/dist/web/assets/lib--h_vArmx.js +1 -0
  98. package/dist/web/assets/libavoid-BRQRZjmQ.wasm +0 -0
  99. package/dist/web/assets/libavoid.wasm +0 -0
  100. package/dist/web/assets/platform-_nC9EyYA.js +2 -0
  101. package/dist/web/assets/preferences-Cfvg8oqM.js +1 -0
  102. package/dist/web/assets/preload-helper-VRuDKI9K.js +1 -0
  103. package/dist/web/assets/properties-C3HzGRE2.js +1 -0
  104. package/dist/web/assets/pt-BR-DkBw_2Tc.js +1 -0
  105. package/dist/web/assets/purify.es-CyDa74pG.js +3 -0
  106. package/dist/web/assets/python-CvnBFxgv.js +1 -0
  107. package/dist/web/assets/resource/ArchitectsDaughter-OFL.txt +93 -0
  108. package/dist/web/assets/resource/ArchitectsDaughter-Regular.ttf +0 -0
  109. package/dist/web/assets/resource/JetBrainsMono-Italic.woff2 +0 -0
  110. package/dist/web/assets/resource/JetBrainsMono-Medium.woff2 +0 -0
  111. package/dist/web/assets/resource/JetBrainsMono-OFL.txt +52 -0
  112. package/dist/web/assets/resource/JetBrainsMono-Regular.woff2 +0 -0
  113. package/dist/web/assets/resource/JetBrainsMono-SemiBold.woff2 +0 -0
  114. package/dist/web/assets/rolldown-runtime-B8BYMn-z.js +1 -0
  115. package/dist/web/assets/ru-DhjXKaLT.js +1 -0
  116. package/dist/web/assets/run-CgRiIIgd.js +1 -0
  117. package/dist/web/assets/samples-CeaUa4Fn.js +1 -0
  118. package/dist/web/assets/shortcut-DONH578b.js +1 -0
  119. package/dist/web/assets/source-frame-C6KIof5s.js +2 -0
  120. package/dist/web/assets/stackblur-es-Djj-lnDR.js +2 -0
  121. package/dist/web/assets/syntax-DBcQvmbn.js +6 -0
  122. package/dist/web/assets/testCaseRuns-Bw2AfAfR.js +1 -0
  123. package/dist/web/assets/translator-Dt_jCGPm.js +1 -0
  124. package/dist/web/assets/typing-CXvbBSPr.js +1 -0
  125. package/dist/web/assets/ui-DDJuNJWb.js +1 -0
  126. package/dist/web/assets/useTrace-Rwk8eJY1.js +1 -0
  127. package/dist/web/assets/vendor-NJP34MHU.js +1 -0
  128. package/dist/web/assets/web-C3yK7kgI.js +148 -0
  129. package/dist/web/assets/web-CSZhWpVp.css +1 -0
  130. package/dist/web/assets/zh-tAs09DKy.js +1 -0
  131. package/dist/web/icon.svg +9 -0
  132. package/dist/web/index.html +63 -0
  133. package/dist/web/manifest.webmanifest +14 -0
  134. package/package.json +11 -8
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-B8BYMn-z.js";import{t as e}from"./preload-helper-VRuDKI9K.js";var n=new Set([`en`,`ru`,`de`,`zh`,`ja`,`ko`,`es`,`fr`]),r=new Set([`TW`,`HK`,`MO`]);function parts(e){let n=e.trim().replace(/_/g,`-`).split(`-`).filter(e=>e.length>0),r=(n.shift()??``).toLowerCase(),i=``,a=``;for(let e of n)e.length===4?a||=e[0].toUpperCase()+e.slice(1).toLowerCase():e.length===2&&(i||=e.toUpperCase());return{language:r,region:i,script:a}}function resolveLocale(e){if(typeof e!=`string`)return`en`;let{language:i,region:a,script:o}=parts(e);return i===`pt`?a===``||a===`BR`?`pt-BR`:`en`:i===`zh`?o===`Hant`||r.has(a)?`en`:`zh`:n.has(i)?i:`en`}function browserLocale(e){return resolveLocale(e?.language??(typeof navigator>`u`?void 0:navigator.language))}var i=/\{([^{}]*)\}/g;function interpolate(e,n){return n?e.replace(i,(e,r)=>{let i=Object.hasOwn(n,r)?n[r]:void 0;return i==null?e:String(i)}):e}var a={app:JSON.parse(`{"name":"Penstock","common":{"loading":"Loading…","learnMore":"Learn more","close":"Close","optional":" (optional)","add":"Add","back":"Back","cancel":"Cancel","checkAgain":"Check again","code":"Code","comments":"Comments","copy":"Copy","delete":"Delete","done":"Done","engine":"Engine","export":"Export","monitor":"Monitor","next":"Next","open":"Open","overview":"Overview","paste":"Paste","problems":"Problems","properties":"Properties","recheck":"Recheck","redo":"Redo","reload":"Reload","remove":"Remove","retry":"Retry","save":"Save","scenarios":"Scenarios","search":"Search","showAll":"Show all","skip":"Skip","stop":"Stop","undo":"Undo","variables":"Variables","more":"+{number} more","copyCommand":"Copy the command","commandCopied":"Copied"},"config":{"problem":{"syntaxWhy":"the file could not be read as YAML - {reason}.","typeOfFile":"the file should hold {expected}, it is {found}.","type":"{key} should be {expected}, it is {found}.","unknownKey":"Penstock reads no setting called {key}, so it is left out.","insteadStopped":"Nothing is read from this file until it is fixed.","insteadIde":"Penstock uses the settings from the IDE until the file is read."},"brokenTitle":"{0} could not be read","reason":{"nestedMapping":"one value is nested under a value on the same line","duplicateKey":"the same setting is written twice","tabIndentation":"a tab is used where the indent needs spaces","implicitKey":"a setting is written on the same line as the one above it","unclosed":"the file ends in the middle of a value"},"expect":{"text":"text","flag":"true or false","number":"a number","list":"a list of texts","section":"a section of settings","freeSection":"a section of settings","oneOf":"one of {values}"},"found":{"text":"text","flag":"true or false","number":"a number","list":"a list","section":"a section","nothing":"nothing"},"file":{"readsInstead":"Penstock reads this file instead of the IDE settings.","overrides":"A penstock.yaml in a subfolder overrides this one for the diagrams under it.","templatesFrom":"Folders to read Camunda element templates from:","secretsStay":"Passwords and secrets stay in the IDE password safe, never here."},"local":{"writtenBy":"Written by Penstock for this machine. Keep it out of version control.","valuesWin":"The values here win over penstock.yaml; delete a key to fall back to the project’s answer.","gitignore":"Penstock, this machine only","wrapperWhichPenstock":"The Penstock this project runs. Commit it, and everyone runs the same one.","wrapperChangeVersion":"Change the version by hand, or run: ./penstockw update [version]"}},"palette":{"label":"Command palette","search":"Find an action…","hint":"Arrow keys to move, Enter to run, Shift+Enter to pin to or unpin from the toolbar, Escape to close","actions":"Actions","matches":{"one":"{count} action","other":"{count} actions"},"noMatch":"No action matches \\"{query}\\"","pin":"Pin to the toolbar","unpin":"Unpin from the toolbar"},"export":{"title":"Export diagram","diagram":"Diagram","mainDiagram":"Main Diagram","theme":"Theme","themeLight":"Light","themeDark":"Dark","themeDracula":"Dracula","schema":"Schema","schemaDefault":"Default","schemaSketchy":"Sketchy","format":"Format","background":"Use background","cancel":"Cancel","copy":"Copy","export":"Export","exporting":"Exporting...","copyTitle":"Copy the picture with these settings, as a PNG","previewFailed":"Unable to render the diagram preview","copyFailed":"The picture could not be copied","notLoaded":"Unable to export: the diagram preview did not load","unnamedSubprocess":"Unnamed SubProcess","asFormat":"Export as {format}","untitledFile":"diagram"},"cli":{"noDiagrams":"No .bpmn files found in {paths}.","wrote":"wrote {file}","nothingWritten":"Nothing was written.","nothingChanged":"Nothing was changed.","notAGitRepository":"Not a git repository, so there is nothing to compare against.","header":{"status":"STATUS","endpoint":"ENDPOINT","files":"FILES","file":"FILE","details":"DETAILS","worker":"WORKER","name":"NAME","id":"ID","version":"VERSION","type":"TYPE","engine":"ENGINE","property":"PROPERTY","value":"VALUE","action":"ACTION","target":"TARGET","flow":"FLOW","testCases":"TEST CASES","testClass":"TEST CLASS","process":"PROCESS","scenarios":"SCENARIOS","severity":"SEVERITY","content":"CONTENT"},"trust":{"hookRefused":"hook {stage}: not run, because {root} is not a trusted project","notTrusted":"the project is not trusted, so penstock.yaml may not run shell commands here","runTrust":"run penstock trust once in this project to allow it, or pass --trust-project for this run only","questionNotTrusted":"{root} is not a trusted project.","questionPower":"penstock.yaml can run any shell command in this folder, with your own account.","questionAllow":"Allow it here and from now on? [y/N] ","questionInIt":"penstock.yaml in it may run any shell command in that folder, with your own account.","questionTrust":"Trust it on this machine? [y/N] ","once":"allowed for this run only, by --trust-project","saidNo":"No, so nothing from penstock.yaml was run.","nowTrusted":"penstock.yaml may run shell commands here now and from now on","trustedThere":"penstock.yaml may run shell commands there","nothingToTrust":"there is no penstock.yaml in it, so there is nothing to trust","nothingToTrustHint":"nothing was written. Run penstock init to write one, or penstock trust in the project folder","forgetHint":"penstock trust --forget takes an old record away","alreadyTrusted":"it is already trusted","notTrustedYet":"nothing was written, the project is still not trusted","noneTrusted":"No project is trusted on this machine.","headerProject":"TRUSTED PROJECT","headerSince":"SINCE","mayNotRun":"penstock.yaml may not run shell commands there now","notTrustedBefore":"it was not trusted"},"templates":{"noWorker":"No job worker was found: Penstock reads @JobWorker and @ExternalTaskSubscription in .java, .kt, .kts, .groovy and .scala files.","template":"TEMPLATE","workerIn":"{value} in {file}:{line}","workerInHandler":"{value} in {file}:{line}, handler {handler}","inputs":"INPUTS","action":{"written":"written","updated":"updated","unchanged":"unchanged"},"writtenFor":"Element templates for the job workers in this project, in .camunda/element-templates.","nothingToWrite":"Nothing to write: every template already says what the worker does.","summary":"{written} written, {updated} updated. Run the modeler or reload the editor to see them.","noneToCheck":"No element template in {folder}: nothing to check.","allMatch":"Every element template still matches the worker it was written from.","drifted":"{templates} no longer matches the worker:","asksFor":"asks for {name}, which the worker does not read","hasExtra":"has {name}, which the worker no longer reads","hasOtherType":"has {name} as a different type","fixHint":"Run penstock templates generate to bring them back in step.","usage":"Use templates generate to write the element templates, or templates --check to fail when one no longer matches its worker.","count":{"template":{"one":"{count} template","other":"{count} templates"},"elementTemplate":{"one":"{count} element template","other":"{count} element templates"}}},"connectors":{"notInside":"Not a path inside the connectors directory: {path}","linkAt":"The connectors directory holds a link at {path}","holdsALink":"The connectors directory holds a link","fileInTheWay":"A file is in the way","tooLarge":"The file is larger than 64 MB","contentTooLarge":"The content is larger than 64 MB","directoryInTheWay":"A directory is in the way","nothingToMove":"Nothing to move","destinationExists":"The destination already exists","notACatalogueUrl":"Not a connector catalogue URL: {url}","githubUnreachable":"GitHub could not be reached","redirect":"GitHub answered with a redirect, which is not followed","responseTooLarge":"The response is larger than 64 MB","interrupted":"The download was interrupted","listOnly":"Only list may name the connectors directory itself","renameNeedsTarget":"Rename needs a destination","unknownOperation":"Unknown operation: {operation}","downloadFailed":"The connector templates could not be downloaded: {reason}.{when} run \`penstock connectors --refresh\` to try now.","unknownReason":"unknown reason","retriedAfter":" It is tried again automatically after {when};","usingOlder":"Using the templates downloaded for {ref}; checking for a newer release failed: {reason}","resolveUsage":"Usage: penstock connectors resolve <id> [version]","notAVersion":"Not a template version: {version}","idVersion":"{id} version {version}","noTemplate":"No template {which} in the catalogue for {ref}","cacheMissing":"The cached file for {id} is missing; run \`penstock connectors --refresh\`","summary":"Connector templates for {ref}: {current} current, {older} with older versions"},"update":{"npmFailed":"npm could not install {package}","noCli":"{package} did not contain the Penstock CLI","noWrapper":"No Penstock wrapper here or above. Run: penstock init","noLatest":"Could not find the latest {package}. Name a version: penstockw update 2.5.0","downloadFailed":"Could not download Penstock {version}: {reason}","alreadyPinned":"Penstock {version}, already the pinned version","moved":"Penstock {from} -> {to}","none":"(none)","downloaded":"downloaded {version} into {home}","alreadyDownloaded":"{version} was already downloaded","droppedDistribution":"dropped distribution={distribution}; it named {version}","commit":"Commit {scripts} and {properties}."},"license":{"notInteractive":"Signing in needs a terminal to answer in. In a pipeline, set PENSTOCK_LICENSE to your licence key instead.","codeOnItsWay":"A sign-in code is on its way to {email}.","codeQuestion":"Code from the e-mail: ","emailQuestion":"E-mail you bought Penstock with: ","nothingChangedAgain":"Nothing was changed. Run penstock license login to try again.","tooManyMachines":"Your {tier} licence is in use on {machines} machines, which is as many as it allows:","since":", since {when}","freeWhich":"Free which one for this machine? (number, or Enter to stop) ","noneBought":"There is no Penstock licence bought with {email}.","buyOrSignIn":"Buy one with penstock license buy, or sign in with the address you bought it with.","activeHere":"Penstock {tier} is active on this machine{again}. The editor in your IDE uses it too.","activeHerePlain":"Penstock {tier} is active on this machine.","again":" again","buyUsage":"penstock license buy [pro|team]","alreadyActive":"Penstock {tier} is already active on this machine.","checkoutOpen":"The checkout for Penstock {tier} is open in your browser:","waitingForPayment":"Waiting for the payment; this finishes by itself once it goes through.","paidEmailQuestion":"E-mail you paid with: ","paid":"Paid, thank you.","paymentFailed":"The payment did not go through, and nothing was charged. Run penstock license buy to try again.","checkoutExpired":"The checkout expired. Run penstock license buy to open a new one.","stoppedWaiting":"Stopped waiting. If you did pay, run penstock license login.","released":"The licence was released from this machine; it can be used on another.","cleared":"There was no seat on this machine to release; the licence file was cleared.","nothingToRelease":"There is no licence on this machine to release, or the licence service could not be reached.","trial":"There is no key yet: this machine is on the Pro trial, {left}, until {ends}.","running":"running","keyComesWithPurchase":"A key comes with a purchase: penstock license buy, or penstock license login if you bought Penstock already.","enterAKey":"To enter a key you have, run penstock license activate <key>.","noneOnThisMachine":"There is no licence on this machine{trial}. Sign in first: penstock license login","trialEnded":", and the Pro trial ended on {ends}","orBuyOne":"Or buy one: penstock license buy. To enter a key you have, run penstock license activate <key>.","teamOnly":"Only a Penstock Team key works in a pipeline, and the licence bought with that address is Pro.","buyTeam":"Buy Team with penstock license buy team.","keepKeySecret":"Keep a key secret. In a pipeline, set it as PENSTOCK_LICENSE; it takes no machine of its own and needs a Team key for the paid features.","activateUsage":"penstock license activate <key>, or sign in without a key: penstock license login","buyAndSignIn":"penstock license buy buy Pro penstock license login already bought","usage":"penstock license [status|key|activate <key>|deactivate]","serviceUnreachable":"The licence service could not be reached: {reason}","tierRow":"tier","statusRow":"status"},"drawing":{"unknownPathCommand":"path command {command} is not understood","incomplete":"the picture would be incomplete: {reason}","nothingToDraw":"the diagram has nothing to draw"},"bot":{"noRepository":"{names} is not set. The workflow that runs the bot has to run in a repository, and GITHUB_REPOSITORY is what names it.","noToken":"{names} is not set. The workflow token is the default: give the job issues: write and pull-requests: write. A token of your own goes in a secret PENSTOCK_TOKEN.","noEventPath":"{names} is not set. The workflow has to pass GITHUB_EVENT_PATH, or run the bot as an action.","noGitLabApi":"{names} is not set. GitLab sets it in every job; a run outside GitLab cannot answer a comment.","noGitLabToken":"{names} is not set. Add a CI/CD variable PENSTOCK_TOKEN: a project access token with role Developer and scope api (Settings, CI/CD, Variables).","noGitLabProject":"{names} is not set. The webhook payload carries the project id, and every GitLab job sets CI_PROJECT_ID.","noBitbucketRepo":"{names} is not set. The pipeline has to run on a pull request event, which sets it.","noBitbucketPr":"{names} is not set. The pipeline has to run on a pull request event, which sets it.","noBitbucketToken":"{names} is not set. Add a repository variable PENSTOCK_TOKEN: a repository access token with pull request write (Repository settings, Access tokens, Create token), and allow pipelines to use it.","noBitbucketBranch":"{names} is not set. The pull request event sets it.","noAzureCollection":"{names} is not set. The pipeline has to run on a pull request, which sets it.","noAzureProject":"{names} is not set. The pipeline has to run in a project, which sets it.","noAzureRepository":"{names} is not set. The pipeline has to run on a pull request, which sets it.","noAzurePullRequest":"{names} is not set. The pipeline has to run on a pull request, which sets it.","noAzureToken":"{names} is not set. Set SYSTEM_ACCESSTOKEN to $(System.AccessToken) and let the build contribute to pull requests (Project settings, Repositories, Security, allow scripts to access the OAuth token), or set a secret PENSTOCK_TOKEN.","noAzureBranch":"{names} is not set. The pull request event sets it.","notAGitCheckout":"The bot runs in a git checkout.","unknownCi":"This does not look like a CI run penstock knows: GitHub, Gitea, Forgejo, GitLab, Bitbucket or Azure DevOps.","nothingToAnswer":"Nothing to answer.","nothingDrawn":"Nothing was drawn, so there is nothing to post.","answeredOn":"answered on {platform}","refusedSaved":"said no, and saved it for the post stage","notForPenstock":"The comment was not for penstock.","couldNotCheckOut":"Could not check out {ref}.","baseNotFound":"Could not find the base {base}.","drew":"drew {file}","answerSaved":"saved the answer for the post stage","unknownStage":"Unknown stage: {stage}. Use draw or post.","count":{"element":{"one":"{count} element","other":"{count} elements"}},"elementsNotDrawn":"{elements} not drawn, the editor cannot draw them either - {ids}","theFork":"the fork {head}","aForkNoLongerExists":"a fork that no longer exists","fromAnotherFork":"This pull request comes from {head}, not from {base}, so the bot did not check it out and did not run anything from it. Push the branch to {base} and the bot will answer there.","noPictureBecause":"{file}: no picture, because {reason}. A picture that might be wrong is not shown.","picturesInArtifacts":"The pictures are in this build’s artifacts.","sayWhatToCompareWith":"Say what to compare with: \`/penstock diff <commit, branch or tag>\`.","couldNotFindRef":"I could not find \`{ref}\` in this repository.","diagramsChangedSince":"## Diagrams changed since \`{ref}\`","noDiagramChangedHere":"No diagram changed here.","cleanAgainstTheBaseline":"No problems. The drawing is clean against the baseline.","noDiagramToDraw":"No diagram to draw. Name one: \`/penstock image path/to/process.bpmn\`.","notInThisChange":"\`{file}\` is not in this change.","drawnButNotShown":"Drawn, but not shown here: {files}. [{open}]({link}).","openThem":"open them","couldNotDoThat":"I could not do that: {reason}","help":{"intro":"I read the diagrams in this change. Ask me in a comment:","report":"- \`/penstock\` - the full review: problems, what changed, pictures","check":"- \`/penstock check\` - only the problems","diff":"- \`/penstock diff <commit, branch or tag>\` - what changed since then, with the changes outlined","image":"- \`/penstock image [path.bpmn]\` - a picture of the diagram as it is now"}},"hook":{"exited":"exited {code}"},"hooks":{"skipped":"hooks - this is not a git repository","keptOther":"it already does something else","wrote":"formats and checks the diagrams a commit carries"},"doctor":{"buildEngine":"the build uses the {build} libraries, but penstock.yaml says {engine}","reachable":"reachable ({status})","answered":"answered {status}","unreachable":"unreachable - {reason}","noConfig":"none found - run: penstock init","noEngine":"not set - the editor cannot choose a palette without it","noProfiles":"(none)","missing":"missing: {path}","noUrl":"no url set","deployment":"{url} - {state}","variablesNeedPro":"{mode}, needs Penstock Pro"},"export":{"unknownFormat":"Unknown export format: {format}. Use svg or png.","needsBrowser":"A PNG needs a browser to paint the SVG, which penstock does not carry. SVG needs nothing.","installBrowser":"Install it once, in the project or globally:","notDrawn":" not drawn, as in the editor: {element}"},"convert":{"targetMissing":"say what to convert to: --to operaton","unknownTarget":"--to takes operaton, the engine Camunda 7 and CIB seven diagrams convert to; it was {target}","unchanged":"already in the Operaton namespace, or not a Camunda 7 diagram","wouldChange":"would move the camunda: names to operaton: (pass --write to save)","changed":"moved the camunda: names to operaton:"},"fmt":{"alreadyFormatted":"already formatted","formattedXml":"formatted XML","wouldFormat":"would format XML (pass --write to save)","formLeftAlone":"a form is JSON and fmt rewrites XML only, so it is left as it is"},"diff":{"baseNotFound":"Could not find the base {base}. Give a commit, branch or tag that is in this checkout.","noDifference":"No diagram differs from {base}.","baseIsPath":"{base} is a file, not a commit, branch or tag. To compare two files, give both as files: penstock diff <before> <after>.","newSince":"{file} - new since {base}","picture":"picture {file}","noPicture":"no picture: {reason}","before":"before {file}","after":"after {file}","noPictures":"no pictures: {reason}","added":"added","removed":"removed","changed":"changed","onlyMoved":"Only the drawing moved ({elements}).","noDifferenceFound":"No difference.","movedOnCanvas":"and {elements} only moved on the canvas","count":{"element":{"one":"{count} element","other":"{count} elements"}}},"report":{"baseNotFound":"Could not find the base {base}. Give --base a commit, branch or tag that is in this checkout.","heading":"## Diagrams in this change","nothingChanged":"No diagram changed.","removed":"### Removed","check":"### Check","cleanAgainstTheBaseline":"Nothing new. The drawing is clean against the baseline.","whatChanged":"### What changed","newFile":"new","onlyTheDrawingMoved":"Only the drawing moved.","howItLooks":"### How it looks","thePicturesLink":"The pictures, with what changed outlined: [open them]({link}).","noPictures":"_No pictures this time._","outlined":"_What changed is outlined: green arrived, amber differs._"},"share":{"needsDiagram":"share needs a diagram: penstock share process.bpmn -o process.html","notADiagram":"{file} is not a .bpmn, .dmn or .form file, so there is nothing to share.","offline":"One file, opens offline in any browser; nothing in it reaches the network."},"import":{"needsFile":"import needs a file: penstock import diagram.drawio -o process.bpmn","missing":"{file} does not exist.","exists":"{file} already exists. Nothing was written; use -o for another name, or --force to replace it.","routes":"The routes of the connectors are as drawn; Auto Layout (Pro) can tidy them: penstock layout {file} --write"},"docs":{"format":"docs writes --format html (the default) or md.","writtenSummary":"{pages} written{because}","count":{"step":{"one":"{count} step","other":"{count} steps"},"problem":{"one":"{count} problem","other":"{count} problems"},"page":{"one":"{count} page","other":"{count} pages"},"process":{"one":"{count} process","other":"{count} processes"},"decision":{"one":"{count} decision","other":"{count} decisions"},"form":{"one":"{count} form","other":"{count} forms"},"field":{"one":"{count} field","other":"{count} fields"}},"check":"Check","step":"Step","runs":"Runs","who":"Who","form":"Form","way":"Way","goesTo":"Goes to","when":"When","events":"Events","event":"Event","trigger":"Trigger","data":"Data","variable":"Variable","size":"Size","allDiagrams":"All diagrams","diagramsOf":"{project} diagrams","everyPathEnds":"Every path through the process reaches an end: no deadlocks, nothing runs twice, nothing is unreachable.","runsToItsEnd":"runs to its end","noTwoRulesMatch":"No two rules match the same input, and every input has a rule.","everyInputHasOneRule":"every input has one rule","everyFieldHasItsOwn":"every field has its own variable"},"migrate":{"ready":"ready","converts":"converts","needsWork":"needs work","blocked":"blocked","unknownTarget":"Unknown target {target}. Camunda 8 versions Penstock converts for: {versions}.","baselineWritten":"wrote {file} with {findings}","nothingToMigrate":"There is nothing to migrate: no Camunda 7 diagram, decision or form was found.","toDo":"{count} to do","toCheck":"{count} to check","convert":"{count} convert","headerTodo":"TO DO","headerToCheck":"TO CHECK","headerConvert":"CONVERT","andMore":"and {count} more","totals":"{files} to migrate for Camunda {target}: {ready} ready, {converts} to convert, {needsWork} with work to do, {blocked} blocked.","newAndAccepted":"{fresh} new, {known} accepted","nothingNew":"nothing new, {known} accepted","instancesStay":"Running instances and history stay on Camunda 7 until they finish or are moved with the Data Migrator. penstock migrate report writes all of this as a page to hand on.","unreadable":"it could not be read","leftOpen":"{changes}, {open} left open","wouldWrite":"would write {file}: {reason}","staysOpen":"stays open:","alreadyThere":"{file} is already there and was not written over","left":"left: {where}: {title}. {action}","nothingToConvert":"There is nothing to convert: {reason}.","notCamunda7":{"one":"{files} is not Camunda 7","other":"{files} are not Camunda 7"},"noneFound":"no Camunda 7 diagram, decision or form was found","dryRunFolder":"The converted files would go into {folder}, with a penstock.yaml of their own that says engine: camunda-8. Pass --out <dir> to put them somewhere else.","configKept":"{file} is already there and was kept.","configWritten":"wrote {file} (engine: camunda-8), so the converted files open and are checked as Camunda 8. Set deployment.url to your Camunda 8 cluster.","camunda7Untouched":"The Camunda 7 files are untouched. Every job type above needs a job worker before anything runs. The IDE writes a skeleton from each delegate; running instances stay on Camunda 7.","count":{"finding":{"one":"{count} finding","other":"{count} findings"},"file":{"one":"{count} file","other":"{count} files"},"change":{"one":"{count} change","other":"{count} changes"}},"wouldConvert":"would convert","converted":"converted"},"init":{"licenceHint":"the bot, reports and baselines run on Penstock Team: put the key from \`penstock license key\` in {where}","teamHint":"with Penstock Team the pipeline also gets the review bot, SARIF annotations and baselines: \`penstock license buy team\`, then run init again","githubWorkflowToken":"the bot answers in pull requests with the workflow token; nothing to register","githubForks":"a pull request from a fork is not answered: the bot would have to run the fork with a token that can write to this repository","updateHint":"the workflow runs the Penstock action at a fixed commit, so the licence secret cannot reach code that changed later;","updateHow":"to move it on, look the commit up with \`gh api repos/kern0x1b/penstock-release/commits/main --jq .sha\` and change ACTION_REF in the CLI","secretLicence":"a secret PENSTOCK_LICENSE","giteaWorkflowToken":"the bot answers with the workflow token, or PENSTOCK_TOKEN when that is set","gitlabToken":"add a CI/CD variable PENSTOCK_TOKEN: a project access token, role Developer, scope api","gitlabWebhook":"to answer /penstock comments, add a webhook with Comments events pointing at","gitlabTriggerIsSecret":"that trigger token is a secret: anyone holding the URL can start pipelines on your project","gitlabKeepUrl":"keep the URL in the webhook settings only, never in a committed file, a comment or a shared link, and rotate it under Settings, Webhooks if it ever shows up in a job log","maskedLicence":"a masked CI/CD variable PENSTOCK_LICENSE","bitbucketToken":"add a repository variable PENSTOCK_TOKEN: a repository access token with pull request write","bitbucketTokenHow":"Repository settings, Access tokens, Create token, and allow pipelines to use it","securedLicence":"a secured repository variable PENSTOCK_LICENSE","azureContribute":"let the build service contribute to pull requests (Project settings → Repositories → Security)","azureToken":"the pipeline already sets SYSTEM_ACCESSTOKEN to $(System.AccessToken); without the setting above it stays empty","azurePolicy":"for Azure Repos, add this pipeline as a build validation branch policy","pipelineLicence":"a secret pipeline variable PENSTOCK_LICENSE","engine":{"camunda8":"Camunda 8","camunda7":"Camunda 7","operaton":"Operaton","cibSeven":"CIB seven","classic":"Classic BPMN, no engine"},"engineQuestion":"Which engine does this project run on?","numberQuestion":"Number [1]: ","gitignore":".gitignore with {entry}","unknownExample":"Unknown example: {example}. Use {names} or {last}.","folderNotEmpty":"{folder} is not empty. An example is written into an empty folder, so it never overwrites your files.","exampleReadme":"the README next to them says how to run it","unknownEngine":"Unknown engine: {engine}. Use {names} or {last}.","configWhatItIs":"What this project is. Commit it.","engineDoesNotFit":"The {example} example runs on {label}, so --engine {engine} does not fit it. Leave --engine out, or drop --example.","asTheExampleWroteIt":"as the example wrote it","alreadyAnswers":"it already answers for this project","engineNotUsed":"--engine {engine} was not used: {file} already says {says}","whatItRunsOn":"what the project runs on","includeFrom":"include it from .gitlab-ci.yml","mergeInto":"merge it into bitbucket-pipelines.yml","unknownCi":"Unknown CI: {ci}. Use github, gitea, forgejo, gitlab, bitbucket or azure."},"edit":{"editorRefused":"the editor refused: {reason}","operationFailed":"operation {number}: {message}","didNotReadBack":"The result did not read back cleanly, so it was not written.","changedWhileEditing":"The diagram changed while the edit was being made, so it was not written over.","nothingBroken":"ok nothing broken","breaksTheDrawing":"fail breaks the drawing: {problems}","readsLessWell":"note reads less well: {things}","dryRun":"\\\\nDry run: {file} was not changed.","wouldBreak":"\\\\n{file} was not changed: the edit would break the drawing. Pass --force to write it anyway.","mustLookLikePairs":"{where} \\"{entry}\\" must look like key=value","sayWhatToDo":"say what to do: add, connect, set or remove, or pass --ops with the operations as JSON","unknownField":"unknown field \\"{key}\\"; allowed: {allowed}","mustBeAString":"\\"{field}\\" must be a non-empty string","mustBeAStringShort":"\\"{key}\\" must be a string","propertiesMustBeAnObject":"\\"properties\\" must be an object","notAnEngineProperty":"\\"{key}\\" is not a {engine} property; allowed: {allowed}","mustBeABoolean":"\\"{key}\\" must be true or false","mustBeAWholeNumber":"\\"{key}\\" must be a whole number","mustMapNamesToStrings":"\\"{key}\\" must map names to strings","noOperations":"no operations given","mustBeAnObject":"must be an object","elementMustBeOneOf":"\\"element\\" must be one of {elements}","eventMustBeOneOf":"\\"event\\" must be one of {events}","eventOnlyForEvents":"\\"event\\" only applies to events","idMustBeValid":"\\"id\\" must be a valid XML id","opMustBeOneOf":"\\"op\\" must be add, connect, set, remove or move","property":{"name":"The label shown on the element.","documentation":"The documentation text of the element.","condition":"The condition expression of a sequence flow, such as \${approved}.","conditionSimple":"The condition expression of a sequence flow.","feelCondition":"The FEEL condition of a sequence flow, such as =approved.","class":"The Java class implementing the task.","delegateExpression":"An expression resolving to a delegate bean, such as \${reserveStock}.","expression":"An expression the task evaluates.","resultVariable":"Where the result of expression goes.","topic":"Makes the task an external task on this topic.","asyncBefore":"Starts a transaction before the element.","asyncAfter":"Starts a transaction after the element.","assignee":"Who the user task is assigned to.","candidateUsers":"Comma-separated users who may claim the task.","candidateGroups":"Comma-separated groups who may claim the task.","formKey":"The form the user task shows.","calledElement":"The process a call activity starts.","inputs":"Input parameters: name to value or expression.","outputs":"Output parameters: name to value or expression.","jobType":"The job type a worker subscribes to.","retries":"How often a failed job is retried.","formId":"The id of the linked form the user task shows.","processId":"The process a call activity starts.","inputMappings":"Input mappings: target variable to FEEL source.","outputMappings":"Output mappings: target variable to FEEL source.","decisionRef":"The decision a business rule task calls.","decisionId":"The id of the decision a business rule task calls."},"schema":{"title":"Penstock edit operations","titleFor":"Penstock edit operations for {engine}","onlyOn":" Only on {types}.","add":"Add an element after an existing one; it is placed and connected the way the editor does it.","after":"The id of the element the new one follows.","event":"For events: what kind of event.","newId":"The id to give it; by default the project convention decides.","connect":"Connect two elements with a sequence flow.","set":"Change properties of an element or a flow.","remove":"Remove an element and its connections.","move":"Move an element by dx and dy, in diagram units."},"noSuchElement":"there is no element \\"{id}\\"","set":"set {keys} on {id}","isTheRoot":"\\"{id}\\" is the diagram's root","removed":"removed {id}","isAConnection":"\\"{id}\\" is a connection; add after an element","afterEndEvent":"nothing can follow the end event \\"{id}\\"","addAfterAnElementInside":"\\"{id}\\" is a {type}; add after an element inside it","added":"added {type} {id} after {after}","idTaken":"the id \\"{id}\\" is already taken","noSequenceFlow":"a sequence flow cannot go from \\"{from}\\" to \\"{to}\\"","connect":"connect {from} -> {to} as {id}","doesNotApply":"\\"{key}\\" does not apply to {type} \\"{id}\\"","needsDiagram":"edit needs a diagram: penstock edit process.bpmn add service-task --after Task_check","isAFolder":"{from} is a folder, not a file of operations","notJson":"The operations in {from} are not JSON: {reason}","operationWhere":"operation {number}","count":{"newProblem":{"one":"{count} new problem","other":"{count} new problems"},"thing":{"one":"{count} thing","other":"{count} things"}},"mustBeANumber":"\\"{field}\\" must be a number","moved":"moved {id} by {dx}, {dy}"},"help":{"options":"Options","example":"Example","licence":"Licence","exitCodes":"Exit codes","option":{"profile":"use this profile, as PENSTOCK_PROFILE would"},"init":{"summary":"Write a penstock.yaml for this project: the engine it runs on, the rules, the profiles and the deployment. Asked in a terminal when the folder is empty and nothing says otherwise.","licence":"Free.","exits":{"0":"0 the file was written","1":"1 the folder could not be written, or the file is already there","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"engine":"camunda-8, camunda-7, operaton, cib-seven or classic","example":"camunda-8 or camunda-7, to write a small runnable project into an empty folder","ci":"github, gitea, gitlab, bitbucket or azure: write a pipeline for the tier this machine has","hooks":"install a pre-commit hook that formats and checks staged diagrams","profile":"use this profile, as PENSTOCK_PROFILE would"}},"doctor":{"summary":"Check the setup: which configuration layers are in force, which profiles, rules, element templates and engine.","licence":"Free.","exits":{"0":"0 the setup was read","1":"1 something in it could not be read, and the answer says what","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"format":"json prints the configuration as it resolved, for a tool to read","profile":"use this profile, as PENSTOCK_PROFILE would"}},"check":{"summary":"Everything wrong with the diagrams, in sections: the drawing itself, the bpmnlint rules and, on Pro, how the processes, decisions and forms actually run.","licence":"Free. With these it is part of Penstock Pro, and Team in a pipeline:\\n --only flow flow analysis, the deadlocks and the branches that run twice\\n --baseline a baseline of findings that are already accepted\\n --format sarif|github the findings as annotations on the changed lines","exits":{"0":"0 nothing was found, or everything found is in the baseline","1":"1 something was found that a person can act on","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"only":"which parts to run: drawing, rules, flow","format":"text, json, sarif or github; sarif and github are for a code review","baseline":"fail only on findings the baseline does not already accept","updateBaseline":"write the current findings as the baseline","trustProject":"let this project's penstock.yaml run its hooks for this run, without writing anything down","profile":"use this profile, as PENSTOCK_PROFILE would"}},"migrateAnalyze":{"summary":"Read the Camunda 7 diagrams and say what does not carry over to Camunda 8, and why.","licence":"Free. With these it is part of Penstock Pro, and Team in a pipeline:\\n --baseline a baseline of findings that are already accepted\\n --format sarif|github the findings as annotations on the changed lines","exits":{"0":"0 nothing would be lost, or everything lost is in the baseline","1":"1 something would be lost","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"format":"text, json, sarif or github","out":"where the report, or the converted files, are written","dryRun":"say what would be written and write nothing","target":"the Camunda 8 version to convert for, 8.8 by default","failOn":"what makes the exit code 1: error, or warning","baseline":"fail only on findings the baseline does not already accept","updateBaseline":"write the current findings as the baseline","verbose":"list and annotate what only carries over as it is","profile":"use this profile, as PENSTOCK_PROFILE would"}},"migrateConvert":{"summary":"Write the Camunda 8 files into a camunda-8 folder next to the one given, with a penstock.yaml of their own. Nothing else in the project is touched.","licence":"The conversion is part of Penstock Pro, and Team in a pipeline. Reading it with migrate analyze, and the report, are free.","exits":{"0":"0 the files were written, or --dry-run found nothing to write","1":"1 something could not be converted, and the answer says which","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"format":"text, json, sarif or github","out":"where the report, or the converted files, are written","dryRun":"say what would be written and write nothing","target":"the Camunda 8 version to convert for, 8.8 by default","failOn":"what makes the exit code 1: error, or warning","baseline":"fail only on findings the baseline does not already accept","updateBaseline":"write the current findings as the baseline","verbose":"list and annotate what only carries over as it is","profile":"use this profile, as PENSTOCK_PROFILE would"}},"migrateReport":{"summary":"Write the migration report to hand on: what each diagram became, and what did not come across.","licence":"Free.","exits":{"0":"0 the report was written","1":"1 it could not be written, and the answer says where it tried","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"format":"text, json, sarif or github","out":"where the report, or the converted files, are written","dryRun":"say what would be written and write nothing","target":"the Camunda 8 version to convert for, 8.8 by default","failOn":"what makes the exit code 1: error, or warning","baseline":"fail only on findings the baseline does not already accept","updateBaseline":"write the current findings as the baseline","verbose":"list and annotate what only carries over as it is","profile":"use this profile, as PENSTOCK_PROFILE would"}},"code":{"summary":"Check the diagrams against the code: job types, topics, classes and beans with nothing to run them, and workers no diagram uses.","licence":"Diagram and code checks are part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 every worker and every reference lines up","1":"1 something does not, and the answer names it","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"format":"how the findings are reported","profile":"use this profile, as PENSTOCK_PROFILE would"}},"facts":{"summary":"Read a list of files on standard input, as {\\"files\\": [{\\"path\\": \\"...\\", \\"text\\": \\"...\\"}]}, and print the worker contracts they hold as JSON, for the editor to read the Python, Go, C# and Scala workers it cannot read itself.","licence":"Code links are part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the contracts were printed","1":"1 the input is not a list of files","2":"2 the CLI itself failed, not the command; the message says what"}},"templatesGenerate":{"summary":"Write an element template for every job worker the project has, into .camunda/element-templates, so the Camunda palette fills itself in.","licence":"Writing element templates is part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 every worker has a template","1":"1 a worker could not be written, and the answer names it","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"check":"check instead of write: the same as templates check, and writes nothing","profile":"use this profile, as PENSTOCK_PROFILE would"}},"templatesCheck":{"summary":"Check that every element template still says what its job worker asks for, and that every worker has one. Writes nothing.","licence":"Free.","exits":{"0":"0 every template still matches its worker","1":"1 a template has drifted, and the answer says how","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"check":"what templates generate takes to do this instead of writing","profile":"use this profile, as PENSTOCK_PROFILE would"}},"scenariosList":{"summary":"List every distinct way through each process, with the conditions it takes. This is a test plan.","licence":"Process scenarios are part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the scenarios were listed","1":"1 a process could not be read, and the answer names it","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"format":"how the scenarios are listed; md is a page a person reads","profile":"use this profile, as PENSTOCK_PROFILE would"}},"scenariosRun":{"summary":"Run the Camunda test-case files of the diagrams against the engine they name, step by step, with the mocks the file asks for.","licence":"Running a process against an engine is part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the run finished with no failing case","1":"1 a case failed, or the engine could not be reached","2":"2 the CLI itself failed, not the command; the message says what","130":"130 Ctrl-C twice: the case is cancelled, its build removed, and the run stops"},"options":{"timeout":"how long one step may take, 30 by default","junitXml":"where a JUnit XML report is written","junit":"write a Camunda Process Test class that runs them instead","teamcity":"report as TeamCity service messages, as the IDE reads them","profile":"use this profile, as PENSTOCK_PROFILE would"}},"testCases":{"summary":"The command behind scenarios run and scenarios generate: run the Camunda test-case files of the diagrams against the engine they name, step by step, with the mocks the file asks for. --generate writes those files from the ways through each process instead.","licence":"Running a process against an engine, and writing its test-case files, is part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the run finished with no failing case","1":"1 a case failed, or the engine could not be reached","2":"2 the CLI itself failed, not the command; the message says what","130":"130 Ctrl-C twice: the case is cancelled, its build removed, and the run stops"},"options":{"generate":"write the test-case files from the ways through each process, instead of running them","junit":"write a Camunda Process Test class that runs them instead","junitXml":"where a JUnit XML report is written","timeout":"how long one step may take, 30 by default","teamcity":"report as TeamCity service messages, as the IDE reads them"}},"scenariosGenerate":{"summary":"Write the Camunda test-case files from the ways through each process, which scenarios run then plays back against an engine.","licence":"Writing test-case files is part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the run finished with no failing case","1":"1 a case failed, or the engine could not be reached","2":"2 the CLI itself failed, not the command; the message says what","130":"130 Ctrl-C twice: the case is cancelled, its build removed, and the run stops"},"options":{"timeout":"how long one step may take, 30 by default","junitXml":"where a JUnit XML report is written","teamcity":"report as TeamCity service messages, as the IDE reads them","profile":"use this profile, as PENSTOCK_PROFILE would"}},"junit":{"summary":"Write a JUnit test for every way through each process, with the variables that take it there, for Camunda Process Test or camunda-bpm-assert.","licence":"Process tests are part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the tests were written","1":"1 a test could not be written, and the answer names the process","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"out":"where the tests are written","package":"the package the tests are written in","profile":"use this profile, as PENSTOCK_PROFILE would"}},"layout":{"summary":"Lay the diagrams out as a readable left-to-right flow, whatever they were drawn like.","licence":"Auto layout is part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the diagrams do not overlap and nothing runs through a shape","1":"1 a diagram could not be laid out, and the answer says which","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"write":"save what was laid out; without it the answer is the plan and the file is untouched","trustProject":"let this project's penstock.yaml run its hooks for this run, without writing anything down","profile":"use this profile, as PENSTOCK_PROFILE would"}},"convert":{"summary":"Move a Camunda 7 or CIB seven diagram to the Operaton namespace, so an Operaton project reads it. Without --write the answer is the list and the files are untouched.","licence":"Free.","exits":{"0":"0 every diagram is in the Operaton namespace, or was made so","1":"1 a file could not be read, and the answer names it","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"to":"the engine the diagrams are converted to; operaton is the only one","write":"save the converted diagrams; without it nothing is written"}},"fmt":{"summary":"Rewrite the XML the way the editor saves it, so a diff of a diagram stays readable.","licence":"Free.","exits":{"0":"0 every file is already formatted, or was","1":"1 a file could not be parsed, and the answer names it","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"write":"save the result; without it the answer is the diff and the file is untouched","profile":"use this profile, as PENSTOCK_PROFILE would"}},"diff":{"summary":"What changed between two versions of a process: two files, or what the working tree changed since a commit, a branch or a tag.","licence":"Free. The pictures with --images are part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 nothing changed","1":"1 something did, and the answer lists it","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"images":"render before and after, with the changes coloured","out":"where the pictures are written","profile":"use this profile, as PENSTOCK_PROFILE would"}},"export":{"summary":"Render the diagrams as pictures, one file per diagram.","licence":"Free.","exits":{"0":"0 every diagram was written","1":"1 a diagram could not be rendered, and the answer names it","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"format":"svg or png; the format the export is asked for","out":"where the pictures are written","profile":"use this profile, as PENSTOCK_PROFILE would"}},"share":{"summary":"One HTML file to send: a read-only viewer with zoom, pan and the documentation of each element. It opens offline, with nothing else on the page.","licence":"Free.","exits":{"0":"0 the file was written","1":"1 it could not be written, and the answer says where it tried","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"out":"the file to write; -o is the same","profile":"use this profile, as PENSTOCK_PROFILE would"}},"import":{"summary":"Turn a draw.io, Visio, Signavio or Bizagi diagram into BPMN 2.0, and list what could not be mapped.","licence":"Free.","exits":{"0":"0 the diagram was written","1":"1 something could not be mapped, and the answer says what","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"out":"the file to write; -o is the same","force":"replace a file that is already there","format":"json reports what could not be mapped as a document a tool can read","profile":"use this profile, as PENSTOCK_PROFILE would"}},"docs":{"summary":"Write documentation for every process, decision file and form: a page each, with the picture, the steps, the decisions, the events and the data.","licence":"Process documentation is part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the pages were written","1":"1 a page could not be written, and the answer names it","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"format":"html or md","out":"where the pages are written","profile":"use this profile, as PENSTOCK_PROFILE would"}},"report":{"summary":"One markdown comment for a pull request: the check, the diff and a picture of every diagram that changed.","licence":"Pull request reports are part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the report was written","1":"1 it could not be written, and the answer says where it tried","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"base":"what the report compares against, origin/main by default","out":"where the markdown is written","imagesDir":"where the pictures are written","imageBase":"where the pictures will be served from, for a comment that shows them","imagesLink":"where to find them instead, when they cannot be shown inline","profile":"use this profile, as PENSTOCK_PROFILE would"}},"bot":{"summary":"Answer in a pull or merge request, from the CI run it is in. penstock init --ci sets the pipeline up.","licence":"The review bot is part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the answer was posted, or the pictures were drawn","1":"1 it could not be, and the answer says why","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"stage":"draw the pictures now and post later, when they are uploaded between","profile":"use this profile, as PENSTOCK_PROFILE would"}},"deploy":{"summary":"Deploy the processes, decisions and forms to the engine the configuration names.","licence":"Free.","exits":{"0":"0 the engine took the deployment","1":"1 it did not, and the answer says what it said","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"dryRun":"say what would be sent, and send nothing","wait":"confirm with the engine that the definitions are live","trustProject":"let this project's penstock.yaml run its hooks for this run, without writing anything down","profile":"use this profile, as PENSTOCK_PROFILE would"}},"show":{"summary":"List a diagram's elements, flows and properties, for a person or for a tool to read.","licence":"Free.","exits":{"0":"0 the diagram was read","1":"1 it is not a diagram, or not there, and the answer says which","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"format":"json is the same document a tool reads","profile":"use this profile, as PENSTOCK_PROFILE would"}},"edit":{"summary":"Add, connect, set or remove in a diagram the way the editor would, and refuse an edit that would break it.","licence":"Editing from the command line is part of Penstock Pro, and Team in a pipeline. Reading the contract with --schema is free.","exits":{"0":"0 the diagram was changed, or --dry-run found nothing to change","1":"1 the edit would break the diagram, or could not be read, and nothing was written","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"ops":"the operations as JSON on one line","opsFile":"the operations as JSON in a file, or - to read them from standard input","schema":"print the contract the operations follow, and change nothing","after":"add after this element, the way the editor places a new one","event":"the event type to add","name":"the name of the element that is added, connected or set","id":"the id of the element to set or remove","condition":"the condition of a sequence flow that is connected","set":"an attribute to set, more than once","input":"an input mapping, more than once","output":"an output mapping, more than once","dryRun":"say what would change and write nothing","force":"write even when the edit would break the diagram","profile":"use this profile, as PENSTOCK_PROFILE would"}},"licenseStatus":{"summary":"Which licence this machine has, and why it is that one.","licence":"Free.","exits":{"0":"0 the answer was read","1":"1 the licence service could not be reached, and the machine stays as it was","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"profile":"use this profile, as PENSTOCK_PROFILE would"}},"licenseKey":{"summary":"The key for PENSTOCK_LICENSE in a pipeline, found again by the e-mail you bought with, because the machine no longer keeps it.","licence":"Free.","exits":{"0":"0 the key was found","1":"1 there is no Team key bought with that address, or there is no terminal to ask on","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"profile":"use this profile, as PENSTOCK_PROFILE would"}},"licenseBuy":{"summary":"Buy Penstock. The checkout opens in a browser and the licence reaches this machine by itself once you have paid.","licence":"Free.","exits":{"0":"0 the licence is on this machine","1":"1 the payment did not go through, or nothing was charged","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"profile":"use this profile, as PENSTOCK_PROFILE would"}},"licenseLogin":{"summary":"Sign in with the e-mail you bought Penstock with. There is no key to copy.","licence":"Free.","exits":{"0":"0 the licence is on this machine","1":"1 there is no licence bought with that address","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"profile":"use this profile, as PENSTOCK_PROFILE would"}},"licenseActivate":{"summary":"Use a key you already have.","licence":"Free.","exits":{"0":"0 the licence is on this machine","1":"1 the key was not accepted, and the answer says why","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"profile":"use this profile, as PENSTOCK_PROFILE would"}},"licenseLogout":{"summary":"Release this machine's licence so another machine can use it. The same as license deactivate.","licence":"Free.","exits":{"0":"0 the licence was released, or there was no seat to release","1":"1 the licence service could not be reached","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"profile":"use this profile, as PENSTOCK_PROFILE would"}},"trust":{"summary":"Let this project's penstock.yaml run shell commands here. A hook of check, layout or deploy asks for this first, and a project with no penstock.yaml is not trusted at all.","licence":"Free.","exits":{"0":"0 the project is trusted, forgotten, or the list was printed","1":"1 there is no penstock.yaml there to trust, or the path is not there","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"list":"print what is trusted on this machine","forget":"take one project back","yes":"do not ask, which is what a pipeline wants","profile":"use this profile, as PENSTOCK_PROFILE would"}},"mcp":{"summary":"Serve BPMN diagrams to an AI agent over MCP. Reading a diagram and checking it are free; flow analysis, scenarios, code links and editing need a licence.","licence":"list_diagrams, show_diagram and check_diagram are free. The others are part of Penstock Pro, and Team in a pipeline.","exits":{"0":"0 the server stopped, or the client entry was printed","1":"1 a tool was asked for something this machine does not have","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"config":"print the client entry to paste into the agent, and stop","project":"the project every tool works on, without the agent naming it; nothing outside it is read"}},"connectors":{"summary":"List Camunda's connector templates, or where they are cached on this machine. Downloaded from GitHub at most once a day.","licence":"Free.","exits":{"0":"0 the list was printed","1":"1 the release list could not be downloaded, and the answer says when it will try again","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"refresh":"check GitHub for a newer release now","profile":"use this profile, as PENSTOCK_PROFILE would"}},"connectorsResolve":{"summary":"Print one connector template, resolved to the version asked for or to the newest one in the cache.","licence":"Free.","exits":{"0":"0 the template was printed","1":"1 there is no template with that id, and the answer says what there is","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"refresh":"check GitHub for a newer release first","profile":"use this profile, as PENSTOCK_PROFILE would"}},"update":{"summary":"Move the project's wrapper to a version, the latest by default.","licence":"Free.","exits":{"0":"0 the wrapper was moved","1":"1 it could not be, and the answer says which step refused","2":"2 the CLI itself failed, not the command; the message says what"},"options":{"distribution":"where to get Penstock from: a tarball or a registry spec","profile":"use this profile, as PENSTOCK_PROFILE would"}},"web":{"summary":"Serve the editor in a browser, on this machine only. With a folder it opens that project; without one it starts on a welcome page where you choose the project in the browser. A key in the link keeps other pages and other users out, and nothing is sent anywhere.","licence":"Free. What needs Pro in an IDE needs it here too.","options":{"port":"the port to listen on, 8765 by default; the next free one is used when it is busy","host":"the address to listen on, 127.0.0.1 by default; any other makes the folder reachable from the network","noOpen":"print the link and do not open a browser"},"exits":{"0":"0 the server was stopped with Ctrl-C","1":"1 the folder is not there, the port or address is not usable, or no port was free","2":"2 the CLI itself failed, not the command; the message says what"}},"agentServe":{"summary":"Serve the AI chat of one project to the IDEs and editors that show it: its chats, their history and the agent behind them, over HTTP on 127.0.0.1 and nothing else. Every window of the project shares this one server. It prints one line of JSON with the port and a key, wants the key as a Bearer token on every request, and leaves a few seconds after no window is attached to it and no turn is running.","licence":"Free to start. Sending a message needs Pro on a developer machine, and Team in a pipeline.","options":{"project":"the project folder the chats belong to","detach":"start the server in its own session, print its line once it answers, and return; an IDE starts it this way so that a signal to its terminal does not stop the server for every window"},"exits":{"0":"0 stopped by a signal, or left a few seconds after no window was attached to it and no turn was running; a second server for a project that already has one waits until its standard input closes","1":"1 no project was given, the folder is not there, or the server could not listen","2":"2 the CLI itself failed, not the command; the message says what"}},"agent":{"summary":"Start an AI agent's own command line in this terminal with the penstock MCP server already set up for this one run. Nothing is written to the agent's own configuration or to the project. What follows -- goes to the agent as it is. Without a name it lists the agents and which are installed. An agent you added in the settings is started with its own command and arguments.","licence":"Free. The tools the agent gets keep their own licence: see penstock mcp --help.","options":{"project":"the project the penstock tools work on, and the folder the agent starts in; the current project by default"},"exits":{"0":"0 the agent ended normally, or the list was printed","1":"1 the agent is not installed or not known, or could not be started; any other code is the agent's own","2":"2 the CLI itself failed, not the command; the message says what"}}},"usage":{"init":"write a penstock.yaml for this project; --engine camunda-8|camunda-7|operaton|cib-seven|classic says what it runs on\\n(asked in a terminal when the folder is empty); --ci and --hooks add the rest;\\n--example camunda-8|camunda-7 writes a small runnable project into an empty folder","doctor":"check the setup: configuration layers, profiles, rules, templates, engine; --format json prints the configuration","check":"everything wrong with the diagrams, in sections: the drawing, the bpmnlint rules and,\\non Pro, how the processes, decisions and forms run; --only drawing,rules,flow for part of it","migrate":"Camunda 7 to Camunda 8: what does not carry over, the converted files, a report to hand on;\\nconvert needs Pro, and Team in a pipeline: it writes the Camunda 8 files into camunda-8 next to the folder, with a\\npenstock.yaml of their own, and touches nothing else; --target 8.5..8.9, --dry-run, --out <dir> for another folder","code":"check the diagrams against the code: job types, topics, classes and beans with nothing to run them, workers no diagram uses","facts":"the worker contracts of the files on standard input, as JSON, for Python, Go, C# and Scala","templatesGenerate":"write an element template for every job worker the project has, into .camunda/element-templates;\\n--check writes nothing and exits 1 when a template's variables no longer match the worker","scenariosList":"list every distinct way through each process, with the conditions it takes: a test plan; --format md|json","scenariosRun":"run the Camunda test-case files of the diagrams against their engine, step by step, with mocks;\\n--junit writes a Camunda Process Test class that runs them","scenariosGenerate":"write the test-case files from the ways through each process","testCases":"the command behind scenarios run and scenarios generate; --generate writes the test-case files instead of running them","junit":"write a JUnit test for every way through each process; --out <dir>, --package <name>","layout":"lay the diagrams out; --write to save","fmt":"rewrite the XML the way the editor saves it, so diffs stay readable","convert":"write the converted diagrams in the Operaton namespace, from Camunda 7 or CIB seven","diffTwoFiles":"what changed between two versions of a process","diffWorkingTree":"what the working tree changed since a commit, branch or tag, HEAD~1 by default; --images to see it","export":"render the diagrams as pictures; --format svg|png, --out <dir>","share":"one HTML file to send: a read-only viewer with zoom, pan and the documentation of each element, opens offline; -o <file.html>","import":"turn a draw.io, Visio, Signavio or Bizagi diagram into BPMN 2.0, and list what could not be mapped; -o <file.bpmn>, --force","docs":"write documentation for every process, decision file and form; --format html|md, --out <dir>","report":"one markdown comment for a pull request: check, diff and pictures","bot":"answer in a pull or merge request, from the CI run it is in; init --ci sets it up","deploy":"deploy processes, decisions and forms to the engine the configuration names; --dry-run, --wait","show":"list a diagram's elements, flows and properties; --format json for tools","edit":"add, connect, set or remove, the way the editor would; --ops for JSON on one line,\\n--ops-file for JSON in a file or - to read it from standard input, --schema for the contract","license":"which licence this machine has, or - with the e-mail you bought with - the key for PENSTOCK_LICENSE in a pipeline","trust":"let this project's penstock.yaml run shell commands here: needed before a hook of check, layout or deploy runs;\\n--list prints what is trusted, --forget takes one away, --yes does not ask","licenseBuy":"buy Penstock; the licence arrives on this machine by itself","licenseLogin":"sign in with the e-mail you bought Penstock with; no key to copy","licenseActivate":"use a key you already have","licenseLogout":"release this machine's licence so another machine can use it (the same as license deactivate)","mcp":"serve BPMN diagrams to an AI agent over MCP: reading and checking are free;\\nflow analysis, scenarios, code links and editing need Pro, and Team in a pipeline;\\n--config prints the client entry","connectors":"list Camunda's connector templates, or print one; downloaded from GitHub at most once a day","update":"move the project's wrapper to a version, the latest by default","profile":"use this profile, as PENSTOCK_PROFILE would","lang":"answer in this language, en, ru, de, zh, ja, ko, es, pt-BR or fr;\\notherwise LANG, then LC_MESSAGES, then LC_ALL decide, and English is the answer","refresh":"with connectors: check GitHub for a newer release now","format":"how check, scenarios list, show and docs report themselves","only":"which parts of check to run: drawing, rules, flow","baseline":"fail only on findings the baseline does not already accept","updateBaseline":"write the current findings as the baseline","write":"let layout or fmt save its result","force":"let import replace a file that is already there","dryRun":"let deploy say what it would send, and send nothing","wait":"let deploy confirm with the engine that the definitions are live","ci":"which pipeline init should write","out":"where export puts pictures, or where report writes its markdown; -o is the same, and for share the file","base":"what report compares against; defaults to origin/main","imageBase":"where the pictures will be served from, for a comment that shows them","imagesLink":"where to find them instead, when they cannot be shown inline","images":"let diff render before and after, with the changes coloured","imagesDir":"where report puts its pictures","distribution":"for update: where to get Penstock from, a tarball or a registry spec","stage":"for bot: draw now and post later, when the pictures are uploaded between","target":"for migrate: the Camunda 8 version to convert for, 8.8 by default","failOn":"for migrate: what makes the exit code 1, error by default","verbose":"for migrate: list and annotate what only carries over as it is","hooks":"install a pre-commit hook that formats and checks staged diagrams","trustProject":"let this project's penstock.yaml run its hooks for this run, without writing anything down","teamcity":"let scenarios run report as TeamCity service messages, as the IDE reads them","junitXml":"where scenarios run writes a JUnit XML report","timeout":"how long scenarios run waits for one step, 30 by default","optionsHeading":"Options","pathsNote":"Paths default to the working directory, and the configuration is read from there upward, so it\\ndoes not matter which folder you run it in.","helpNote":"Every command and subcommand has its own help, with its options, an example, which tier it is and\\nwhat its exit codes mean: penstock <command> --help, as in penstock check --help or\\npenstock scenarios run --help.","guideNote":"The guide: {url}","web":"serve the editor in a browser, for the folder you give or for one you choose on its welcome page; --port, --host and --no-open say where and whether a browser opens","port":"the port penstock web listens on, 8765 by default; the next free one is used when it is busy","host":"the address penstock web listens on, 127.0.0.1 by default; any other makes the folder reachable from the network","noOpen":"penstock web: print the link and do not open a browser","agentServe":"serve the AI chat of one project to an IDE over HTTP on this machine; --project says which","agentLaunch":"start an agent's own command line here with the penstock MCP server set up for this run; without a name, list the agents"},"renamed":"penstock {old} is now {now}; the old name goes in the next release.","flagRenamed":"{old} is now {now}; the old flag goes in the next release.","scenariosUsage":"Use scenarios list, scenarios run or scenarios generate.","mcpConfigHint":"Paste into your MCP client configuration, or in Claude Code run, once the command line is installed (npm install -g @kern0x1b/penstock-cli): claude mcp add penstock -- penstock mcp. VS Code needs neither, the Penstock extension registers the server. It finds the project from the files the agent asks about.","mcp":{"partOf":"{description} Part of Penstock Pro, and Team in a pipeline: {gives}.","nothing":"nothing","takesNot":"{tool} takes {list}, not {extra}","rootsNotSaid":"The client did not tell which folders are open, so no file can be placed inside them. Open a folder in the client and try again.","truncated":"The result was cut at {shown} of {total} characters. Ask for less: one process, or a smaller diagram.","needs":"{tool} needs {list}","mustBeTrueOrFalse":"{tool}: {name} must be true or false","noDirectory":"there is no directory {target}","notADirectory":"{target} is not a directory","projectMustBeAbsolute":"\\"project\\" must be an absolute path to a project folder","projectNotGiven":"\\"project\\" must be provided as an absolute path to a project folder","fileMustBeAbsolute":"\\"file\\" must be an absolute path to a diagram","noFile":"there is no file {file}","notABpmnDiagram":"{file} is not a BPMN diagram","outsideRoots":"{target} is outside the workspace roots","notAPenstockProject":"{target} is not a Penstock project","instructions":"Tools for BPMN diagrams across projects. Pass absolute paths to diagrams or project folders. Read a diagram with show_diagram before changing it with edit_diagram.","unknownTool":"unknown tool: {name}","methodNotFound":"method not found: {method}","parseError":"parse error","notARequest":"that is not a JSON-RPC request: one request object per line, no arrays","tool":{"listDiagrams":"List the BPMN diagrams in a project, returning absolute paths.","showDiagram":"Describe a diagram: every element and flow with its id, type, name, connections and engine properties. Read this before editing; operations refer to these ids.","checkDiagram":"Report what is wrong with a diagram, as the editor's check does: the drawing, the project's bpmnlint rules and, with a licence, how the process runs.","analyzeFlow":"Find what is wrong with how a diagram runs: deadlocks, branches that run twice, elements that can never run and loops with no way out, each with the path of element ids that leads there. Run it after edit_diagram.","listScenarios":"List every distinct way through a diagram: the decisions each takes, their conditions, the steps it runs and where it ends. Use it to write tests or to explain the process.","checkCodeLinks":"Check every diagram in the project against the code: job types, external task topics, classes and beans with nothing to run them, called processes no diagram defines, and workers no diagram uses, with file and line.","editDiagram":"Change a diagram through the editor's own modelling: new elements are placed and connected the way the editor does it, and ids follow the project's conventions. The operations apply together or not at all. An edit that would break the drawing (overlapping shapes, a flow through a shape, a detached flow) is refused; crossings and the like are reported but allowed. Use dryRun to see the result without writing."},"param":{"file":"Absolute path to the BPMN diagram.","project":"Absolute path to the project directory. When omitted, uses the workspace roots provided by the client.","dryRun":"Report what would change without writing the file."}},"checkUnknownSection":"check does not have a {section} section. It has {sections}.","badFailOn":"--fail-on should be error or warning, not {value}.","badTimeout":"The timeout should be a number of seconds.","badFormat":"--format should be {values}, not {value}.","preHookStopped":"The {stage} stage was stopped by its pre hook.","postHookStopped":"The {stage} stage was stopped by its post hook.","unknownCommand":"Unknown command: {command}","stopping":"Stopping: the running test case is cancelled and its build removed. Press Ctrl-C again to leave now.","show":{"needsDiagram":"show needs a diagram: penstock show process.bpmn"},"facts":{"badInput":"facts reads a JSON list of files, each with its path and its text, on standard input"},"web":{"serving":"Serving {folder}","pressCtrlC":"Press Ctrl+C to stop.","stopping":"Stopping.","notAFolder":"{folder} is not a folder.","badPort":"The port should be a number from 0 to 65535, not \\"{value}\\".","badHost":"The address should be an IP address or a host name, not \\"{value}\\".","noFreePort":"No port from {from} to {to} is free.","cannotListen":"Penstock is unable to listen: {reason}","portTaken":"Port {port} is in use, so Penstock uses {used}.","exposed":"Warning: --host {host} makes this machine reachable from other machines. Anyone with the link below can read and change the diagrams of the open project, and see the folder names on this machine.","noPageWarning":"The editor page is not part of this build, so only the API answers. Build the webview, or set PENSTOCK_WEB_ROOT to a built page.","noPage":"The editor page is not part of this installation.","browserFailed":"Penstock is unable to open a browser. Open the link above yourself.","reason":{"internal":"The server is unable to do that.","noSuchFile":"There is no such file.","noAccess":"The server is not allowed to do that.","isAFolder":"That is a folder, not a file.","diskFull":"The disk is full.","exists":"That already exists.","badPath":"{path} should be a path inside the folder.","outside":"{path} is outside the folder Penstock is serving.","notEditable":"Penstock writes only diagrams, decisions, forms, test cases, penstock.yaml and element templates, and {path} is none of them.","tooLarge":"The request should be under {limit} MB.","fileTooLarge":"The file should be under {limit} MB.","notAnObject":"The request should be a JSON object.","missingField":"The request should have a {field}.","wrongField":"The request has an incorrect {field}.","notJson":"The request body should be JSON, sent as application/json.","wrongHost":"This is not an address Penstock answers on.","wrongOrigin":"This request comes from another page, and Penstock answers only its own page.","noToken":"Open the link that penstock web printed: it carries the key this server needs.","methodNotAllowed":"That operation does not take this method.","noSuchOperation":"There is no such operation.","tooLong":"The address of the request is too long.","tookTooLong":"The request took too long.","notTheProject":"{path} is not the folder Penstock is serving.","badFileList":"The request should list between 1 and 500 files.","listedTwice":"{path} is listed twice.","alreadyExists":"{path} already exists.","badTraceName":"The run and the trace name should be lower case letters, digits and hyphens.","unknownFeature":"{feature} is not a feature Penstock knows.","tooMany":"The request has too many entries.","badProfile":"A profile name should be letters, digits, spaces, dots, hyphens or underscores, up to 80 characters.","notAnAddress":"The {field} should be an http or https address.","badEnginePath":"The engine is asked for paths on its own API only, with GET, POST, PUT, PATCH or DELETE.","tooManyHooks":"Too many deployment hooks are running.","noSuchRun":"There is no such hook run.","notWebAddress":"{url} is not a web address.","connectorRefused":"The connector catalogue refused that: {detail}","engineAnswerTooLarge":"The engine's answer should be under {limit} MB.","projectGone":"The folder of this project is no longer there.","noProject":"No project is open. Open one first.","projectChanged":"The server is serving another project now. Reload the page to follow it.","switchBusy":"A deployment is running. Wait for it to finish before opening another project.","badFolder":"{folder} should be the path of a folder.","notAbsolute":"{folder} should be an absolute path, such as /home/me/project or C:\\\\Projects\\\\app.","noSuchFolder":"{folder} does not exist.","notAFolder":"{folder} is a file, not a folder.","folderNotReadable":"Penstock is not allowed to read {folder}.","nameEmpty":"The name should not be empty.","nameCharacters":"The name should not contain / \\\\ : * ? \\" < > | or control characters.","nameDots":"The name should not start or end with a space, or end with a dot.","nameReserved":"{name} is a name that Windows reserves.","nameLong":"The name should be at most 255 bytes.","notTheRoot":"The project folder itself cannot be changed here.","isALink":"{path} is a symbolic link, and Penstock does not change links.","changedOnDisk":"{path} changed on disk since the page last read it.","kindChange":"{path} should keep the type of file it has.","moveIntoItself":"A folder cannot be moved into itself.","tooDeep":"The folder is nested too deeply.","folderHoldsOthers":"{path} holds files that Penstock does not edit, so it is not deleted.","archiveTooLarge":"The project has more than {files} files or more than {size} GB, which is too much for one download.","busy":"The file is in use by another program.","readOnly":"The disk is read-only.","otherDisk":"Penstock does not move files between disks.","noLanguageServer":"There is no language server named {server}.","languageServerMissing":"The language server command {command} is not installed on this machine.","languageServerUnsafe":"The language server {command} is a Windows command file that cannot be started with these arguments.","tooManyLanguageServers":"No more than {limit} language servers should run at once.","staleToolWindow":"The tool window changed since it was read. Reload the tree and try again.","noSuchAction":"That action is not in the tool window. Reload the tree and try again."},"unsupported":{"script":"Script files open in an IDE editor, which the browser editor does not have.","diff":"A version control diff is shown by an IDE.","clipboard":"The clipboard belongs to the browser.","chooser":"Files are chosen in the page, not in a system dialog.","navigation":"Opening code needs an IDE. Use Penstock in a JetBrains IDE or VS Code to jump to it.","view":"Tool windows belong to an IDE.","reveal":"The page opens diagrams itself.","tests":"Running tests from code needs an IDE. Run penstock scenarios run on the command line.","rename":"Renaming linked names across code needs an IDE.","confirm":"Confirmations are asked in the page itself.","migration":"The conversion preview is not in the browser editor. Run penstock migrate on the command line.","document":"The browser editor saves through the file operations and keeps its own undo history."},"page":{"expired":{"title":"This link does not open Penstock","text":"Its key is missing or no longer valid. Penstock may have been restarted since the link was made.","hint":"Use the link that penstock web printed in the terminal, or run penstock web again."},"missing":{"title":"There is no such page","text":"Penstock has no page at this address.","hint":"Go back to the editor with the link that penstock web printed."},"open":"Open the editor"},"servingWelcome":"No project is open yet. Choose one in the browser.","toolWindow":{"unsupported":{"outside":"That file is outside the project Penstock is serving.","tests":"Running tests from code needs an IDE. Run the scenarios in the diagram's Scenarios tab, or run penstock scenarios run on the command line.","migration":"Converting to Camunda 8 is not in the browser editor yet. Run penstock migrate analyze, convert or report on the command line.","templates":"Writing workers and element templates from the tool window is not in the browser editor yet. Run penstock templates generate on the command line."},"script":{"missing":"The diagram no longer has this script."}}},"webHost":{"reason":{"notLicensed":"Renaming linked names needs a Pro licence.","changedSince":"{file} changed after the rename was planned. Nothing was written.","licence":"The key was not accepted: {detail}","licenceService":"The licence service could not be reached: {detail}","keyShape":"The licence key looks incomplete. Paste it as it came in the purchase email.","nothingToRelease":"There is no activated licence on this machine to give back."}},"agentServe":{"needsProject":"Say which project the chats are for: penstock agent serve --project <dir>."},"agentLaunch":{"heading":"Agents that penstock agent <name> can start:","how":"Start one with: penstock agent <name> [-- <arguments for the agent>]","installed":"installed","missing":"not installed - {install}","notFound":"its command is not on this machine","unknown":"There is no agent called {agent}. Choose one of: {list}.","notInstalled":"{name} is not installed on this machine. Install it with: {install}","commandMissing":"The command of {name}, {command}, is not on this machine.","noMcp":"Penstock could not tell how to start its own MCP server from here, so the agent was not started.","customNote":"{name} is an agent you added, so it gets the penstock MCP server as JSON in the environment variable PENSTOCK_MCP_CONFIG.","cannotPrepare":"The agent was not started because its settings for this run could not be written: {reason}","cannotStart":"{name} could not be started: {reason}","unsafeArguments":"{name} is a Windows command file, and its arguments cannot be passed to a command file safely, so it was not started.","extraWords":"Put what is meant for the agent after --, for example: penstock agent {agent} -- <arguments>."},"start":{"npmMissing":"Penstock needs Node.js with npm to run its command line.","unpublished":"npm has no Penstock command line for this version, so the command did not start.","installFailed":"The Penstock command line could not be installed. Check your network or npm registry and try again.","notStarted":"The Penstock command line could not be started.","details":"Details","progress":"Starting the Penstock command line"}},"actions":{"undo":{"title":"Undo","tooltip":"Undo"},"redo":{"title":"Redo","tooltip":"Redo"},"auto-layout":{"title":"Auto layout","tooltip":"Lay the diagram out again"},"diagram-check":{"title":"Check","tooltip":"Check the diagram for problems"},"token-simulation":{"title":"Simulate","tooltip":"Run tokens through the process"},"coverage":{"title":"Coverage","tooltip":"Show what the process tests reach"},"live":{"title":"Monitor","tooltip":"What the engine is doing with this diagram now: instances waiting at each step and incidents"},"runs":{"title":"Scenarios","tooltip":"Run this diagram's scenarios on a local engine and see every step"},"migration":{"title":"Migrate to Camunda 8","tooltip":"What does not carry over to Camunda 8, and converting it"},"convert-operaton":{"title":"Convert to Operaton","tooltip":"Move a Camunda 7 or CIB seven diagram to the operaton: namespace"},"deploy":{"title":"Deploy","tooltipTo":"Deploy to {url}","tooltipEngine":"Deploy to the engine","noEngine":"Add an engine to penstock.yaml to deploy"},"open-tasklist":{"title":"Open in Tasklist","tooltip":"Open Tasklist in your browser"},"toggle-sidebar":{"title":"Sidebar","tooltip":"Sidebar"},"focus-canvas":{"title":"Focus canvas","tooltip":"Hide the sidebars and show only the canvas; press again to show them"},"fit-diagram":{"title":"Fit diagram","tooltip":"Show the whole diagram in the canvas"},"zoom-in":{"title":"Zoom in"},"zoom-out":{"title":"Zoom out"},"transaction-boundaries":{"title":"Transaction boundaries","tooltip":"Show where the engine commits a transaction: wait states and asynchronous continuations"},"minimap":{"title":"Minimap"},"trace-paths":{"title":"Trace paths","tooltipOn":"Show every path that runs through the selected element, and dim the rest of the diagram","tooltipOff":"Select a task, a gateway or an event to trace the paths that run through it"},"sketchy":{"title":"Sketchy drawing"},"show-comment-badges":{"title":"Show comment badges","tooltip":"Draw the number of open comments on each element that has some"},"export":{"title":"Export…","tooltip":"Save the diagram as SVG, PNG or PDF, or copy it as a picture"},"marketplace":{"title":"Templates…"},"import":{"title":"Import diagram…","tooltip":"Turn a draw.io, Visio, Signavio or Bizagi diagram into BPMN"},"share":{"title":"Share as HTML…","tooltip":"One file that opens offline in any browser"},"copy":{"title":"Copy"},"paste":{"title":"Paste"},"tour":{"title":"Show the tour again"},"keyboard-shortcuts":{"title":"Keyboard shortcuts","tooltip":"Every shortcut in this editor"},"open-documentation":{"title":"Documentation","tooltip":"Open the guide in your browser"},"undo-long":{"title":"Undo","tooltip":"Undo Last Operation"},"redo-long":{"title":"Redo","tooltip":"Redo Last Operation"},"dmn-check":{"title":"Check","tooltip":"Check decisions"},"export-table-workbook":{"title":"Export decision table as a workbook…","tooltip":"Save the inputs, the outputs and every rule as an Excel workbook"},"export-table-csv":{"title":"Export decision table as CSV…","tooltip":"Save the inputs, the outputs and every rule as comma separated values"},"import-table":{"title":"Import decision table…","tooltip":"Replace the rules of the selected table with those in a workbook or CSV"},"import-table-new":{"title":"Add rules from spreadsheet…","tooltip":"Fill the open decision table with the rules in a workbook or CSV"},"dmn-trace-paths":{"title":"Trace paths","tooltipOn":"Show every decision and input the selected decision needs, and everything that depends on it","tooltipOff":"Select a decision in the requirements diagram to trace what it needs"},"preview":{"title":"Preview","tooltip":"Try the form with sample data"},"form-check":{"title":"Check","tooltipUnreadable":"This form could not be read, so there is nothing to check","tooltip":"Check form"},"section":{"checkRun":"Check & run","layoutConvert":"Layout & convert","deployShare":"Deploy & share","view":"View","file":"File","edit":"Edit","help":"Help","recent":"Recent"},"editor-theme":{"title":"Editor theme","tooltip":"Follow the IDE, or use Light, Dark or Dracula"},"start-instance":{"title":"Start instance…","tooltip":"Start a process instance on the connected engine"},"debug-process":{"title":"Debug process","tooltip":"Run a copy of this process on a local engine and stop at breakpoints to read and change its variables"},"toggle-breakpoint":{"title":"Toggle breakpoint","tooltip":"Stop the debugger before the selected step"},"compare-with-head":{"title":"Compare with last commit","tooltip":"Show what changed since the last commit"},"show-licence":{"title":"Licence","tooltip":"See the plan, enter a licence key or buy one"},"timeline":{"title":"Timeline","tooltip":"Scrub through the steps of a run: an engine instance chosen in Monitor, or a scenario run"},"show-code-badges":{"title":"Show code badges","tooltip":"Draw a mark on each task that says whether its code was found in the project"},"chat":{"title":"AI chat","tooltip":"AI chat"}},"autoLayout":{"autoLayout":"Auto layout","laidOut":{"one":"Laid out {count} element","other":"Laid out {count} elements"}},"canvas":{"debugTests":"Debug Tests","findUsagesInCode":"Find Usages in Code","goTo":"Go to {label}","goToImplementation":"Go to Implementation","runTests":"Run Tests","unableToReadTheFile":"Unable to read the file again"},"code":{"findUsages":"Find usages","followingAStepToThe":"Following a step to the code that runs it, its tests and its usages is part of Penstock Pro. A Camunda 7 class or bean is followed on Free.","goToCode":"Go to code","noCodeFoundForThis":"No code found for this step.","nothingInTheProjectRuns":"Nothing in the project runs, tests or uses it. A service task is linked by its job type, class or bean.","selectATaskToSee":"Select a task to see its code.","theProjectHasNotBeen":"The project has not been read yet.","theWorkersClassesBeansAnd":"The workers, classes, beans and tests behind a step show here once you select it on the diagram.","section":{"implementations":"Runs in","tests":"Tests","usages":"Used in"},"warn":{"missingImplementation":"Nothing in the code runs this step.","neverThrown":"Nothing in the code throws the error this step catches.","unsetTypo":"{name} is read, but only {closest} is set.","unset":"{name} is read, and nothing sets it.","unfetchedClosest":"The worker fetches {closest}, not {name}, so {name} is null.","unfetched":"The worker does not fetch {name}, so it is null.","unread":"The worker sets {name}, and no step after this one reads it.","lateRead":"The worker reads {name}, and no step before this one sets it.","nearCase":"This step's {name} differs in case from the {near} in the code.","near":"The code has {near}, one letter off the {name} this step uses.","implicit":"The job type of this step is the method name {method}, which a rename changes.","mappingOrder":"The mapping reads {path} as null: {target} is set by an earlier line.","lostUpdate":"Every parallel instance writes {name} over the others: the step has no output element."},"kind":{"JOB_TYPE":"the job type","TOPIC":"the topic","CLASS":"the java class","BEAN":"the bean","MESSAGE":"the message name","ERROR":"the error code"},"fact":{"places":{"one":"{count} place","other":"{count} places"},"here":{"one":"{count} here","other":"{count} here"},"withIncident":{"one":"{count} with an incident","other":"{count} with an incident"},"reachedBy":"reached by {tests} of {total} tests","notFetched":"not fetched by the worker","near":"the code has '{near}'","neverSet":"never set in the project","reached":"reached","thrownBy":"Thrown by","runsIn":"Runs in","nothingInCode":"nothing in the code","tests":"Tests","inCode":"In code","sets":"Sets","reads":"Reads","notFetchedClosest":"not fetched, '{closest}' is","unread":"written, read by no step after","lateRead":"read, set by no step before it","nearCase":"only '{near}' differs in case in the code","implicit":"taken from the method {method}","mappingOrder":"reads null, {target} is set by an earlier line","lostUpdate":"written by every instance, no output element","neverSetClosest":"never set, '{closest}' is","noTestReaches":"no test reaches it","coverage":"Coverage","theEngine":"the engine","on":"On {where}","testsReach":{"one":"{count} test reaches it","other":"{count} tests reach it"}},"finding":{"unfetchedWhere":"the code reads it, so it is null at runtime","missingImplementation":"Nothing in the code runs {name}","missingImplementationWhere":"no worker, delegate or bean implements it","neverThrown":"Nothing in the code throws the error {name} catches","neverThrownWhere":"no BpmnError or error command uses its code","typo":"{name} is read, but only {closest} is set","unfetched":"The worker does not fetch {name}","unfetchedClosestWhere":"it fetches {closest} instead, so {name} is null at runtime","unread":"Nothing reads {name} after this step","unreadWhere":"the worker sets it, and no later step reads it","lateRead":"Nothing sets {name} before this step reads it","lateReadWhere":"the worker reads it, and no step before it sets it","nearCase":"{name} differs in case from {near}, which the code has","near":"The code has {near}, one letter off the {name} this step uses","nearWhere":"{kind}, a name that does not match leaves the step with no implementation","implicit":"The job type of this step is the method name {method}","implicitWhere":"@JobWorker without a type takes the method name, so renaming it breaks the diagram","mappingOrder":"{path} is read as null, {target} is set by an earlier mapping line","mappingOrderWhere":"the engine evaluates every source before it writes any target","lostUpdate":"Every instance writes {name} over the others","lostUpdateWhere":"a parallel multi-instance step with no output element keeps only the last result","templateDrift":"The element template {name} no longer says what the worker reads: {drift}","variableField":"The variable {variable} has no field {field}. Its type {type} has {fields}","variableFieldNone":"The variable {variable} has no field {field}. Its type {type} has no field the engine reads","variableFieldWhere":"Read here, set by {from}","variableFieldWhereUnknown":"Read here","variableUnknown":"The variable {name} is read, but nothing in the diagram or the code sets it","variableUnknownWhere":"Nothing upstream sets it, and it is not a declared input"},"runTests":"Run tests","debugTests":"Debug tests","saidBy":{"elementsInFiles":"{count} elements in {files} diagrams","tasksInFiles":"{count} tasks in {files} diagrams","elementsInOneFile":"{count} elements in {file}","one":"{label} in {file}","tasksInOneFile":"{count} tasks in {file}"},"wording":{"caughtBy":"Caught by","decidedBy":"Decided by","namedBy":"Named by","readBy":"Read by","setBy":"Set by","startedBy":"Started by","usedBy":"Used by"},"showAllCount":{"one":"Show all {count}","other":"Show all {count}"},"lens":{"covers":"covers {percent}% of {label}","starts":"starts {label}"}},"comments":{"aCommentBelongsToAn":"A comment belongs to an element of the process, not to what the canvas draws around it.","addAComment":"Add a comment","addComment":"Add comment","everyElementThatStillHas":"Every element that still has a comment is in the list behind the back arrow.","everyOpenCommentInThe":"Every open comment in the diagram shows here.","hideResolved":"Hide resolved","noCommentsYet":"No comments yet.","noOpenComments":"No open comments.","sayWhatThisElementIs":"Say what this element is for, or what is still missing","selectAnElementAndAdd":"Select an element and add a comment to it.","showOnTheDiagram":"Show {label} on the diagram","showResolved":"Show resolved ({resolved})","thisElementCannotTakeComments":"This element cannot take comments.","thisElementIsNoLonger":"This element is no longer in the diagram.","waitingForADiagram":"Waiting for a diagram.","openCount":{"one":"{count} open","other":"{count} open"},"openCommentCount":{"one":"{count} open comment","other":"{count} open comments"},"resolvedCount":{"one":"{count} resolved","other":"{count} resolved"},"openAndResolved":"{open} open, {resolved} resolved","openTheComments":"{title} - open the comments","commentsOf":"{comments} of {element}","anonymous":"Anonymous","resolvedState":"Resolved","comment":"Comment","edit":"Edit","save":"Save","cancel":"Cancel","reopen":"Reopen","resolve":"Resolve","delete":"Delete","signedBy":"Signed {name}","writeTheFirstOneBelow":"Write one below to start a thread on this element."},"coverage":{"closeCoverage":"Close coverage","showTheWayThisTest":"Show the way this test takes","testCoverage":"Test coverage","coverage":"Coverage","tests":"Tests","allTests":"All tests","notReached":"Not reached","coveredOf":"{covered} of {total}","noTestReportCoversThis":"No test report covers this diagram yet. Run its process tests with Camunda Process Test, or on Camunda 7 with the process test coverage extension, and what they reach shows here.","testCount":{"one":"{count} test","other":"{count} tests"}},"debug":{"pausedHere":"Paused here","instanceOf":"instance {id}"},"deploy":{"clientId":"Client id","clientSecret":"Client secret","confirm":"Deploy {what} to {where}?","deployHook":"Deploy hook","deployToCancelled":"Deploy to {target} cancelled","deployingTo":"Deploying {fileName} to {target}…","editConnection":"Edit connection…","editConnection2":"Edit connection","engineAddress":"Engine address","engineConnection":"Engine connection","enterTheClientId":"Enter the client id","enterTheClientSecret":"Enter the client secret","enterThePasswordToSign":"Enter the password to sign in with","enterTheUserNameTo":"Enter the user name to sign in with","files":{"one":"{count} file","other":"{count} files"},"keptInPenstockLocalYaml":"Kept in penstock.local.yaml, which stays on this machine.","keptInTheIdeS":"Kept in the IDE's password safe.","notNeeded":"Not needed","notReady":"{name} was not deployed: {target} has no address or password yet, set it under Connection in the editor","notSetYet":"Not set yet","nothingInToDeploy":"Nothing in {fileName} to deploy","nothingToDeploy":"Nothing to deploy","profile":"Profile","profileInForce":"the profile in force","readingTheDiagram":"Reading the diagram…","runningTheDeployHook":"Running the deploy hook…","saveAndDeploy":"Save and deploy","savedInTheIdeS":"Saved in the IDE's password safe. Type to replace it.","setUpConnection":"Set up connection…","signIn":"Sign in","signInHint":"{message}. Set the sign-in under Connection in the editor","succeededOn":"{message} on {target}","title":"Deploy","tokenAddress":"Token address","unableToDeploy":"Unable to deploy: {reason}","unableToSaveTheConnection":"Unable to save the connection: {failure}","userAndPassword":"User and password","whatWillBeSent":"What will be sent","deploy":"Deploy","problemLine":"line {line}","andNMore":"and {number} more","definitionIsLive":"live {key} v{version}","notConfirmedInTime":"not confirmed within {seconds}s: {key}","preDeployHookFailed":"Unable to run the preDeploy hook, nothing was sent","refusedNothingDeployed":{"one":"The engine refused {count} file and deployed nothing:","other":"The engine refused {count} files and deployed nothing:"},"answeredStatus":"The engine answered {status}: {reason}","deployedFiles":"Deployed {files}","deployedAs":"Deployed {files} as {definitions}","definitionsNotShownInTime":"The engine took the deployment but did not show its definitions in time","oauthClient":"OAuth client","user":"User","password":"Password","audience":"Audience","nameTenantAndTheRest":"Name, tenant and the rest are set in penstock.yaml.","addressScheme":"The engine address should start with http:// or https://","tokenAddressScheme":"The token address should start with http:// or https://","hookCancelled":"hook {stage}: cancelled"},"diagramCheck":{"convert":"Convert…","fix":"Fix","noProblemsFound":"No problems found.","nothingToReportAcrossElements":"Nothing to report across {checked} elements and connections. The check runs again as you edit.","showTheDiagramConvertedFor":"Show the diagram converted for Camunda {target}, and choose what to write","theCheckStartsOnIts":"The check starts on its own as soon as the diagram is read, and runs again as you edit.","howItRuns":"How it runs","drawing":"Drawing","engine":"Engine","code":"Code","rules":"Rules","why":"Why","error":"Error","warning":"Warning","templates":"Element templates"},"dmn":{"addRules":"Add rules","addRulesFrom":"Add rules from {source}","cell":"Cell","change":"Change","checkTheDecisionsToSee":"Check the decisions to see problems here.","hitPolicy":"Hit policy {hitPolicy}","import":"Import {source}","intoTheOpenDecisionTable":"Into the open decision table: ","intoTheSelectedTable":"Into the selected table: ","openADecisionTableEnter":"Open a decision table, enter the values its inputs ask for and see which rules match and what the decision returns.","openTheRequirementsDiagram":"Open the requirements diagram","openTheRequirementsDiagramTo":"Open the requirements diagram to change the decision's name, its inputs and how its rules reach it.","requirements":"Requirements","rule":"Rule","selectADecisionTableTo":"Select a decision table to try it.","thePropertiesOfADecision":"The properties of a decision are edited in the requirements diagram.","thisShouldBeADate":"This should be a date, as YYYY-MM-DD.","thisShouldBeANumber":"This should be a number.","thisShouldBeTrueOr":"This should be true or false.","view":{"boxedExpression":"Boxed expression","decisionTable":"Decision table","drd":"Requirements diagram","literalExpression":"Literal expression"},"viewTooltip":"{kind}: {label}","count":{"rule":{"one":"{count} rule","other":"{count} rules"}},"readErrorAtLine":"{reason} (line {line})","namedLikeAWorkbook":"{file} is named like a workbook but is not one.","noHeaderRow":"The file has no header row naming the inputs and outputs.","theFileIsEmpty":"The file is empty.","workbookNotOpened":"The workbook could not be opened. It may be damaged or password protected.","workbookHasNoSheet":"The workbook has no sheet to read.","headerNeeds":"The header names {header}; the table needs {wanted}","rowCannotBeRead":"Row {line} cannot be read: \\"{cell}\\" is not a comparison, a range or a value","pasteColumnsLeftOut":{"one":"{count} pasted column has no place in the table and was left out.","other":"{count} pasted columns have no place in the table and were left out."},"duplicateId":"The id {id} is used by more than one element, so Penstock cannot tell them apart","nothingChanges":"nothing changes","aNewTableWith":"a new table with {rules}","ruleChanges":{"one":"{count} rule changes","other":"{count} rules change"},"rulesAreAdded":{"one":"{count} rule is added","other":"{count} rules are added"},"rulesAreRemoved":{"one":"{count} rule is removed","other":"{count} rules are removed"},"notADocument":"The file is not a DMN document","notValid":"The file is not valid DMN: {reason}","saveAsCsv":"Save the decision table as CSV","saveAsWorkbook":"Save the decision table as a workbook","csvIsOneCellPerColumn":"Comma separated values, one cell per column","workbookHasInputsAndOutputsFirst":"An Excel workbook with the inputs and outputs in the first row","createFromSpreadsheet":"Create a decision table from a spreadsheet","importIntoTheTable":"Import a spreadsheet into the decision table","spreadsheetNamesTheInputs":"An Excel workbook or a CSV whose first row names the inputs and the outputs","notReadAsASpreadsheet":"The file could not be read as a spreadsheet.","importAction":"Import","theTableAlreadySays":"The table already says this, so there is nothing to import. Cancel, or change the file and try again.","oneUndoTakesTheImport":"One undo takes the whole import back.","sheetName":"Decision table"},"dmnMode":{"decisionCheck":"Decision check","gotIt":"Got it","noDecisionTableIsOpen":"No decision table is open, so there is nowhere to put the rules. Open a decision table from the Requirements diagram and import the file again.","noDecisionTableIsOpen2":"No decision table is open, so there was nothing to write the rules into. Open a decision table from the Requirements diagram and import the file again.","noRulesOverlapAndEvery":"No rules overlap, and every input has a rule.","theDecisionTableWasSaved":"The decision table was saved to {saved}.","theRulesWereAddedTo":"The rules were added to the open decision table. Undo takes them back.","theRulesWereReplacedUndo":"The rules were replaced. Undo takes them back."},"editor":{"checkTitle":"Diagram check","configFailed":"Unable to load the project configuration.","convert":"Convert","convertText":"This will convert all camunda: properties and attributes to operaton: ones. Would you like to proceed?","convertTitle":"Convert namespace","copiedImage":"Copied as an image","copyImageFailed":"The image could not be copied","deleteFailed":"Unable to delete the elements","exportFailed":"Unable to export: {message}","exportOpenFailed":"Unable to open the export dialog","exported":"Diagram exported as {format}","importFailed":"The diagram could not be imported: {message}","layoutFailed":"Unable to lay out the diagram","noLayout":{"laidOut":"This file had no layout. Penstock laid it out; the file is unchanged until you save.","placed":"This file had no layout, so Penstock placed the elements in a simple grid. Auto layout (Pro) arranges it properly."},"layoutBadShape":"Unable to lay out the diagram: {element} has a shape that cannot be drawn ({problem}). Fix its bounds in the file and try again.","layoutBadWaypoint":"a waypoint is at ({x}, {y})","layoutTooSlow":"Unable to lay out the diagram within {seconds} seconds. It is too large or too tangled for auto layout. The diagram was not changed.","layoutAnElement":"an element","loadFailed":"Unable to load the diagram: {message}","loading":"Loading...","namespaceMessage":"This is an Operaton project, but the diagram uses the Camunda 7 namespace.","namespaceTitle":"Wrong engine namespace","noMatch":"Nothing in this project matches {reference}","noTest":"No test in this project uses {name}","noUsage":"No code in this project uses {name}","noWorker":"No code in this project implements {name}","reloadFailed":"The file changed and could not be read as BPMN","saveFailed":"Unable to save the changes","stopSimulation":"Stop Token Simulation before editing the diagram","traceFailed":"The trace of that run could not be read","unknownError":"Unknown error","pasteEmpty":"The clipboard is empty. Copy a diagram element first.","pasteNotDiagram":"The clipboard holds text, not diagram elements, so there is nothing to paste.","pasteOtherDiagram":"The clipboard holds elements of another kind of diagram, so there is nothing to paste here.","pasteUnreadable":"Penstock cannot read the clipboard in this browser. Paste on the diagram with the keyboard instead."},"editorShell":{"close":"Close {title}","collapsePalette":"Collapse palette","openPalette":"Open palette","showAllMore":"Show all ({more} more)","useCheckInTheToolbar":"Use Check in the toolbar to look for problems."},"engineQuestion":{"itDecidesThePaletteAnd":"It decides the palette and the properties, and goes into penstock.yaml. The diagram opens as soon as you have chosen.","theEngineCouldNotBe":"The engine could not be saved: {error}","whichEngineRunsThisDiagram":"Which engine runs this diagram?"},"files":{"connectorsFailed":"The connectors directory could not be used (HTTP {status})","exportAs":"Export as {format}","saveTitle":"Save {extension} file"},"form":{"checkTheFormToSee":"Check the form to see problems here.","everyFieldWritesItsOwn":"Every field writes its own variable, and every option means something different.","nothingToPreviewYet":"Nothing to preview yet.","thePreviewFillsInAs":"The preview fills in as soon as the form is read.","theReasonIsOnThe":"The reason is on the canvas. Fix the file and Penstock reads it again.","thisFormCouldNotBe":"This form could not be read, so there is nothing to check."},"formMode":{"formCheck":"Form check"},"formPreview":{"inputDataOfTheForm":"Input data of the form as JSON","sample":"Sample {key}","sampleData":"Sample data","theInputHasToBe":"The input has to be a JSON object.","theInputIsNotValid":"The input is not valid JSON: {failure}","inputData":"Input data","outputData":"Output data","fieldsNeedAttention":{"one":"{count} field needs attention","other":"{count} fields need attention"}},"importDiagram":{"aDrawIoVisioSignavio":"A draw.io, Visio, Signavio or Bizagi diagram","diagramImported":"Diagram imported","importDiagram":"Import diagram","saveTheImportedDiagram":"Save the imported diagram","theBpmn20File":"The BPMN 2.0 file to create","thisFileCouldNotBe":"This file could not be imported","why":{"assumed":"These were read by what they look like. Check that they are what you meant.","lost":"BPMN 2.0 has no place for these, so they are not in the new diagram.","unmapped":"These have no BPMN meaning and are not in the new diagram."},"savedAs":"Saved as {path}","everythingInTheFileWas":"Everything in the file was mapped.","connectorsKeepTheRoute":"Connectors keep the route they were drawn with. Auto layout can tidy the result."},"lint":{"nothingToShowOnThe":"Nothing to show on the diagram","showWhereTheyAreOn":"Show where they are on the diagram"},"live":{"userTasks":"User tasks","noUserTasksWaiting":"No user tasks are waiting on this instance.","unableToLoadTasks":"Unable to load user tasks from the engine.","unableToCompleteTask":"Unable to complete user task.","unableToConnect":"Unable to connect to the engine.","completing":"Completing…","taskCompleted":"Task completed.","askTheEngineAgain":"Ask the engine again","askingTheEngine":"Asking the engine…","history":"History","noFinishedInstances":"No finished instances found.","noFinishedInstancesHint":"Instances that completed or were cancelled will appear here.","askingHistory":"Asking the engine for finished instances…","compareWithWhatTheEngine":"Compare with what the engine has seen","isNotDeployed":"{processId} is not deployed.","itIsNotOnYet":"It is not on {where} yet. Deploy the diagram to see its instances.","noEngineConnected":"No engine connected.","noInstanceIsRunning":"No instance is running.","nothingIsWaitingOrHas":"Nothing is waiting or has an incident on {where}.","openTheCodeThatRuns":"Open the code that runs this task","openInTasklist":"Open in Tasklist","readTheVariables":"Read the variables","readingWhichInstancesOfThis":"Reading which instances of this diagram are running and what they are waiting on.","refresh":"Refresh","setUpADeploymentProfile":"Set up a deployment profile with an address, and a password if it needs one, to see the instances waiting on each task and their incidents.","showOnTheDiagram":"Show {selected} on the diagram","theEngineCouldNotBe":"The engine could not be read.","use":"Use","useThisInstanceForAn":"Use this instance for an expression","waitingHere":"{waiting} waiting here","instance":"Instance","tryOnInstance":"Try on instance","variables":"Variables","neverSetInProduction":"Never set in production","unusedInTheModel":"Unused in the model","incidents":"Incidents","waiting":"Waiting","credentialsMayNotAllow":"The engine refused the question ({status}): the profile's credentials may not allow reading process instances","answeredStatus":"The engine answered {status}","answeredNotJson":"The engine answered with something that is not JSON","localEngine":"Local {engine}","theEngine":"the engine","processVersion":"process version {version}","namedProcessVersion":"{process} version {version}","incidentsOn":{"one":"{count} incidents · {what}","other":"{count} incidents · {what}"},"incidentsBadge":{"one":"{count} with an incident","other":"{count} with an incident"},"askingWhichInstancesRun":"Asking {where} which instances of {process} are running.","noInstanceRunning":"No instance of {process} is running on {where}.","secretNotResolved":"{value} - a secret, so the engine did not resolve it","selectATaskToTryOn":"Select a task, a gateway or a flow to try its conditions and mappings on {instance}.","trying":"Trying","try":"Try","reading":"Reading","select":"Select {name}","sevenCannotEvaluateHere":"Camunda 7 has no way to evaluate an expression. It needs Camunda 8.9 or newer, so the variables of the instance are what you get.","theModelAndTheEngineAgree":"The model and the engine agree on every variable name.","theEngineHasSeenThese":"The engine has seen these, and nothing in the diagram names them.","asking":"Asking","thisNeedsCamunda":"This needs Camunda {version}.","instancesHere":{"one":"{count} instance","other":"{count} instances"},"urlAt":"{url} at {when}","startInstance":"Start instance","startInstanceEllipsis":"Start instance…","startInstanceTooltip":"Start a process instance on the connected engine","startingInstance":"Starting…","processDefinition":"Process ID","variablesJson":"Variables (JSON)","variablesHelp":"JSON object with variables to pass to the instance","variablesInvalidJson":"Variables should be valid JSON","variablesMustBeObject":"Variables should be a JSON object","instanceStarted":"Started instance {id}","unableToStartInstance":"Unable to start instance","retry":"Retry","retrying":"Retrying","retryIncident":"Retry this incident","unableToRetryIncident":"Unable to retry incident: {reason}","cancelInstance":"Cancel instance","cancelling":"Cancelling","cancelInstanceTitle":"Cancel instance","cancelInstanceConfirm":"Cancel process instance {instance}?","unableToCancelInstance":"Unable to cancel instance: {reason}","sendMessage":"Send message","broadcastSignal":"Broadcast signal","messageName":"Message name","signalName":"Signal name","correlationKey":"Correlation key","sending":"Sending","broadcasting":"Broadcasting","send":"Send","broadcast":"Broadcast","unableToSendMessage":"Unable to send message: {reason}","unableToBroadcastSignal":"Unable to broadcast signal: {reason}"},"main":{"fileChangedOnDisk":"File Changed on Disk","keepEditing":"Keep Editing","theDiagramWasChangedOutside":"The diagram was changed outside the editor. Reloading loads those changes and drops what you have not saved; keeping it means your next save overwrites them."},"marketplace":{"anyElement":"Any element","backToTheTemplates":"Back to the templates","category":"Category","checkForUpdates":"Check for updates","checkingForANewerRelease":"Checking for a newer release…","connectorTemplates":"Connector templates","default":"Default:","deprecated":"Deprecated","downloadingTheConnectorTemplatesFrom":"Downloading the connector templates from GitHub…","elementType":"Element type","isNotInTheProject":"{id}{version} is not in the project or in the downloaded connector templates","loadingTemplateDetails":"Loading template details…","needsANewerCamundaEngine":"Needs a newer Camunda engine than this diagram targets","noTemplateFitsThisDiagram":"No template fits this diagram's engine","noTemplateMatchesTheFilters":"No template matches the filters","otherProperties":"Other Properties","saveElementTemplate":"Save Element Template: {name}","searchTemplatesByNameDescription":"Search templates by name, description or keyword","selectLocationToSaveThe":"Select location to save the element template","templateInstalled":"Template \\"{name}\\" installed","templateNotDownloaded":"Template not downloaded","download":"Download","templateSavedPenstockFindsTemplates":"Template \\"{name}\\" saved. Penstock finds templates in a .camunda/element-templates folder above the diagram; list this file under elementTemplates in penstock.yaml to use it from here.","theConnectorTemplatesCouldNot":"The connector templates could not be loaded","thisDiagramTargetsCamunda":"This diagram targets Camunda {engineVersion}","type":{"Boolean":"Checkbox","Dropdown":"Select","Hidden":"Hidden","Number":"Number","String":"Text","Text":"Multi-line Text"},"unableToInstallTheTemplate":"Unable to install the template: {failure}","viewDocumentation":"View documentation","overview":"Overview","appliesTo":"Applies to","engine":"Engine","properties":"Properties","configurationProperties":"Configuration properties","details":"Details","all":"All","installedOnly":"Installed only","clearFilters":"Clear filters","today":"today","todayAt":"today at {time}","tomorrowAt":"tomorrow at {time}","yesterday":"yesterday","daysAgo":{"one":"{count} day ago","other":"{count} days ago"},"notAmongConnectors":"{ids} is not among Camunda's published connector templates","thisDiagramTargets":" - this diagram targets {version}","camundaConnectors":"Camunda connectors {ref}","checked":", checked {when}","couldNotCheckForANewerRelease":"Could not check for a newer release: {error}","couldNotDownloadConnectors":"The connector templates could not be downloaded from GitHub: {error}","triedAgainAfter":" They are tried again after {when}.","templateCount":{"one":"{count} template","other":"{count} templates"},"forCamunda":" for Camunda {version}","unnamed":"Unnamed","feelIs":"FEEL: {feel}","options":"Options:","install":"Install","installed":"Installed","installing":"Installing…","configurable":"{number} configurable","showForNewerEngines":"Show {number} for newer engines"},"migration":{"convertUnchanged":"Convert unchanged","needsWork":"Needs work","reviewAfterConverting":"Review after converting","saveTheDiagramFirstOnly":"Save the diagram first: only a diagram in a file can be converted.","theDiagramCouldNotBe":"The diagram could not be read.","change":{"async":"The asynchronous continuation is removed","jobWorkerTask":"Becomes a job worker task with the job type {jobType}","retries":"The retry cycle becomes {retries} retries","fieldHeaders":"The field injections {fields} become task headers","conditionFeel":"The condition is written as a FEEL expression","conditionRewritten":"The condition is rewritten as a FEEL expression","collection":"The collection {collection} becomes the input collection","loopCount":"The loop count {cardinality} becomes an input collection","completionCondition":"The completion condition is rewritten as a FEEL expression","messageName":"The message name {name} is written as a FEEL expression","timer":"The timer is rewritten as a FEEL expression","errorVariable":"The {source} is stored in the variable {variable} by an output mapping","feelScript":"The script becomes a FEEL script expression","userTask":"Becomes a Camunda user task","assignment":"The assignment becomes an assignment definition","formRef":"The form {form} is linked as a Camunda Form","externalForm":"The form key {formKey} is kept as an external form reference","generatedForm":"The form fields are written as the Camunda Form {form}","calledDecision":"Calls the decision {decision} and keeps its result in {result}","calledProcess":"Calls the process {process}","listener":"The {event} listener {name} becomes a job worker with the job type {jobType}","platform":"Marked as a Camunda {target} diagram","dmnVersion":"The decisions are moved to DMN 1.3","expressionRewritten":"The expression is rewritten as a FEEL expression","dmnHistoryTimeToLive":"The history time to live is removed, Camunda 8 does not use it","dmnPlatform":"Marked as a Camunda {target} decision file","formPlatform":"Marked as a Camunda {target} form","versionTag":"The version tag {tag} is kept as Camunda 8's version tag","ioMapping":{"one":"{count} input or output parameter becomes an input and output mapping","other":"{count} input or output parameters become an input and output mapping"},"asyncBefore":"asynchronous continuation","removed":"removed","camunda7Implementation":"Camunda 7 implementation","userTaskBefore":"user task"},"extraFile":{"form":"the form of {where}"},"failure":{"notBpmn":"The file is not a BPMN diagram Penstock can read.","notDmn":"The file is not a DMN diagram Penstock can read.","notForm":"The file is not a form Penstock can read."},"detail":{"complexGateway":"Camunda 8 has no complex gateway.","complexGatewayAction":"Model the join with an inclusive or a parallel gateway and conditions.","transaction":"Camunda 8 has no transactions and no cancel events.","transactionAction":"Model it as a subprocess with an error boundary event and compensation.","mappingValue":"The value is a {type}, which the converter does not read.","noMapping":"Camunda 8 has no {kind} mappings on a {element}.","standardLoop":"Camunda 8 has no standard loops.","standardLoopAction":"Model the loop with a gateway and a sequence flow back, or as a multi-instance activity.","cancelEvent":"Camunda 8 has no transactions and no cancel events.","cancelEventAction":"Model it with an error event and compensation.","errorCode":"Camunda 8 error codes are fixed or given by the worker that throws them","decisionBound":"The decision {name}","callBound":"The call of {name}","noTarget":"A variable binding has no target.","decisionNamed":"The decision {name}","inputNamed":"The input {name}","ruleCondition":"A condition of rule {rule}","ruleOutput":"An output of rule {rule}","listenersOldTarget":"Camunda 8 has execution listeners from 8.6; this converts for {target}.","listenersNoSequenceFlow":"Camunda 8 has no listeners on sequence flows.","listenersNoOn":"Camunda 8 has no execution listeners on a {element}.","listenersEndOnly":"Camunda 8 runs only end listeners on a {element}.","listenersFields":"It is given injected fields, which Camunda 8 listeners do not have.","listenersExpression":"It is an expression or a script, and a Camunda 8 listener is a job for a worker.","taskListenersOldTarget":"Camunda 8 has task listeners from 8.8; this converts for {target}.","taskListenersNoEvent":"Camunda 8 has no {event} event for task listeners."},"juel":{"stringOpen":"a string in it is not closed","character":"it uses \\"{what}\\", which has no FEEL counterpart","trailing":"it continues after a complete expression at \\"{what}\\"","expected":"\\"{what}\\" was expected where \\"{found}\\" is","propertyName":"a property name is missing after \\".\\"","tooComplex":"it is too long or too deeply nested to convert","wordAsValue":"\\"{what}\\" stands where a value was expected","endsEarly":"it ends too early","tokenAsValue":"\\"{what}\\" stands where a value was expected","contextObject":"it reads \\"{what}\\", which exists only inside the Camunda 7 engine","dollarInName":"the name \\"{what}\\" contains \\"$\\", which a FEEL name cannot","reservedWord":"\\"{what}\\" is a reserved word in FEEL","localVariable":"a local variable is read by name; in Camunda 8 the name resolves through the scopes, so check that no outer variable shadows it","businessKey":"it reads the business key, which Camunda 8 does not have; carry it as a process variable","engineId":"it reads an engine id, which a FEEL expression cannot see in Camunda 8","executionCall":"it calls execution.{what}(), which runs inside the Camunda 7 engine","takesOne":"{what}() takes one argument here","takesNone":"{what}() takes no argument here","equalsTakesOne":"equals() takes one argument here","size":"{target}.size() became count(), which works when the variable is a list; for a map, read its entries instead","javaCall":"it calls the Java method {what}(), and FEEL cannot call Java","exponent":"it writes a number with an exponent, which FEEL does not read","enginePath":"it reads {target}.{what}, which exists only inside the Camunda 7 engine","indexShifted":"a list index moved by one: FEEL counts list items from 1, Java from 0","computedIndex":"it reads an item by a computed index, and FEEL counts list items from 1 where Java counts from 0","juelFunction":"it calls {what}(), a function Camunda 7 provides and FEEL does not","namespacedFunction":"it calls the function {prefix}:{what}(), which Camunda 8 does not provide","empty":"it uses \\"empty\\", which is true for null, \\"\\" and an empty list or map at once; FEEL needs to know which one it is","textPlus":"it adds text with \\"+\\", which Java EL does not allow and FEEL treats as joining strings","expressionOpen":"an expression in it is not closed with \\"}\\"","joinedStrings":"text with expressions inside became joined strings; a value that is null makes the whole text null in FEEL, where Camunda 7 wrote an empty string"},"worker":{"becomes":{"taskListener":"a task listener job of type {jobType}, on the {event} event (Camunda 8.8 or later)","executionListener":"an execution listener job of type {jobType}, on the {event} event (Camunda 8.6 or later)","topic":"a job worker of type {jobType}; the external task handler moves to a Camunda 8 job worker","expression":"a job worker of type {jobType} that makes the call the expression made","class":"a job worker of type {jobType}"},"note":{"businessKey":"It reads the business key. Camunda 8 has none: carry the value as a process variable.","engineServices":"It uses {services}, which a Camunda 8 worker does not have: use the Camunda client, or a message, instead.","readsAllVariables":"It reads every variable. A Camunda 8 worker fetches all variables unless it names the ones it needs."}},"report":{"theProject":"the project","heading":"Camunda 7 to Camunda 8 migration: {name}","onDate":" on {date}","automatic":"{count} more convert unchanged.","needsWork":"Needs work","reviewAfter":"Review after converting","notInProject":"not in this project","nothingToMigrate":"This project has no Camunda 7 diagrams, decisions or forms: there is nothing to migrate.","scope":"Scope","columnStatus":"Status","columnFiles":"Files","columnMeaning":"Meaning","costs":"What the move costs","blockers":"Blockers","blockersHint":"Camunda 8 has no form for these. Remodel them before converting.","blockerWhere":"in {where} ({path}). {action}","files":"Files","columnFile":"File","columnNeedsWork":"Needs work","columnReview":"Review","columnConverts":"Converts","finding":"{where}: {title}. {action}","code":"Code","codeHint":"What each Java delegate, external task handler and listener becomes. Penstock writes a job worker skeleton beside the code and never over it.","columnValue":"Class, bean or topic","columnWhere":"Where","columnBecomes":"Becomes","columnNotes":"Notes","apis":"Camunda 7 API in the Java code","apisHint":"The rewrite of the code itself is best done in the build, where a reviewer sees the diff: use the OpenRewrite recipes from the Camunda migration guide.","dataMigration":"Running instances and history","findingWhere":"{where}: {title}.","status":{"ready":"Ready","converts":"Converts","needsWork":"Needs work","blocked":"Blocked"},"meaning":{"ready":"nothing to do","converts":"Penstock converts it; the leftovers are a check","needsWork":"a person has to do part of it","blocked":"uses something Camunda 8 has no form for"},"effort":{"workers":"Job workers to write","expressions":"Expressions to rewrite","scripts":"Scripts to replace","listeners":"Listeners to move","forms":"Forms to rebuild or link","calledProcesses":"Called processes to check","decisions":"Decisions called"},"target":"Target: Camunda {target}. Written by Penstock{on}.","targetDated":"Target: Camunda {target}. Written by Penstock{on}.","dataMigrator":"Camunda's Data Migrator: {link}","fileCount":{"one":"{count} file","other":"{count} files"},"apiImports":"{api}: {imports} imports in {files}"},"rules":{"java-class":{"title":"Java class {className} becomes the job type {jobType}","detail":"Camunda 8 does not run Java inside the engine. A service task creates a job, and a job worker in your application picks it up.","action":"Write a job worker for {jobType}; Penstock generates one from the class."},"delegate-expression":{"title":"Delegate {delegate} becomes the job type {jobType}","detail":"Camunda 8 cannot look up a Spring bean. The task creates a job, and a job worker picks it up.","action":"Write a job worker for {jobType}; Penstock generates one from the bean."},"delegate-expression-dynamic":{"title":"The delegate is chosen by the expression {expression}","detail":"The bean is decided while the process runs, and a Camunda 8 job type is fixed or a FEEL expression over variables.","action":"Give the task a job type, or a FEEL expression that picks one from a variable."},"expression":{"title":"The expression {expression} becomes the job type {jobType}","detail":"Camunda 8 cannot call a bean method from the diagram. The call moves into a job worker.","action":"Write a job worker for {jobType} that makes the call {expression} made.","withResult":{"action":"Write a job worker for {jobType} that makes the call {expression} made and completes the job with the variable {result}."}},"expression-unknown":{"title":"The expression {expression} runs code inside the engine","detail":"Camunda 8 evaluates FEEL and nothing else in the diagram, so this expression has no counterpart.","action":"Move what it does into a job worker, or into a FEEL output mapping if it only computes a value."},"external-task":{"title":"The external task topic {topic} becomes the job type {jobType}","detail":"External tasks and jobs are the same idea. The worker changes client: the Camunda 7 external task client becomes a Camunda 8 job worker.","action":"Move the handler for {topic} to a job worker; Penstock generates one from the handler."},"external-task-priority":{"title":"The external task priority is dropped","detail":"Camunda 8 jobs of one type are handed out in the order they are created.","action":"Nothing to do, unless the order mattered; then give urgent work its own job type."},"connector":{"title":"The Camunda 7 connector {connector} has no Camunda 8 counterpart","detail":"Camunda 7 connectors (http-connector, soap-http-connector) are not part of Camunda 8. Camunda 8 has its own connectors, configured through element templates.","action":"Apply the Camunda 8 REST or SOAP connector template to the task, or write a job worker."},"field-injection":{"title":"The injected fields {fields} become task headers","detail":"Camunda 8 has no field injection. Fixed values travel with the job as custom headers, which the worker reads.","action":"Read them in the worker from the job's custom headers."},"field-injection-expression":{"title":"The injected field {field} is an expression","detail":"A task header is a fixed text; it cannot be evaluated while the process runs.","action":"Pass the value as an input mapping with a FEEL expression, and read it in the worker as a variable."},"async":{"title":"Asynchronous continuation is dropped","detail":"Camunda 8 has no transactions spanning steps: every job and every wait is its own unit, so asyncBefore and asyncAfter mean nothing there.","action":"Nothing to do."},"retries":{"title":"The retry cycle {cycle} becomes {retries} retries","detail":"Camunda 8 counts retries on the task; how long to wait between them is decided by the worker when it fails the job.","action":"Set the back-off in the worker's fail command if the interval mattered."},"retries-dropped":{"title":"The retry cycle {cycle} is dropped","detail":"Only tasks that create a job carry retries in Camunda 8.","action":"Nothing to do, unless this element relied on retrying; then check how it fails on Camunda 8."},"job-priority":{"title":"The job priority {priority} is carried over","detail":"Camunda 8 has job priorities from 8.8.","action":"Nothing to do."},"job-priority-dropped":{"title":"The job priority {priority} is dropped","detail":"The Camunda 8 version this converts for has no job priorities.","action":"Nothing to do, unless the order mattered; then give urgent work its own job type."},"input-output":{"title":"The input and output mapping becomes a FEEL mapping","detail":"Camunda 8 maps variables with FEEL expressions; each Camunda 7 parameter becomes one.","action":"Nothing to do."},"input-output-manual":{"title":"The mapping of {name} cannot be converted","detail":"{reason}","action":"Write the mapping as a FEEL expression."},"input-output-script":{"title":"The mapping of {name} runs a {format} script","detail":"Camunda 8 maps variables with FEEL only.","action":"Write the mapping as a FEEL expression, or compute the value in a job worker."},"condition":{"title":"The condition {expression} becomes {feel}","detail":"Camunda 8 conditions are FEEL expressions.","action":"Nothing to do."},"expression-review":{"title":"{expression} became {feel}","detail":"{reason}","action":"Check the FEEL expression means the same with the values this process sees."},"expression-manual":{"title":"The expression {expression} cannot be converted","detail":"The converter stopped because {reason}.","action":"Write it as a FEEL expression."},"script-condition":{"title":"The condition is a {format} script","detail":"Camunda 8 conditions are FEEL expressions only.","action":"Write the condition in FEEL."},"script-task":{"title":"The {format} script cannot run in Camunda 8","detail":"Camunda 8 runs a script task as a FEEL expression or as a job. Groovy, JavaScript and Python scripts have no engine to run in.","action":"Rewrite the script as a FEEL expression, or turn the task into a job worker that runs the code."},"script-task-feel":{"title":"The FEEL script becomes a FEEL expression","detail":"Camunda 8 runs a FEEL script task inside the engine, with its result in {variable}.","action":"Nothing to do.","noResult":{"title":"The FEEL script's result goes to {variable}","detail":"Camunda 8 needs a result variable for a FEEL script task, and the Camunda 7 task had none.","action":"Rename {variable} if something should read the result."}},"script-resource":{"title":"The script is read from {resource}","detail":"Camunda 8 does not load scripts from resources.","action":"Rewrite the script as a FEEL expression, or turn the task into a job worker."},"execution-listener":{"title":"The {event} listener {name} becomes the job type {jobType}","detail":"Camunda 8 execution listeners are jobs as well: the process waits until a worker completes them.","action":"Write a job worker for {jobType}; it runs before the element continues, so keep it quick."},"execution-listener-unsupported":{"title":"The {event} listener {name} has no Camunda 8 counterpart","detail":"{reason}","action":"Move what the listener does into a task of its own or into the worker before it."},"task-listener":{"title":"The {event} task listener {name} becomes the job type {jobType}","detail":"Camunda 8 task listeners are jobs that the user task waits for, and they can correct or deny what happens.","action":"Write a job worker for {jobType}."},"task-listener-unsupported":{"title":"The {event} task listener {name} has no Camunda 8 counterpart","detail":"{reason}","action":"Move what the listener does into a job worker around the task, or into the application that works the task."},"user-task":{"title":"The user task becomes a Camunda user task","detail":"Camunda 8 manages the task in the engine, with its assignee, candidates, dates and priority.","action":"Nothing to do in the diagram; the task list application changes to Tasklist or to the Camunda 8 user task API."},"user-task-expression":{"title":"The {name} {expression} became {feel}","detail":"{reason}","action":"Check the value on Camunda 8."},"user-task-priority-range":{"title":"The priority {priority} is outside 0 to 100","detail":"Camunda 8 user task priorities run from 0 to 100.","action":"Rescale the priority."},"user-task-priority-dropped":{"title":"The priority {priority} is dropped","detail":"The Camunda 8 version this converts for has no user task priority.","action":"Nothing to do, unless the task list sorted by it."},"form-embedded":{"title":"The embedded form {formKey} has no Camunda 8 counterpart","detail":"Camunda 8 Tasklist shows Camunda Forms only; HTML forms and their JavaScript do not carry over.","action":"Rebuild the form as a Camunda Form and link it, or keep your own task list application and pass the key as an external reference.","here":{"title":"The form key {formKey} has no Camunda 8 counterpart here"}},"form-generated":{"title":"The generated form becomes the Camunda Form {form}","detail":"Penstock writes a Camunda Form with one field per form field, and links it. Validation and properties the form fields had are carried over where Camunda Forms have them.","action":"Open {form} and check it looks and validates as the old one did."},"form-generated-partly":{"title":"Part of the generated form did not carry over: {lost}","detail":"Camunda Forms have no counterpart for it.","action":"Rebuild that part in the form editor."},"form-camunda":{"title":"The Camunda Form {form} is linked by its id","detail":"Camunda 8 links a form by its id and deploys it with the diagram.","action":"Deploy the form with the diagram."},"form-camunda-unknown":{"title":"The Camunda Form {form} was not found in the project","detail":"Camunda 8 links a form by the id inside it, and Penstock could not read that id. The file name was used instead.","action":"Check the form id in the diagram matches the id inside the form."},"form-binding-version":{"title":"The form is bound to version {version}","detail":"Camunda 8 binds a form by latest, by deployment or by version tag, not by version number.","action":"Bind it by deployment or give the form a version tag."},"form-external":{"title":"The form key {formKey} becomes an external reference","detail":"Camunda 8 passes an external reference through to the task list, as Camunda 7 passed the form key.","action":"Check your task list application reads the external reference."},"assignment-review":{"title":"The {name} {expression} is a list in Camunda 7","detail":"Camunda 8 wants candidates as a FEEL list or a comma-separated text.","action":"Check the expression gives a list or a comma-separated text."},"initiator":{"title":"The starter is kept in {variable} only in Camunda 7","detail":"Camunda 8 does not record who started an instance in a variable.","action":"Set {variable} as a variable when the process is started."},"multi-instance":{"title":"The multi-instance loop over {collection} becomes an input collection","detail":"Camunda 8 loops over an input collection, with each item in the input element.","action":"Nothing to do."},"multi-instance-cardinality":{"title":"The loop cardinality {cardinality} becomes a collection of numbers","detail":"Camunda 8 has no loop cardinality: it loops over a collection. The converter loops over the numbers 1 to {cardinality}.","action":"Check the loop runs as often as it did."},"multi-instance-missing":{"title":"The multi-instance loop has neither a collection nor a cardinality","detail":"Camunda 8 needs an input collection to loop over.","action":"Give the loop an input collection."},"call-activity":{"title":"The call of {process} carries over","detail":"Camunda 8 calls the process by its id; the variables passed in and out become mappings.","action":"Nothing to do."},"call-activity-business-key":{"title":"The business key is passed to {process}","detail":"Camunda 8 has no business key.","action":"Pass the value as a variable, and correlate messages on it."},"call-activity-local":{"title":"Only local variables were passed to or from {process}","detail":"Camunda 8 passes the variables its mappings name; it has no local-only mode.","action":"Check the mappings pass exactly what the called process needs."},"call-activity-mapping-class":{"title":"Variables for {process} are mapped by Java code","detail":"Camunda 8 maps variables with FEEL only.","action":"Write the mapping as FEEL input and output mappings."},"binding-version":{"title":"{what} is bound to version {version}","detail":"Camunda 8 binds by latest, by deployment or by version tag, not by version number.","action":"Bind it by deployment, or give the target a version tag and bind by that."},"binding-dropped":{"title":"The binding {binding} of {target} is dropped","detail":"The Camunda 8 version this converts for always takes the latest version.","action":"Convert for 8.6 or later to keep the binding."},"tenant":{"title":"The tenant {tenant} is fixed in the diagram","detail":"Camunda 8 decides the tenant from the deployment, not from the diagram.","action":"Deploy the diagram to the tenant instead."},"cmmn":{"title":"The case {case} is called","detail":"Camunda 8 has no CMMN.","action":"Model the case as a process, an ad-hoc subprocess or a set of user tasks."},"decision":{"title":"The decision {decision} is called, its result in {result}","detail":"Camunda 8 evaluates the decision in the engine and stores the whole result in one variable.","action":"Nothing to do."},"decision-result":{"title":"The decision result was mapped as {mapping}","detail":"Camunda 8 stores the result the way the decision gives it: one value for one output of one rule, a context for several outputs, a list for several rules. The Camunda 7 mapping {mapping} may have a different shape.","action":"Check what reads {result} expects the Camunda 8 shape."},"decision-result-variable":{"title":"The decision result goes to {result}","detail":"Camunda 8 needs a result variable, and the Camunda 7 task had none.","action":"Rename {result} if something else should read the result."},"message-catch":{"title":"The message {message} needs a correlation key","detail":"Camunda 8 correlates a message to a waiting instance by a key the instance computes from its variables. Camunda 7 correlated through the API, with the business key or variables.","action":"Add a correlation key to the message: a FEEL expression over a variable the sender also knows, such as =orderId."},"message-name-expression":{"title":"The message name {name} becomes {feel}","detail":"Camunda 8 message names can be FEEL expressions.","action":"Nothing to do."},"message-throw":{"title":"The message is sent by {implementation}, which becomes the job type {jobType}","detail":"Camunda 8 sends a message from a throw event through a job worker, like a send task.","action":"Write a job worker for {jobType} that publishes the message."},"message-throw-empty":{"title":"The message throw event has no implementation","detail":"Camunda 8 needs a job type on a message throw event; a worker sends the message.","action":"Give the event a job type and write the worker that publishes the message."},"signal-variables":{"title":"Variables passed with the signal {signal}","detail":"Camunda 8 broadcasts a signal with the variables its input mappings give it.","action":"Check the signal carries the variables its catchers read."},"timer":{"title":"The timer {timer} carries over","detail":"Camunda 8 reads the same ISO 8601 dates, durations and cycles.","action":"Nothing to do."},"timer-cron":{"title":"The timer cycle {cycle} is a cron expression","detail":"Camunda 8 reads cron expressions in the Spring format; Camunda 7 read them in the Quartz format, which allows fields Spring does not.","action":"Check the cron expression is valid Spring cron."},"error-code-variable":{"title":"The caught error code goes to {variable} through an output mapping","detail":"Camunda 8 gives a caught error to the output mappings as errorCode and errorMessage.","action":"Nothing to do."},"error-message":{"title":"The error message {message} is dropped","detail":"In Camunda 8 the worker that throws the error gives its message.","action":"Give the message in the worker when it throws the error."},"external-error":{"title":"The external task decides errors by the expression {expression}","detail":"Camunda 8 has no error event definitions on a task; the job worker throws the error itself.","action":"Throw the BPMN error from the job worker when the condition holds."},"escalation-code-variable":{"title":"The escalation code was kept in {variable}","detail":"Camunda 8 does not store a caught escalation code in a variable.","action":"Pass the value as a variable when the escalation is thrown."},"unsupported-element":{"title":"Camunda 8 cannot run a {what}","detail":"{reason}","action":"{action}"},"element-since":{"title":"A {what} needs Camunda {version} or later","detail":"The Camunda 8 version this converts for, {target}, cannot run it.","action":"Convert for Camunda {version} or later, or remodel it."},"conditional-event":{"title":"The conditional event waits for {variables}","detail":"Camunda 8 evaluates a condition when the variables it names change, like Camunda 7 did when variableName was set.","action":"Check the condition is triggered by the variables you expect."},"properties":{"title":"The extension properties carry over","detail":"Camunda 8 keeps them as zeebe properties, read the same way by tools.","action":"Nothing to do."},"version-tag":{"title":"The version tag {tag} carries over","detail":"Camunda 8 keeps version tags from 8.6.","action":"Nothing to do.","dropped":{"title":"The version tag {tag} is dropped","detail":"Camunda 8 keeps version tags from 8.6."}},"history-time-to-live":{"title":"The history time to live {ttl} is dropped","detail":"Camunda 8 keeps history in its secondary storage, cleaned up by retention settings of the cluster, not of the diagram.","action":"Set the retention in the cluster configuration if it mattered."},"starter-groups":{"title":"Who may start the process ({groups}) is dropped","detail":"Camunda 8 decides who may start a process through authorizations, not the diagram.","action":"Grant the start permission to {groups} in Camunda 8 identity."},"startable-in-tasklist":{"title":"Whether Tasklist may start the process is dropped","detail":"Camunda 8 Tasklist offers every process a user may start.","action":"Nothing to do."},"template":{"title":"The element template {template} is a Camunda 7 template","detail":"The template no longer applies; the converted properties stay.","action":"Apply the Camunda 8 version of the template, if there is one."},"unknown-attribute":{"title":"The Camunda 7 setting {attribute} is left as it is","detail":"Penstock does not know what Camunda 8 should do with it, so it stays in the diagram, where Camunda 8 ignores it.","action":"Check whether anything depended on it, then remove it."},"dmn-version":{"title":"The decisions are DMN {version}","detail":"Camunda 8 reads DMN 1.3. Penstock and the DMN editor move an older file to 1.3.","action":"Open the file in the DMN editor and save it, then convert it.","converted":{"detail":"Camunda 8 reads DMN 1.3, so the file is written as DMN 1.3.","action":"Nothing to do."}},"dmn-expression-language":{"title":"{what} is written in {language}","detail":"Camunda 8 evaluates DMN in FEEL only.","action":"Write it in FEEL."},"dmn-juel":{"title":"{what} becomes the FEEL expression {feel}","detail":"Camunda 8 evaluates DMN in FEEL only.","action":"Nothing to do."},"dmn-input-variable":{"title":"The input {input} names its value {variable}","detail":"Camunda 8 refers to the input value in a rule as ?, not by a name.","action":"Replace {variable} with ? in the rules of this input, then remove the name."},"dmn-history-time-to-live":{"title":"The history time to live of {decision} is dropped","detail":"Camunda 8 keeps history in its secondary storage, cleaned up by retention settings of the cluster.","action":"Nothing to do."},"dmn-carries-over":{"title":"The decisions carry over","detail":"Camunda 8 evaluates DMN 1.3 in FEEL, and these decisions use nothing else.","action":"Nothing to do."},"form-platform":{"title":"The form carries over","detail":"Camunda Forms have the same format on both; only the platform it names changes.","action":"Nothing to do."},"platform":{"title":"The diagram names Camunda {target} as its platform","detail":"Camunda Modeler and Penstock read the platform from the file.","action":"Nothing to do."},"data-migration":{"title":"Running instances and history stay on Camunda 7","detail":"Converting a diagram does not move its instances. Instances can finish on Camunda 7, or be moved with Camunda's Data Migrator, which needs the element ids to stay as they are; the converter keeps them.","action":"Decide whether to drain Camunda 7 or to run the Data Migrator."}},"dmn":{"savedAsNotice":"{name} is a DMN {from} file. It was converted to DMN 1.3 and will be saved as DMN 1.3 when you change it."},"form":{"keptOut":"{name} on {id}","lostType":"type {type} of {id}"},"tally":{"toDo":{"one":"{count} to do","other":"{count} to do"},"toCheck":{"one":"{count} to check","other":"{count} to check"},"converts":{"one":"{count} convert unchanged","other":"{count} convert unchanged"}}},"notifications":{"closeNotification":"Close notification"},"platform":{"theConversionPreviewStayedUnanswered":"The conversion preview stayed unanswered for {seconds} seconds, so Penstock stopped asking and converted nothing.","theConversionPreviewWasGiven":"The conversion preview was given up before the user answered, so Penstock converted nothing.","theHostConnectionIsClosed":"The host connection is closed","theIdeAnswered":"The IDE answered {status}","theRequestWasCancelled":"The request was cancelled"},"problems":{"waiting":"Waiting for a diagram to check.","tally":{"one":"{count} problem","other":"{count} problems"}},"project":{"chooseCamunda7Camunda8":"Choose Camunda 7, Camunda 8, Operaton or CIB seven as the engine in penstock.yaml to deploy","filesReplaced":{"one":"{count} file replaced.","other":"{count} files replaced."},"isBesideTheDelegateMove":"{fileName} is beside the delegate; move what {value} does into it.","isNotACamunda7":"{name} is not a Camunda 7 file: there is nothing to convert.","noJobWorkerWasFound":"No job worker was found for {asked}.","notRunTheEngineWas":"Not run: the engine was not confirmed for tests","nothingWasWritten":"Nothing was written: {failure}","penstockWillDeployATest":"Penstock will deploy a test build to {url}, start instances and answer the jobs it mocks. ","runScenariosOnThisEngine":"Run scenarios on this engine?","startFromAnExample":"Start from an example","templateUpdated":"The element template for {value} was brought up to date from {where} in {path}.","templateWritten":"The element template for {value} was written from {where} to {path}.","theBuildAndItsInstances":"The build and its instances are removed after each run. Mark the profile with deployment.forTests: true to stop being asked.","theElementTemplateForAlready":"The element template for {value} already says what {where} does.","theElementTemplateIsNot":"The element template {id} is not in this project any more.","theExampleIsInIts":"The {example} example is in {root}. Its README.md says how to run it.","theExampleWasNotWritten":"The example was not written: {failure}","theJobWorkerWasNot":"The job worker was not written: {failure}","theMigrationReportIsIn":"The migration report is in .penstock/migration: report.md, and report.html to hand on.","theWorkerSkeletonWasNot":"The worker skeleton was not written: {failure}","thereIsNothingToMigrate":"There is nothing to migrate: no Camunda 7 diagram, decision or form was found.","thingsStayOpen":{"one":"{count} thing stays open, marked on its element; the Camunda 7 file is unchanged.","other":"{count} things stay open, each marked on its element; the Camunda 7 file is unchanged."},"wasConvertedForCamundaInto":"{name} was converted for Camunda {target} into {folder}.","wasWrittenForInMove":"{fileName} was written for {name} in {inside}. Move what it should do into it.","writeTheOrderExampleInto":"Write the {example} order example into {root}? It adds a process, a decision, a form, workers, test cases and a README, and never overwrites a file.","couldNotBeRead":"{name} could not be read: {reason}","notADiagramDecisionOrForm":"it is not a diagram, decision or form","alreadyThere":{"one":"{files} is already there; choose to replace it or another folder","other":"{files} are already there; choose to replace them or another folder"},"theCursorIn":"the cursor in {file}","theJobType":"the job type {value}","engine":{"CAMUNDA_8":"Modern cloud-native process automation platform","OPERATON":"Community-driven BPMN automation platform","CIB_SEVEN":"Community fork of Camunda 7","CAMUNDA_7":"Proven workflow and decision automation platform","CLASSIC_BPMN":"Standard BPMN 2.0 modeling without engine-specific extensions"},"scriptType":{"noScriptTypeSelected":"No script type selected","groovyScriptingLanguage":"Groovy scripting language","javaScriptScriptingLanguage":"JavaScript scripting language","Groovy":"Groovy","JavaScript":"JavaScript"},"noScriptType":"<empty>"},"properties":{"calledElement":"Called element","dataObject":"Data object","editInNewTab":"Edit in new tab","exampleOutputWritten":"Example output written","idOfTheProcessTo":"Id of the process to call","isACollection":"Is a collection","leaveEmptyForTheEngine":"Leave empty for the engine default","loopCondition":"Loop condition","loopMaximum":"Loop maximum","loopMaximumWholeNumber":"The loop maximum should be a whole number","testBefore":"Test before","tryOnInstance":"Try on instance","writeExampleOutput":"Write example output","writeThisAsTheExample":"Write this as the example output, where Camunda Modeler reads it","readingWhatReachesThisStep":"Reading what reaches this step","nothingReachesThisStep":"Nothing reaches this step, so there is no example output to write.","anyValue":"any","pickAnInstanceToRunThis":"Pick an instance in the Monitor tab to run this on its variables.","projectVariable":"Used in the project","sevenCannotEvaluate":"Camunda 7 cannot evaluate an expression. It needs Camunda 8.9 or newer.","showScriptTab":"Show tab","scriptInTab":"This script is open in a tab"},"runs":{"adHocRun":"Ad-hoc run {time}","addAScenarioWithChosen":"Add a scenario with chosen inputs","addScenario":"Add scenario","addTheVariablesTheScenario":"Add the variables the scenario starts with.","addWhichAGatewayCondition":"Add {name}, which a gateway condition reads","backTo":"Back to {value}","buyOrSignIn":"Buy or Sign In","changed":"Changed","checkAtTheEnd":"Check at the end","choice":{"job":{"ask":"Ask me","complete":"Complete","error":"Throw error","fail":"Fail, then complete","real":"Real worker"},"timer":{"fire":"Fire now","real":"Wait for it"}},"chooseAProcess":"Choose a process","chooseTheValuesThatTake":"Choose the values that take the way you want. The gateways read {names}.","conditionOf":"Condition of {name}","create":"Create","createScenarios":"Create scenarios","createThisScenario":"Create this scenario","decisionRule":"Decision rule","enterANameForThe":"Enter a name for the scenario","enterTheErrorCodeShould":"Enter the error code {name} should throw","enterTheKeyOrId":"Enter the key or id of a process instance","errorCode":"Error code","fillTheForm":"Fill the form","answerTimer":"Answer timer","mockWorker":"Mock worker","fireTimer":"Fire timer","advanceTimeBy":"Advance time by","timerFired":"Timer is set to fire","timerDurationProblem":"Write the time as an ISO 8601 duration, such as PT2H or P1D","removeTimerAnswer":"Do not fire","workerOutcome":"Outcome","completeJob":"Complete job","throwBpmnError":"Throw BPMN error","failJob":"Fail job","workerVariables":"Variables (JSON)","errorMessage":"Error message","saveMock":"Save mock","removeMock":"Remove mock","invalidJson":"The variables should be a JSON object, such as {\\"amount\\": 150}","generate":"Generate","in":"In","include":"Include {name}","kind":{"call":"Call","decision":"Decision","delegate":"Delegate","end":"End","error":"Error","eventGateway":"Wait","gateway":"Gateway","join":"Join","message":"Message","parallel":"Split","signal":"Signal","start":"Start","subprocess":"Sub-process","task":"Task","timer":"Timer","user":"User task","worker":"Worker"},"leaveItEmptyToName":"Leave it empty to name the scenario after its way.","mocked":"Mocked","name":"Name","nameOfTheScenario":"Name of the scenario","nextStep":"Next step","noDecisionTableWithId":"No decision table with the id {id} is in this project","noFormWithTheId":"No form with the id {id} is in this project","noScenarioFile":"No scenario file","noScenariosAdded":"No scenarios added.","notTakenByThisScenario":"Not taken by this scenario","openRun":"Open run","out":"Out","penstockCannotCheckThisExpression":"Penstock cannot check this expression here","penstockFailed":"Penstock failed: {message}","previousStep":"Previous step","process":"Process","processInstance":"Process instance","removeVariable":"Remove {name}","resizeTheRunsPanel":"Resize the runs panel","reviewScenarios":"Review scenarios","run":"Run","runOutput":"Run output","runWithInput":"Run with input","runningNeedsAnEngineSet":"Running needs an engine. Set up the deployment profile in force.","saveAsScenario":"Save as scenario","scenariosIn":"Scenarios in {file}","scenariosNeedAnEngine":"Scenarios need an engine.","scenariosRunACamunda7":"Scenarios run a Camunda 7 or Camunda 8 process on an engine and follow every step. This diagram has no engine set.","scenariosToCreate":"Scenarios to create","source":{"decision":"from the decision evaluation","diff":"changed between two readings; the engine does not say which step wrote it","history":"from the engine history","mock":"sent or received by the mock"},"startVariables":"Start variables","startsAt":"Starts at","state":{"completed":"completed","active":"waiting","failed":"failed","terminated":"ended early"},"step":"Step","stepBadge":"Step {number}: {name}","steps":"Steps","theDiagramHasNoExecutable":"The diagram has no executable process to start","theKeyOfACamunda":"The key of a Camunda 8 instance or the id of a Camunda 7 one. Reads the instance from the engine of the profile in force and shows its path and steps. Nothing is changed on the engine.","thePlainStartEvent":"The plain start event","theRunDiffersFrom":{"one":"The run differs from {against} in 1 place.","other":"The run differs from {against} in {count} places."},"theRunMatches":"The run matches {against}.","theRunWaits":"The run waits","theScenarioAnsweredThisStep":"The scenario answered this step; no real code ran","theScenarioAsItIs":"The scenario as it is written","theScenarioStartsTheProcess":"The scenario starts the process with the same variables, answers the steps the way you did and checks the path the run took.","theScenarioStartsTheProcessInto":"The scenario starts the process with the same variables, answers the steps the way you did and checks the path the run took. It goes into {file}.","theStartVariablesShouldBe":"The start variables should be a JSON object, such as {\\"amount\\": 150}","theVariable":"the variable","theVariablesSendsShouldBe":"The variables {name} sends should be a JSON object","theWayThisScenarioTakes":"The way this scenario takes","theseValuesTake":"These values take: {scenario}","timesToFail":"Times to fail","toFillIn":"To fill in","unableToSaveTheScenario":"Unable to save the scenario","unableToWrite":"Unable to write {name}: {error}","theScenarioFile":"the scenario file","unreadable":"The diagram cannot be read right now, so its scenarios cannot be planned.","userTasksAndMessagesAsk":"User tasks and messages ask you when the run reaches them. A mocked step is marked Mocked: no real code ran there.","valueOf":"Value of {name}","variableName":"Variable name","variablesAreAJsonObject":"Variables are a JSON object, such as {\\"approved\\": true}","variablesSends":"Variables {name} sends","view":"View","whatDoes":"What {name} does","withErrorCode":"with error code","writeThisScenarioToThe":"Write this scenario to the file when you press Create scenarios","conditionsOnTheWayOut":"Conditions on the way out","goToTheWorker":"Go to the worker","showTheDecisionRule":"Show the decision rule","openTheDecision":"Open the decision","goToTheForm":"Go to the form","received":"Received","variablesToSend":"Variables to send","correlate":"Correlate","throwError":"Throw error","stop":"Stop","runAll":"Run all","close":"Close","log":"Log","penstockOnlyCamundaProcessTestWould":"Penstock only: Camunda Process Test would run it differently","alreadyInTheFileKeptAs":"Already in the file: kept as it is","added":"Added","text":"Text","saveChanges":"Save changes","generateThemFromTheDiagram":"Generate them from the diagram","openScenario":"Open scenario","scenarios":"Scenarios","addAValue":"Add a value","saveAsScenarioMore":"Save as scenario…","theJob":"the job {job}","theUserTask":"the user task","theMessage":"the message {message}","theSignal":"the signal {signal}","waitingAtFor":"Waiting at {where} for {what}","aScenarioIsOpen":"A scenario is open in the sidebar","noConditionAlwaysTaken":"no condition: this branch is always taken when it is reached","chooseVariablesSoThat":"choose variables so that {text}","trueOrFalseForTheValues":"{result} for the values of this scenario{used}","true":"true","false":"false","shouldFailAWholeNumberOfTimes":"{name} should fail a whole number of times, at least once","toCreate":"{ticked} of {items} to create","cannotBePlanned":{"one":", {count} cannot be planned","other":", {count} cannot be planned"},"moreWaysThanShown":{"one":"More than {count} ways lead through this process: the scenarios below together reach every flow.","other":"More than {count} ways lead through this process: the scenarios below together reach every flow."},"scenariosAdded":{"one":"{count} scenario added","other":"{count} scenarios added"},"toFillInCount":{"one":"{count} to fill in","other":"{count} to fill in"},"alreadyThereAndKept":{"one":"{count} already there and kept","other":"{count} already there and kept"},"leftAsItIs":"{file}: the file is left as it is: {problems}","scenariosSaved":{"one":"{count} scenario saved","other":"{count} scenarios saved"},"nameTaken":"{name} already has a scenario named \\"{scenario}\\": choose another name","errorNeedsItsCode":"A BPMN error needs its error code","complete":"Complete","broadcast":"Broadcast","runWithInputMore":"Run with input…","openRunMore":"Open run…","runAllIsOff":"Run all is off: {reason}","noEngineToRunOn":"there is no engine to run on.","noScenariosToRunYet":"There are no scenarios to run yet. Generate them in the Scenarios tab of the sidebar.","theTraceIsKeptIn":"The trace is kept in {path}","openARunMore":"Open a run…","theFile":"the file","notOnThisScenariosPath":"That element is not on this scenario's path.","planningTheScenarios":"Planning the scenarios…","noWayThroughAProcess":"No executable process here has a way through it that starts at a plain start event.","hideTheConditions":"Hide the conditions","fixTheConditions":"Wrong way? Fix the conditions","readOnlyEditingIsPro":"Read-only: editing a scenario is part of Penstock Pro.","aChangeIsMadeInThe":"A change is made in the diagram, can be undone there, and every scenario is planned again.","defaultFlowNoCondition":"default flow, no condition","decisionTableNotInProject":"The decision table {id} is not in this project, so its rules cannot be shown.","formNotInProject":"The form {id} is not in this project, so its fields cannot be shown.","openTheDecisionIn":"Open the decision in {file}","itsFile":"its file","problemCount":{"one":"1 problem","other":"{count} problems"},"startedByAnEvent":" (started by an event)","notice":{"added":{"one":"{count} scenario added","other":"{count} scenarios added"},"toFillIn":"{count} to fill in","kept":"{count} already there and kept","leftAsIs":"{file}: the file is left as it is: {problems}","saved":{"one":"{count} scenario saved","other":"{count} scenarios saved"},"duplicated":"Duplicated as {name}","deleted":"Deleted {name}","renamedTo":"Renamed to {name}"},"stateColumn":"State","noScenariosHint":"A scenario runs the process with the input you choose and checks the path it takes.","scenarioActions":"Scenario actions","rename":"Rename","duplicate":"Duplicate","deleteScenario":"Delete scenario","deleteScenarioTitle":"Delete scenario {name}?","deleteScenarioText":"{name} is removed from {file}. This cannot be undone."},"share":{"couldNotShareThisDiagram":"Could not share this diagram: {failure}","oneFileThatOpensOffline":"One file that opens offline in any browser","savedItOpensOfflineIn":"Saved {target}. It opens offline in any browser.","shareAsHtml":"Share as HTML","zoomIn":"Zoom in","zoomOut":"Zoom out","fitToScreen":"Fit to screen","madeWith":"Made with Penstock","elementDocumentation":"Element documentation","clickAnElement":"Click an element for its documentation. Scroll to zoom, drag to pan.","noDocumentation":"No documentation.","couldNotBeDrawn":"The diagram could not be drawn, so there is nothing to share."},"shortcuts":{"group":{"Canvas":"Canvas","Edit":"Edit","Modeling":"Modeling","Penstock":"Penstock"},"noMatch":"Nothing matches that.","noMatchHint":"Clear the search to see every shortcut again.","row":{"canvas-find":"Find in the diagram","canvas-fit":"Fit diagram","canvas-moveSelection":"Move the selection","canvas-pan":"Pan the canvas","canvas-selectAll":"Select all elements","canvas-zoomIn":"Zoom in","canvas-zoomOut":"Zoom out","edit-copy":"Copy","edit-cut":"Cut","edit-duplicate":"Duplicate","edit-paste":"Paste","edit-redo":"Redo","edit-remove":"Delete the selection","edit-undo":"Undo","model-connect":"Connect","model-direct-edit":"Edit a label","model-hand":"Hand tool","model-lasso":"Lasso select","model-replace":"Replace an element","model-space-tool":"Space tool","penstock-palette":"Find action"},"search":"Search actions and keys","title":"Keyboard shortcuts"},"sidebar":{"backTo":"Back to {title}","clickOrPressF2To":"{title} - click or press F2 to rename","collapseTheSidebar":"Collapse the sidebar","collapsedLabel":"{title}, collapsed","openTheSidebar":"Open the sidebar","pressF2OrEnterTo":"{title}. {label}: press F2 or Enter to rename","resizeTheSidebar":"Resize the sidebar","sidebar":"Sidebar","tab":{"code":"Code","comments":"Comments","monitor":"Monitor","preview":"Preview","problems":"Problems","properties":"Properties","scenarios":"Scenarios","try":"Try","debug":"Debug","chat":"Chat"},"findingCount":{"one":"{count} finding","other":"{count} findings"},"moreThan99Findings":{"one":"more than 99 finding","other":"more than 99 findings"},"status":{"working":"Agent working","waiting":"Waiting for you"},"moreTabs":"More tabs"},"startup":{"retryingReloadsTheEditorAnd":"Retrying reloads the editor and reads the project again.","theEditorCouldNotStart":"The editor could not start"},"toolbar":{"moreActions":"More actions","moreActionsHint":"More actions ({shortcut})","moreWaysTo":"More ways to {title}"},"tour":{"check":{"body":"The check runs as you draw. Check opens what it found: the first findings are in a card at the bottom right, and the full list is on the Problems tab.","title":"Check"},"deploy":{"body":"Deploy sends the diagram to your engine. {profiles}","title":"Deploy"},"done":"Done","label":"Tour of the editor","more":{"body":"Every action is in More, and {shortcut} opens the same list. Type to find one; the pin puts an action on the toolbar. The tour can be shown again from here.","title":"More"},"next":"Next","palette":{"body":"Pick a shape here and drop it on the canvas, or select a shape and use the pad that appears beside it.","title":"Palette"},"profileChoice":"The arrow next to it picks another profile, or opens the connection.","properties":{"body":"Select a shape and its properties open here: name, implementation, inputs and outputs. The sidebar has seven more tabs beside it, and the last button on the toolbar hides them all.","title":"Properties panel"},"singleProfile":"It opens the connection when the engine has none yet.","skip":"Skip","step":"Step {index} of {total}","tool-window":{"body":"The Penstock tool window is on the stripe at the side of the IDE. It lists the processes, workers, element templates, messages, decisions and forms of the whole project.","title":"Tool window"}},"tracePaths":{"closeTrace":"Close trace","followMessageFlows":"Follow message flows","tracePaths":"Trace paths","tracingBeforeAfter":"Tracing {label} - {before} before, {after} after"},"transactionBoundaries":{"transactionBoundaryTheEngineCommits":"Transaction boundary: the engine commits here"},"try":{"aggregated":", {aggregation} of the matches","aggregation":{"COUNT":"Count","MAX":"Largest","MEAN":"Average","MEDIAN":"Middle","MIN":"Smallest","MODE":"Most often","SUM":"Sum"},"policy":{"ANY":"Any: several rules may match if they give the same result","COLLECT":"Collect: every matching rule contributes","FIRST":"First: the first matching rule wins","OUTPUT ORDER":"Output order: every matching rule, by output priority","PRIORITY":"Priority: the matching rule with the highest output priority wins","RULE ORDER":"Rule order: every matching rule, in rule order","UNIQUE":"Unique: exactly one rule may match"},"shouldBe":"{name} should be {wanted}","aValueOf":"a {type}","value":"value","aNamePenstockCanRead":"a name Penstock can read","penstockCannotEvaluateHere":"{why}; Penstock cannot evaluate this cell here: {cells}","needsAValueFor":"needs a value for {names}","tableNeeds":"{table} {skipped}","tableNeedsAValueFor":"{table} needs a value for {names}","cannotEvaluateTheseCells":"Penstock cannot evaluate this cell here: {cells}","noRuleWasCompared":"{table}: {names}, so no rule was compared"},"unreadable":{"note":{"decision":"The file was not changed. Fix the XML in the Text tab and the decision opens again.","diagram":"The file was not changed. Fix the XML in the Text tab and the diagram opens again.","form":"The file was not changed. Fix the JSON in the Text tab and the form opens again."},"open":{"decision":"Open the XML","diagram":"Open the XML","form":"Open the file"},"title":{"decision":"This decision cannot be opened","diagram":"This diagram cannot be opened","form":"This form cannot be opened"},"atLine":"{reason} at line {line}.","reason":{"unclosedTag":"unclosed tag","closingTagMismatch":"closing tag mismatch","closeTag":"close tag","missingStartTag":"missing start tag","missingOpenTag":"missing open tag","unexpectedEndOfFile":"unexpected end of file","unclosedCdata":"unclosed cdata","unclosedComment":"unclosed comment","unclosedQuestion":"unclosed question","illegalFirstCharNodeName":"illegal first char nodeName","illegalValueOfXmlnsXml":"illegal value of xmlns:xml","invalidNodeName":"invalid nodeName","missingNamespaceOn":"missing namespace on <{element}>","unparsableContent":"unparsable content <{element}> detected","notYetDrawn":"element {element} referenced by {reference}#{property} not yet drawn","unparsableContentHinted":"unparsable content <{element}> detected; this may indicate an invalid BPMN 2.0 diagram file","noDiagramToDisplay":"the file has no diagram interchange, so there is nothing to draw","empty":"the file is empty"}},"tooltip":{"inputOutputParameters":"Input/Output Parameters","script":"Script","subprocess":"Subprocess","serviceTask":"Service Task","assignment":"Assignment","properties":"Properties","inTheProject":"In the project","in":"IN: {number}","out":"OUT: {number}","inOf":"IN ({number})","outOf":"OUT ({number})","elements":"Elements:","id":"ID:","notSet":"<not set>","implementation":"Implementation","class":"Class","delegate":"Delegate","assignee":"Assignee","groups":"Groups","users":"Users","itemsCount":"[{number} items]"},"dialog":{"exampleHint":"e.g. {example}"},"toolWindow":{"action":{"buyOrSignIn":"Buy or Sign In…","checkWorkersOn":"Check Workers on {where}","checkWorkersOnEngines":"Check Workers on the Engines","convertAll":"Convert All…","convertToCamunda8":"Convert to Camunda 8…","copyId":"Copy ID","createElementTemplate":"Create Element Template…","createExample":"Create the Example","createJobWorker":"Create Job Worker…","createNodeWorker":"Create Node Worker…","createPythonWorker":"Create Python Worker…","debugTests":"Debug Tests","deploy":"Deploy","findUsages":"Find Usages in Code","goToImplementation":"Go to Implementation","groupByFiles":"Group by Files","jobWorkerSkeleton":"Job Worker Skeleton…","migrationReport":"Migration Report","nodeWorkerSkeleton":"Node Worker Skeleton…","pythonWorkerSkeleton":"Python Worker Skeleton…","runAllProcessTests":"Run All Process Tests","runTests":"Run Tests","showFolders":"Show Folders"},"codeLinks":{"detail":"what runs each step, its tests and coverage: Penstock Pro","tooltip":"Penstock Pro links the diagrams with the code that runs them: workers, usages, variables and error codes across both, tests run from the diagram and coverage on it"},"count":{"files":{"one":"{count} file","other":"{count} files"},"tasks":{"one":"{count} task","other":"{count} tasks"},"templates":{"one":"{count} template","other":"{count} templates"},"tests":{"one":"{count} test","other":"{count} tests"},"scripts":{"one":"{count} script","other":"{count} scripts"}},"debug":{"activeAt":"Active: {name}","pausedAt":"Paused at {name}"},"detail":{"calledBy":"called by {name}","calls":"calls {name}","catches":"catches","catchesName":"catches {name}","caught":"caught {number}","caughtThrown":"caught {caught} · thrown {thrown}","checkedAt":"checked at {where}","converts":"converts","decision":"decision {id}","defaultProfile":"default","filesBlocked":"{number} blocked","filesNeedingWork":"{number} needs work","form":"form {id}","implementation":"implementation","inCode":"{number} in code","inForce":"in force","instance":"instance {instance}","lastDeploy":"last: {when}","listener":"{event} listener","neverSet":"never set in the project","neverThrown":"never thrown","noAddress":"no address","noImplementation":"no implementation","notCaught":"not caught","notInProject":"not in project","notInThisProject":"not in this project","nothingHandlesIt":"Nothing in this project's code handles it","onWhere":"On {where}, {text}","outOfStep":"{number} out of step","percentCovered":"{percent}% covered","readBy":"read by {number}","reads":"reads","readsInCode":"reads in code","setAs":"set as '{name}'?","setBy":"set by {number}","sets":"sets","setsInCode":"sets in code","test":"test","testGroup":"Tests","theEngine":"the engine","thrown":"thrown {number}","throws":"throws","throwsName":"throws {name}","toCheck":"{number} to check","toCheckOne":"to check","toDo":"{number} to do","toDoOne":"to do"},"examples":{"camunda7Detail":"a Java delegate and an external task worker","camunda7Label":"Camunda 7 order process","camunda8Detail":"a Spring Boot worker and a Node worker","camunda8Label":"Camunda 8 order process","cibSevenDetail":"a Java delegate and an external task worker, on CIB seven","cibSevenLabel":"CIB seven order process","detail":"a small project that runs, in this folder","operatonDetail":"a Java delegate and an external task worker, on Operaton","operatonLabel":"Operaton order process"},"kind":{"bean":"bean","javaClass":"class","jobType":"job type","topic":"topic"},"migrationStatus":{"blocked":"blocked","converts":"converts","needsWork":"needs work","ready":"ready"},"section":{"code":"Code","debug":"Debug","decisions":"Decisions","deployment":"Deployment","errors":"Errors","examples":"Start from an example","files":"Files","forms":"Forms","messages":"Messages","migration":"Migrate to Camunda 8","processes":"Processes","templates":"Element Templates","tests":"Tests","variables":"Variables","workers":"Workers","scripts":"Scripts"},"title":{"implementationsOf":"Implementations of {name}","theProcessTests":"the process tests"},"tooltip":{"becomes":"Becomes {what}.","errorNeverThrown":"An error event catches it and nothing throws it","errorUncaught":"The code throws it and no error event catches it","migration":"What does not carry over from Camunda 7 to Camunda {target}, file by file, and what the Java code becomes","templatesOutOfStep":"Some templates no longer say what the worker they were written from does","variableTypo":"Nothing sets '{name}', and '{typo}' is set: a typo in one of them?"},"unsupported":{"script":"Scripts open in an IDE tab. Here, edit the script in the element's Properties panel."},"script":{"missing":"That script is no longer in the diagram."}},"scenarios":{"aGateway":"a gateway","addedScenario":"Added scenario","barText":{"stepOf":"Step {at} of {total}","steps":"{count} steps"},"cannotFollow":"Penstock cannot follow process \\"{process}\\": it has no start event to begin at.","checksUnreachedElements":"This scenario checks elements that no way through the current diagram reaches.","chooseAProcess":"This diagram has several executable processes ({processes}): choose one.","coverage":{"capped":"The diagram has more ways through it than fit in {cap} scenarios: these scenarios together reach every flow and end.","doesNotFollow":"Penstock does not follow the steps inside \\"{name}\\": {why}","endEvents":"{unreached} of {total} end events","flows":"{unreached} of {total} flows","noScenarioReaches":"No scenario reaches {parts} (dashed on the diagram)"},"difference":{"againstSteps":"the steps of the plan","againstStepsAndVariables":"the steps of the plan and the variables asserted at its end","branch":"expected {expected}, took {took}","notSet":"not set","plannedButNotRun":"planned, but it did not run","ranButNotPlanned":"ran, but the scenario did not plan it","value":"{name}: expected {expected}, got {got}"},"dmn":{"cannotReadInput":"Penstock cannot read the input {inputs}","chooseVariablesFor":"choose variables for {names}","hitPolicy":{"outputOrder":"Output order","priority":"Priority"},"hitPolicyAny":"Hit policy Any, but rules {rules} match with different results","hitPolicyNeedsValues":"Hit policy {policy} needs output values to order by","hitPolicyUnique":"Hit policy Unique, but rules {first} and {last} both match: the engine raises an error","inputFits":"{input} {value} fits {cell}","noRuleMatches":"no rule matches these values","raisesAnError":"the engine raises an error, so it returns nothing","returnsOutputs":"it returns {outputs}","ruleMatches":"Rule {rule} matches","rulesMatch":"Rules {rules} match","tableBecause":"{table}: {because}","textAsNumber":"{name} is text {value}, but the rules compare it as a number","unnamedInput":"input {number}","unnamedOutput":"output {number}","why":"{which}; {returns}","whyWithReasons":"{which}: {reasons}; {returns}"},"doesNotReachAnEnd":"With these values the process does not reach an end.","duplicateDecision":"The decision \\"{id}\\" is in {used} and {other}: Penstock uses {used}","event":{"message":"{name} (message {message})","signal":"{name} (signal {signal})","timer":"{name} (timer {timer})"},"gatewayHint":{"cannotCheck":"Penstock cannot check {text} here","chooseVariables":"choose variables so that {text}","default":"the default: taken when no other condition is true","isFalse":"{text} is false{used}","isTrue":"{text} is true{used}","noCondition":"has no condition, so it is always taken","undecided":"{text} cannot be decided: {notes}; Camunda 8 can stop at an incident here"},"gatewayNeedsCondition":"Every flow out of an exclusive gateway needs a condition in Camunda 8, except the default flow. Give it a condition, or make it the default flow in the properties panel first.","issue":{"doesNotFollowInside":"Penstock does not follow the steps inside {label}: {why}","nothingCompletesTheStep":"The scenario has no instruction that completes this step","nothingMakesTheEventHappen":"The scenario has no instruction that makes this event happen","overlap":"Both {first} and {last} are true{values}: the engine takes the first in the file, {taken}, {never}","stuckAtGateway":"No condition is true and there is no default: the engine raises an incident here","timerNeverFires":"The scenario does not let this timer fire","valuesDoNotTake":"{hints}: these values do not take {names}"},"listSeparator":{"many":" or ","two":" or "},"namesNoProcess":"This scenario names no process, and this diagram has several executable processes ({processes}).","needsAnEngine":"Running scenarios needs an engine. Set up the deployment profile in force with an address, as for Deploy, and a local engine or one marked deployment.forTests: true.","noConditionAtGateway":"No condition is true at {where} and there is no default flow: the engine raises an incident there.","noExecutableProcess":"This diagram has no executable process.","notFollowed":{"adhoc":"an ad-hoc sub-process runs its steps in any order","callActivity":"a call activity runs another process"},"note":{"noOrder":"Penstock does not compare {kind} values with < or >","noTextOrder":"Penstock does not compare text with < or >","notBoolean":"{name} is {value}, not true or false","otherKind":"{name} is {value}, not {other}"},"processNotExecutable":"This scenario starts process \\"{process}\\", which is not executable in this diagram.","processNotInDiagram":"This scenario starts process \\"{process}\\", which is not in this diagram.","quoted":"\\"{name}\\"","slot":{"carriesNothing":"Carries no variables.","completesWithNothing":"Completes with no variables. Add the ones the form would send.","expectedAtTheEnd":"Variables that must be set at the end","itReturns":"It returns","messageCarries":"The message carries","noVariablesAdd":"No variables. Add the ones the gateways below need.","nothingChecked":"Nothing is checked about the variables. Add the ones that matter.","returnsNothingAdd":"Returns nothing. Add the variables it should set.","signalCarries":"The signal carries","startVariables":"Start variables","theyCompleteWith":"They complete it with","workerReturns":"The worker returns"},"step":{"callsTheProcess":"Runs the process {process} (the scenario checks this step, not what is inside)","code":"code","comesFirst":"; in this scenario {target} comes first","correlationKey":" (correlation key {key})","evaluatesTheDecision":"Evaluates the decision {decision}","failsWithError":"fails with error {code}","gatewaySendsOn":"The gateway sends the process on","labelCatchesIt":" and {label} catches it","labelSendsOn":"{label} sends the process on","messageArrives":"Message \\"{message}\\" arrives{key}","messageCaught":"Message \\"{message}\\" arrives while the task waits, and {label} catches it{key}","neverTakenMany":"so {names} are never taken","neverTakenOne":"so {name} is never taken","noBranch":"no branch","noConditionNoDefault":"No condition is true and there is no default flow","passesThrough":"Passes through {label}","personCompletes":"A person completes {label}{with}","processEndsAt":"The process ends at {label}","repeatsPerItem":" (once here; it repeats for each item)","returns":"returns {values}","returnsNothing":"returns nothing","runs":"Runs {label}","runsAndCompletes":"{label} runs {which} and completes","runsStepsFollow":"Runs {label}: its steps follow{repeats}","signalIsBroadcast":"Signal \\"{signal}\\" is broadcast{caught}","splitsInto":"Splits into {number} branches that run side by side","startsWithVariables":"Starts at {label} with these variables","startsWithoutVariables":"Starts at {label} with no variables","subProcessEndsAt":"The sub-process ends at {label}","subProcessStartsAt":"The sub-process starts at {label}","takesBecause":"Takes {names}: {because}","takesButValues":"Takes {names} for this scenario, but these values would take {other}","taskFailsWithError":"The task fails with error {code} and {label} catches it","timerFires":"{label} fires{when} - the scenario lets it fire at once","waitsForBranches":"Waits for {number} incoming branches, then goes on","waitsForFirst":"Waits for whichever comes first: {targets}","with":" with {values}","workerOf":"The worker of {label} ({kind} {type}) {what}"},"takesAnotherWay":"The values in this scenario take another way through the process than the elements it checks.","targetNeedsSignIn":"The engine at {url} needs a sign-in. Save the password in Deploy > Connection..., then run again.","theElement":"the {type}","theType":"the {type}","thisKindOfSubProcess":"this kind of sub-process","value":{"text":"text {value}"},"valueKind":{"boolean":"true or false","null":"null","number":"a number","other":"a {kind}","text":"text"},"workerKind":{"jobType":"job type","topic":"topic"}},"testCases":{"count":{"instances":{"one":"1 {state} instance","other":"{count} {state} instances"},"testBuilds":{"one":"1 test build","other":"{count} test builds"}},"elementIdMismatch":"{label} is the element {actual}, expected {expected}","engines":{"activityNotRunning":"the activity instance {element} is not running","answered":"{method} {path} answered {status}{reason}","deployed":"deployed","errorThrownByTheTestCase":"{code} thrown by the test case","reason":": {reason}","refusedTheBuild":"The engine refused the test build ({status}): {reason}"},"failingOnPurpose":"failing as the test case asks ({tried} of {total})","forOtherEngines":"this test case is for {engines}","leftovers":{"kept":"Could not remove {builds} left by an interrupted run; the next run tries again","removed":"Removed {builds} left by an interrupted run"},"listSeparator":" and ","log":{"broadcast":"Broadcast {signal}","completed":"Completed {label}","correlated":"Correlated {message}","couldNotCancel":"Could not cancel the instance: {reason}","couldNotReadTheTrace":"Could not read the trace: {reason}","couldNotRemoveTheBuild":"Could not remove the test build: {reason}","deployedTheBuild":"Deployed the test build","failedOnPurpose":"{label}: failed on purpose, {tried} of {total}","mockCompleted":"{label}: the mock completed the job","mockThrew":"{label}: the mock threw {code}","noElementWithJobType":"No element of the diagram has the job type {jobType}, so its mock answers nothing","startedInstance":"Started instance {instance}"},"mismatch":{"activeExactly":"active: {active}, expected exactly {expected}","completedInOrder":"completed in the order {order}, expected {expected}","hasNotCompleted":"has not completed","hasNotFailed":"{label} has not failed{where}","incidentExpected":"expected an open incident, there is none","incidentUnexpected":"expected no open incident, there is one at {elements}","instanceCount":"{label} has {count}, expected {expected}{where}","instanceState":"expected the instance to be {expected}, it is {actual}{where}","isActive":"is active","isNotActive":"is not active","notWaitingForAUser":"{label} is not waiting for a user{where}","userTaskNotCompleted":"{label} has not completed{where}","variableNotSet":"variable {name} is not set","variableValue":"{name} is {actual}, expected {expected}","wasNotCanceled":"{label} was not canceled{where}","wasNotReached":"{label} was not reached{where}","wasNotTerminated":"was not terminated","wasReached":"was reached"},"needsCreateProcessInstance":"a test case starts with CREATE_PROCESS_INSTANCE, after its mocks","noElementNamed":"no element named {name} in the diagram","notActiveSoNoVariables":"{label} is not active, so its variables cannot be set","notInDiagram":{"one":"the test case expects {ids}, which is not in this diagram","other":"the test case expects {ids}, which are not in this diagram"},"nothing":"nothing","numberedCaseName":"{name} ({seen})","one":"one","penstockFailed":"Penstock failed: {reason}","problem":{"behaviourNeedsErrorCode":"the behaviour of {element} needs errorCode","behaviourNeedsThen":"the behaviour of {element} needs then: complete, error, fire or hold","behavioursNotAnObject":"x-penstock.behaviours is not an object","blockNotAnObject":"x-penstock is not an object","caseHasNoInstructions":"test case \\"{name}\\" has no instructions","caseHasNoName":"test case {number} has no name","enginesList":"x-penstock.engines is a list of {engines}","fileLeftAsItIs":"the file is left as it is: {problems}","fileNotValidJson":"the file is not valid JSON, so it is left as it is: fix it first","hasNoInstructions":"it has no instructions","hasNoName":"it has no name","inCase":"test case \\"{name}\\": {problem}","instructionNeeds":"instruction {number} ({type}) needs {property}","instructionNotAllowed":"instruction {number} ({type}) has {property}, which the Camunda test-case schema does not allow","noTestCasesList":"there is no testCases list","notAnObject":"it is not an object","notJson":"not JSON: {reason}","shapelessInstruction":"instruction {number} is not an object with a type"},"safety":{"refusal":"Penstock answers jobs only on an engine meant for tests, and {where} is not marked as one. Mark the profile with deployment.forTests: true in penstock.yaml, or run against a local engine.","thisEngine":"this engine"},"scenarioName":{"boundaryFires":"{boundary} fires","way":"{decision}: {way}"},"startsOnAnEvent":"This process starts on {kind}, which Penstock cannot yet start a scenario from.","suites":{"cannotBeRead":"{suite} cannot be read","cannotRun":"cannot run","noDiagram":"no diagram belongs to {suite}","noEngineToRunOn":"{diagram} has no engine to run on: set deployment.url in penstock.yaml","traceOf":"trace of {name}: {where}","unlicensed":"Process test runs: part of Penstock Pro","unnamedCase":"test case {number}"},"toFillIn":"To fill in: {unresolved}","trace":{"couldNotRead":"Could not read {path}: the engine answered {status}{reason}","reason":": {reason}"},"unknownName":"?","unresolved":{"chooseVariables":"choose variables so that {condition} holds","noConditionForTheWay":"\\"{decision}\\" has no condition for \\"{way}\\": give its flows conditions, or this test cannot choose the way","runsOncePerItem":"{name} runs once per item: repeat its COMPLETE_JOB for each one"},"unrunnable":{"exampleData":"{type} cannot use example data yet","foreignProcess":"{type} looks at the process {foreign}, and Penstock follows only the instance of {root}","notYet":"{type} is not something Penstock can run yet","oneInstancePerTestCase":"Penstock runs one instance per test case","runtimeInstructions":"{type} cannot run runtime instructions yet","shapelessInstruction":"instruction {number} is not an object with a type","unknown":"{type} is not something Penstock can run","userTaskFields":"ASSERT_USER_TASK cannot check {fields} yet"},"waiting":{"engineDidNotRun":"the engine did not run {label} within {seconds}","instanceNotShown":"the engine did not show the instance within {seconds}","jobNotHandedOut":"the engine did not hand out the job of {label} within {seconds}","messageFoundNothing":"the message {message} found nothing waiting for it within {seconds}","noJobAt":"no job at {where} within {seconds}","noUserTaskAt":"no user task {where} within {seconds}","noWorkerTook":"no worker took {type} within {seconds}","timerDidNotFire":"the timer {label} did not fire within {seconds}"},"whereAt":" at {elements}","kind":{"error":"an error event","escalation":"an escalation event","conditional":"a conditional event"},"edit":{"nameEmpty":"The name should not be empty.","nameTaken":"A scenario named {name} is already in this file, so the name should be different.","notFound":"No scenario named {name} is in this file.","copyName":"{name} copy","copyNumbered":"{name} copy {number}"}},"features":{"ai-chat":{"title":"AI chat","gives":"shows the changes an agent that speaks the Agent Client Protocol proposes to your diagrams on the canvas, for you to accept or reject"},"alreadyBought":"if you have already bought it","auto-layout":{"title":"Auto layout","gives":"turns a tangled diagram into a readable left-to-right flow"},"baseline":{"title":"Check baselines","gives":"fails a build only on problems that are new"},"bot":{"title":"The review bot","gives":"answers /penstock in pull and merge requests with pictures"},"buyIt":"buy it; the licence arrives on this machine by itself","changes-pictures":{"title":"Pictures of changes","gives":"draws what changed, coloured, next to what it was"},"ci-annotations":{"title":"Findings in the code review","gives":"shows the check findings as SARIF or annotations on the changed lines"},"code-links":{"title":"Diagram and code checks","gives":"finds tasks whose job type, topic, class or bean has nothing in the code to run it, and workers no diagram uses"},"docs":{"title":"Process documentation","gives":"writes a page for every process with its picture, steps, decisions, events and data"},"edit":{"title":"Editing from the command line","gives":"changes a diagram the way the editor would, and refuses an edit that breaks it"},"education":"Free Pro for students, teachers and open-source maintainers: apply at {url}","element-templates":{"title":"Element templates","gives":"writes an element template for every job worker the project has, so the Camunda palette fills itself in"},"flow-analysis":{"title":"Flow analysis","gives":"finds deadlocks, branches that run twice and steps that can never run, with the path that leads there"},"giveThePipelineAKey":"Give this pipeline a {tier} key in the PENSTOCK_LICENSE secret.","inAPipeline":" in a pipeline","migration":{"title":"Camunda 7 to Camunda 8 conversion","gives":"converts a diagram for Camunda 8, marks what it could not convert on the element, and writes job workers from the code of your delegates"},"partOf":"{title}{where}: part of Penstock {tier}. {gives}.","paths":{"title":"Process scenarios","gives":"lists every distinct way through a process with the conditions it takes, ready to use as a test plan"},"pr-report":{"title":"Pull request reports","gives":"writes one comment with the check, the diff and pictures of every changed diagram"},"test-case-generation":{"title":"Test case files","gives":"writes the test-case files for every way through each process, which scenarios run then plays back against an engine"},"test-runs":{"title":"Process test runs","gives":"runs a process step by step against a local engine, with mocks, and shows what every step received and changed"},"tests":{"title":"Process tests","gives":"writes a JUnit test for every way through a process, with variables that take it there, for Camunda Process Test or camunda-bpm-assert"},"theKeyHolds":"PENSTOCK_LICENSE holds a {have} licence; this needs {need}.","trialHasEnded":"Your {days}-day trial has ended.","variable-checks":{"title":"Variable checks","gives":"finds the fields and names a step reads that the code that sets them lacks"}},"license":{"activeOnThisMachine":"active on this machine","ago":{"days":"{count} days ago","months":"{count} months ago","today":"today","yesterday":"yesterday"},"checkoutNotHttps":"the checkout is not on https, so it is not opened: {protocol}","checkoutNotOpened":"the checkout could not be opened","checkoutNotOpenedStatus":"the checkout could not be opened ({status})","clockSetBack":"the system clock is set back below a time this machine already saw; set it right","codeWrongOrExpired":"That code is wrong or has expired. Ask for a new one.","couldNotBeReachedForATrial":"the licence service could not be reached to start the Pro trial","couldNotBeReachedForTheKey":"the licence service could not be reached to check PENSTOCK_LICENSE","count":{"days":{"one":"{count} day","other":"{count} days"},"moreDays":{"one":"{count} more day","other":"{count} more days"}},"fromTheEnvironmentKey":"from PENSTOCK_LICENSE","needsOneOnlineCheck":"this licence needs one online check to be renewed","noCheckoutYet":"there is no checkout for {tier} yet","noLicenceInCi":"no licence; set PENSTOCK_LICENSE for this pipeline","noStableMachineId":"this machine has no operating-system machine id, so it cannot start the Pro trial; activate a licence instead","notAValidKey":"PENSTOCK_LICENSE is not a valid Penstock key","notAnEmailAddress":"That does not look like an e-mail address.","notRenewed":"the licence has not been renewed for {days} days; connect once to keep it","offlineForAWhile":"offline; works {days} before it needs to check in","reason":{"cannotBeRead":"the licence cannot be read","datedInTheFuture":"the licence is dated in the future; check the clock","notSigned":"the licence is not signed by Penstock","otherMachine":"this licence belongs to another machine"},"refusedToStartATrial":"the licence service refused to start a trial","seatsFullHint":" Sign in with \`penstock license login\` to see the machines using it and free one.","serviceAnswered":"the licence service answered {status}","theLicenceWasRefused":"The licence was refused.","trialDaysLeft":"Pro trial, {days} left","trialHasEnded":"the Pro trial has ended","unusable":"The licence service answered with a licence that cannot be used: {reason}."},"output":{"accepted":"{count} accepted","alreadyThereAndKept":", {count} already there and kept","authHint":{"basic":"Check deployment.auth.username in penstock.local.yaml and PENSTOCK_PASSWORD.","oauth":"Check deployment.auth.clientId and deployment.auth.tokenUrl in penstock.local.yaml and PENSTOCK_CLIENT_SECRET.","setIt":"Set deployment.auth in penstock.local.yaml: type basic with a username and PENSTOCK_PASSWORD, or type oauth with PENSTOCK_CLIENT_SECRET; PENSTOCK_TOKEN sends a bearer token as it is."},"boundaryFires":"{decision}: {boundary} fires","classNeedsDependency":"The class needs this test dependency{where}:","complete":"complete","confirmInTerminal":"Run test cases on {url}? They deploy a test build there, start instances and answer the jobs they mock. [y/N] ","couldNotRememberBuilds":"Penstock could not remember its test builds in {file}:","count":{"class":{"one":"{count} class","other":"{count} classes"},"diagram":{"one":"{count} diagram","other":"{count} diagrams"},"file":{"one":"{count} file","other":"{count} files"},"finding":{"one":"{count} finding","other":"{count} findings"},"lostConnection":{"one":"{count} lost connection","other":"{count} lost connections"},"reference":{"one":"{count} reference","other":"{count} references"},"scenario":{"one":"{count} scenario","other":"{count} scenarios"},"sourceFile":{"one":"{count} source file","other":"{count} source files"},"test":{"one":"{count} test","other":"{count} tests"},"way":{"one":"{count} way","other":"{count} ways"},"worker":{"one":"{count} worker","other":"{count} workers"}},"decisionWay":"{decision}: {way}","end":"end","everyRuleHasAPage":"Every rule has a page with why it matters and how to fix it: {url}","everyTaskHasCode":"Every task the diagrams hand to code has something in the code to run it.","firesOn":"{boundary} fires on {decision}","fixedSinceTheBaseline":"{count} fixed since the baseline","flowAnalysisLeftOut":"Flow analysis was left out: it is part of Penstock Pro, and Team in a pipeline. penstock license buy","fromDiagramsToCode":"{sources}, {diagrams}, {references} from diagrams to code","inFile":" in {file}","kind":{"decision":"decision","form":"form","notBpmn":"file that is not BPMN"},"layoutAlwaysReflows":"Auto layout always reflows, so a difference here is expected; pass --write to take it.","newCount":"{count} new","newFindings":"{count} new","noBpmnFiles":"No .bpmn files found.","noChange":"no change","noExecutableProcessWithAWay":"no executable process with a way through it that starts at a plain start event","noLostConnections":"no lost connections","noProcessWithAPath":"No process with a path to an end was found.","noSteps":"no steps","noSuchPath":"There is no path {target}","isAFolder":"{file} is a folder, not a file.","folderTooLarge":"This folder is too large to be a project; give the folder of the diagrams","noTestCaseFile":"there is no test-case file; penstock scenarios generate writes {file}","noTestCaseFiles":"No test-case files found. penstock scenarios generate writes them from the ways through each process.","noTestCaseFilesFirst":"No test-case files found. penstock scenarios generate writes them first.","notABpmnDiagram":"{file} is a {kind}, not a BPMN diagram, so there is nothing to show.","notConfirmedForTests":"Not run: the engine was not confirmed for tests","notMarkedForTests":"{url} is not marked deployment.forTests: run in a terminal to confirm it once, or mark the profile with deployment.forTests: true","notValid":"{file} is not valid {what}: {reason}","notValidFile":"This file is not valid {what}: {reason}","nothingNew":"nothing new","nothingToDeploy":"Nothing to deploy: no file has a deployment.url.","penstockOnlyCases":" test cases that need Penstock and run differently there ({count}): {names}","penstockBehaviourHints":"the steps carry Penstock behaviour hints, which Camunda Process Test does not read","whyItMatters":"Why it matters. {why}","howToFixIt":"How to fix it. {fix}","see":"See {docs}","pipelineCannotConfirm":"{url} is not marked deployment.forTests, and a pipeline cannot confirm it: mark the profile with deployment.forTests: true","ready":"ready","reflowedLayout":"reflowed layout","rulesCouldNotRun":"The rules could not run: {reason}","unresolvedReference":"{id} points at {value} as its {property}, and the file has no element with that id.","runUpdateBaseline":"Run check --update-baseline to record what is fixed.","stopped":"Stopped: {totals}","tasksPointAtNothing":"Tasks that point at code that is not there: {count}.","testsNeedDependencies":"The tests need these test dependencies{where}:","testsSummary":"{tests} in {classes}, one per way through each process.","theConnectionFromTo":"the connection from {from} to {to}","theFileIsEmpty":"This file is empty","theKind":"the {kind}","toFillIn":"{count} to fill in","toFillInPrefix":"To fill in","totals":"{passed} passed, {failed} failed, {skipped} skipped in {files}","unresolvedWorker":"note {workers} with a type written as an expression that could not be read, starting at {where}","when":" when {condition}","wouldReflowLayout":"would reflow layout (pass --write to save)","wroteFindings":"wrote {file} with {findings}","wroteTestEngine":"wrote {file} an in-memory test engine that resolves mocked delegate beans","wroteTheBridge":"wrote {file} runs {files} under Camunda Process Test","classNotInProject":"class {value} is not in the project","listenerName":"{value} listener","runsSteps":"- [ ] runs {steps}","wroteScenarios":"wrote {file} {scenarios}{toFillIn}","andToFillIn":{"one":", {count} to fill in","other":", {count} to fill in"},"couldNotBePlanned":", {ways} could not be planned: {problem}","status":{"ok":"ok","pass":"pass","fail":"fail","note":"note","skip":"skip","same":"same","change":"change","wrote":"wrote","sent":"sent","updated":"updated","added":"added","removed":"removed","changed":"changed","kept":"kept","wouldChange":"would change","wouldRewrite":"would rewrite","wouldSend":"would send","error":"error","warning":"warning","info":"info"},"noDeploymentUrl":"no deployment.url in its configuration","authNote":{"passwordNotRead":"deployment.auth.password is not read: a password comes from PENSTOCK_PASSWORD or the IDE password safe, never from a file"},"authProblem":{"basicWithoutUsername":"deployment.auth.type is basic, but deployment.auth.username is not set","basicWithoutPassword":"deployment.auth.type is basic, but there is no password: set PENSTOCK_PASSWORD (the IDE keeps it in its password safe)","oauthWithoutKeys":"deployment.auth.type is oauth, but it needs deployment.auth.tokenUrl, deployment.auth.clientId and PENSTOCK_CLIENT_SECRET","oauthFailed":"the token endpoint answered {status}: {body}","oauthNeedsKeys":"oauth needs deployment.auth.tokenUrl, deployment.auth.clientId and PENSTOCK_CLIENT_SECRET","oauthNoToken":"the token endpoint's answer has no access_token","oauthUnreachable":"the token endpoint at {url} did not answer: {reason}"},"unreadableBpmn":"this file is not valid BPMN XML","noWorkerForJobType":"no worker handles job type \\"{value}\\"","noWorkerForTopic":"no external task worker subscribes to topic \\"{value}\\"","noBeanNamed":"no Spring bean is named \\"{value}\\"","callsNoProjectProcess":"calls process \\"{value}\\", which no diagram in the project defines","callsNoProjectDecision":"calls decision \\"{value}\\", which no .dmn file in the project defines","showsNoProjectForm":"shows form \\"{value}\\", which no .form file in the project defines","showsNoEmbeddedForm":"shows embedded form \\"{value}\\", which the diagram does not contain","jobTypeNoDiagramUses":"worker for job type \\"{value}\\" is not used by any diagram","topicNoDiagramUses":"subscription to topic \\"{value}\\" is not used by any diagram","noJUnitBridge":"{engine} has no JUnit bridge yet: point a profile at your application's engine-rest and run penstock scenarios run","casesFolder":"Camunda Process Test reads test cases from src/test/resources/test-cases; move the file there","couldNotBePainted":"the diagram could not be painted","credentialsRefused":"It did not accept the credentials. {hint}"},"templates":{"drift":{"differentType":"has {name} as a different type","noLongerRead":"asks for {name}, which the worker no longer reads","notRead":"has {name}, which the worker no longer reads"},"workerDescription":"The job worker {worker} in {where}.","workerSets":" Sets {names}.","workerInPackage":"{class} in {package}","writtenByPenstock":"Written by Penstock from the code.","rejected":{"line":"The template {name} ({id}) is not loaded: {reason}","notAnObject":"it should be a JSON object","schemaMissing":"it should have a $schema attribute that names the Camunda 8 element template schema","schemaOther":"its $schema attribute should name the Camunda 8 element template schema","elementType":"its elementType should be an object whose value names the BPMN element, such as bpmn:ServiceTask","appliesTo":"its appliesTo should be a list of BPMN element types, such as bpmn:Task","unexplained":"the Camunda modeler does not accept it and gives no reason","anonymous":"A template is not loaded: {reason}"}},"connectors":{"archiveDamaged":"The release archive is damaged or incomplete","archiveHasNoTemplates":"The release archive holds no element templates","archiveTooLarge":"The release archive unpacks to more than 512 MB","couldNotBeDownloaded":"The connector templates could not be downloaded","githubAnswered":"GitHub answered HTTP {status}","githubRefused":"GitHub refused the request (HTTP {status}), probably its rate limit; try again later","responseTooLarge":"The response is larger than 64 MB"},"evaluate":{"camunda7Cannot":"Camunda 7 has no way to evaluate an expression. It needs Camunda 8.9 or newer.","expressionNotEvaluated":"The expression could not be evaluated","instancesNotReadable":"The instances of {process} could not be read","needs810":"Camunda 8.10 or newer","needs89":"Camunda 8.9 or newer","processDefinitionNotReadable":"The process definition {process} could not be read","variableNamesNotReadable":"The variable names the engine has seen could not be read","variableNotReadable":"The variable {name} could not be read","variablesNotReadable":"The variables of {instance} could not be read","credentialsMayNotAllow":"the profile's credentials may not allow it","engineAnswered":"{what}: the engine answered {status}","needsThatVersion":"{what} needs Camunda {version} or newer."},"findings":{"because":": {reason}","notValid":"The file is not valid {what}{reason}","nothingInIt":"The file has nothing in it, so there is no diagram to open.","soItCannotBeOpened":", so it cannot be opened or checked.","theFileCannotBeRead":"The file cannot be read","theFileIsEmpty":"The file is empty"},"sections":{"hitPolicy":{"any":"Any: several rules may match if they give the same result","collect":"Collect: every matching rule contributes","first":"First: the first matching rule wins","outputOrder":"Output order: every matching rule, by output priority","priority":"Priority: the matching rule with the highest output priority wins","ruleOrder":"Rule order: every matching rule, in rule order","unique":"Unique: exactly one rule may match"},"hitPolicyText":"Hit policy {policy}{aggregation}.","resultsCombinedBy":", results combined by {how}","whenInput":"When {input}","thenOutput":"Then {output}","inputOf":"input {number}","outputOf":"output {number}","optionsFrom":"from {source}","fieldTable":"Fields","field":"Field","kind":"Kind","writes":"Writes","required":"Required","options":"Options","hiddenWhen":"Hidden when","yes":"yes","notes":"Notes","result":"Result","expression":"Expression","logic":"Logic","noLogic":"none","decision":"Decision","needs":"Needs","formKind":{"textfield":"text field","textarea":"text area","datetime":"date and time","taglist":"tag list","filepicker":"file picker"},"form":"Form"},"xml":{"emptyOrNotClosed":"This is not well-formed XML: the document is empty or not closed","notWellFormed":"This is not well-formed XML: {reason}"},"import":{"failure":{"nothingToImport":"There is nothing in this {format} file that has a BPMN meaning, so there is nothing to import.","bizagiPackage":"Bizagi .bpm files are a package in Bizagi Modeler's own format, which Penstock cannot read. In Bizagi Modeler, export the process as BPMN 2.0 (a .bpmn file) and import that instead.","visioBinary":"{name} is in the old binary Visio format (.vsd), which Penstock cannot read. In Visio, use File > Save As and choose Visio Drawing (.vsdx), then import that.","xpdl":"This is XPDL, which does not carry the diagram in a form Penstock can read. In the tool it came from, export the process as BPMN 2.0 (.bpmn) and import that.","unknownFormat":"{name} is not a diagram Penstock can import. It reads draw.io, Visio, Signavio and Bizagi files.","notBpmnXml":"This XML is not BPMN 2.0.","noPositions":"This BPMN file has no diagram positions (no BPMNDiagram), so there is nothing to draw. Open it in a modeler that lays it out, or draw it in Penstock.","entryTooLarge":"{name} is too large to import.","archiveTooLarge":"The archive is too large to import.","notZip":"The file is not a readable ZIP archive.","pageTooLarge":"This draw.io page is too large to import.","pageEmpty":"This draw.io page has no content.","compressedPage":"The compressed draw.io page could not be read. In draw.io, use File > Properties > Compressed off, or File > Export as > XML, and import that.","pageNoCells":"This draw.io page has no cells.","noPages":"This draw.io file has no pages.","notVisio":"This archive is not a Visio drawing: it has no visio/document.xml. Only .vsdx files are read.","noVisioPages":"This Visio drawing has no pages.","noShapes":"This Visio drawing has no shapes."},"note":{"packageImported":"The BPMN file {name} inside the package was imported.","vendorData":"{vendor} data was not carried over, since BPMN 2.0 has no place for it ({total}): {list}.","unknownEvent":"The event symbol \\"{symbol}\\" has no BPMN event type, so the event has no trigger.","diamond":"{shape} is a diamond, so it became an exclusive gateway.","freeText":"{shape} is free text, so it became a text annotation.","noteShape":"{shape} is a note, so it became a text annotation.","rectangle":"{shape} is a plain rectangle, so it became a task.","anUnlabelledShape":"An unlabelled shape","unmappedLabelled":"\\"{label}\\" ({shape}) has no BPMN meaning, so it was not imported.","unlabelledShape":{"one":"An unlabelled {shape} shape has no BPMN meaning, so it was not imported.","other":"{count} unlabelled {shape} shapes have no BPMN meaning, so they were not imported."},"untitled":"untitled","aStartEvent":"a start event","anEndEvent":"an end event","anIntermediateEvent":"an intermediate event","circle":"{shape} is a circle, so it became {kind}.","anUnlabelledCircle":"An unlabelled circle","aShape":"a shape","unlabelledMaster":"An unlabelled {shape} has no BPMN meaning, so it was not imported.","shape":"shape","laneAsPool":"The lane {node} was not inside a pool, so it became a pool.","boundaryEvent":"The boundary event {node} was not on any activity, so it became an intermediate catch event.","flowNotAttached":"{flow} is not attached to two shapes, so it was left out.","flowOnLane":"{flow} is attached to a lane, which a BPMN flow cannot be, so it was left out.","dataAssociation":"A connector between a data element and {node} became a plain association, because that element cannot read or write data.","flowToPool":"{flow} ends at a pool, so it became a message flow.","flowAcrossPools":"{flow} goes from {from} to {to} in another pool, so it became a message flow.","messageInsidePool":"{flow} is a message flow inside one pool, which BPMN does not allow, so it became an association.","flowAcrossSubProcess":"{flow} crosses the border of a sub-process, which a sequence flow cannot, so it became an association.","multipleEvent":"{node} is a {kind} event; BPMN needs to know which triggers, so it is a plain event.","dataObjects":{"one":"{count} data object became data object references, which is how the editor draws them.","other":"{count} data objects became data object references, which is how the editor draws them."},"otherPage":{"one":"The page \\"{page}\\" ({shapes} shape) was not imported, only the first page with content is.","other":"The page \\"{page}\\" ({shapes} shapes) was not imported, only the first page with content is."},"otherVisioPage":{"one":"The page \\"{page}\\" ({shapes} shape) was not imported, only the first page with shapes is.","other":"The page \\"{page}\\" ({shapes} shapes) was not imported, only the first page with shapes is."},"customData":{"one":"Custom data on {count} shape was not carried over: {keys}.","other":"Custom data on {count} shapes was not carried over: {keys}."},"genericConnectors":{"one":"{count} connector not taken from the BPMN stencil was read as sequence flows.","other":"{count} connectors not taken from the BPMN stencil were read as sequence flows."},"rotated":{"one":"{count} shape is rotated; the rotation was not carried over.","other":"{count} shapes are rotated; the rotation was not carried over."},"outsidePools":{"one":"{count} element outside every pool went into the nearest pool: {names}.","other":"{count} elements outside every pool went into the nearest pool: {names}."},"unnamed":"an unnamed {kind}"},"summary":"Imported from {format}: {counts}.","noteSection":"{title} ({count}):","noteHeading":"{count} {title}","importedName":"imported","noteTitle":{"unmapped":"Not imported","assumed":"Guessed","lost":"Not carried over"},"count":{"element":{"one":"{count} element","other":"{count} elements"},"flow":{"one":"{count} flow","other":"{count} flows"},"pool":{"one":"{count} pool","other":"{count} pools"},"lane":{"one":"{count} lane","other":"{count} lanes"}},"cellOf":"cell {number}","addedAs":"added as {cell}","theRule":"the rule","removed":"removed","unnamedConnector":"an unnamed connector","parallelMultiple":"parallel multiple"},"rules":{"families":{"bpmnlint":{"title":"Modelling rules","about":"The bpmnlint rules that run on every BPMN diagram, in the editor and in \`penstock check\`. Which ones run, and how strictly, is set in \`.bpmnlintrc\`."},"compat":{"title":"Engine compatibility","about":"What the engine the diagram is written for cannot run: a missing job type, an element or an expression the chosen version does not support. They run on Camunda 7 and Camunda 8 diagrams, in the editor and in \`penstock check\`, against the version in the file's \`modeler:executionPlatformVersion\`, or the newest one without it. Operaton and CIB seven are checked as Camunda 7. A finding is called \`compat/<rule>\` here and in \`penstock check\`; a rule is turned off in \`.bpmnlintrc\` as \`camunda-compat/<rule>\` or, the same, \`compat/<rule>\`."},"drawing":{"title":"Drawing","about":"What is wrong with how a diagram is drawn, found by the check card in the editor and by the first section of \`penstock check\`. The errors break the picture; the others make it harder to read."},"flow":{"title":"Process flow","about":"What the way a process is wired can do when it runs. Part of Penstock Pro, and Team in a pipeline."},"table":{"title":"Decision tables","about":"What a DMN decision table does with the inputs it can be given. Part of Penstock Pro, and Team in a pipeline."},"form":{"title":"Forms","about":"What a Camunda Form does with what the user enters. Part of Penstock Pro, and Team in a pipeline."},"code":{"title":"Diagrams and code","about":"Where a diagram and the code that runs it disagree: a step nothing implements, a worker no diagram uses, a variable read under another name than it is set."},"convention":{"title":"Modelling conventions","about":"Conventions the editor applies while modelling, so a team does not have to remember them. They are set under \`conventions\` in \`penstock.yaml\`."}},"bpmnlint/ad-hoc-sub-process":{"title":"Ad-hoc sub-process with a start or end event","why":"An ad-hoc sub-process has no defined start or end: its activities run when someone chooses, so an event marking either is meaningless.","fix":"Delete the start and end events inside the ad-hoc sub-process."},"bpmnlint/conditional-event":{"title":"Conditional event without a condition","why":"A conditional event with no condition can never fire.","fix":"Give the event a condition expression."},"bpmnlint/conditional-flows":{"title":"Conditional flow without a condition","why":"A flow that leaves a task or event marked as conditional but has no condition either always or never fires; the engine cannot tell.","fix":"Give the flow a condition, or make it an ordinary flow."},"bpmnlint/end-event-required":{"title":"Process or sub-process without an end event","why":"Without an end event the reader cannot see where the process ends, and some engines refuse to run it.","fix":"Add an end event at the end of every path."},"bpmnlint/event-based-gateway":{"title":"Event-based gateway used wrongly","why":"An event-based gateway waits for the first of several events, so it needs at least two ways out and none of them may be conditional.","fix":"Give the gateway two or more outgoing flows to events, and remove their conditions."},"bpmnlint/event-sub-process-typed-start-event":{"title":"Event sub-process start without an event","why":"An event sub-process starts when its event happens, so a blank start event says nothing about when.","fix":"Give the start event a type: message, timer, error, signal or another."},"bpmnlint/fake-join":{"title":"Several flows enter a task that does not join them","why":"Only a gateway joins flows; several flows into a task start the task once for each token, which is rarely what the drawing suggests.","fix":"Join the flows with a gateway of the matching kind before the task."},"bpmnlint/global":{"title":"Global element without a name, unused or not unique","why":"A message, signal or error that is unnamed, never used or named twice cannot be told apart from another.","fix":"Name the element, use it, or delete it."},"bpmnlint/label-required":{"title":"Element without a label","why":"An unlabelled task, event or gateway tells the reader nothing about what happens there.","fix":"Give the element a name."},"bpmnlint/link-event":{"title":"Link event without a name or without its counterpart","why":"A link throw event jumps to the link catch event of the same name in the same scope, so both need that name.","fix":"Name the link events and make each throw match one catch."},"bpmnlint/no-bpmndi":{"title":"Element without a place in the diagram","why":"An element that is in the process but not on the canvas cannot be seen, selected or fixed in the editor.","fix":"Add the element to the diagram, or delete it from the file."},"bpmnlint/no-complex-gateway":{"title":"Complex gateway","why":"A complex gateway holds logic that is written nowhere a reader can see, and few engines support it.","fix":"Replace it with exclusive, inclusive or parallel gateways."},"bpmnlint/no-disconnected":{"title":"Element with no incoming or outgoing flow","why":"An element nothing leads to or from is either forgotten or dead.","fix":"Connect the element to the flow, or delete it."},"bpmnlint/no-duplicate-sequence-flows":{"title":"Two identical flows between the same elements","why":"Two flows from the same source to the same target either do the same twice or say nothing the first one did not.","fix":"Delete the duplicate flow."},"bpmnlint/no-gateway-join-fork":{"title":"Gateway that joins and forks","why":"A gateway that joins flows and forks again in one shape is read as one of the two, and the other is missed.","fix":"Split it into one gateway that joins and one that forks."},"bpmnlint/no-implicit-end":{"title":"Path that ends without an end event","why":"A path that just stops leaves the reader to guess whether it was meant to.","fix":"Add an end event after the last element of the path."},"bpmnlint/no-implicit-split":{"title":"Task that forks the flow without a gateway","why":"Several flows out of a task start all of them at once, or none of them, depending on conditions nobody can see.","fix":"Add a gateway after the task and fork there."},"bpmnlint/no-implicit-start":{"title":"Path that starts without a start event","why":"An element with no incoming flow starts on its own, which is easy to mistake for a forgotten connection.","fix":"Add a start event before the element, or connect it to the path it belongs to."},"bpmnlint/no-inclusive-gateway":{"title":"Inclusive gateway","why":"An inclusive gateway can take any number of ways out, which is hard to read and easy to get wrong.","fix":"Use exclusive or parallel gateways, or keep it and check the conditions with care."},"bpmnlint/no-overlapping-elements":{"title":"Element overlaps another or leaves its parent","why":"Elements drawn over each other hide one another.","fix":"Move the elements apart, or lay the diagram out again."},"bpmnlint/single-blank-start-event":{"title":"More than one blank start event","why":"Two blank start events mean two ways to start the same process with no way to tell them apart.","fix":"Keep one blank start event; give the others a type, or split the process."},"bpmnlint/single-event-definition":{"title":"Event with several event definitions","why":"An event with several definitions is a multiple event, which few engines support and few readers expect.","fix":"Keep one event definition, or use one event for each."},"bpmnlint/standard-size":{"title":"Element not in its standard size","why":"Elements of the standard size make a diagram look even.","fix":"Resize the element to the standard size of its type."},"bpmnlint/start-event-required":{"title":"Process or sub-process without a start event","why":"Without a start event there is no way to start the process.","fix":"Add a start event."},"bpmnlint/sub-process-blank-start-event":{"title":"Sub-process start event with a type","why":"A sub-process starts when the flow reaches it, so its start event has no event to wait for.","fix":"Make the start event blank."},"bpmnlint/superfluous-gateway":{"title":"Gateway with one way in and one way out","why":"A gateway with one flow in and one out does nothing but sit in the way.","fix":"Delete the gateway and connect its neighbours."},"bpmnlint/superfluous-label":{"title":"Label on a flow that needs none","why":"Only the flows out of a decision, the conditional flows and the default flow say something with a label; on any other it repeats the picture.","fix":"Delete the label."},"bpmnlint/superfluous-termination":{"title":"Terminate end event that terminates nothing","why":"A terminate end event outside a parallel path ends the same as an ordinary end event, and suggests something more.","fix":"Use an ordinary end event."},"compat/ad-hoc-sub-process":{"title":"Ad-hoc sub-process without an activity","why":"An ad-hoc sub-process with nothing in it has nothing for the engine to run, so the instance can never complete it.","fix":"Add at least one activity to the ad-hoc sub-process, or delete it."},"compat/agent-fromai-contract":{"title":"fromAi() key that is not a plain name under toolCall","why":"The agent fills a tool parameter through fromAi(toolCall.name); a key written any other way is not found, so the parameter stays empty.","fix":"Write the key as toolCall.name: a single name, with dots, and no quotes, brackets or arithmetic."},"compat/agent-tool-documentation":{"title":"Tool of an AI agent without documentation","why":"The agent picks its tools by their documentation, so a tool with none is hard to choose and easy to misuse.","fix":"Describe what the tool does in its documentation."},"compat/agent-tool-output-key":{"title":"Tool of an AI agent that returns nothing to it","why":"The agent only sees what a tool puts in toolCallResult; without it, or with another spelling or a second writer, the answer is lost.","fix":"Map the result to toolCallResult, spelled exactly like that, once."},"compat/before-all-execution-listener":{"title":"beforeAll listener outside a multi-instance element","why":"A beforeAll execution listener runs before the instances of a multi-instance element are created, so on any other element it has nothing to run before.","fix":"Move the listener to a multi-instance element, or give it another event type."},"compat/element-type":{"title":"Element the engine version cannot run","why":"Each version of Camunda supports a fixed set of elements, and one it does not know is skipped or refused when the process is deployed.","fix":"Replace the element with one the version supports, or raise the platform version of the diagram."},"compat/cancel-execution-listener":{"title":"cancel listener on an element that cannot be cancelled","why":"A cancel execution listener runs when an element is terminated, which only some elements can be, so on the others it never fires.","fix":"Use the listener on an element that supports it, or give it another event type."},"compat/called-element":{"title":"Call activity without a process to call","why":"A call activity that names no process id, or a wrong kind of expression, fails when the instance reaches it.","fix":"Set the called process id, a static one or a FEEL expression."},"compat/collapsed-subprocess":{"title":"Collapsed sub-process","why":"This version of Camunda 8 cannot run a sub-process drawn collapsed on its own diagram, because it has no plane to read it from.","fix":"Expand the sub-process, or raise the platform version of the diagram."},"compat/connector-properties":{"title":"Connector with a property this version does not have","why":"A property of a connector that the engine version does not support yet is ignored, so the connector behaves differently than configured.","fix":"Remove the property, or raise the platform version of the diagram."},"compat/duplicate-execution-listener-headers":{"title":"Two headers of a listener with the same key","why":"A listener that reads a header by its key gets one of the two values, and which one is not defined.","fix":"Give each header of the listener its own key."},"compat/duplicate-execution-listeners":{"title":"Two execution listeners that are the same","why":"Two listeners with the same event type and job type run the same job twice.","fix":"Delete the duplicate listener."},"compat/duplicate-task-headers":{"title":"Two task headers with the same key","why":"A worker that reads a header by its key gets one of the two values, and which one is not defined.","fix":"Give each task header its own key."},"compat/error-reference":{"title":"Error event without an error or an error code","why":"An error event that refers to no error, or to one with no code, catches or throws nothing the engine can match.","fix":"Choose an error for the event and give the error a code."},"compat/escalation-boundary-event-attached-to-ref":{"title":"Escalation boundary event on the wrong element","why":"Escalations are raised inside a sub-process or a call activity, so a boundary event on any other element never catches one.","fix":"Attach the escalation boundary event to a sub-process or call activity."},"compat/escalation-reference":{"title":"Escalation event without an escalation or a code","why":"An escalation event that refers to no escalation, or to one without a code, catches or throws nothing the engine can match.","fix":"Choose an escalation for the event and give it an escalation code."},"compat/event-based-gateway-target":{"title":"Receive task after an event-based gateway","why":"The engine does not accept a receive task as the target of an event-based gateway, so the process is refused when it is deployed.","fix":"Use a message intermediate catch event instead of the receive task."},"compat/executable-process":{"title":"No executable process","why":"Camunda 8 only deploys processes marked executable, so a file in which none is has nothing to run.","fix":"Mark the process, or one of the pools, as executable."},"compat/execution-listener":{"title":"Execution listener without an event type or a job type","why":"A listener needs to know when it runs and which worker handles it; without either the engine refuses it.","fix":"Set the event type and the job type of the listener."},"compat/feel-compatibility":{"title":"FEEL function the engine version does not have","why":"A built-in function newer than the engine fails the expression at runtime with an incident.","fix":"Use a function the version has, or raise the platform version of the diagram."},"compat/feel":{"title":"FEEL expression that is not valid","why":"An expression the engine cannot parse fails as soon as the process reaches it, and stops the instance with an incident.","fix":"Correct the expression named in the finding; the editor of the field shows where it goes wrong."},"compat/history-time-to-live":{"title":"Process without a history time to live","why":"Without a time to live the engine keeps the history of every finished instance for ever unless it is set for the whole engine, and the database grows.","fix":"Set the history time to live of the process, for example P30D, or set it once for the engine."},"compat/implementation":{"title":"Task or event that has nothing to run","why":"A service task, business rule task, script task, send task or message event that names no job type, decision, script or message does nothing when reached.","fix":"Set what the element runs: a job type, a called decision, a script or a message name."},"compat/inclusive-gateway":{"title":"Inclusive gateway with more than one way in","why":"Camunda 8 before 8.6 can take an inclusive gateway only as a fork, so one that also joins is refused.","fix":"Use one gateway to fork and another to join, or raise the platform version of the diagram."},"compat/link-event":{"title":"Link events that do not match","why":"A link throw event jumps to the catch event with the same name in the same scope, so a name used twice or by no catch event leads nowhere.","fix":"Give every link catch event a unique name and let each throw event use one of them."},"compat/loop-characteristics":{"title":"Multi-instance without what it needs","why":"A multi-instance element with no input collection, or with an output collection but no output element, has nothing to iterate over or to gather.","fix":"Set the input collection, and the output element when there is an output collection."},"compat/io-mapping":{"title":"Input or output mapping that is incomplete","why":"A mapping needs both the source and the target it maps to; one without either is refused by the engine.","fix":"Fill in the source and the target of every input and output mapping."},"compat/message-reference":{"title":"Message event without a message or its name","why":"A message event that refers to no message, or to one without a name, can never be correlated with anything.","fix":"Choose a message for the event and give the message a name."},"compat/no-binding-type":{"title":"Binding type that this version does not have","why":"A called process, decision or form bound to anything but the latest version needs Camunda 8.6 or newer; on an older one the binding is ignored.","fix":"Bind to the latest version, or raise the platform version of the diagram."},"compat/no-business-id":{"title":"Business id that this version does not have","why":"A business id on a call activity needs Camunda 8.10 or newer; on an older version it is ignored.","fix":"Remove the business id, or raise the platform version of the diagram."},"compat/no-before-all-execution-listener":{"title":"beforeAll listener that this version does not have","why":"The beforeAll event type of an execution listener needs Camunda 8.10 or newer.","fix":"Use another event type, or raise the platform version of the diagram."},"compat/no-candidate-users":{"title":"Candidate users that this version does not have","why":"Candidate users on a user task need Camunda 8.2 or newer; on an older version they are ignored.","fix":"Remove the candidate users, or raise the platform version of the diagram."},"compat/no-cancel-execution-listener":{"title":"cancel listener that this version does not have","why":"The cancel event type of an execution listener needs Camunda 8.10 or newer.","fix":"Use another event type, or raise the platform version of the diagram."},"compat/no-execution-listener-headers":{"title":"Listener headers that this version does not have","why":"Task headers on an execution listener are not supported by this version of Camunda 8 and are ignored.","fix":"Remove the headers, or raise the platform version of the diagram."},"compat/no-execution-listeners":{"title":"Execution listeners that this version does not have","why":"Execution listeners need Camunda 8.6 or newer; on an older version they are ignored.","fix":"Remove the listeners, or raise the platform version of the diagram."},"compat/no-expression":{"title":"Expression this version does not support","why":"A FEEL expression in a property the engine version reads only as a fixed value is taken as text, not evaluated.","fix":"Write a static value, or raise the platform version of the diagram."},"compat/no-interrupting-event-subprocess":{"title":"Interrupting event sub-process in an ad-hoc sub-process","why":"An event sub-process inside an ad-hoc sub-process cannot interrupt it, so an interrupting start event is refused.","fix":"Make the start event of the event sub-process non-interrupting."},"compat/no-job-priority-definition":{"title":"Job priority that this version does not have","why":"A job priority needs Camunda 8.10 or newer; on an older version it is ignored.","fix":"Remove the job priority, or raise the platform version of the diagram."},"compat/no-loop":{"title":"Loop that never waits","why":"A cycle made only of tasks and gateways that run at once never waits for anything, so the instance spins in it and never stops.","fix":"Put an element that waits into the loop, such as a user task or a timer, or give it a gateway condition that leaves it."},"compat/no-multiple-none-start-events":{"title":"More than one blank start event","why":"Camunda 8 accepts only one blank start event in a process, so a second one makes the deployment fail.","fix":"Keep one blank start event and give the others an event type, or split the process."},"compat/no-priority-definition":{"title":"Priority that this version does not have","why":"A priority on a user task needs Camunda 8.6 or newer; on an older version it is ignored.","fix":"Remove the priority, or raise the platform version of the diagram."},"compat/no-propagate-all-parent-variables":{"title":"Propagate all parent variables that this version does not have","why":"Turning off the propagation of the parent variables of a call activity needs Camunda 8.2 or newer.","fix":"Keep propagation on, or raise the platform version of the diagram."},"compat/no-signal-event-sub-process":{"title":"Signal event sub-process that this version does not have","why":"A signal start event in an event sub-process needs a newer version of Camunda 8 than the diagram declares.","fix":"Use another kind of start event, or raise the platform version of the diagram."},"compat/no-task-schedule":{"title":"Task schedule that this version does not have","why":"A due date or follow-up date on a user task needs Camunda 8.2 or newer; on an older version it is ignored.","fix":"Remove the dates, or raise the platform version of the diagram."},"compat/no-task-listeners":{"title":"Task listeners that this version does not have","why":"Task listeners on a user task need Camunda 8.8 or newer; on an older version they are ignored.","fix":"Remove the task listeners, or raise the platform version of the diagram."},"compat/no-template":{"title":"Element template that this version does not have","why":"Element templates need Camunda 8.0 or newer; on an older version the properties they set are ignored.","fix":"Remove the template, or raise the platform version of the diagram."},"compat/no-version-tag":{"title":"Version tag that this version does not have","why":"A version tag needs Camunda 8.6 or newer; on an older version it is ignored.","fix":"Remove the version tag, or raise the platform version of the diagram."},"compat/no-zeebe-properties":{"title":"Zeebe properties that this version does not have","why":"Custom zeebe:properties need Camunda 8.1 or newer; on an older version they are dropped when the process is deployed.","fix":"Remove the properties, or raise the platform version of the diagram."},"compat/no-zeebe-user-task":{"title":"Camunda user task that this version does not have","why":"A user task implemented by Camunda itself needs Camunda 8.5 or newer.","fix":"Use a job worker user task, or raise the platform version of the diagram."},"compat/priority-definition":{"title":"User task priority that is not valid","why":"The priority of a user task has to be a whole number from 0 to 100, or an expression; anything else is refused.","fix":"Write the priority as a number from 0 to 100, or as an expression."},"compat/zeebe-user-task":{"title":"Job worker user task","why":"A user task run by a job worker is the deprecated way; a Camunda user task is the supported one from this version on.","fix":"Switch the user task to the Camunda user task implementation."},"compat/secrets":{"title":"Secret written in a form the engine no longer reads","why":"A secret referenced as {{secrets.NAME}} or in the old connector syntax is deprecated and is dropped in a later version.","fix":"Write the secret as a FEEL expression, camunda.secrets.NAME."},"compat/sequence-flow-condition":{"title":"Condition on a flow that cannot have one","why":"Only the flows that leave an exclusive or an inclusive gateway are conditional; on any other flow the condition is refused.","fix":"Delete the condition, or draw a gateway in front of the flow."},"compat/signal-reference":{"title":"Signal event without a signal or its name","why":"A signal event that refers to no signal, or to one without a name, can never be raised or caught.","fix":"Choose a signal for the event and give the signal a name."},"compat/start-event-form":{"title":"Start event form that this version cannot show","why":"Before Camunda 8.3 a start event has no form, and from 8.3 the form needs a form id or a linked form that exists.","fix":"Set the form id or the form key of the start event, or raise the platform version of the diagram."},"compat/start-event-form-embedded":{"title":"Embedded form on a start event","why":"Embedded forms on a start event are deprecated in this version and stop working in a later one.","fix":"Move the form to a .form file and link it from the start event."},"compat/subscription":{"title":"Message without a correlation key","why":"A message that a process waits for needs a correlation key, or the engine cannot tell which instance it is meant for.","fix":"Set the correlation key of the message subscription, usually a FEEL expression."},"compat/task-listener":{"title":"Task listener without an event type or a job type","why":"A task listener needs to know when it runs and which worker handles it; without either the engine refuses it.","fix":"Set the event type and the job type of the listener."},"compat/task-schedule":{"title":"Task schedule that is not a date","why":"The due date and the follow-up date of a user task have to be an ISO 8601 date, or an expression that gives one.","fix":"Write the date in ISO 8601, or use an expression."},"compat/timer":{"title":"Timer that is not valid","why":"A timer with a date, duration or cycle the engine cannot read fails when the process is deployed or reached.","fix":"Write the timer as an ISO 8601 date, duration or cycle, or as an expression."},"compat/timer-past-date":{"title":"Start timer set in the past","why":"A timer start event whose date, or whose cycle start, is already past fires right after deployment, and a cycle then runs from the deployment time.","fix":"Use a future date, or a cron expression to run on a fixed schedule."},"compat/unresolvable-secret-reference":{"title":"Secret used in a way the engine cannot resolve","why":"A secret can only be read as an expression; written as a plain string, in a list or in a branch of an if it is never replaced.","fix":"Use =camunda.secrets.NAME directly as the value of the property."},"compat/user-task-definition":{"title":"User task without a form","why":"A user task with no form opens in Tasklist with nothing for the person to read or fill in.","fix":"Link a form to the user task, or accept a task without one."},"compat/user-task-form":{"title":"User task form that is not filled in","why":"A form on a user task needs the form id, or the linked form, in the form the chosen binding expects; without it the task opens with no form.","fix":"Set the form id, or the form key, the way its binding says."},"compat/variable-name":{"title":"Variable name that is not valid","why":"A name that starts with a digit or holds a space or a dash cannot be used in a FEEL expression, so it can never be read again.","fix":"Use a name of letters, digits and underscores that does not start with a digit."},"compat/version-tag":{"title":"Version tag that is empty","why":"A version tag that is set with no value, or a binding to a version tag with none, gives the engine nothing to look up.","fix":"Give the version tag a value, or choose another binding."},"compat/wait-for-completion":{"title":"Compensation that does not wait","why":"A compensation throw event that does not wait for completion is not supported by Camunda 8, which always waits.","fix":"Turn on waiting for completion of the compensation event."},"drawing/dangling-connection":{"title":"Connection without both ends","why":"A connection that starts or ends on nothing is drawn but connects nothing, so the picture and the process disagree.","fix":"Reconnect both ends of the connection to a shape, or delete it."},"drawing/lost-connection":{"title":"Connection in the file but not on the canvas","why":"The file describes a connection that the editor did not draw, so it is invisible and cannot be selected.","fix":"Connect the two elements again on the canvas; the stray connection is dropped when the file is saved."},"drawing/containment":{"title":"Element outside the container it belongs to","why":"An element that belongs to a pool, lane or sub-process but is drawn beyond its edge reads as belonging to something else.","fix":"Drag the element back inside its container, or enlarge the container."},"drawing/overlap":{"title":"Shapes sit on top of each other","why":"Shapes drawn over each other hide one another, and the one underneath cannot be selected.","fix":"Move one of the shapes, or lay the diagram out again."},"drawing/edge-through-node":{"title":"Connection runs through a shape","why":"A connection drawn through a shape it does not touch looks like it connects to that shape.","fix":"Move a bend of the connection, or the shape, so the line goes around."},"drawing/edge-through-boundary":{"title":"Connection runs through a boundary event","why":"A connection drawn through a boundary event it does not start or end at looks like it leaves the task through that event.","fix":"Move the boundary event along the border of its task, away from where the connection meets the task."},"drawing/crossing":{"title":"Connections cross","why":"Every crossing is a place where the eye can follow the wrong line.","fix":"Move a shape so fewer connections have to cross, or lay the diagram out again."},"drawing/detached-edge":{"title":"Connection does not reach the shape it connects","why":"A connection that stops short of its shape looks unfinished and does not move with the shape.","fix":"Drag the loose end of the connection onto the shape."},"drawing/boundary-off-host":{"title":"Boundary event is off its host","why":"A boundary event that is not on the border of the task it is attached to looks like a free-standing event.","fix":"Drag the boundary event back onto the border of its task."},"drawing/label-adrift":{"title":"Label sits far from what it names","why":"A label far from its element is read as the label of something nearer.","fix":"Drag the label next to its element."},"drawing/diagonal-edge":{"title":"Connection is not drawn at right angles","why":"A BPMN diagram reads as horizontal and vertical lines; a slanted one stands out as a mistake.","fix":"Straighten the segment, or lay the diagram out again."},"drawing/label-overlap":{"title":"Labels cover each other","why":"Overlapping labels cannot be read.","fix":"Drag one of the labels aside."},"drawing/merged-edge":{"title":"Connections run along the same line","why":"Two connections drawn on top of each other read as one, so a reader loses one of them.","fix":"Move one of the connections a few pixels aside, or lay the diagram out again."},"drawing/note-adrift":{"title":"Annotation sits far from what it describes","why":"An annotation far from its element is hard to tie to it.","fix":"Drag the annotation next to the element it describes."},"drawing/semantic-drift":{"title":"The diagram means something different","why":"Laying out must move things and change nothing else; an element with a different parent, source or target is a different process.","fix":"Undo the change and report it: no layout should ever do this."},"drawing/backtrack":{"title":"Connection doubles back along itself","why":"A line that overshoots and returns along itself reads as one line and hides its own bend.","fix":"Delete the extra bend of the connection."},"drawing/edge-through-label":{"title":"Connection crosses a label","why":"A line through a label makes both harder to read.","fix":"Drag the label off the line."},"drawing/edge-along-shape":{"title":"Connection runs along the border of a shape","why":"A line lying on the edge of a shape it does not belong to looks like part of that shape.","fix":"Move the run of the connection a few pixels away from the shape."},"drawing/detour":{"title":"Connection takes a long way round","why":"A connection more than twice as long as the distance it covers makes the reader search for its end.","fix":"Move the shapes closer, or give the connection a shorter route."},"drawing/jog":{"title":"Connection sidesteps for no reason","why":"A small sidestep between two parallel runs, with nothing in the way, looks like a slip of the hand.","fix":"Delete the two bends of the sidestep."},"flow/deadlock":{"title":"The process can get stuck","why":"A token can reach a point where nothing can move it on, so the instance never ends and sits in the engine forever.","fix":"Follow the path shown in the finding and give the stuck join a way to continue, for example by joining only what was split."},"flow/no-synchronization":{"title":"A part of the process can run twice","why":"Two paths that reach the same step without a joining gateway start it once for each, so the step runs twice.","fix":"Join the paths with a gateway of the matching kind before the step."},"flow/dead-element":{"title":"An element can never run","why":"No path from the start reaches the element, so whatever it does is dead weight in the diagram.","fix":"Connect it to a path that can reach it, or delete it."},"flow/never-finishes":{"title":"The process may never finish","why":"A loop with no way out keeps its instance alive until someone cancels it.","fix":"Give the loop an exit: a condition that ends it, or a flow that leaves it."},"flow/too-complex":{"title":"Only part of the process was analysed","why":"The process has too many states to check them all, so what the check says is true only of the part it reached.","fix":"Split the process into sub-processes or call activities so each can be checked whole."},"flow/no-way-out":{"title":"A decision has no way out for some values","why":"When no condition of a gateway holds and there is no default flow, the instance stops there with an incident.","fix":"Add a default flow, or a condition for the values named in the finding."},"flow/overlap":{"title":"Two ways out of a decision can both hold","why":"When two conditions of an exclusive gateway can both be true the engine takes whichever it checks first, and which one that is depends on the order in the file.","fix":"Make the conditions exclusive, or turn one of them into the default flow."},"flow/no-default":{"title":"A decision may have no way out","why":"A gateway with conditions and no default flow stops the instance with an incident when none of them holds.","fix":"Mark one outgoing flow as the default."},"flow/lookalike":{"title":"Two variables look like one","why":"Two variable names that differ by a letter or its case are usually one name spelled twice, and one of them never holds the value the other does.","fix":"Use one spelling everywhere, or make the names differ clearly."},"table/rule-overlap":{"title":"Two rules match the same input","why":"When the hit policy expects one match, two rules matching the same input make the decision fail or depend on their order.","fix":"Narrow one of the two rules so they no longer match the same input, or change the hit policy."},"table/rule-gap":{"title":"No rule matches some input","why":"An input no rule matches gives the decision no result, and the process that asked for it stops.","fix":"Add a rule for the input named in the finding, or a catch-all rule at the end."},"table/table-unread":{"title":"A decision table could not be checked","why":"A table with an expression the check cannot read is left out of it, so its problems are not found.","fix":"Simplify the expression in the cell named in the finding, or accept that this table is not checked."},"form/key-clash":{"title":"Two fields write the same variable","why":"Tasklist and the form editor refuse to open a form in which two fields, or a field and a group, use the same key.","fix":"Give each field its own key."},"form/no-key":{"title":"A field writes no variable","why":"A field with no key is shown to the user, but what they enter is not passed to the process.","fix":"Give the field a key, the name of the process variable it should fill."},"form/repeated-option":{"title":"An option list repeats a value","why":"Two choices with the same value submit the same thing, though the user can tell them apart.","fix":"Give every option its own value."},"form/no-label":{"title":"A field has no label","why":"An input with no label leaves the user guessing what it is for.","fix":"Give the field a label."},"code/missing-implementation":{"title":"Nothing in the code runs a step","why":"A service task, send task or listener that names a job type, topic, class or bean nothing implements waits for a worker that does not exist.","fix":"Write the worker, delegate or bean, or correct the name in the diagram."},"code/never-thrown":{"title":"Nothing in the code throws the error a step catches","why":"An error boundary or error event catches a code that no BpmnError or error command in the project throws, so it never fires.","fix":"Throw the error code from the worker, or correct the code on the event."},"code/variable-typo":{"title":"A variable is read, but only a similar one is set","why":"A read of a name that is never written, when a name a letter away is, is almost always a typo, and the read gives nothing.","fix":"Use the spelling that is set."},"code/worker-fetch":{"title":"A worker reads a variable it does not fetch","why":"A Camunda 8 worker is given only the variables it asks for, so a name its code reads but its fetch list leaves out is null at runtime, and a name a fetch list holds under a different spelling is null as well.","fix":"Add the variable to the worker's fetchVariables, or use the name it fetches."},"code/writer-unread":{"title":"A worker sets a variable no step after it reads","why":"A variable the worker writes and nothing downstream reads is written for nothing; often the name is not the one the next step looks for.","fix":"Read it in a later step, or drop it from the worker."},"code/lost-update":{"title":"Every parallel instance writes the same result collection","why":"A parallel multi-instance step that sets an output collection without an output element has each instance write the same collection, so only the last one that finishes is left.","fix":"Set an output element, or collect the results in one instance after the join."},"code/late-read":{"title":"A worker reads a variable no step before it sets","why":"The worker is handed only the variables the process set before it, so a name it reads that nothing set before it is null at runtime.","fix":"Set the variable in an earlier step, or drop it from the worker."},"code/near-name":{"title":"A job type, topic, bean, message or error code is one letter off the code","why":"A name that does not match the one in the code leaves the step with nothing running it, and a name that differs only in case is the same trap with a quieter error.","fix":"Use the name the code has, or rename the worker to the one the diagram uses."},"code/mapping-order":{"title":"A mapping line reads a value an earlier line was meant to set","why":"The engine evaluates the source of every mapping line before it writes any target, so a later line that reads what an earlier one sets gets null - camunda#11789.","fix":"Move the value into the earlier line, or compute both from the same source."},"code/implicit-job-type":{"title":"A job worker takes its job type from the method name","why":"A @JobWorker without a type answers to its method name, so renaming the method changes the contract with the diagram without anything saying so.","fix":"Name the type in the annotation, so the method can be renamed freely."},"code/no-worker":{"title":"No worker handles a job type","why":"A Camunda 8 service task creates a job that waits for a worker with its job type; with none, the instance waits forever.","fix":"Write a worker for the job type, or correct the job type in the diagram."},"code/no-topic-worker":{"title":"No external task worker subscribes to a topic","why":"A Camunda 7 external task waits for a client that subscribes to its topic; with none, the instance waits forever.","fix":"Subscribe a worker to the topic, or correct the topic in the diagram."},"code/class-missing":{"title":"A class named in the diagram is not in the project","why":"A delegate or listener class the engine cannot load fails the instance at that step.","fix":"Add the class, or correct the class name in the diagram."},"code/bean-missing":{"title":"No Spring bean has the name a diagram uses","why":"A delegate expression naming a bean that does not exist fails the instance at that step.","fix":"Name the bean the diagram uses, or correct the expression."},"code/unknown-process":{"title":"A call activity calls a process no diagram defines","why":"A call to a process that is not deployed fails the instance at the call.","fix":"Add the called process to the project, or correct the id of the call."},"code/unknown-decision":{"title":"A business rule task calls a decision no file defines","why":"A call to a decision that is not deployed fails the instance at the task.","fix":"Add the decision to the project, or correct its id in the task."},"code/unknown-form":{"title":"A user task shows a form no file defines","why":"A user task that refers to a form that is not deployed opens with no form.","fix":"Add the .form file, or correct the form id in the task."},"code/unknown-embedded-form":{"title":"A user task shows an embedded form the diagram does not contain","why":"A user task that refers to an embedded form that is not in the diagram opens with no form.","fix":"Add the form to the diagram, or correct the reference."},"code/unused-worker":{"title":"A worker for a job type no diagram uses","why":"A worker that nothing calls is code to keep for nothing, and hides that a diagram lost its step.","fix":"Delete the worker, or add the step that uses its job type."},"code/unused-subscription":{"title":"A subscription to a topic no diagram uses","why":"A subscription nothing feeds is code to keep for nothing, and hides that a diagram lost its step.","fix":"Delete the subscription, or add the step that uses its topic."},"code/variable-field":{"title":"A step reads a field the variable does not have","why":"A field the type of a variable does not have is null at runtime, and a misspelt field name is the usual cause. Only a variable whose type is known from the code that sets it is checked, so a field of a type the project does not declare is never reported.","fix":"Use a field the type has, or correct the name; a field the code adds later is named in its class."},"code/variable-unknown":{"title":"A step reads a variable nothing sets","why":"A name no step of the diagram or the code sets, and that the process is not declared to start with under variables.inputs, is null unless something outside starts the process with it.","fix":"Set the variable in an earlier step, declare it under variables.inputs in penstock.yaml, or correct the name."},"convention/id-from-name":{"title":"Ids follow names","why":"Ids that read as names make diffs, logs, test cases and worker code readable, and stay right when a step is renamed.","fix":"Set \`conventions.ids.fromName: true\` in \`penstock.yaml\`; \`conventions.ids.pattern\` shapes the id, \`{Type}_{Name}\` by default."},"convention/defaults":{"title":"Defaults for new elements","why":"Attributes every service task or data input of a project needs, set once, are never forgotten on one of them.","fix":"Set them under \`conventions.defaults\` in \`penstock.yaml\`, keyed by BPMN type such as \`bpmn:ServiceTask\`."},"compat":{"badBoundaryHost":"{subject} is attached to something that cannot have this kind of boundary event","callsNoDecision":"{subject} calls no decision and has no job type","callsNoProcess":"{subject} calls no process","cannotUseExpression":"{subject} cannot use an expression in its {property}","conditionNotAllowedHere":"{subject} has a condition, but only the flows out of an exclusive or inclusive gateway can have one","deprecatedSecret":"{subject} writes a secret in a form that is deprecated","duplicateLinkName":"Two link catch events use the same name","element":"element","elementNeedsVersion":"{elements} need Camunda {allowed} or newer{targets}","expressionNeeds":"{subject} uses an expression in its {property}, which {needs}","fallback":"{subject}: {message}","formWithNoId":"{subject} has a form with no form id","hasNoForm":"{subject} has no form","hasNoJobType":"{subject} has no job type","hasNoScript":"{subject} has no script and no job type","here":"here","historyTimeToLiveMissing":"History time to live is missing","invalidAgentSetting":"{subject} has an AI agent setting that is not valid","invalidFeelExpression":"{subject} has a FEEL expression that is not valid","isCollapsed":"{subject} is collapsed, and this version of Camunda needs it expanded","isJobWorkerUserTask":"{subject} is a job worker user task, and a Camunda user task is the supported kind","joinOr":"{list} or {last}","loopThatNeverWaits":"{subject} is part of a loop that never waits","messageWithoutCorrelationKey":"{subject} waits for a message that has no correlation key","missingExtension":"{subject} is missing its {required} settings","missingInputCollection":"{subject} is multi-instance, but its input collection is missing","missingProperty":"{subject} is missing its {list}","moreThanOneBlankStart":"There is more than one blank start event, and Camunda allows one in a process","moreThanOneElement":"There is more than one {kind} in the same scope, and only one is allowed","needs":"needs Camunda {allowed} or newer{targets}","needsConditionOrDefault":"{subject} needs a condition, or must be the default flow of its gateway","needsPropertyBefore":"{subject} needs its {list} on versions before Camunda {allowed}{targets}","noActivityInside":"{subject} has no activity inside it","notExecutable":"{subject} is not marked as executable","receiveTaskAfterGateway":"A receive task cannot follow an event-based gateway in Camunda 8; use a message catch event","targets":" - this diagram targets {version}","theKind":"The {kind}","thisElement":"This element","unreadableVariableName":"{subject} uses a variable name the engine cannot read","unresolvableSecret":"{subject} refers to a secret in a way the engine cannot resolve","unsupportedFeelFunction":"{subject} uses a FEEL function that Camunda {version} does not have","usesProperty":{"a":"{subject} uses a {property}, which {needs}","an":"{subject} uses an {property}, which {needs}"},"usesExtension":{"a":"{subject} uses a {extension}, which {needs}","an":"{subject} uses an {extension}, which {needs}"},"propertyValueNeeds":{"a":"{subject} has a {property} value that {needs}","an":"{subject} has an {property} value that {needs}"},"propertyValueNotAllowed":{"a":"{subject} has a {property} value that is not allowed here","an":"{subject} has an {property} value that is not allowed here"},"deprecatedProperty":{"a":"{subject} uses a {property}, which is deprecated","an":"{subject} uses an {property}, which is deprecated"},"cannotHaveProperty":{"a":"{subject} cannot have a {property}","an":"{subject} cannot have an {property}"},"cannotHaveExtension":{"a":"{subject} cannot have a {extension}","an":"{subject} cannot have an {extension}"},"refersToNoMessage":"{subject} refers to no message","refersToNoError":"{subject} refers to no error","refersToNoSignal":"{subject} refers to no signal","refersToNoEscalation":"{subject} refers to no escalation","word":{"adHoc":"ad-hoc","agentDefinition":"agent definition","assignmentDefinition":"assignment definition","bindingType":"binding type","body":"body","businessId":"business id","calledDecision":"called decision","calledElement":"called element","cancelRemainingInstances":"cancel remaining instances","candidateUsers":"candidate users","completionCondition":"completion condition","conditionExpression":"condition expression","consumeUnmatchedEvents":"consume unmatched events","correlationKey":"correlation key","decisionId":"decision id","deduplicationModeManualFlag":"deduplication mode manual flag","dueDate":"due date","errorCode":"error code","errorRef":"error reference","escalationCode":"escalation code","escalationRef":"escalation reference","eventType":"event type","executionListeners":"execution listeners","expression":"expression","externalReference":"external reference","followUpDate":"follow up date","formDefinition":"form definition","formId":"form id","formKey":"form key","headers":"headers","historyTimeToLive":"history time to live","incoming":"incoming","inputCollection":"input collection","inputElement":"input element","ioMapping":"io mapping","isExecutable":"is executable","isInterrupting":"is interrupting","jobPriorityDefinition":"job priority definition","loopCharacteristics":"loop characteristics","messageRef":"message reference","messageTtl":"message ttl","modelerTemplate":"modeler template","name":"name","outputCollection":"output collection","outputElement":"output element","priority":"priority","priorityDefinition":"priority definition","processId":"process id","propagateAllParentVariables":"propagate all parent variables","properties":"properties","resultVariable":"result variable","script":"script","signalRef":"signal reference","source":"source","subscription":"subscription","target":"target","taskDefinition":"task definition","taskHeaders":"task headers","taskListeners":"task listeners","taskSchedule":"task schedule","timeCycle":"time cycle","timeDate":"time date","timeDuration":"time duration","type":"type","userTask":"user task","userTaskForm":"user task form","value":"value","versionTag":"version tag","waitForCompletion":"wait for completion"}},"defects":{"boundaryOffHost":"{event} off {host}","containment":"{id} {relation} {box}","crossing":"[{aType}|{bType}] {a} ({aFrom}->{aTo}) x {b} ({bFrom}->{bTo})","detour":"[{type}] {id} runs {run}px for {apart}px","edgeAlongShape":"{connection} runs along {shape}","edgeOverLabel":"{connection} over {owner} label","edgeThroughBoundary":"{connection} through {event} on {host}","edgeThroughNode":"{connection} through {shape}","insideForeign":"inside foreign","labelFromLine":"{id} label {gap}px from its own line","labelFromShape":"{id} label {gap}px from its shape","labelOverLabel":"{owner} label over {other} label","labelOverShape":"{owner} label over {shape}","mergedEdge":"[{aType}|{bType}|{axis}] {a} ({aFrom}->{aTo}) with {b} ({bFrom}->{bTo}) over {run}px","noteAdrift":"{id} ({from}->{to}) runs {span}px","outsideIts":"outside its","overlap":"{a} <-> {b}","semanticDrift":"{id} was {was}, now {now}","straddles":"straddles","typedWire":"[{type}] {id} ({from}->{to})","wire":"{id} ({from}->{to})"},"drawing":{"listSeparator":", ","noProblemsFound":"No problems found.","readability":"{number} readability","rulesCouldNotRun":"The bpmnlint rules could not run.","theConnection":"the connection from {from} to {to}","theElement":"the {type}","errors":{"one":"{count} error","other":"{count} errors"},"warnings":{"one":"{count} warning","other":"{count} warnings"}},"flow":{"above":"above","anActivity":"an activity","and":" and ","arrive":"arrive","arrives":"arrives","atLeast":"at least","atMost":"at most","below":"below","bothConditionsHold":"When {shared}, both {first} and {second} of {gateway} hold; the engine takes whichever it checks first.","comma":", ","exclusive":" (exclusive)","hasAnyValue":"{variable} has any value","isAnythingBut":"{variable} is anything but {values}","isBetween":"{variable} is between {lo} and {hi}{exclusive}","isBound":"{variable} is {side} {bound}","isSomeOtherValue":"{variable} is some other value","isValue":"{variable} is {bound}","leftThroughBoundary":" The run left {host} through its boundary event{event} and never came back.","letterCaseOnly":"letter case only","lookalikeNames":"\\"{first}\\" and \\"{second}\\" are used in this process and differ by {difference}: one of them is probably a typo, and would never hold the value the other one does.","neverRuns":"{node} never runs: {cause}.","noDefaultFlow":"{gateway} has no default flow. If none of its conditions holds, the process stops there with an incident.","noPathReachesIt":"no path from a start event reaches it","noPathToAnEnd":"Once the process reaches {nodes}, no path leads to an end: it can only go round.","noWayOut":"{gateway} has no flow to take when {gaps}, and no default flow: the process stops there with an incident.","nodeBefore":"the {node} before \\"{next}\\"","nothingLeadsToIt":"nothing leads to it","oneCharacter":"one character","orWhen":", or when ","sentDownAnotherBranch":" {turn} sent this run down another branch.","theBranchThrough":"the branch through the {node}","theFlowTo":"the flow to {target}","theNextStep":"the next step","theNode":"the {node}","tooManyStates":"The process has more than {states} reachable states; the findings cover the part that was explored.","twoBranchesAtOnce":"Two branches that run at the same time both reach {node}, so it runs twice. Join them with a parallel gateway first.","twoTokensAtOnce":"Two tokens can arrive at {node} at once, so it runs twice. A parallel split usually needs a parallel join, not an exclusive one.","waitsAndCannotContinue":"{who} waits and cannot continue.","waitsFor":"{who} waits for {missing}, which never {arrives}."},"form":{"keyClash":"{fields} {all} write {variable}. A form like that does not open: Tasklist and the form editor refuse it.","keyClashGroup":"{field} writes {variable}, which {group} also uses to hold its fields. A form like that does not open: Tasklist and the form editor refuse it.","noKey":"{field} has no key, so what the user enters is not passed to the process.","noLabel":"The {type} writing {variable} has no label, so the user sees an input with nothing to say what it is for.","repeatedOption":"{field} offers the value {values} more than once, so two choices the user can tell apart submit the same thing.","unnamedField":"the {type}{key}{id}"},"lint":{"couldNotRun":"The rule could not run: {message}","decidesNothing":"{what} has one way in and one way out, so it decides nothing","discouragedGateway":"{what} is a kind of gateway that is discouraged","endsWithoutEndEvent":"{what} ends the flow without an end event","hasNoEndEvent":"{what} has no end event","hasNoName":"{what} has no name","hasNoShape":"{what} has no shape on the diagram","hasNoStartEvent":"{what} has no start event","itsContainer":"{what} lies outside {parent}","itsLane":"its lane","itsPool":"its pool","itsShape":"the shape it belongs to","itsSubProcess":"its sub-process","joinedWithoutGateway":"{what} is joined by several flows without a gateway","joinsAndSplits":"{what} both joins and splits the flow, which reads as two gateways","linkEvent":"{what}: {message}","lowercaseLink":"link ","moreThanOneBlankStart":"{what} has more than one blank start event","needsConditionOrDefault":"{what} needs a condition or must be the default flow","notConnected":"{what} is not connected to anything","overlapsAnotherShape":"{what} overlaps another shape","splitsWithoutGateway":"{what} splits the flow without a gateway","startsWithoutStartEvent":"{what} starts the flow without a start event","theElement":"The {type}","thisElement":"This element","twoIdenticalFlows":"{what} has two identical flows","unneededTermination":"{what} ends the process with a termination it does not need","conditionalEventNoCondition":"Conditional event is missing a condition","eventBasedGatewayNeedsTwo":"An <Event-based Gateway> must have at least 2 outgoing <Sequence Flows>","flowOutOfEventBasedGatewayConditional":"A <Sequence Flow> outgoing from an <Event-based Gateway> must not be conditional","typedStartEventNoDefinition":"Start event is missing event definition","eventHasSeveralDefinitions":"Event has multiple event definitions","startEventMustBeBlank":"Start event must be blank","sequenceFlowSuperfluousLabel":"Sequence flow has superfluous label","startEventInAdHoc":"A <Start Event> is not allowed in <Ad Hoc Sub Process>","endEventInAdHoc":"An <End Event> is not allowed in <Ad Hoc Sub Process>","nonStandardWidth":"Element has a non-standard width; expected width of {width}","nonStandardHeight":"Element has a non-standard height; expected height of {height}","nonStandardSize":"Element has a non-standard size; expected {width}x{height}"},"table":{"aDecision":"a decision","and":" and ","differentResults":", and give different results","input":"input {number}","orWhen":"; or when ","ruleGap":"In \\"{decision}\\", no rule matches when {cases}, so the decision returns nothing there.","ruleOverlap":"In \\"{decision}\\", rules {first} and {second} both match when {when}{different}; with hit policy {policy} that is an error at run time.","someOtherValue":"some other value","unread":"\\"{decision}\\" uses expressions in its rules that are more than comparisons, ranges and lists, so its rules were not compared.","whenIs":"{label} is {value}"},"web":{"detailWithPath":"{detail} Path: {path}","flowAnalysisHint":"Deadlocks, branches that run twice, steps that never run. Part of Penstock Pro.","migrateToCamunda8":"Migrate to Camunda 8","nothingToConvert":"Nothing to convert: this is not a Camunda 7 diagram.","path":"Path: {path}","readability":"Readability ({number})","rulesCouldNotRun":"The bpmnlint rules could not run: {failure}. Rules from a bpmnlint plugin need lint.clientBundlePath in penstock.yaml.","flowAnalysisFound":{"one":"Flow analysis found 1 problem in how this process runs","other":"Flow analysis found {count} problems in how this process runs"}},"workers":{"aWorkerIsWorking":"a worker is working on its tasks","engineAnswered":"The engine answered {status}","noJobStatistics":"The engine does not report job statistics, which it does from Camunda 8.9","noJobs":"no jobs in the last 24 hours","noOpenTasks":"no open tasks","nobodyTookThem":"{jobs} in the last 24 hours and no worker took one","refusedTheQuestion":"The engine refused the question ({status}): the profile's credentials may not allow reading jobs","tasksWait":"tasks wait and no worker has locked one","tookItsJobs":"{workers} took its jobs in the last 24 hours","workerCount":{"one":"{count} worker","other":"{count} workers"},"jobCount":{"one":"{count} job","other":"{count} jobs"}},"theKindOf":"the {kind}"},"element":{"kind":{"adHocSubProcess":{"one":"ad-hoc sub-process","other":"ad-hoc sub-processes"},"association":{"one":"association","other":"associations"},"boundaryEvent":{"one":"boundary event","other":"boundary events"},"businessRuleTask":{"one":"business rule task","other":"business rule tasks"},"callActivity":{"one":"call activity","other":"call activities"},"complexGateway":{"one":"complex gateway","other":"complex gateways"},"dataObject":{"one":"data object","other":"data objects"},"dataObjectReference":{"one":"data object reference","other":"data object references"},"dataStore":{"one":"data store","other":"data stores"},"dataStoreReference":{"one":"data store reference","other":"data store references"},"endEvent":{"one":"end event","other":"end events"},"eventBasedGateway":{"one":"event-based gateway","other":"event-based gateways"},"exclusiveGateway":{"one":"exclusive gateway","other":"exclusive gateways"},"group":{"one":"group","other":"groups"},"inclusiveGateway":{"one":"inclusive gateway","other":"inclusive gateways"},"intermediateCatchEvent":{"one":"intermediate catch event","other":"intermediate catch events"},"intermediateThrowEvent":{"one":"intermediate throw event","other":"intermediate throw events"},"lane":{"one":"lane","other":"lanes"},"manualTask":{"one":"manual task","other":"manual tasks"},"messageFlow":{"one":"message flow","other":"message flows"},"parallelGateway":{"one":"parallel gateway","other":"parallel gateways"},"participant":{"one":"participant","other":"participants"},"process":{"one":"process","other":"processes"},"receiveTask":{"one":"receive task","other":"receive tasks"},"scriptTask":{"one":"script task","other":"script tasks"},"sendTask":{"one":"send task","other":"send tasks"},"sequenceFlow":{"one":"sequence flow","other":"sequence flows"},"serviceTask":{"one":"service task","other":"service tasks"},"startEvent":{"one":"start event","other":"start events"},"subProcess":{"one":"sub-process","other":"sub-processes"},"task":{"one":"task","other":"tasks"},"textAnnotation":{"one":"text annotation","other":"text annotations"},"transaction":{"one":"transaction","other":"transactions"},"userTask":{"one":"user task","other":"user tasks"}}},"targets":{"onForm":"form {form}"},"preview":{"after":"After","before":"Before","fileAdded":"File added","fileDeleted":"File deleted"},"vscode":{"action":{"openAnEditor":"Penstock: open a Penstock editor to use {title}.","unavailableHere":"Penstock: {title} is not available for this diagram."},"codeLinks":{"diagramsUsing":"The diagrams that use {name}:{line}","forTitle":"Code for {title}","nothingUses":"No code in this project uses {title}","place":"{title} · line {line}","unreadable":"The code links could not read this project: {reason}","whereUsed":"Where it is used","didYouMean":"Did you mean '{name}'?","caseSensitive":"Names are case-sensitive, the diagrams use '{name}'","changeTo":"Change to '{name}'","unknown":{"process":"No diagram in the project has a process '{name}'","element":"No diagram in the project has an element '{name}'","message":"No diagram in the project has a message '{name}'","decision":"No decision in the project is '{name}'","error":"No error event in the project's diagrams catches '{name}'","variable":"No diagram in the project uses a variable '{name}'"},"workerVariable":{"notFetched":"The worker does not fetch '{name}', so it is null at runtime","notRead":"Nothing in the project's diagrams reads '{name}'","notSet":"Nothing in the project's diagrams sets '{name}'{only}","onlySet":", only '{name}' is set","setBefore":"{message} before this step"},"namedWorker":"The diagrams use the method name '{name}' as the job type, so renaming the method breaks them","nameJobType":"Name the job type '{name}'","unknownElement":{"noElement":"No element '{name}' in {owner}","caseSensitive":"the diagrams use '{name}', and names are case-sensitive"}},"config":{"created":"penstock.yaml created. The engine you picked is recorded in the project.","updated":"penstock.yaml updated. The engine you picked was added to the file; nothing else in it was touched."},"diff":{"aBranch":"a branch","aBranchDetail":"compare with another branch","anotherFile":"another file","anotherFileDetail":"compare with a diagram from anywhere on this machine","committedDetail":"the version that is committed","compareWith":"Compare {name} with","compareWithBranch":"Compare with the branch","compareWithTitle":"Compare with","gone":"That comparison is not open any more. Compare the diagram again.","openOneFirst":"Open a BPMN diagram to compare, or pick one in the explorer."},"document":{"changeRefused":"VS Code did not accept the change to {name}","editorNotBuilt":"The Penstock editor was not built. Run npm run build in the vscode folder."},"docs":{"notWebAddress":"The address {url} is not a web address, so it was not opened"},"file":{"noWorkspace":"There is no workspace folder to write into"},"git":{"noSuchRef":"{ref} has no {name}: {reason}","notInRepository":"{file} is not in a git repository, so there is no {ref} of it to compare with"},"hooks":{"noSuchRun":"No such hook run"},"licence":{"accountHeading":"Penstock {tier}: {detail}.","active":"Penstock {tier} is active on this machine. The CLI uses it too.","activeAgain":"Penstock {tier} is active on this machine again. The CLI uses it too.","activatedAgo":"since {when}","alreadyBought":"I already bought it","askEmail":"E-mail you bought Penstock with:","askPaidEmail":"E-mail you paid with:","buyPro":"Buy Pro","buyTeam":"Buy Team","buyTier":"Buy {tier}","checkoutExpired":"The checkout expired. Open a new one to buy Penstock.","checkoutFailed":"The payment did not go through, and nothing was charged.","checkoutOpened":"The checkout for Penstock {tier} is open in your browser; this finishes by itself once you have paid.","checkoutStopped":"Stopped waiting for the payment after an hour. If you paid, sign in with that address.","clipboard":"The licence key is on the clipboard. Keep it secret; in a pipeline, set it as PENSTOCK_LICENSE.","codeSent":"A sign-in code is on its way to {email}. Code from the e-mail:","copyKeyForCi":"Copy key for CI","entryPlaceholder":"you@example.com or PENSTOCK-PRO-...","entryPrompt":"E-mail or licence key. The address you bought Penstock with gets a code, and the licence sets itself up.","neither":"That is neither an e-mail address nor a Penstock licence key.","noLicence":"There is no Penstock licence bought with {email}.","noLicenceWithSignIn":"There is no Penstock licence bought with {email}. Buy one, or sign in with the address you bought it with.","notNow":"Not now","offerText":"{title} is part of Penstock {tier}. It {gives}.{ended} The licence reaches this machine by itself once you have paid.","onlyTeam":"Only a Penstock Team key works in a pipeline.","paid":"Paid, thank you. One last step and Penstock sets itself up.","releaseCleared":"There was no seat on this machine to release; the licence file was cleared.","releaseNone":"There is no licence on this machine to release, or the licence service could not be reached.","releaseThisMachine":"Release this machine","released":"The licence was released from this machine; it can be used on another.","seatsFull":"Your {tier} licence is in use on {count} machines, which is as many as it allows. Free one for this machine:","signIn":"Sign in","statusFree":"Penstock Free","statusTier":"Penstock {tier}","statusTrial":"Penstock Pro trial: {days}d","suggestText":"{title} is part of Penstock {tier}: it {gives}.","trialEnded":"Your {count}-day trial has ended.","unreachable":"The licence service could not be reached: {reason}","widget":"Penstock Licence","feature":{"autoLayout":{"title":"Auto layout","gives":"turns a tangled diagram into a readable left-to-right flow"},"codeLinks":{"title":"Diagrams linked to the code","gives":"connects the diagrams with the code that runs them: the way from a step to its worker and back, usages, Code Vision, variables and error codes across both, renaming one side with the other, tests run from the diagram, and coverage on it"},"conventions":{"title":"Modelling conventions","gives":"names ids and fills in attributes the way penstock.yaml says, as you model"},"flowAnalysis":{"title":"Flow analysis","gives":"finds deadlocks, branches that run twice and steps that can never run, and shows the path that leads there"},"migration":{"title":"Camunda 7 to Camunda 8 conversion","gives":"converts a diagram for Camunda 8 with a visual preview before anything is written, marks what it could not convert on its element, and writes job workers from the code of your delegates"},"testRuns":{"title":"Process test runs","gives":"runs a process step by step against a local engine, with mocks, and shows what every step received and changed"},"visualDiff":{"title":"The visual diagram diff","gives":"shows what changed between two versions as diagrams, not XML"},"aiChat":{"title":"AI chat","gives":"shows the changes an agent that speaks the Agent Client Protocol proposes to your diagrams on the canvas, for you to accept or reject"},"variableChecks":{"title":"Variable checks","gives":"finds the fields and names a step reads that the code that sets them lacks"}},"educationWho":"Free Pro for students, teachers and open-source maintainers","educationLine":"{who}: apply at {url}","applyFreePro":"Apply for Free Pro","educationApply":"{who}: apply"},"testRuns":{"cancel":"Cancel","case":"test case {number}","confirmText":"Penstock will deploy a test build to {url}, start instances and answer the jobs it mocks. The build and its instances are removed after each run. Mark the profile with deployment.forTests: true to stop being asked.","confirmTitle":"Run test cases on this engine?","controller":"Penstock scenarios","failed":"The test case failed. See the trace.","mocked":" (mocked)","noCases":"there is no test-case file; penstock test-cases --generate writes one next to the diagram","noneYet":"No run of Penstock test cases has been made in this window yet.","notConfirmed":"Not run: the engine was not confirmed for tests","output":"Penstock Test Runs","pickTitle":"Open the run on the diagram","run":"Run","skipped":"The test case was skipped.","started":"Penstock test cases, {when}","step":"{id}: {state}{mocked}","suite":"{diagram}: {name}","trace":"The trace of this run is at {trace}","traceNotKept":"Penstock could not keep the trace of a run: {reason}","unknownDiagram":"Penstock does not know which diagram that run belongs to","waiting":"waiting for a {kind} at {id}"},"unavailable":{"clipboardPicture":"Putting a picture on the clipboard","converting":"Converting a Camunda 7 diagram","diagramTests":"Running the tests a diagram is linked to","editorPalette":"The IDE palette","linkedRename":"Renaming what a diagram links to","notYet":"{what} is not available in VS Code yet.","projectPageToolWindow":"The tool window the project page sends"},"migration":{"convertQuestion":"Convert {name} to Camunda 8 into {folder}? The original file stays as it is."},"deploy":{"deploymentSection":"the deployment section","tokenAnswered":"The token endpoint answered {status}","tokenAnsweredWith":"The token endpoint answered {status} ({code})","noPassword":"No password for {user} on {where}: enter it under Connection","noClientSecret":"No client secret on {where}: enter it under Connection","noEngineAddress":"No engine address for {where}: set deployment.url"},"host":{"malformed":"The request is malformed","noSuchOperation":"The host has no such operation","notAvailable":"{operation} is not available in this host","unreadable":"{file} could not be read: {reason}"},"tree":{"empty":"No diagrams in this project","unreadable":"The project tree could not read this project: {reason}","open":"Open","reload":"Reload from disk","openConfig":"Open penstock.yaml","moreActions":"More actions…","actionsFor":"Actions for {name}","noFolder":"Open a folder to see its Penstock diagrams, decisions and forms.","openFolder":"Open Folder","cli":{"group":"Run Penstock","runTitle":"Penstock: {command}","diffPrompt":"Commit, branch or tag to compare with:","untrusted":"Running Penstock requires trusting this project first","exportTitle":"Export pictures","exportFolder":"Folder","exportFormat":"Format","exportComment":"SVG needs nothing. PNG needs puppeteer installed in the project.","command":{"check":"Check","scenarios":"Scenarios","junit":"JUnit Tests","code":"Code","docs":"Docs","format":"Format","change":"Diff Since…","export":"Export…","doctor":"Doctor"}}},"mcp":{"nodeMissing":"Penstock's MCP server needs Node.js with npm on the PATH. Install Node.js, then reload the window."},"trust":{"accept":"Trust project"},"rename":{"kind":{"bean":"bean name","class":"Java class","decision":"decision id","error":"error code","form":"form id","jobType":"job type","message":"message name","process":"process id","signal":"signal name","topic":"external task topic"},"offerMessage":"The {kind} '{name}' is still used in {summary}. Rename it to '{newName}' there too?","nothingElse":"Nothing else names '{name}'","notRenamable":"This value is not a name a diagram and its code share","action":"Rename","edit":"Rename {kind} '{name}' to '{newName}'","empty":"The new {kind} cannot be empty","scenarioMessage":"Rename its scenario file, {from}, to {to} too?","scenarioFailed":"{from} could not be renamed to {to}, so it still has the old name.","files":{"one":"{count} file","other":"{count} files"},"summary":"{files}, {diagrams} in diagrams and forms, {code} in code"},"whatsNew":{"title":"Penstock updated to {version}","action":"What's new"},"about":{"title":"About","version":"Version","development":"development","documentation":"Documentation","licenses":"Open source licenses","trusted":"Trusted projects","trustedNone":"No project is trusted through Penstock yet.","trustedRemove":"Remove","trustedFailed":"Penstock could not take {path} off its list of trusted projects: {reason}"},"chats":{"title":"Chats","rename":"Rename chat","delete":"Delete chat","renamePrompt":"Chat title","deleteConfirm":"Delete the chat \\"{title}\\"?","deleteDetail":"Its messages are removed from this project.","deleteAction":"Delete","connecting":"starting the agent","empty":"No chats yet. Ask the agent from the input at the foot of an editor, or start one here.","untrusted":"Trust this workspace to let an agent work in it.","outside":"{path} is outside the project.","openFirst":"Open a diagram, decision or form to continue this chat."}},"script":{"cannotBeRenamed":"A Penstock script tab cannot be renamed","context":{"summary":"Context: {names}","title":"Variables at this step","showAll":"Show all"},"writers":{"none":"No place in the process sets it","set":"Set by {places}"},"typeLabel":"Type: {type}","completion":{"variable":"Process variable","builtin":"FEEL built-in function"},"noSuchScript":"There is no script at that place in the diagram.","conflict":{"message":"The diagram changed {name} while you were editing it","keepTab":"Keep my text","useDiagram":"Use the diagram's text"},"run":{"button":"Run","title":"Values for the expression","help":"Each variable takes a JSON value or a FEEL expression. A variable left empty is not set.","kindLabel":"Kind","kind":{"json":"JSON","expression":"FEEL"},"unavailable":"Only a FEEL expression runs here. Groovy and JavaScript scripts run in the engine, as part of the process."}},"themeChoice":{"title":"Editor theme","ide":"Follow the IDE","light":"Light","dark":"Dark","dracula":"Dracula"},"processDebug":{"problem":{"unreadable":"The diagram could not be read, so no debug copy was made.","noProcess":"The diagram has no executable process to debug.","unknownProcess":"The process {process} is not in this diagram.","unreachable":"The engine could not be reached.","notDeployed":"The engine did not report the debug copy {process} after deploying it.","incident":"The engine reported an incident.","timedOut":"The engine did not answer within {seconds} seconds.","unreachableAfter":"The engine did not answer after {attempts} tries: {reason}"},"message":{"stopped":"Debugging stopped.","finished":"The process instance finished.","incident":"The instance has an incident: {reason}","endedElsewhere":"The instance ended outside the debugger."},"cleanup":{"searchFailed":"Could not look for debug instances: {reason}","cancelFailed":"Instance {instance} is still running: {reason}","deleteFailed":"The debug copy {deployment} is still deployed: {reason}"},"breakpointDot":"Breakpoint at {element}. Click to remove it.","confirm":{"title":"Debug on this engine?","text":"Penstock will deploy a copy of the process as {copy} on {url}, start an instance of it, and remove the copy when you stop. The copy runs the real tasks of your process, so workers and delegates on this engine will do real work.","accept":"Debug"},"invalidValue":"The value of {name} should be valid JSON","variables":"Variables","variablesHint":"Change a value to set it before the process goes on. Values are JSON, so text needs quotes.","noVariables":"This step has no variables yet.","variableName":"Name","variableValue":"Value of {name}","variableValueHint":"JSON value","addVariable":"Add variable","breakpoints":"Breakpoints","noBreakpoints":"No breakpoints. Select a step and toggle one to stop there.","removeBreakpoint":"Remove the breakpoint at {element}","remove":"Remove","toggleOnSelection":"Toggle breakpoint on selection","cleanupPending":"Removing the debug copy…","cleanupDone":"The debug copy {copy} was removed from the engine.","cleanupFailed":"The debug copy could not be removed","leftOnTheEngine":"Left on the engine: {deployment}. Penstock tries again the next time this tab opens.","tryAgain":"Try again","checkingTheEngine":"Looking for an engine to debug on.","noEngine":"No engine to debug on.","noEngineHint":"Connect an engine on this machine, or one marked deployment.forTests, to debug a copy of this process.","state":{"idle":"Not running","deploying":"Deploying the copy","running":"Running","paused":"Paused","finished":"Finished","failed":"Failed","stopped":"Stopped"},"starting":"Starting…","start":"Start debugging","startAndStep":"Start and step","continue":"Continue","step":"Step","stop":"Stop","copyNote":"Debugging runs a copy of this process. The original is never touched: the copy is deployed as {copy} and removed when the session ends.","copyIdFallback":"<process id>__debug","emptyTitle":"Debug this process on your engine","emptyHint":"Toggle breakpoints on steps, then start. The process stops before each breakpoint, and you can read and change its variables, continue, or step to the next element.","pausedAtBreakpoint":"Paused at a breakpoint","pausedAtStep":"Paused by a step","deploying":"Deploying the copy and starting an instance of it.","waiting":"Waiting for something outside the debugger: a worker, a timer, a message or a user task.","runningNote":"Running. Steps passed so far: {count}.","process":"Process","startVariables":"Start variables (JSON)","startVariablesHint":"An object, for example {\\"amount\\": 5}. Leave {} to start with none."},"web":{"pageTitle":"Penstock","unknownFailure":"Unknown failure","serverTimeout":"The server did not answer in time.","fileNotFound":"The file was not found.","noDocumentOpen":"No file is open.","deletedOnDisk":"{name} was deleted on disk. Your changes are kept here.","changedOnDisk":"{name} changed on disk while it has unsaved changes.","reloadedFromDisk":"{name} was reloaded from disk.","reloadFailed":"Unable to reload {name}: {reason}","saveFailed":"Unable to save {name}: {reason}","tree":{"project":"Project","newFile":"New file","empty":"No diagrams, decisions or forms in this project.","emptyHint":"Create a file to start, or start Penstock in the project folder.","unsaved":"Unsaved changes","more":"Project actions","refresh":"Refresh","copyFailed":"Unable to copy to the clipboard."},"tabs":{"label":"Open files","close":"Close {name}","unsaved":"{name} has unsaved changes","all":"All open files","menu":"Actions for {name}"},"pane":{"opening":"Opening {name}...","failed":"Unable to open {name}.","loadingEditor":"Loading the editor...","editorFailed":"Unable to load the editor.","editorFailedHint":"Check the connection to the server and try again."},"banner":{"deleted":"{name} was deleted on disk. Save to write it again.","changed":"{name} changed on disk. Your unsaved changes are still here.","saveFailed":"Unable to save: {reason}","reload":"Reload from disk","keep":"Keep my version","closeTab":"Close tab","compare":"Compare"},"connection":{"lost":"The connection to the server is lost. Your unsaved changes stay in this page; save again when the connection returns."},"empty":{"title":"No file is open.","hint":"Choose a diagram, decision or form in the project tree, or create a new one."},"newFile":{"title":"New file","type":"Type","kind":{"bpmn":"BPMN diagram","dmn":"DMN decision","form":"Form"},"content":"Content","empty":"Empty","example":"Example","name":"Name","nameHint":"The extension {extension} is added when it is missing.","folder":"Folder","folderHint":"Relative to the project folder. Leave it empty for the project folder.","create":"Create","nameEmpty":"Enter a name for the file.","nameCharacters":"The name should not contain / \\\\ : * ? \\" < > |","folderOutside":"The folder should stay inside the project.","exists":"A file with this name already exists in this folder.","failed":"Unable to create the file: {reason}"},"unsaved":{"title":"Close {name}?","text":"{name} has changes that are not saved.","discard":"Discard changes"},"text":{"label":"Contents of {name}"},"command":{"actions":"Find action","closeAll":"Close all tabs","closeSplit":"Close split view","closeTab":"Close tab","jumpToTab":"Jump to tab","newFile":"New file","nextTab":"Next tab","previousTab":"Previous tab","quickOpen":"Open file","reconnect":"Reconnect to the server","save":"Save","saveAll":"Save all","settings":"Settings","shortcuts":"Keyboard shortcuts","splitView":"Split view","resetLayout":"Reset the panel layout","toggleSidebar":"Show or hide the sidebar","askAgent":"Ask the agent","agents":"AI agents"},"conflict":{"diff":"Differences between your version and the file on disk","help":"Keeping your version writes it over the file the next time you save.","keepMine":"Keep my version","legendMine":"Your version","legendTheirs":"On disk","same":"Your version and the file on disk have the same lines.","summary":"Lines only in your version: {mine}. Lines only on disk: {theirs}.","takeTheirs":"Load from disk","title":"{name} changed on disk","tooDifferent":"The two versions differ too much to compare line by line."},"drafts":{"discard":"Discard","found":{"one":"Found unsaved changes from your last session in {count} file.","other":"Found unsaved changes from your last session in {count} files."},"label":"Unsaved changes from the last session","restore":"Restore unsaved changes"},"expired":{"hint":"Your unsaved changes are kept in this browser and come back when you open the project again.","retry":"Try again","text":"The link this page was opened with no longer works. Penstock was probably restarted. Use the link that penstock web printed in the terminal.","title":"This page has lost its link to Penstock"},"main":{"label":"Editor"},"menu":{"close":"Close","closeAll":"Close all","closeOthers":"Close others","closeRight":"Close to the right","copied":"Copied.","copyFailed":"Unable to copy to the clipboard.","copyPath":"Copy path","copyRelative":"Copy relative path","reveal":"Reveal in project tree","splitRight":"Split right","splitDown":"Split down"},"quick":{"commandsLabel":"Commands","files":"Files","hint":"Type to filter. Use the arrow keys to choose and Enter to open. Type > for commands.","label":"Open file","noCommands":"No commands match.","noFiles":"This project has no diagrams, decisions or forms yet.","noMatch":"No files match \\"{query}\\".","openFile":"{path}, open","opened":"open","placeholder":"Search files by name, or type > for commands","recent":"Recently opened","results":"Files","sidePlaceholder":"Choose a file to open beside this one"},"settings":{"appearance":"Appearance","autosave":"Save changes automatically","autosaveDelay":"Delay (seconds)","autosaveHelp":"A file is written after this many seconds without edits. A file that changed on disk is never overwritten.","autosaveRange":"The delay should be a whole number of seconds between {min} and {max}.","saving":"Saving","themeSystem":"Follow the system","title":"Settings","agents":"AI agents","agentsHelp":"Turn the AI chat on or off, choose how conversations open and set up the agents.","agentsManage":"Manage AI agents…","suggestNextBlock":"Suggest the next element","suggestNextBlockHelp":"Shows the element that most likely comes next beside a dead end. Tab adds it, Escape dismisses it.","suggestions":"Suggest names, sources and expressions","suggestionsHelp":"Shows the name, source or expression most likely for a field of the properties panel as faint text after the caret. Tab adds it, Escape dismisses it, Alt+Shift+E explains it.","editor":"Editor"},"shortcuts":{"editorHint":"Press ? inside an editor for its own shortcuts.","group":{"files":"Files","tabs":"Tabs","window":"Window"},"open":"Keyboard shortcuts","title":"Keyboard shortcuts"},"skip":"Skip to the editor","split":{"closePane":"Close the pane of {name}","resize":"Resize the split view"},"state":{"conflict":"Changed on disk","deleted":"Deleted on disk","failed":"Unable to save","saved":"All changes saved","saving":"Saving...","unsaved":"Unsaved changes","unsavedAuto":"Unsaved changes, autosave after {seconds} s without edits"},"status":{"connected":"Connected","encoding":"Encoding and line endings","engine":"Engine","expired":"Link expired","label":"Status","licence":"Licence","offline":"Offline"},"title":{"document":"{name} - {project} - Penstock","project":"{project} - Penstock"},"welcome":{"title":"Open a project","text":"Choose the folder that holds your diagrams, decisions and forms. Nothing leaves this machine.","open":"Open a project...","recent":"Recent projects","noRecent":"No projects opened yet.","recentFailed":"Unable to load the recent projects.","missing":"{folder} is no longer there.","notFound":"Folder not found","forget":"Remove {name} from the list","hint":"You can also start Penstock with a folder: penstock web <folder>."},"folders":{"title":"Open a project","open":"Open project","willOpen":"Opens {folder}","places":"Places","home":"Home","computer":"Computer","recent":"Recent","path":"Folder","location":"Location","list":"Folders","showHidden":"Show hidden folders","showHiddenCount":"Show hidden folders ({count})","hereConfig":"Project here: this folder has a penstock.yaml","hereDiagrams":"Project here: {count} diagrams, decisions or forms in this folder","noFolders":"No folders here.","truncated":"Showing the first {shown} of {total} folders. Type a path to go further.","link":"{name} is a link to another folder","linkTag":"link","projectTag":"project"},"project":{"switcher":"Projects","recent":"Recent projects","openAnother":"Open another project...","close":"Close project","gone":"The folder of {name} is no longer there. Your unsaved changes stay in this page.","downloadZip":"Download project as .zip","unsavedOpenTitle":"Open another project?","unsavedCloseTitle":"Close the project?","unsavedText":"{count} open files have changes that are not saved. The tabs of this project are closed when the project changes.","saveAll":"Save all","saveAllFailed":"Unable to save every file. Nothing was closed.","awayTitle":"The project changed in another tab","awayText":"This page still shows the previous project. Reload it to continue with the project that is open now."},"entry":{"newFolder":"New folder","newFolderTitle":"New folder","createFolder":"Create folder","name":"Name","inside":"Created inside {folder}.","insideProject":"Created in the project folder.","nameEmpty":"Enter a name.","nameCharacters":"The name should not contain / \\\\ : * ? \\" < > | or control characters.","nameEnds":"The name should not start with a space or end with a space or a dot.","rename":"Rename","renameLabel":"New name","duplicate":"Duplicate","moveAction":"Move to...","moveTitle":"Move {name}","moveTo":"Move to","move":"Move","moveFailed":"Unable to move {name}: {reason}","projectFolder":"(project folder)","noFolders":"There is no other folder to move this to.","delete":"Delete","deleteFile":"Delete file","deleteFolder":"Delete folder","deleteFileTitle":"Delete {name}?","deleteFolderTitle":"Delete folder {name}?","deleteFileText":"{name} is removed from the disk. This cannot be undone.","deleteFolderText":"The folder {name} and the {count} files in it are removed from the disk. This cannot be undone.","deleteUnsaved":"{count} of them are open with unsaved changes, and those changes are lost.","copyPath":"Copy path","copyRelative":"Copy relative path","copied":"Path copied.","download":"Download","downloadActive":"Download the open file","renameTitle":"Rename {name}"},"upload":{"title":"Add files to the project","text":"Choose where the files are saved in the project. They are copied there; the originals stay where they are.","button":"Upload file...","drop":"Drop BPMN, DMN or form files to add them to the project","extension":"The name should end with .bpmn, .dmn or .form.","ignored":"Only .bpmn, .dmn and .form files can be added. Other files were skipped.","addOne":"Add file","addMany":"Add {count} files","fileN":"File {number}"},"titleBar":{"label":"Window title"},"dock":{"resize":"Resize the panels"},"code":{"noServer":"Highlighting only. Install {server} to get completion, hover and go to definition here.","uses":{"title":"Used in diagrams","open":"Open {name} in {diagram}","item":"{type} in {diagram}","more":"and {count} more","kind":{"JOB_TYPE":"Job type","TOPIC":"Topic","CLASS":"Class","BEAN":"Bean","MESSAGE":"Message"}},"names":{"code":"in code","diagram":"in a diagram","both":"in code and diagrams"}},"toolPanel":{"label":"Penstock project model","toolbar":"Penstock actions","filter":"Filter the model","refresh":"Refresh","open":"Open","menu":"Penstock node actions","loading":"Reading the project model...","error":"Unable to read the project model.","empty":"Nothing to show yet.","emptyHint":"Open a folder with BPMN, DMN or form files, or start from an example.","noMatch":"Nothing matches the filter.","locked":"Links to code are part of Pro.","unlock":"Unlock","truncated":"The tree shows the first {count} nodes. Narrow it with the filter.","refreshFailed":"Unable to refresh the model: {reason}","stale":"The model changed while you chose. Choose the action again.","unsupported":"The browser editor cannot do this yet.","copied":"Copied to the clipboard."},"sidebar":{"label":"Sidebar","actions":"Actions","check":"Check","scenarios":"Scenarios","monitor":"Monitor","debug":"Debug","layout":"Auto layout","unavailable":"Not available for the open file.","resize":"Resize the sidebar","resizeChats":"Resize the chat list","toggle":"Show or hide the sidebar","countScenarios":"{passed} of {all} scenarios passed","countProblems":{"one":"{count} problem","other":"{count} problems"},"countWaiting":{"one":"{count} waiting","other":"{count} waiting"}},"script":{"noDiagram":"The diagram of this script is not open in the editor."}},"webHost":{"testsNeedTheIde":"Running the tests of a worker needs the IDE. Run them from your build tool.","source":{"readOnly":"Read-only","truncated":"The file is large, so only the first part is shown.","label":"Source of {name}"},"compare":{"failed":"The two versions could not be compared","failedHint":"One of them is not a diagram Penstock can read.","against":"Compared with {version}","summary":"{added} added, {removed} removed, {changed} changed, {moved} moved","identical":"No differences","action":"Compare with the last commit","notTracked":"This file is not in a git repository yet, so there is nothing to compare it with.","head":"the last commit","tab":"{name} (changes)"},"places":{"open":"Open","hint":"Several places match. Pick the one to open.","none":"{name} is not written in any source file of this project."},"rename":{"title":"Rename in linked files","intro":"{from} is now {to}. The old name is still written in:","apply":"Rename","offer":"{from} is still written elsewhere. {summary}","review":"Review","done":"Renamed {from} to {to}. Places: {places}, files: {files}.","failed":"Nothing was renamed: {reason}","where":{"diagram":"Diagram","form":"Form","code":"Code"}},"migration":{"title":"Convert {name} for Camunda {target}","convert":"Convert","folder":"Folder","folderHint":"The converted files go here, inside the project.","folderOutside":"The folder should be inside the project","replace":"Existing files","replaceHint":"Already there: {files}","replaceBox":"Replace the files that are already there","changes":"What changes","noChanges":"Nothing in the file itself changes.","open":"What stays open","nothingOpen":"Nothing stays open.","byHand":"By hand","summary":"Changes: {changes}, left open: {open}, by hand: {manual}"},"licence":{"title":"Penstock licence","plan":"Plan: {tier}. {detail}","loading":"Reading the licence…","trial":"Pro trial, {days} days left.","needed":"This needs Penstock Pro. Enter a key or buy one.","key":"Licence key","keyHint":"The key from your purchase. It is kept on this machine, never in the page.","keyEmpty":"Enter the licence key first","email":"E-mail","emailHint":"Filled in on the payment page when you buy.","activate":"Activate","buyPro":"Buy Pro","buyTeam":"Buy Team","release":"Release this machine","activated":"Penstock {tier} is active on this machine.","released":"The licence was released from this machine.","checkoutOpened":"The payment page is open in a new tab. The key arrives by e-mail once you have paid.","tier":{"free":"Free","pro":"Pro","team":"Team"}},"clipboard":{"copyTitle":"Copy by hand","copyText":"The browser did not let the page copy. Copy the text below yourself.","copy":"Copy","pasteTitle":"Paste by hand","pasteText":"The browser did not let the page read the clipboard. Paste the text below."}},"desktop":{"name":"Penstock","about":{"description":"BPMN, DMN and form editor for Camunda"},"menu":{"file":"File","newFile":"New file","newWindow":"New window","openProject":"Open project...","openRecent":"Open recent","noRecent":"No recent projects","clearRecent":"Clear recent projects","closeProject":"Close project","save":"Save","closeTab":"Close tab","undo":"Undo","redo":"Redo","cut":"Cut","copy":"Copy","paste":"Paste","selectAll":"Select all elements","closeWindow":"Close window","revealMac":"Reveal in Finder","revealWindows":"Show in Explorer","revealLinux":"Show in file manager","edit":"Edit","view":"View","toggleTree":"Toggle project tree","toggleSidebar":"Toggle sidebar","zoomIn":"Zoom in","zoomOut":"Zoom out","zoomReset":"Actual size","window":"Window","help":"Help","shortcuts":"Keyboard shortcuts","website":"Penstock website","about":"About {name}"},"shell":{"starting":"Opening {project}...","welcome":{"title":"Open a project","hint":"Choose a folder with BPMN diagrams, DMN decisions and forms.","open":"Open project...","recent":"Recent projects","noRecent":"Projects you open appear here."},"failed":{"title":"Unable to start the editor","hint":"The editor engine did not start for {project}."},"stopped":{"title":"The editor engine stopped","hint":"Your unsaved changes are still in the window. Restart the engine to continue."},"crashed":{"title":"The editor window stopped","hint":"Reload the window to continue."},"restart":"Restart","reload":"Reload","another":"Open another project...","details":"Details"},"dialog":{"openProject":{"title":"Open project","button":"Open"},"unsaved":{"title":"Close without saving?","text":"This window has unsaved changes. They will be lost if you close it.","discard":"Discard changes","cancel":"Cancel"},"quit":{"title":"Quit without saving?","text":"Some windows have unsaved changes. They will be lost if you quit."}}},"agent":{"notFound":"The agent command was not found or could not be started.","unsafe":"The agent was not started: a Windows command file cannot be given these arguments safely.","exited":"The agent stopped unexpectedly.","installFailed":"The agent service could not be installed. Check your network or npm registry and try again.","npmMissing":"Penstock needs Node.js with npm to start the agent service.","unpublished":"npm has no Penstock command line for this version, so the agent service could not start.","serviceExited":"The agent service stopped before it was ready.","serviceNotStarted":"The agent service could not be started.","exitCode":"exit code {code}","authRequired":"The agent requires authentication. Log in or configure credentials first.","failed":"The agent reported an error: {detail}","timeout":"The agent did not answer in time.","write":"Write {path}","allow":"Allow","reject":"Reject","writeRejected":"Writing {path} was not allowed.","newChat":"New chat","modeName":"Mode","stepOf":"step {step} of {total}","waitingForYou":"waiting for you","retiring":"The agent is finishing in an older window; try again in a moment.","updateNeeded":"The agent server is newer than this window. Update the plugin or the extension, then try again.","hubLost":"The agent server stopped. Try again in a moment.","serverGone":"The agent stopped because its agent server closed during the turn.","stopped":"The turn was stopped.","unanswered":"Nobody answered the question, so the turn was stopped.","quiet":"The agent said nothing while no window was open, so the turn was stopped.","killed":"The agent did not stop in time, so it was restarted and this turn was stopped.","newSession":"The agent does not keep this chat's earlier messages, so it continues in a new session.","contextFile":"The message is about the file {file}.","contextElements":"Selected elements: {elements}.","contextLinks":"When you mention an element of a Penstock diagram, write it as a markdown link, [Name](penstock:<file>#<id>), with the file path relative to the project and the element's id, for example [Charge card](penstock:docs/order-process.bpmn#charge_card). A file is [name](penstock:<file>). Never put the id or the path in the visible text.","reason":{"unknownAgent":"There is no agent called {agent}.","noSuchChat":"There is no such chat.","noSuchQueued":"That message is no longer queued.","noSuchOption":"The agent does not offer that setting.","badOptionValue":"The agent does not offer that choice for this setting.","optionRefused":"The agent did not accept the change: {reason}","noSignIn":"The agent offers no sign-in to start from here.","signInRefused":"The agent did not sign in: {reason}","off":"The AI chat is turned off in the settings.","staleQuestion":"The agent is not waiting for that question any more.","badOption":"{option} is not one of the answers the agent offered.","badText":"The message should not be empty or longer than {limit} characters.","badTitle":"The title should not be empty or longer than {limit} characters.","queueFull":"No more than {limit} messages should wait in the queue.","notRunning":"The agent is not running.","noSuchFile":"There is no such file.","fileTooLarge":"The file should be smaller than {limit} MB.","isAFolder":"That is a folder, not a file.","noClient":"The client should be named."},"log":{"skipped":"Penstock skipped the chat file {file}: {reason}","notKept":"Penstock could not keep the chat {id}: {reason}"}},"patch":{"eventNotAllowed":"a {type} cannot have a {event} event definition","sameElement":"a sequence flow cannot start and end at \\"{id}\\"","startEventTarget":"nothing can lead into the start event \\"{id}\\"","boundaryTarget":"nothing can lead into the boundary event \\"{id}\\"","differentScopes":"\\"{from}\\" and \\"{to}\\" are not in the same process or sub-process","eventBasedTarget":"an event-based gateway can only lead to a catch event or a receive task, not \\"{to}\\"","duplicateFlow":"there is already a sequence flow from \\"{from}\\" to \\"{to}\\"","notAFlowNode":"\\"{id}\\" is a {type}, which a sequence flow cannot start or end at","cannotRemoveContainer":"\\"{id}\\" is a {type}; remove it in the editor","isAFlow":"\\"{id}\\" is a sequence flow; move the elements it joins","dependsOnFailed":"needs operation {number}, which cannot be applied","noDrawing":"the diagram has no drawing to place elements in"},"ghost":{"chip":{"add":"Add","connect":"Connect","remove":"Delete","rename":"Rename","move":"Move","condition":"Condition","reference":"Reference","worker":"Worker","change":"Change"},"item":{"add":"Add {type} “{name}”","connect":"Connect “{from}” to “{to}”","remove":"Delete {type} “{name}”","move":"Move {type} “{name}”","rename":"Rename {type} “{name}” to “{value}”","condition":"Set the condition of {type} “{name}” to {value}","setOne":"Set {key} of {type} “{name}” to {value}","setMany":"Change {keys} of {type} “{name}”"},"check":{"passed":"Checks passed"},"status":{"ok":"Passed","warning":"Warning","error":"Error","blocked":"Cannot be applied"},"checking":"Checking the proposed changes…","proposed":"{count} proposed changes to review","position":"{label}: {position} of {count}","accepted":"Accepted: {label}. {left} left to review.","rejected":"Rejected: {label}. {left} left to review.","allRejected":"Rejected {count} changes.","allAccepted":"Accepted {count} changes as one step. {left} left to review.","cannotAccept":"Cannot accept “{label}”: {reason}","alreadyRejected":"a change it needs was rejected","nothingToAccept":"There is nothing left that can be accepted.","noLongerApplies":"“{label}” no longer applies to the diagram: {reason}","reviewed":"Review finished: {accepted} accepted, {rejected} rejected.","commentSent":"Comment sent about “{label}”","region":"Review of proposed changes","title":"Proposed changes","summary":"{pending} of {total} to review","attention":"{count} need attention","queued":"{count} more proposals waiting","acceptAll":"Accept all","rejectAll":"Reject all","accept":"Accept","reject":"Reject","next":"Next change (J)","previous":"Previous change (K)","showAll":"Show all changes","hideAll":"Hide the list","comment":"Comment for the agent","sendComment":"Send comment","close":"Close the review","decided":{"accepted":"Accepted","rejected":"Rejected"},"patchFindings":"Not tied to one change","empty":"No proposed changes.","emptyHint":"When an agent proposes changes, they appear on the canvas as ghosts for you to accept or reject.","checkpoint":{"heading":"What undo does not cover","kept":"A checkpoint of the diagram is kept before each accepted step.","limit":{"comments":"Comments you sent to the agent stay sent; undo does not recall them.","otherFiles":"Only this diagram is covered: forms, decision tables and code the agent changed are not.","deployed":"A deployment made after accepting is not withdrawn.","memory":"The checkpoint lives in memory and is gone when the editor is closed or reloaded."}},"collapse":"Collapse the review","expand":"Expand the review","undone":"Back for review: {label}","acceptChange":"Accept change","rejectChange":"Reject change","wholeHint":"The agent writes the whole file, so the change is accepted or rejected as one.","wholeAccepted":"Change accepted.","wholeRejected":"Change rejected."},"suggestions":{"status":{"offered":"Suggested {value}. Tab adds it, Escape dismisses it, Alt+Shift+E explains it.","added":"Added {value}.","dismissed":"Suggestion dismissed."},"explain":{"title":"Why this suggestion","likelihood":"Likelihood {percent}%","keys":"Tab adds it, Escape dismisses it"},"unit":{"ratio":"ratio","percent":"percent","basisPoint":"basis point","second":"second","millisecond":"millisecond","minute":"minute","hour":"hour","byte":"byte","kilobyte":"kilobyte","megabyte":"megabyte","gigabyte":"gigabyte","dollar":"dollar","cent":"cent"},"origin":{"fact":"A fact of the code","pool":"Found in the project","composed":"Composed from the names of the diagram","transform":"An expression, checked on the sample values"},"reason":{"other":"A signal from the diagram and the project","kindConvert":"Converts {from} to {to}, a factor of {factor}.","kindWholeMinorUnits":"Rounds the result to whole {to}.","kindIsoDuration":"Writes the duration as an ISO-8601 length.","kindDurationText":"Writes the duration as its ISO-8601 text.","kindNumberFromText":"Reads the text as a number.","kindTextFromValue":"Writes the value as text.","kindDurationFromText":"Reads the text as a duration.","constantInDiagram":"The diagram already uses {text}.","constantInProject":"Another diagram of the project uses {text}.","weightedOverlap":"shares its words with the name","headEqual":"the same head word","tailEqual":"the same last word","jaroWinkler":"spelled alike","trigramCosine":"letters in common","lengthRatio":"a similar length","casingAgrees":"the same casing","ownerStripped":"an element prefix removed","typeKnown":"a known type","originContract":"written by the worker's code","originScript":"written by the script","originDecision":"an output of a called decision","originDownstream":"read by a later element","originScope":"in scope here","originTaskType":"written for the same task type elsewhere","labelAssociation":"its words go with the label's"}},"nextBlock":{"chip":"Next: {type} · Tab to add","status":{"suggested":"Suggested next: {type}. Press Tab to add it, Escape to dismiss.","added":"Added {type}.","dismissed":"Suggestion dismissed."}},"aiBlocks":{"selectElement":"Select {type} {name} on the canvas","openScenario":"Open scenario {name} in the Scenarios tab","diffSummary":"{added} added, {removed} deleted, {changed} changed"},"timeline":{"title":"Timeline","region":"Timeline of a run","play":"Play","previousStep":"Previous step","nextStep":"Next step","toStart":"To the start","toEnd":"To the end","speed":"Playback speed {speed}","channel":"Colour bars by","channelStatus":"Status","channelDuration":"Duration","channelCoverage":"Coverage","source":"Show the run of","sourceInstance":"Instance","sourceScenario":"Scenario run","refresh":"Refresh","close":"Close the timeline","zoomIn":"Zoom in","zoomOut":"Zoom out","fit":"Fit to width","resize":"Resize the timeline","playhead":"Playhead","step":"Step {step} of {total}","stepAt":"Step {step} of {total}: {name}","beforeStart":"Before the first step","lane":"{name}, visits: {count}","bar":"{name}, visit {visit}, {state}, {duration}","merged":"{count} short steps","folded":"{span} folded","stateCompleted":"Completed","stateActive":"Active","stateFailed":"Failed","stateTerminated":"Terminated","emptyTitle":"No run to show.","emptyHint":"Pick an instance in Monitor, or run a scenario, and its steps appear here.","loadingTitle":"Reading the run…","loadingHint":"Asking the engine for the steps of this instance.","noStepsTitle":"This run has no steps yet.","noStepsHint":"The engine has not recorded a step for it. Refresh in a moment.","problem":"Unable to read the run: {reason}","detailStarted":"Started","detailEnded":"Ended","detailDuration":"Duration","detailInstance":"Activity instance","detailVisit":"Visit","detailIncident":"Incident","detailChanged":"Changed variables","detailMocked":"Answered by the scenario","detailNone":"Select a bar to see its step.","coverageSummary":"{covered} of {total} elements reached","unvisited":"Not reached","runLabel":"Run {id}","keysHint":"Left and Right step, Shift with them walks the visits of a row, Shift with Up and Down changes the row, Space plays, Home and End jump, Enter selects the element, plus, minus and zero zoom"},"codeBridge":{"ambiguousDetail":"More than one place in the code answers to {name}.","badgeAmbiguous":"{element}: {count} places in the code match {name}","badgeBound":"{element}: code found in {where}","badgeMissing":"{element}: no code found for {name}","cardLabel":"Code of {element}","createStub":"Create worker stub","groupTitle":"Code","kindBean":"Bean","kindClass":"Class","kindDecision":"Decision","kindJobType":"Job type","kindMessage":"Message","kindProcess":"Process","kindTopic":"Topic","missingDetail":"Nothing in the project's code is named {name}.","missingNear":"The closest name in the code is {near}.","moreCount":"and {count} more","notReached":"No test run has reached it","openCode":"Open code","openDecision":"Open decision","openPlace":"Open {where}","openProcess":"Open process","paused":"The debugger is paused here","reached":"Reached by a test run","snippetLoading":"Reading the code…","snippetUnavailable":"The first lines are not available here.","stateAmbiguous":"Several places match","stateBound":"Code found","stateMissing":"No code found","tests":"Tests: {count}"},"assistant":{"showDetails":"Show details","card":{"close":"Close","connecting":"Starting the agent...","expand":"Open the chat in the sidebar","fold":"Fold the chat","label":"Latest turn of the chat","loading":"Loading the conversation...","unfold":"Unfold the chat","suggest":"Expand the chat","suggestLong":"The conversation is getting long.","suggestDocument":"The answer contains a file.","newChat":"New chat"},"change":{"changed":"{name}: {what}","created":"New file {name}","file":"{name} changes","flow":"Flow {from} → {to}","lines":"{name}: +{added} -{removed} lines","moved":"{name} moves"},"chats":{"empty":"No chats yet. Start one with +.","label":"Chats","menu":"Chat actions","new":"New chat","title":"Chats","agents":"AI agents"},"delete":{"accept":"Delete chat","action":"Delete","text":"\\"{title}\\" and its messages will be removed from this project.","title":"Delete chat"},"ended":{"text":"The agent ended without an answer.","title":"The agent has ended"},"form":{"title":"Agent settings","agent":"Agent","agentNew":"Changing the agent starts a new chat.","manage":"Manage agents…","back":"Back"},"input":{"noAgent":"No agent","add":"Attach a file or mention an element","ask":"Ask the agent","settingsLabel":"{agent}: {settings}","optionNextTurn":"Applies from the next message.","context":"Context of the message","keyEnter":"Enter","keyShiftEnter":"Shift Enter","keyNewline":"newline","keyQueue":"queue","keySend":"send","label":"Message to the agent","more":"+{count} more","placeholder":"Ask about this or give the agent a task","queued":"Queued messages","queuedText":"Queued: {text}","removeChip":"Remove {name} from the message","send":"Send","stop":"Stop","unqueue":"Take the message back","stateWorking":"Agent working…","stateWaiting":"Waiting for you","showCard":"Show the conversation"},"mention":{"elements":"Elements","files":"Files","label":"Attach to the message","none":"Nothing matches.","search":"Search elements and files"},"noAgent":{"choose":"Choose another agent","settings":"Agent settings","text":"No agent is installed on this machine. Install one with:","title":"No agent found"},"question":{"allow":"Allow","allowAlways":"Always allow","clean":"Check is clean","deny":"Deny","denyAlways":"Always deny","details":"Show the changes in full","label":"The agent asks for permission","showOnCanvas":"Show on canvas","undo":"Undo takes it back","apply":{"one":"Apply {count} change to {file}?","other":"Apply {count} changes to {file}?"},"files":{"one":"{count} file","other":"{count} files"},"problems":{"one":"{count} problem to look at","other":"{count} problems to look at"}},"rename":"Rename","signIn":"Sign in","signedOut":{"text":"Sign in to the agent in its own app, then try again.","title":"{agent} is not signed in"},"state":{"connecting":"starting","failed":"stopped with an error","idle":"idle","waiting":"waiting for you","working":"working"},"switch":{"label":"Switch chat","list":"Chats of this project"},"tryAgain":"Try again","unreachable":"Unable to reach the agent service","changeLabel":"Changes to {name}","diffTooLarge":"The change is too large to show here.","hideXml":"Hide XML","showXml":"Show XML","noVisibleChange":"Nothing changes in the drawing; only the text of the file does.","reviewOnCanvas":"The change is also shown on the canvas of {name} while that diagram is open.","thinking":"Thinking","newChat":"New chat","openFile":"Open {path}","openAtLine":"Open {path} at line {line}","truncated":"The rest of this message is not shown.","tool":{"pending":"Waiting","running":"Running","done":"Done","failed":"Failed","stopped":"Stopped","penstock":{"listDiagrams":"List diagrams","showDiagram":"Show diagram","editDiagram":"Edit diagram","checkDiagram":"Check diagram","analyzeFlow":"Analyze flow","listScenarios":"List scenarios","checkCodeLinks":"Check code links"}},"loose":{"element":"Not shown as ghosts (element type not supported): {ids}","attach":"Not shown as ghosts (not connected to an element that already exists): {ids}","scope":"Not shown as ghosts (inside another container than the element before it): {ids}","type":"Not shown as ghosts (the element type changes): {ids}","reconnect":"Not shown as ghosts (a flow is reconnected): {ids}","resize":"Not shown as ghosts (an element is resized): {ids}","property":"Not shown as ghosts (a property that cannot be set or cleared this way): {ids}","event":"Not shown as ghosts (the event definition changes): {ids}"},"sentence":{"listing":"Listing the diagrams","listed":{"one":"Listed {count} diagram","other":"Listed {count} diagrams"},"listedPlain":"Listed the diagrams","reading":"Reading {file}","read":"Read {file}","checking":"Checking {file}","checked":{"one":"Checked {file} - {count} problem","other":"Checked {file} - {count} problems"},"checkedClean":"Checked {file} - no problems","checkedPlain":"Checked {file}","analysing":"Analysing the flow of {file}","analysed":{"one":"Analysed the flow - {count} problem","other":"Analysed the flow - {count} problems"},"analysedDeadEnds":{"one":"Analysed the flow - {count} dead end","other":"Analysed the flow - {count} dead ends"},"analysedClean":"Analysed the flow - no problems","analysedPlain":"Analysed the flow of {file}","scenariosListing":"Listing the scenarios of {file}","scenariosListed":{"one":"Listed {count} scenario","other":"Listed {count} scenarios"},"scenariosRan":{"one":"Ran {count} scenario - {passed} passed","other":"Ran {count} scenarios - {passed} passed"},"scenariosPlain":"Listed the scenarios of {file}","codeChecking":"Checking the code links","codeChecked":{"one":"Checked the code links - {count} problem","other":"Checked the code links - {count} problems"},"codeClean":"Checked the code links - no problems","codePlain":"Checked the code links","editing":"Editing {file}","edited":"Edited {file}","previewing":"Previewing an edit of {file}","previewed":"Previewed an edit of {file}","unfinished":"{step} - unable to finish","more":"+{count}"},"work":{"steps":{"one":"{count} step","other":"{count} steps"},"label":"What the agent did"},"view":{"label":"View of the change","picture":"Picture","source":"Source","openDiff":"Open diff","diffTitle":"Changes to {name}","sourceLabel":"Source of the change","folded":{"one":"{count} unchanged line","other":"{count} unchanged lines"},"showSource":"Show source","applied":{"one":"Changed {count} element","other":"Changed {count} elements"},"appliedFile":"Changed {file}"},"picker":{"list":"Agents","missing":"Not installed","manage":"Manage agents…","newChat":"Choosing another agent starts a new chat."},"chip":{"noElement":"No element called {id} in {file}","noFile":"No file called {file} in this project"},"tab":{"emptyChat":"This chat has no messages yet.","emptyChatHint":"Write below to ask the agent about this editor's file.","label":"Chat","transcript":"Conversation","empty":"Ask the agent about this project.","emptyHint":"Changes it wants to make are shown here for your approval.","unreadable":"Unable to load this chat.","unreadableHint":"The agent may have been stopped. Try again in a moment."},"working":"Working..."},"agents":{"title":"AI agents","customDescription":"Your own command: {command}","general":"General","aiChat":"AI chat","search":"Search agents","list":"Agents","on":"On","all":"All agents","allShown":"Every agent is on.","noneOn":"No agent is on. Install one and turn it on.","noMatch":"No agent matches the search.","loading":"Loading the agents…","failed":{"title":"The agents are not available","hint":"Penstock could not read the list of agents. Check that the editor is connected and try again."},"state":{"installing":"Installing…","installingPercent":"Installing {percent}%","reading":"Reading models…","failed":"Unable to install","update":"Update available","on":"On","installed":"Installed"},"version":"Version {version}","license":"License","website":"Website","repository":"Source code","status":"Status","via":{"path":"Found on your PATH","download":"Installed by Penstock","package":"Prepared by Penstock","custom":"Your own command"},"how":{"binary":"Not installed. Penstock downloads it for this computer and checks the download against the checksum of the registry.","npx":"Not installed. It runs through npx, which fetches it the first time you use it.","uvx":"Not installed. It runs through uvx, which fetches it the first time you use it.","custom":"Your own command"},"cannotInstall":"Not installed. Penstock cannot install it on this computer.","install":"Install","tryAgain":"Try again","update":"Update","turnOn":"Turn on","turnOff":"Turn off","uninstall":"Uninstall","byHand":"To install it yourself, run","models":"Models and options","modelsRefresh":"Refresh models","modelsReading":"Asking the agent…","modelsEmpty":"No models read yet.","modelsEmptyHint":"Refresh models starts the agent, asks which models it offers and closes it again. The agent has to be signed in.","modelsOwn":"The agent’s own choice ({value})","modelsRead":"Read {time}","signInHint":"Sign in with the agent’s own tool, for example by running it once in a terminal, then refresh again.","updating":"Updating the list…","neverUpdated":"The list has not been updated yet.","updatedSnapshot":"The list that came with Penstock, {time}","updated":"List updated {time}","refresh":"Refresh the list","blocked":{"node":"Needs Node.js, which is not on this computer.","nodeLink":"Get Node.js","uv":"Needs uv, which is not on this computer.","uvLink":"Get uv","platform":"There is no download for this computer.","checksum":"The registry gives no checksum for this download, so Penstock does not install it. Install it yourself and Penstock finds it on the PATH."},"reason":{"tooLarge":"The answer was larger than it should be.","timeout":"The server did not answer in time.","offline":"Unable to reach the server.","http":"The server answered with an error:","badList":"The answer was not a list of agents.","notKept":"Penstock could not keep the list on this computer:","archiveTooLarge":"The download unpacks to more than it should.","badArchive":"The download is not a valid archive.","unsafeArchive":"The download has a file outside its folder, so Penstock stopped:","noTar":"Penstock needs the tar program to unpack this download, and it is not available:","cancelled":"Cancelled.","noNode":"Node.js is not on this computer.","npmFailed":"npm was unable to fetch the package:","checksum":"The download does not match the checksum of the registry, so Penstock threw it away.","noProgram":"The download does not contain the program:","notInstallable":"Penstock does not install this agent.","busy":"An install is still running.","notInstalled":"Install the agent before turning it on.","noOptions":"The agent did not offer any models or options.","noHostPage":"This host has no page for the AI agents.","installFailed":"Unable to install the agent:","unknown":"Something went wrong."},"aiChatOff":"Off","aiChatBottom":"At the bottom of the editor","aiChatSidebar":"In the sidebar","aiChatOffHelp":"No input, no chats and no agent process: the agent is not started.","aiChatBottomHelp":"The input sits at the foot of the editor, with the conversation card above it.","aiChatSidebarHelp":"The conversation lives in the Chat tab of the sidebar, and no input sits at the foot."},"scriptTab":{"title":"{name} - {what}","nameWithId":"{name} ({id})","script":"script","condition":"condition","executionListener":"{event} listener","taskListener":"{event} task listener","input":"input {name}","output":"output {name}"},"feel":{"debug":{"action":"Debug expression","breakpoint":{"otherFile":"Breakpoints can only be set in the expression that is being debugged","pastEnd":"This line is after the end of the expression"},"error":"Error: {message}","group":{"after":"Variables after the script","current":"Current","evaluated":"Evaluated","iteration":"Iteration variables","variables":"Variables"},"request":{"unsupported":"This debugger does not support {command} yet"},"stack":{"name":"Expression"},"title":"FEEL debug: {name}","truncated":"The trace stopped after {count} steps, so the rest of the expression is not stepped through","type":{"name":"FEEL expression debug"},"unsupported":"The debugger does not follow this construct yet (at character {at})","launch":{"invalid":"The debug configuration needs an expression, its sample values and its source"},"notStarted":"The expression is not being debugged"},"problem":{"doubleEquals":"FEEL compares with =, not ==","spacedName":"A name with spaces needs backticks","unclosedBracket":"This bracket is never closed","missingElse":"An if needs an else","endsTooEarly":"The expression ends too early","unexpectedToken":"This is not expected here","unterminatedString":"This string is never closed","notFeel":"This is not a FEEL expression"},"fix":{"replace":"Replace with {text}"},"run":{"lens":"Run expression","channel":"Penstock FEEL","input":"{name} = {value}","result":"Result from {source}: {value}","warning":"{text} gives a warning: {type}","engineWarning":"Warning: {message}","rejected":"Not run: {message}","failed":"The engine failed: {problem}","noEngine":"No Camunda 8 engine is connected, so the expression ran in the editor (preview).","inline":"→ {value}","error":"The expression could not be run: {message}","inlineFailed":"✕ {message}","sample":{"prompt":"Sample value for {name}","rejected":"The value of {name} is not valid FEEL: {problem}","warned":"The value of {name} reads a name that has no value","invalidJson":"The value of {name} is neither JSON nor a FEEL expression"}},"source":{"preview":"preview","engine":"engine"}},"clientFacts":{"sentence":{"notFound":"Python, Go, C# and Scala workers are not read because the Penstock CLI was not found.","incompatible":"Python, Go, C# and Scala workers are not read because the Penstock CLI is too old for this editor.","untrusted":"Python, Go, C# and Scala workers are not read until this project is trusted.","failed":"Python, Go, C# and Scala workers are not read because the Penstock CLI failed.","timedOut":"Python, Go, C# and Scala workers are not read because the Penstock CLI took too long to answer.","tooLarge":"Python, Go, C# and Scala workers are not read because the project has too many of their files."},"hint":{"install":"Install the Penstock CLI with npm install -g @kern0x1b/penstock-cli, or set its path in the Penstock settings.","trust":"Trust the project to use its own CLI.","check":"Check the Penstock CLI in the terminal with penstock facts, then open the diagram again.","fewerFiles":"Keep the code of these languages in fewer files, or leave them out of the project."}}}`),libs:{Configuration:`Configuration`,"Hit policy:":`Hit policy`,"Remove list item {index}":`Remove list item {index}`,"Section contains a warning":`Section contains a warning`}},o={en:a},s={ru:()=>e(()=>import(`./ru-DhjXKaLT.js`),[],import.meta.url),de:()=>e(()=>import(`./de-DG3quwSS.js`),[],import.meta.url),zh:()=>e(()=>import(`./zh-tAs09DKy.js`),[],import.meta.url),ja:()=>e(()=>import(`./ja-CJkgGd9w.js`),[],import.meta.url),ko:()=>e(()=>import(`./ko-BaifpU2V.js`),[],import.meta.url),es:()=>e(()=>import(`./es-PcpRjhXP.js`),[],import.meta.url),"pt-BR":()=>e(()=>import(`./pt-BR-DkBw_2Tc.js`),[],import.meta.url),fr:()=>e(()=>import(`./fr-BQIO41QS.js`),[],import.meta.url)};function catalogFor(e){return o[e]??o.en??a}async function loadCatalog(e){e===`en`||o[e]||(o[e]=(await s[e]()).default)}var c=new Map;function categories(e){let n=c.get(e);if(!n){try{n=new Intl.PluralRules(e)}catch{n=new Intl.PluralRules(`en`)}c.set(e,n)}return n}function at(e,n){let r=e;for(let e of n.split(`.`)){if(typeof r!=`object`||!r)return;r=r[e]}return r}function forms(e,n,r,i){let a=at(e,n);if(r===void 0)return typeof a==`string`?a:void 0;if(typeof a==`object`&&a){let e=a[categories(i).select(r)];if(typeof e==`string`)return e;let n=a.other;return typeof n==`string`?n:void 0}return typeof a==`string`?a:void 0}function createTranslator(e,n=o){let r=n[e]??n.en,i=n.en;return(n,a)=>{let o=typeof a?.count==`number`?a.count:void 0,s=forms(r,n,o,e);if(s!==void 0)return interpolate(s,a);let c=forms(i,n,o,`en`);return c===void 0?n:interpolate(c,a)}}var l=`en`;function locale(){return l}function setLocale(e){l=e}function t(e,n){return createTranslator(l)(e,n)}export{catalogFor as a,browserLocale as c,t as i,resolveLocale as l,locale as n,loadCatalog as o,setLocale as r,interpolate as s,createTranslator as t};