@kern0x1b/penstock-cli 26.10.4 → 26.10.6
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.
- package/dist/chunk-account-CMvFjqGw.js +1 -0
- package/dist/chunk-agentFailure-BiU8hJ-k.js +1 -0
- package/dist/chunk-agentLaunch-CRWlfuXv.js +1 -0
- package/dist/chunk-agentServe-M3jzEiHj.js +10 -0
- package/dist/chunk-analyze-CCZJQpbU.js +1 -0
- package/dist/chunk-analyze-D_2dPr5n.js +1 -0
- package/dist/chunk-apply-Dmo_XdOA.js +1 -0
- package/dist/chunk-atomicWrite-C6J1gDtO.js +1 -0
- package/dist/chunk-bot-51CfGKVL.js +11 -0
- package/dist/chunk-cacheDirectory-7sa0970e.js +1 -0
- package/dist/chunk-codeFactSet-BqEOkvBS.js +1 -0
- package/dist/chunk-codeIndex-olvCG85q.js +1 -0
- package/dist/chunk-codeLinks-DW721PAt.js +1 -0
- package/dist/chunk-codeLinks-S_BEJVPa.js +1 -0
- package/dist/chunk-command-B-7DfFou.js +5 -0
- package/dist/chunk-command-CyUljAAc.js +1 -0
- package/dist/chunk-command-D7WS1aRl.js +1 -0
- package/dist/chunk-commands-CMEkVxle.js +1 -0
- package/dist/chunk-compose-DCAQQndd.js +4 -0
- package/dist/chunk-connectors-DG6IqkGl.js +1 -0
- package/dist/chunk-connectors-UpMjbdpU.js +2 -0
- package/dist/chunk-context-B-5CZFAT.js +1 -0
- package/dist/chunk-convert-B7srqZpZ.js +1 -0
- package/dist/chunk-deploy-CGLF2dB1.js +1 -0
- package/dist/chunk-deploy-Clj9f2y-.js +2 -0
- package/dist/chunk-diagram-CIy-F5iz.js +1 -0
- package/dist/chunk-diagram-DYoeuAJx.js +1 -0
- package/dist/chunk-diagramDefects-DlVCfZci.js +1 -0
- package/dist/chunk-diagrams-wnFsPOKv.js +1 -0
- package/dist/chunk-diff-BJ2sJwcs.js +1 -0
- package/dist/chunk-diff-BelMuQhT.js +1 -0
- package/dist/chunk-diffModels-DYtf3au1.js +3 -0
- package/dist/chunk-dispatch-CescmVW-.js +6 -0
- package/dist/chunk-docs-CY6ICsip.js +1 -0
- package/dist/chunk-docs-DzOiA9zg.js +30 -0
- package/dist/chunk-doctor-GDNwRCg3.js +1 -0
- package/dist/chunk-drawing-C2qewK8L.js +8 -0
- package/dist/chunk-editPreview-DGu4slO6.js +1 -0
- package/dist/chunk-engine-CxgdJ2wO.js +1 -0
- package/dist/chunk-export-CDFdw7Eh.js +1 -0
- package/dist/chunk-export-DP1Hab-_.js +20 -0
- package/dist/chunk-facts-CfA8qH5b.js +1 -0
- package/dist/chunk-failure-BK7fu4Yo.js +1 -0
- package/dist/chunk-features-CiC2Yoej.js +1 -0
- package/dist/chunk-features-Dq1Gvqp3.js +1 -0
- package/dist/chunk-folders-BO8qUHUV.js +1 -0
- package/dist/chunk-folders-yTMgOqLo.js +1 -0
- package/dist/chunk-formChecks-BOiD8Idv.js +1 -0
- package/dist/chunk-git-BOKyPQj7.js +3 -0
- package/dist/chunk-help-DKtpVSxI.js +85 -0
- package/dist/chunk-importCommand-_CnKIoNk.js +1 -0
- package/dist/chunk-init-3zEab7KI.js +227 -0
- package/dist/chunk-license-Cvnp1Aee.js +1 -0
- package/dist/chunk-license-DU4P8P8A.js +1 -0
- package/dist/chunk-lint-Df2davEY.js +1 -0
- package/dist/chunk-load-CRmIvn7e.js +5 -0
- package/dist/chunk-main-BY7JEoe1.js +1 -0
- package/dist/chunk-mcp-DKX2xT8d.js +77 -0
- package/dist/chunk-mcpLaunch-DpDE0hW-.js +592 -0
- package/dist/chunk-migrate-BaNzQNyD.js +2 -0
- package/dist/chunk-migrate-DcxIkacG.js +1 -0
- package/dist/chunk-moddle-AjPH0QEc.js +1 -0
- package/dist/chunk-moddle-Dlk0NR-u.js +1 -0
- package/dist/chunk-own-CX-3lIbf.js +1 -0
- package/dist/chunk-penstockCli-B0_wWDGy.js +1 -0
- package/dist/chunk-placeholderLayout-B18ekWmh.js +1 -0
- package/dist/chunk-plural-Di3FH8HP.js +1 -0
- package/dist/chunk-pr-DXs1coaS.js +1 -0
- package/dist/chunk-preferencesFile-F6bAlNrk.js +1 -0
- package/dist/chunk-project-BS-4dy5o.js +1 -0
- package/dist/chunk-report-CtkTRSGT.js +1 -0
- package/dist/chunk-review-WIpFGKkc.js +1 -0
- package/dist/chunk-rules-CoJAmvwu.js +1 -0
- package/dist/chunk-security-BKVRwb6V.js +18 -0
- package/dist/chunk-share-B3W30sbt.js +239 -0
- package/dist/chunk-src-CxTpK8wk.js +890 -0
- package/dist/chunk-stages-Gm5BZUp5.js +3 -0
- package/dist/chunk-status-X9Ny-Nu8.js +1 -0
- package/dist/chunk-systemError-F6bMRwXU.js +1 -0
- package/dist/chunk-systemError-cGwrYkmo.js +1 -0
- package/dist/chunk-table-B2WTbpMl.js +1 -0
- package/dist/chunk-taskTest-B3gfOti1.js +1 -0
- package/dist/chunk-taskTest-D-WDCLD5.js +2 -0
- package/dist/chunk-templates-BdsiNRJ3.js +1 -0
- package/dist/chunk-testCases-ba8k3BJD.js +4 -0
- package/dist/chunk-testCases-gXzkCxF5.js +1 -0
- package/dist/chunk-tests-BLBZ1eh2.js +1 -0
- package/dist/chunk-tests-DxL0JMtB.js +23 -0
- package/dist/chunk-translator-BAjzyPKE.js +22 -0
- package/dist/chunk-trust-Ci9pDa27.js +1 -0
- package/dist/chunk-trust-DlJIoKs8.js +1 -0
- package/dist/chunk-version-CdS8_QQd.js +1 -0
- package/dist/chunk-workerVariables-BnLSud8o.js +1 -0
- package/dist/chunk-wrapper-DqqRt0FZ.js +3 -0
- package/dist/chunk-wrapper-E_u1_-Db.js +1 -0
- package/dist/locales/de.json +9277 -0
- package/dist/locales/es.json +9277 -0
- package/dist/locales/fr.json +9277 -0
- package/dist/locales/ja.json +9124 -0
- package/dist/locales/ko.json +9124 -0
- package/dist/locales/pt-BR.json +9277 -0
- package/dist/locales/ru.json +9583 -0
- package/dist/locales/zh.json +9124 -0
- package/dist/penstock.js +1 -2363
- package/dist/web/assets/{AgentSettings-BvzT4Itb.js → AgentSettings-4B4hSxBk.js} +1 -1
- package/dist/web/assets/{AgentsDialog-BqY3wKcV.js → AgentsDialog-C32ALLtE.js} +1 -1
- package/dist/web/assets/{BpmnCanvas-BTdM1l9l.js → BpmnCanvas-CZOJiq6t.js} +3 -3
- package/dist/web/assets/{BpmnDocument-uifU3NGG.js → BpmnDocument-BNLfXWLG.js} +4 -4
- package/dist/web/assets/{ConflictDialog-C4A9-Psr.js → ConflictDialog-mUJYs1zz.js} +1 -1
- package/dist/web/assets/{DiffDocument-BMTSevd7.js → DiffDocument-C7csJl3x.js} +1 -1
- package/dist/web/assets/{DmnDocument-B8wWuhfX.js → DmnDocument-B2dyX49k.js} +1 -1
- package/dist/web/assets/{FormDocument-bQ5VRsrh.js → FormDocument-ChSqEPE5.js} +1 -1
- package/dist/web/assets/{FormStepView-DbMCFSO1.js → FormStepView-j4C0Qovo.js} +1 -1
- package/dist/web/assets/GraphAwareLayoutService-DD2iXfXi.js +21 -0
- package/dist/web/assets/NewFileDialog-eeIqqmXc.js +47 -0
- package/dist/web/assets/{QuickOpen-mzlfRqvG.js → QuickOpen-C0I0FRt2.js} +1 -1
- package/dist/web/assets/{ScriptPane-C9q5wLfO.js → ScriptPane-BAvcgLWX.js} +2 -2
- package/dist/web/assets/{ScriptRunDialog-Dm-_0H1Z.js → ScriptRunDialog-DLlMiJiK.js} +1 -1
- package/dist/web/assets/{SettingsDialog-Bhwwtyg7.js → SettingsDialog-C3ts5aiN.js} +1 -1
- package/dist/web/assets/{ShortcutsDialog-BXP0h7Tp.js → ShortcutsDialog-DVV504pS.js} +1 -1
- package/dist/web/assets/{SourceDocument-DgrNCprS.js → SourceDocument-DRgUPazk.js} +1 -1
- package/dist/web/assets/{TextDocument-D8N0uaQa.js → TextDocument-Bm0sPjft.js} +1 -1
- package/dist/web/assets/{UnreadableFileLayer-D2Rcxnt7.js → UnreadableFileLayer-DbW33CnE.js} +1 -1
- package/dist/web/assets/{UploadDialog-Dinga4TP.js → UploadDialog-BSl3zFNn.js} +1 -1
- package/dist/web/assets/{apply-CzXxiRWK.js → apply-B3FkgxjU.js} +1 -1
- package/dist/web/assets/{bpmnTheme-db4tYvop.js → bpmnTheme-C3HdVV1D.js} +1 -1
- package/dist/web/assets/bridgeInstance-BZBhe5hF.js +851 -0
- package/dist/web/assets/{commands-BAnBjEk3.js → commands-DHPxsavW.js} +1 -1
- package/dist/web/assets/de-BH_bnU4H.js +1 -0
- package/dist/web/assets/{dialog-KVjfqSrB.js → dialog-LcHsiQKJ.js} +1 -1
- package/dist/web/assets/{diff-Cw0ENHJR.js → diff-bpdDl0KE.js} +1 -1
- package/dist/web/assets/{documentBridge-D5SaBThP.js → documentBridge-4fZNBdp4.js} +2 -2
- package/dist/web/assets/{documents-Dkor36oS.js → documents-FOVGbYYF.js} +1 -1
- package/dist/web/assets/{duplicate-ud-StKuO.js → duplicate-CdCuOnUl.js} +1 -1
- package/dist/web/assets/{engines-BQRXHtW8.js → engines-C884tl-T.js} +1 -1
- package/dist/web/assets/es-D7v7zkxC.js +1 -0
- package/dist/web/assets/{formChecks-DFrCuO4I.js → formChecks-Bvuzw2sb.js} +1 -1
- package/dist/web/assets/fr-CuzAJTai.js +1 -0
- package/dist/web/assets/frontend-Y1MvD_Uo.js +1 -0
- package/dist/web/assets/httpHost-CnF86WJB.js +1 -0
- package/dist/web/assets/{index.es-dFUgH_-g.js → index.es-0rLw__5_.js} +1 -1
- package/dist/web/assets/{index.es-DR-czZl7.js → index.es-BP1Cc_0e.js} +1 -1
- package/dist/web/assets/{intelligence-BkxcJMU_.js → intelligence-E2EBYhHr.js} +1 -1
- package/dist/web/assets/ja-BgElyPpa.js +1 -0
- package/dist/web/assets/{jspdf.es.min-BMfOi0te.js → jspdf.es.min-BSRrqhq_.js} +3 -3
- package/dist/web/assets/ko-j1Oi9MKH.js +1 -0
- package/dist/web/assets/{lib-C3uYnGWx.js → lib-De3fPoUi.js} +1 -1
- package/dist/web/assets/{platform-zEAtGnYc.js → platform-CjEV0T5t.js} +1 -1
- package/dist/web/assets/{preferences-K6VRM9Ah.js → preferences-CmXdxfFo.js} +1 -1
- package/dist/web/assets/pt-BR-CRWG2th4.js +1 -0
- package/dist/web/assets/ru-KJyuYSUL.js +1 -0
- package/dist/web/assets/{run-fV7AmV4q.js → run-B9EUa035.js} +1 -1
- package/dist/web/assets/{samples-D-3Bquy_.js → samples-03zukOEM.js} +1 -1
- package/dist/web/assets/{testCaseRuns-C-0blM3d.js → testCaseRuns-BYhJPipg.js} +1 -1
- package/dist/web/assets/translator-OIpY8kTG.js +1 -0
- package/dist/web/assets/{ui-TBzvKaKQ.js → ui-BLMlfdD3.js} +1 -1
- package/dist/web/assets/{useTrace-BgpeAcQR.js → useTrace-Cr28sh4A.js} +1 -1
- package/dist/web/assets/{web-qJCedJJw.js → web-Q9VZNxQi.js} +5 -5
- package/dist/web/assets/zh-CukDLcVz.js +1 -0
- package/dist/web/index.html +19 -19
- package/package.json +1 -1
- package/dist/web/assets/GraphAwareLayoutService-CePcz6pL.js +0 -21
- package/dist/web/assets/NewFileDialog-DsoFURD9.js +0 -47
- package/dist/web/assets/bridgeInstance-BPwbITOf.js +0 -850
- package/dist/web/assets/de-Cd75cvcZ.js +0 -1
- package/dist/web/assets/es-D2PUEg_Z.js +0 -1
- package/dist/web/assets/fr-DkGYGarc.js +0 -1
- package/dist/web/assets/frontend-B05iyhCp.js +0 -1
- package/dist/web/assets/httpHost-DX-P_FDg.js +0 -1
- package/dist/web/assets/ja-De4NAvK-.js +0 -1
- package/dist/web/assets/ko-Ci27KQ5n.js +0 -1
- package/dist/web/assets/pt-BR-CNmIseZJ.js +0 -1
- package/dist/web/assets/ru-BtK7W4xW.js +0 -1
- package/dist/web/assets/translator-Dvvasoz-.js +0 -1
- package/dist/web/assets/zh-DxI_A5kC.js +0 -1
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import{n as e,t}from"./chunk-version-CdS8_QQd.js";import{r as n}from"./chunk-translator-BAjzyPKE.js";import{n as r}from"./chunk-status-X9Ny-Nu8.js";import{t as i}from"./chunk-table-B2WTbpMl.js";import{Gt as a,Ht as o,Ut as s,Vt as c,it as l}from"./chunk-src-CxTpK8wk.js";import{c as u,p as d,s as f,u as p}from"./chunk-engine-CxgdJ2wO.js";import{o as m,r as h,t as g}from"./chunk-load-CRmIvn7e.js";import{r as _}from"./chunk-context-B-5CZFAT.js";import{r as v}from"./chunk-project-BS-4dy5o.js";import{r as y}from"./chunk-penstockCli-B0_wWDGy.js";import{a as b}from"./chunk-git-BOKyPQj7.js";import{t as x}from"./chunk-own-CX-3lIbf.js";import{n as S}from"./chunk-systemError-F6bMRwXU.js";import{d as C}from"./chunk-wrapper-DqqRt0FZ.js";import w from"node:path";import{chmodSync as T,existsSync as E,mkdirSync as D,readFileSync as O,readdirSync as k,writeFileSync as A}from"node:fs";function j(n=e()){let r=y(n);return`#!/bin/sh
|
|
2
|
+
# Installed by penstock init --hooks. Delete this file to stop it.
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
diagrams() {
|
|
6
|
+
git diff --cached -z --name-only --diff-filter=ACM -- '*.bpmn' '*.bpmn20.xml'
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
any() {
|
|
10
|
+
[ -n "$(diagrams | tr -d '\\0')" ]
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
any || exit 0
|
|
14
|
+
|
|
15
|
+
runner=""
|
|
16
|
+
if [ -x "./penstockw" ]; then
|
|
17
|
+
runner="./penstockw"
|
|
18
|
+
elif command -v penstock >/dev/null 2>&1; then
|
|
19
|
+
runner="penstock"
|
|
20
|
+
elif [ -x "./node_modules/.bin/penstock" ]; then
|
|
21
|
+
runner="./node_modules/.bin/penstock"
|
|
22
|
+
${r===null?``:`elif command -v npx >/dev/null 2>&1; then
|
|
23
|
+
runner="npx --yes ${r}"
|
|
24
|
+
`}fi
|
|
25
|
+
|
|
26
|
+
if [ -z "$runner" ]; then
|
|
27
|
+
echo "penstock: the Penstock command line was not found, so the staged diagrams were not checked. Install it with: npm install -g ${t}" >&2
|
|
28
|
+
exit 0
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
diagrams | xargs -0 $runner fmt --write
|
|
32
|
+
diagrams | xargs -0 git add
|
|
33
|
+
diagrams | xargs -0 $runner check --baseline
|
|
34
|
+
`}function M(e,t){if(!E(w.join(e,`.git`)))return t.push(`skipped ${n(`app.cli.hooks.skipped`)}`),!1;let i=b(e,`hooks`)??w.join(e,`.git`,`hooks`),a=w.join(i,`pre-commit`);try{if(D(i,{recursive:!0}),E(a)&&!O(a,`utf8`).includes(`penstock`))return t.push(`${r(`kept`).padEnd(8)} ${_(a)} - ${n(`app.cli.hooks.keptOther`)}`),!1;A(a,j()),T(a,493)}catch(e){return t.push(`skipped ${S(e,i)}`),!1}return t.push(`${r(`wrote`).padEnd(8)} ${_(a)} - ${n(`app.cli.hooks.wrote`)}`),!0}const N=`5049c2fce613420ff27d7d9df6f0291fb5d1a667 # 2026-08-31`;if(!/^[0-9a-f]{40}$/.test(`5049c2fce613420ff27d7d9df6f0291fb5d1a667`))throw Error(`the Penstock action is pinned to a commit, not to a branch or a tag`);function P(e,t){return` ${n(`app.cli.init.${e}`,t)}`}function F(e){return`name: Diagrams
|
|
35
|
+
|
|
36
|
+
on: [push, pull_request]
|
|
37
|
+
|
|
38
|
+
jobs:
|
|
39
|
+
penstock:
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
permissions:
|
|
42
|
+
contents: read${e?`
|
|
43
|
+
security-events: write`:``}
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v4
|
|
46
|
+
- uses: actions/setup-node@v4
|
|
47
|
+
with:
|
|
48
|
+
node-version: 22
|
|
49
|
+
|
|
50
|
+
- uses: kern0x1b/penstock-release@${N}
|
|
51
|
+
${e?` env:
|
|
52
|
+
PENSTOCK_LICENSE: \${{ secrets.PENSTOCK_LICENSE }}
|
|
53
|
+
with:
|
|
54
|
+
command: check
|
|
55
|
+
sarif: penstock.sarif
|
|
56
|
+
baseline: 'true'
|
|
57
|
+
|
|
58
|
+
- uses: github/codeql-action/upload-sarif@v3
|
|
59
|
+
if: always()
|
|
60
|
+
with:
|
|
61
|
+
sarif_file: penstock.sarif
|
|
62
|
+
`:` with:
|
|
63
|
+
command: check
|
|
64
|
+
`}`}const I=`name: Penstock bot
|
|
65
|
+
|
|
66
|
+
on:
|
|
67
|
+
pull_request:
|
|
68
|
+
paths: ['**.bpmn', '**.bpmn20.xml', '**.bpmn.xml', '**.dmn', '**.form']
|
|
69
|
+
issue_comment:
|
|
70
|
+
types: [created]
|
|
71
|
+
|
|
72
|
+
permissions:
|
|
73
|
+
contents: read
|
|
74
|
+
pull-requests: write
|
|
75
|
+
issues: write
|
|
76
|
+
|
|
77
|
+
jobs:
|
|
78
|
+
answer:
|
|
79
|
+
if: >-
|
|
80
|
+
(github.event_name == 'pull_request' ||
|
|
81
|
+
(github.event.issue.pull_request && contains(github.event.comment.body, '/penstock'))) &&
|
|
82
|
+
(github.event_name != 'issue_comment' ||
|
|
83
|
+
contains(fromJSON('["OWNER","MEMBER","COLLABORATOR"]'), github.event.comment.author_association)) &&
|
|
84
|
+
github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
|
|
85
|
+
runs-on: ubuntu-latest
|
|
86
|
+
steps:
|
|
87
|
+
- uses: actions/checkout@v4
|
|
88
|
+
with:
|
|
89
|
+
fetch-depth: 0
|
|
90
|
+
- uses: actions/setup-node@v4
|
|
91
|
+
with:
|
|
92
|
+
node-version: 22
|
|
93
|
+
- uses: kern0x1b/penstock-release/bot@${N}
|
|
94
|
+
env:
|
|
95
|
+
PENSTOCK_LICENSE: \${{ secrets.PENSTOCK_LICENSE }}
|
|
96
|
+
`,L=`name: Penstock bot
|
|
97
|
+
|
|
98
|
+
on:
|
|
99
|
+
pull_request:
|
|
100
|
+
issue_comment:
|
|
101
|
+
types: [created]
|
|
102
|
+
|
|
103
|
+
jobs:
|
|
104
|
+
answer:
|
|
105
|
+
if: github.event_name == 'pull_request' || contains(github.event.comment.body, '/penstock')
|
|
106
|
+
runs-on: ubuntu-latest
|
|
107
|
+
steps:
|
|
108
|
+
- uses: actions/checkout@v4
|
|
109
|
+
with:
|
|
110
|
+
fetch-depth: 0
|
|
111
|
+
- uses: actions/setup-node@v4
|
|
112
|
+
with:
|
|
113
|
+
node-version: 22
|
|
114
|
+
- env:
|
|
115
|
+
GITHUB_TOKEN: \${{ secrets.PENSTOCK_TOKEN || github.token }}
|
|
116
|
+
PENSTOCK_LICENSE: \${{ secrets.PENSTOCK_LICENSE }}
|
|
117
|
+
run: ./penstockw bot .
|
|
118
|
+
`,R=`name: Diagrams
|
|
119
|
+
|
|
120
|
+
on: [push, pull_request]
|
|
121
|
+
|
|
122
|
+
jobs:
|
|
123
|
+
penstock:
|
|
124
|
+
runs-on: ubuntu-latest
|
|
125
|
+
steps:
|
|
126
|
+
- uses: actions/checkout@v4
|
|
127
|
+
- uses: actions/setup-node@v4
|
|
128
|
+
with:
|
|
129
|
+
node-version: 22
|
|
130
|
+
- run: ./penstockw check .
|
|
131
|
+
`;function z(e){return`diagrams:
|
|
132
|
+
image: node:22
|
|
133
|
+
rules:
|
|
134
|
+
- if: $CI_PIPELINE_SOURCE != "trigger"
|
|
135
|
+
script:
|
|
136
|
+
- ./penstockw check .${e?` --baseline`:``}
|
|
137
|
+
${e?`
|
|
138
|
+
penstock-bot:
|
|
139
|
+
image: node:22
|
|
140
|
+
variables:
|
|
141
|
+
GIT_DEPTH: 0
|
|
142
|
+
rules:
|
|
143
|
+
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
144
|
+
- if: $CI_PIPELINE_SOURCE == "trigger" && $TRIGGER_PAYLOAD
|
|
145
|
+
script:
|
|
146
|
+
- ./penstockw bot .
|
|
147
|
+
`:``}
|
|
148
|
+
deploy-diagrams:
|
|
149
|
+
image: node:22
|
|
150
|
+
when: manual
|
|
151
|
+
rules:
|
|
152
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
153
|
+
variables:
|
|
154
|
+
PENSTOCK_PROFILE: prod
|
|
155
|
+
script:
|
|
156
|
+
- ./penstockw deploy . --wait
|
|
157
|
+
`}function B(e){return`pipelines:
|
|
158
|
+
pull-requests:
|
|
159
|
+
'**':
|
|
160
|
+
- step:
|
|
161
|
+
name: ${e?`Penstock bot`:`Diagrams`}
|
|
162
|
+
image: node:22
|
|
163
|
+
${e?` clone:
|
|
164
|
+
depth: full
|
|
165
|
+
script:
|
|
166
|
+
- export PENSTOCK_BOT_DIR=$BITBUCKET_CLONE_DIR/.penstock
|
|
167
|
+
- ./penstockw check . --baseline
|
|
168
|
+
- ./penstockw bot .
|
|
169
|
+
artifacts:
|
|
170
|
+
- .penstock/penstock-bot/*.svg
|
|
171
|
+
`:` script:
|
|
172
|
+
- ./penstockw check .
|
|
173
|
+
`}`}function V(e){return`trigger: none
|
|
174
|
+
|
|
175
|
+
pr:
|
|
176
|
+
paths:
|
|
177
|
+
include: ['*.bpmn', '**/*.bpmn', '**/*.bpmn20.xml', '**/*.bpmn.xml', '*.dmn', '**/*.dmn', '*.form', '**/*.form']
|
|
178
|
+
|
|
179
|
+
pool:
|
|
180
|
+
vmImage: ubuntu-latest
|
|
181
|
+
|
|
182
|
+
steps:
|
|
183
|
+
${e?` - checkout: self
|
|
184
|
+
fetchDepth: 0
|
|
185
|
+
- task: NodeTool@0
|
|
186
|
+
inputs:
|
|
187
|
+
versionSpec: '22.x'
|
|
188
|
+
- script: |
|
|
189
|
+
export PENSTOCK_BOT_DIR=$(Build.ArtifactStagingDirectory)
|
|
190
|
+
./penstockw bot .
|
|
191
|
+
env:
|
|
192
|
+
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
|
|
193
|
+
PENSTOCK_LICENSE: $(PENSTOCK_LICENSE)
|
|
194
|
+
- publish: $(Build.ArtifactStagingDirectory)/penstock-bot
|
|
195
|
+
artifact: penstock-diagrams
|
|
196
|
+
condition: always()
|
|
197
|
+
`:` - checkout: self
|
|
198
|
+
- task: NodeTool@0
|
|
199
|
+
inputs:
|
|
200
|
+
versionSpec: '22.x'
|
|
201
|
+
- script: |
|
|
202
|
+
./penstockw check .
|
|
203
|
+
`}`}function H(e){return P(`licenceHint`,{where:n(`app.cli.init.${e}`)})}function U(){return P(`teamHint`)}function W(e){let t={github:[P(`githubWorkflowToken`),P(`githubForks`),P(`updateHint`),P(`updateHow`),H(`secretLicence`)],gitea:[P(`giteaWorkflowToken`),H(`secretLicence`)],gitlab:[P(`gitlabToken`),P(`gitlabWebhook`),` <gitlab>/api/v4/projects/<id>/ref/<default branch>/trigger/pipeline?token=<pipeline trigger token>`,P(`gitlabTriggerIsSecret`),P(`gitlabKeepUrl`),H(`maskedLicence`)],bitbucket:[P(`bitbucketToken`),P(`bitbucketTokenHow`),H(`securedLicence`)],azure:[P(`azureContribute`),P(`azureToken`),P(`azurePolicy`),H(`pipelineLicence`)]};return x(t,e)??[]}const G=[{engine:`camunda-8`,key:`camunda8`},{engine:`camunda-7`,key:`camunda7`},{engine:`operaton`,key:`operaton`},{engine:`cib-seven`,key:`cibSeven`},{engine:`flowable`,key:`flowable`},{engine:`activiti`,key:`activiti`},{engine:`classic`,key:`classic`}];function K(){return G.map(e=>({engine:e.engine,label:n(`app.cli.init.engine.${e.key}`)}))}const q=/\.(bpmn|bpmn20\.xml|dmn|form)$/i,J=/^(pom\.xml|build\.gradle(\.kts)?)$/,Y=e=>q.test(e),X=e=>J.test(e);function Z(e){return v(e,Y).length>0}async function Q(e,t){if(g.some(t=>E(w.join(e,t)))||Z(e))return null;let r=K(),i=`${n(`app.cli.init.engineQuestion`)}\n${r.map((e,t)=>` ${t+1} ${e.label}`).join(`
|
|
204
|
+
`)}\n${n(`app.cli.init.numberQuestion`)}`;for(;;){let e=(await t(i)).trim();if(e===``)return r[0].engine;let n=/^\d+$/.test(e)?r[Number(e)-1]:void 0;if(n)return n.engine}}function $(e){let t=/* @__PURE__ */ new Set;for(let n of v(e,Y)){let e=f(O(n,`utf8`));e&&t.add(e)}for(let n of v(e,X)){let e=d(O(n,`utf8`));e&&t.add(e)}return[`camunda-8`,`flowable`,`activiti`,`operaton`,`cib-seven`,`camunda-7`,`classic`].find(e=>t.has(e))??`classic`}function ee(e,t){let i=w.join(e,`.gitignore`),a=h[0],o=E(i)?O(i,`utf8`):``;o.split(`
|
|
205
|
+
`).some(e=>e.trim()===a)||(A(i,`${o.trimEnd()}\n\n# ${n(`app.config.local.gitignore`)}\n${a}\n`.trimStart()),t.push(`${r(`updated`)} ${n(`app.cli.init.gitignore`,{entry:a})}`))}function te(e,t,i){if(!s(t)){let e=[...c];return{ok:!1,lines:[n(`app.cli.init.unknownExample`,{example:t,names:e.slice(0,-1).join(`, `),last:e[e.length-1]})]}}if((E(e)?k(e).filter(e=>e!==`.git`):[]).length>0)return{ok:!1,lines:[n(`app.cli.init.folderNotEmpty`,{folder:_(e)})]};for(let[n,a]of Object.entries(o(t))){let t=w.join(e,n);D(w.dirname(t),{recursive:!0}),A(t,a),i.push(`${r(`wrote`).padEnd(8)} ${_(t)}`)}return i.push(P(`exampleReadme`)),null}function ne(e,t,i,o,s,c){let l=s?w.resolve(e):m(e),d=[],f=c===void 0?null:u(c);if(c!==void 0&&!f){let e=G.map(e=>e.engine);return{ok:!1,lines:[n(`app.cli.init.unknownEngine`,{engine:c,names:e.slice(0,-1).join(`, `),last:e[e.length-1]})]}}if(s&&f&&f!==s)return{ok:!1,lines:[n(`app.cli.init.engineDoesNotFit`,{example:s,label:p(s),engine:c})]};if(s){let e=te(l,s,d);if(e)return e}let h=g.map(e=>w.join(l,e)).find(E);if(s)d.push(`${r(`kept`).padEnd(8)} ${_(h??w.join(l,g[0]))} ${n(`app.cli.init.asTheExampleWroteIt`)}`);else if(h)d.push(`${r(`kept`).padEnd(8)} ${_(h)} - ${n(`app.cli.init.alreadyAnswers`)}`),f&&d.push(` ${n(`app.cli.init.engineNotUsed`,{engine:f,file:w.basename(h),says:/^engine:\s*(\S+)/m.exec(O(h,`utf8`))?.[1]??n(`app.cli.init.whatItRunsOn`)})}`);else{let e=f??$(l),t=w.join(l,g[0]);A(t,`# yaml-language-server: $schema=${a}\n# ${n(`app.cli.init.configWhatItIs`)}\n# ${n(`app.config.file.overrides`)}\n\nengine: ${e}\n\n# deployment:\n# url: http://localhost:8080/engine-rest\n# name: ${w.basename(l)}\n#\n# profiles:\n# prod:\n# deployment:\n# url: https://bpm.example.com/engine-rest\n`),d.push(`${r(`wrote`).padEnd(8)} ${_(t)} (engine: ${e})`)}ee(l,d),C(l,d),i&&M(l,d);let v={github:[[w.join(`.github`,`workflows`,`penstock.yml`),F(o)],...o?[[w.join(`.github`,`workflows`,`penstock-bot.yml`),I]]:[],[w.join(`.github`,`workflows`,`penstock-publish.yml`),`name: Publish diagrams
|
|
206
|
+
|
|
207
|
+
on:
|
|
208
|
+
push:
|
|
209
|
+
branches: [main]
|
|
210
|
+
paths: ['**.bpmn', '**.bpmn20.xml', '**.bpmn.xml', '**.dmn', '**.form']
|
|
211
|
+
workflow_dispatch:
|
|
212
|
+
|
|
213
|
+
jobs:
|
|
214
|
+
deploy:
|
|
215
|
+
runs-on: ubuntu-latest
|
|
216
|
+
environment: production
|
|
217
|
+
steps:
|
|
218
|
+
- uses: actions/checkout@v4
|
|
219
|
+
- uses: actions/setup-node@v4
|
|
220
|
+
with:
|
|
221
|
+
node-version: 22
|
|
222
|
+
- env:
|
|
223
|
+
PENSTOCK_PROFILE: prod
|
|
224
|
+
PENSTOCK_PASSWORD: \${{ secrets.PENSTOCK_PASSWORD }}
|
|
225
|
+
PENSTOCK_TOKEN: \${{ secrets.PENSTOCK_TOKEN }}
|
|
226
|
+
run: ./penstockw deploy . --wait
|
|
227
|
+
`]],gitea:[[w.join(`.gitea`,`workflows`,o?`penstock-bot.yml`:`penstock.yml`),o?L:R]],forgejo:[[w.join(`.forgejo`,`workflows`,o?`penstock-bot.yml`:`penstock.yml`),o?L:R]],gitlab:[[`penstock.gitlab-ci.yml`,z(o)]],bitbucket:[[`bitbucket-pipelines.penstock.yml`,B(o)]],azure:[[`azure-pipelines.penstock.yml`,V(o)]]},y=x(v,t);if(t&&y){for(let[e,t]of y){let n=w.join(l,e);D(w.dirname(n),{recursive:!0}),A(n,t),d.push(`${r(`wrote`).padEnd(8)} ${_(n)}`)}t===`gitlab`&&d.push(P(`includeFrom`)),t===`bitbucket`&&d.push(P(`mergeInto`)),o?d.push(...W(t===`forgejo`?`gitea`:t)):d.push(U())}else if(t)return{ok:!1,lines:[n(`app.cli.init.unknownCi`,{ci:t})]};return{ok:!0,lines:ie(d)}}const re=[`wrote`,`kept`,`updated`,`skip`];function ie(e){let t=re.map(e=>r(e).replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)),a=RegExp(`^(${t.join(`|`)})\\s+(.*)$`),o=e=>{let t=e.indexOf(` - `);if(t>=0)return{target:e.slice(0,t),details:e.slice(t+3)};let n=l()?e.indexOf(` `):-1;return n<0?{target:e,details:``}:{target:e.slice(0,n),details:e.slice(n+1)}},s=[],c=[],u=()=>{c.length!==0&&(s.push(...i(c,{columns:[{name:`action`,header:n(`app.cli.header.action`),minWidth:8},{name:`target`,header:n(`app.cli.header.target`)},{name:`details`,header:n(`app.cli.header.details`)}],headers:!1})),c.length=0)};for(let t of e){let e=a.exec(t);e?c.push({action:e[1],...o(e[2].trim())}):(u(),s.push(t))}return u(),s}export{Q as chooseEngine,ne as initCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{u as currentLicense}from"./chunk-license-DU4P8P8A.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./chunk-atomicWrite-C6J1gDtO.js";import{r as t}from"./chunk-translator-BAjzyPKE.js";import n from"node:path";import{homedir as r,hostname as i}from"node:os";import{copyFileSync as a,existsSync as o,readFileSync as s,rmSync as c}from"node:fs";import{execFileSync as l}from"node:child_process";import{createHash as u,createPublicKey as ee,randomUUID as d,verify as te}from"node:crypto";function ne(e){if(!e||typeof e!=`object`||e.v!==1||e.tier!==`pro`&&e.tier!==`team`||e.source!==`activation`&&e.source!==`trial`&&e.source!==`pipeline`||typeof e.machine!=`string`||!Number.isFinite(e.iat)||!Number.isFinite(e.exp))return null;for(let t of[`keyId`,`activationId`])if(e[t]!==void 0&&typeof e[t]!=`string`)return null;return e.trialStart!==void 0&&!Number.isFinite(e.trialStart)?null:e}const re=[],f=[{id:`k-2026-10`,key:`oyaZ47qT9fgTkP_iQDb-rscHvyUIY4BwAWAbNwmZnIc`}],ie=[...f,...re],ae=Buffer.from(`302a300506032b6570032100`,`hex`),oe=/^[A-Za-z0-9_-]+$/,se=e=>oe.test(e)&&e.length%4!=1,p=/* @__PURE__ */ new Map;function ce(e){if(!p.has(e.key)){let t=null;try{let n=Buffer.from(e.key,`base64url`);n.length===32&&(t=ee({key:Buffer.concat([ae,n]),format:`der`,type:`spki`}))}catch{t=null}p.set(e.key,t)}return p.get(e.key)??null}function m(e,t){if(typeof e!=`string`)return{status:`invalid`,reason:`malformed`};let n=e.split(`.`);if(n.length!==2||!se(n[0])||!se(n[1]))return{status:`invalid`,reason:`malformed`};let r=Buffer.from(n[1],`base64url`),i=Buffer.from(n[0]);if(!(t.keys??ie).some(e=>{let t=ce(e);if(!t)return!1;try{return te(null,i,t,r)}catch{return!1}}))return{status:`invalid`,reason:`signature`};let a;try{a=ne(JSON.parse(Buffer.from(n[0],`base64url`).toString(`utf8`)))}catch{a=null}return a?a.machine===t.machine?a.iat*1e3>t.now+864e5?{status:`invalid`,reason:`future`}:!Number.isFinite(t.now)||t.now>=a.exp*1e3?{status:`expired`,claims:a}:{status:`valid`,claims:a}:{status:`invalid`,reason:`machine`}:{status:`invalid`,reason:`malformed`}}const le={trialDays:30,currency:`USD`,pro:{monthly:9,yearly:90},team:{monthly:29,yearly:290}},h=JSON.parse(s(n.join(import.meta.dirname,`licensing.json`),`utf8`)),g={api:h.api,worker:h.worker,organizationId:h.organizationId,checkoutLinks:{...h.checkoutLinks},keyPrefixes:h.keyPrefixes,prices:le,educationUrl:h.educationUrl,trialDays:h.trialDays,revalidateAfterMs:h.revalidateAfterHours*60*60*1e3,offlineDays:h.offlineDays},_=864e5,v={free:`Free`,pro:`Pro`,team:`Team`},y={free:0,pro:1,team:2};var b=class extends Error{};const ue={signature:`app.license.reason.notSigned`,machine:`app.license.reason.otherMachine`,future:`app.license.reason.datedInTheFuture`,malformed:`app.license.reason.cannotBeRead`};function x(e){return t(ue[e])}function S(){return t(`app.license.noLicenceInCi`)}function de(){return t(`app.license.noStableMachineId`)}function fe(){return t(`app.license.clockSetBack`)}function C(e){return e.env??process.env}function w(e){return(e.now??Date.now)()}function T(e){return(e.PENSTOCK_LICENSE_API??g.api).replace(/\/+$/,``)}function pe(e){return(e.PENSTOCK_LICENSE_WORKER??g.worker).replace(/\/+$/,``)}function E(e){return e.PENSTOCK_HOME||n.join(r(),`.penstock`)}function D(e){if(!o(e))return null;try{return JSON.parse(s(e,`utf8`))}catch{return null}}function O(t,n){e(t,`${JSON.stringify(n,null,2)}\n`,384)}function k(e,t){try{O(e,t)}catch{return}}const A=e=>n.join(E(e),`license.json`),me=e=>n.join(E(e),`trial.json`),j=e=>n.join(E(e),`pipeline.json`);function M(e){let t=e.trim().toUpperCase();return t.startsWith(g.keyPrefixes.team)?`team`:t.startsWith(g.keyPrefixes.pro)?`pro`:`free`}const N=5e3;function he(){try{if(process.platform===`darwin`){let e=l(`ioreg`,[`-rd1`,`-c`,`IOPlatformExpertDevice`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],timeout:N}),t=/"IOPlatformUUID"\s*=\s*"([^"]+)"/.exec(e)?.[1],n=/"IOPlatformSerialNumber"\s*=\s*"([^"]+)"/.exec(e)?.[1];return t?n?`${t}:${n}`:t:null}if(process.platform===`win32`){let e=l(`reg`,[`query`,`HKLM\\SOFTWARE\\Microsoft\\Cryptography`,`/v`,`MachineGuid`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],timeout:N});return/MachineGuid\s+REG_SZ\s+(\S+)/.exec(e)?.[1]??null}for(let e of[`/etc/machine-id`,`/var/lib/dbus/machine-id`])if(o(e))return s(e,`utf8`).trim()||null}catch{return null}return null}function P(t={}){if(t.machine)return{id:t.machine,stable:!0};let r=C(t),i=(t.osMachineId??he)(),a=!!i;if(!i){let t=n.join(E(r),`machine-id`);try{i=o(t)?s(t,`utf8`).trim():``,i||(i=d(),e(t,`${i}\n`))}catch{i||=d()}}return{id:u(`sha256`).update(`penstock:${i.toLowerCase()}`).digest(`hex`).slice(0,32),stable:a}}function F(e={}){return P(e).id}async function I(e,t,n,r,i,a){let o=await(e.fetch??fetch)(`${t}${r}`,{method:n,headers:{Accept:`application/json`,...i?{"Content-Type":`application/json`}:{},...a?{Authorization:`Bearer ${a}`}:{}},body:i?JSON.stringify(i):void 0,signal:AbortSignal.timeout(15e3)}),s=await o.text(),c=null;try{c=s?JSON.parse(s):null}catch{c=null}return{status:o.status,json:c}}const L=(e,t,n,r,i)=>I(e,T(C(e)),t,n,r,i),R=(e,t,n)=>I(e,pe(C(e)),`POST`,t,n),z=e=>`/v1/customer-portal/license-keys/${e}`;function ge(e,t){return typeof e?.detail==`string`?e.detail:t}function _e(e,t){return typeof e?.message==`string`?e.message:t}async function B(e,n,r){let{status:i,json:a}=await R(e,n,r);if(i===200&&typeof a?.token==`string`)return{kind:`token`,token:a.token};if((i===403||i===401)&&typeof a?.error==`string`)return{kind:`refused`,message:_e(a,t(`app.license.theLicenceWasRefused`)),error:a.error};throw Error(t(`app.license.serviceAnswered`,{status:i}))}function V(e,t){return m(e,{machine:F(t),now:w(t),keys:t.keys})}function H(e){return!!e.CI&&e.CI!==`false`}function U(e,t){return Math.ceil((e*1e3-t)/_)}function ve(e){return t(`app.license.count.days`,{count:e})}function ye(e){return t(`app.license.count.moreDays`,{count:e})}function be(e){try{c(me(e),{force:!0})}catch{return}}function W(e,t={}){return{tier:`free`,source:`none`,detail:e,...t}}function G(e,n){let r=(/* @__PURE__ */ new Date(e.exp*1e3)).toISOString();return n>=e.exp*1e3?W(t(`app.license.trialHasEnded`),{trialEndsAt:r}):{tier:`pro`,source:`trial`,detail:t(`app.license.trialDaysLeft`,{days:ve(U(e.exp,n))}),claims:e,trialEndsAt:r}}function xe(e){let t=A(e);try{o(t)&&D(t)===null&&s(t,`utf8`).trim()!==``&&a(t,`${t}.bak`)}catch{return}}async function K(e,n){let r=C(e);if(H(r))return W(S());let i=P(e);if(!i.stable)return W(n??de());let a;try{a=await B(e,`/trial`,{machine:i.id})}catch{return W(n??t(`app.license.couldNotBeReachedForATrial`))}if(a.kind!==`token`)return W(n??t(`app.license.refusedToStartATrial`));let o=V(a.token,e);return o.status===`invalid`?W(x(o.reason)):o.claims.source===`trial`?(xe(r),k(A(r),{token:a.token}),G(o.claims,w(e))):W(x(`malformed`))}async function Se(e,n){let r=C(n),i=u(`sha256`).update(e).digest(`hex`),a=D(j(r));if(a?.keyHash===i&&typeof a.token==`string`){let e=V(a.token,n);if(e.status===`valid`&&e.claims.source===`pipeline`)return q(e.claims)}let o;try{o=await B(n,`/pipeline`,{key:e,machine:F(n)})}catch{return{...W(t(`app.license.couldNotBeReachedForTheKey`)),source:`environment`}}if(o.kind!==`token`)return{...W(t(`app.license.notAValidKey`)),source:`environment`};let s=V(o.token,n);return s.status!==`valid`||s.claims.source!==`pipeline`?{...W(s.status===`invalid`?x(s.reason):x(`malformed`)),source:`environment`}:(k(j(r),{keyHash:i,token:o.token}),q(s.claims))}function q(e){return{tier:e.tier,source:`environment`,detail:t(`app.license.fromTheEnvironmentKey`),claims:e}}async function Ce(e,n){let r=C(n),o=()=>W(t(`app.license.needsOneOnlineCheck`)),s;try{s=await B(n,`/activate`,{key:e,machine:F(n),label:i()})}catch{return o()}if(s.kind===`token`){let e=V(s.token,n);if(e.status!==`valid`||e.claims.source!==`activation`)return W(e.status===`invalid`?x(e.reason):x(`malformed`));try{a(A(r),`${A(r)}.bak`)}catch{return o()}return k(A(r),{token:s.token}),J(e.claims)}return s.error===`invalid_key`?(c(A(r),{force:!0}),K(n)):o()}function J(e){return{tier:e.tier,source:`activation`,detail:t(`app.license.activeOnThisMachine`),claims:e}}async function we(e,n,r,i){let a=C(i),o=w(i);try{let n=await B(i,`/refresh`,{token:e});if(n.kind===`token`){let e=V(n.token,i);return e.status===`valid`&&e.claims.source===`activation`?(k(A(a),{token:n.token}),J(e.claims)):W(e.status===`invalid`?x(e.reason):x(`malformed`))}if(n.error!==`refused`)throw Error(t(`app.license.serviceAnswered`,{status:n.error}));return c(A(a),{force:!0}),K(i)}catch{if(r)return{tier:`free`,source:`activation`,detail:t(`app.license.notRenewed`,{days:g.offlineDays}),claims:n};let e=U(n.exp,o);return{...J(n),detail:t(`app.license.offlineForAWhile`,{days:ye(e)})}}}const Y=e=>n.join(E(e),`clock.json`);function X(e){let t=Number(D(A(e))?.seen),n=Number(D(Y(e))?.seen);return Math.max(Number.isFinite(t)?t:0,Number.isFinite(n)?n:0)}function Z(e,t,n){let r=X(e),i=Math.max(r,t,n??0),a=D(A(e)),o=typeof a?.token==`string`&&!(Number(a.seen)>=r);r!==0&&i-r<3600&&!o||(k(Y(e),{seen:i}),a&&typeof a.token==`string`&&k(A(e),{...a,seen:i}))}async function Te(e){let t=A(e);for(let e=1;;e+=1){let n=D(t);if(n!==null||e>=3||!o(t))return n;await new Promise(e=>setTimeout(e,40))}}async function Ee(e){let t=C(e),n=w(e),r=await Te(t);if(typeof r?.token!=`string`)return typeof r?.key==`string`&&r.key.trim()?Ce(r.key.trim(),e):K(e);let i=V(r.token,e);if(i.status===`invalid`)return K(e,x(i.reason));let{claims:a}=i;if(a.source===`pipeline`)return K(e,x(`malformed`));if(a.source===`trial`)return H(t)?W(S()):G(a,n);let o=i.status===`expired`,s=n-a.iat*1e3;return!o&&s>=0&&s<g.revalidateAfterMs?J(a):we(r.token,a,o,e)}async function De(e={}){let t=C(e),n=Math.floor(w(e)/1e3);if(be(t),H(t)&&t.PENSTOCK_LICENSE?.trim())return Se(t.PENSTOCK_LICENSE.trim(),e);if(X(t)-n>86400)return W(fe());let r=await Ee(e);return Z(t,n,r.claims?.iat),r}async function Q(e,n={}){let r=C(n),a=await B(n,`/activate`,{key:e.trim(),machine:F(n),label:i()});if(a.kind===`refused`){let e=a.error===`seats_full`?t(`app.license.seatsFullHint`):``;throw new b(`${a.message}${e}`)}let o=V(a.token,n);if(o.status===`invalid`)throw new b($(x(o.reason)));if(o.claims.source!==`activation`)throw new b($(x(`malformed`)));O(A(r),{token:a.token}),Z(r,Math.floor(w(n)/1e3),o.claims.iat)}function $(e){return t(`app.license.unusable`,{reason:e})}async function Oe(e={}){let t=C(e),n=D(A(t));if(!n)return`none`;if(typeof n.token==`string`){let r=V(n.token,e);if(r.status!==`invalid`&&r.claims.source===`activation`){let r;try{({status:r}=await R(e,`/release`,{token:n.token}))}catch{return`none`}return r===200?(c(A(t),{force:!0}),`released`):`none`}}return c(A(t),{force:!0}),`cleared`}async function ke(e,n={}){let{status:r,json:i}=await L(n,`POST`,`/v1/customer-portal/customer-session/request`,{email:e.trim(),organization_id:g.organizationId});if(r!==202&&r!==200&&r!==409)throw r===422?new b(t(`app.license.notAnEmailAddress`)):Error(ge(i,t(`app.license.serviceAnswered`,{status:r})))}async function Ae(e,n={}){let{status:r,json:i}=await L(n,`POST`,`/v1/customer-portal/customer-session/authenticate`,{code:e.trim().toUpperCase()});if(r===401||r===422)throw new b(t(`app.license.codeWrongOrExpired`));if(r!==200||typeof i?.token!=`string`)throw Error(t(`app.license.serviceAnswered`,{status:r}));return i.token}const je=e=>typeof e==`object`&&!!e&&!Array.isArray(e);async function Me(e,n={}){let{status:r,json:i}=await L(n,`GET`,`${z(``)}?limit=100`,void 0,e);if(r!==200)throw Error(t(`app.license.serviceAnswered`,{status:r}));let a=w(n);return(Array.isArray(i?.items)?i.items:[]).filter(je).filter(e=>e.status===`granted`&&typeof e.key==`string`&&typeof e.id==`string`&&(!e.expires_at||Date.parse(e.expires_at)>a)).map(e=>({id:e.id,key:e.key,tier:M(e.key),limit:typeof e.limit_activations==`number`?e.limit_activations:null,expiresAt:typeof e.expires_at==`string`?e.expires_at:null})).filter(e=>e.tier!==`free`).sort((e,t)=>y[t.tier]-y[e.tier])}async function Ne(e,n,r={}){let{status:i,json:a}=await L(r,`GET`,z(n),void 0,e);if(i!==200)throw Error(t(`app.license.serviceAnswered`,{status:i}));return(Array.isArray(a?.activations)?a.activations:[]).filter(je).map(e=>({id:String(e.id??``),label:String(e.label??``),machine:typeof e.meta?.machine==`string`?e.meta.machine:void 0,createdAt:typeof e.created_at==`string`?e.created_at:``})).sort((e,t)=>(Date.parse(e.createdAt)||0)-(Date.parse(t.createdAt)||0))}async function Pe(e,n,r={}){let{status:i}=await L(r,`POST`,z(`deactivate`),{organization_id:g.organizationId,key:e,activation_id:n});if(i!==204&&i!==200&&i!==404)throw Error(t(`app.license.serviceAnswered`,{status:i}))}async function Fe(e,t={}){let[n]=await Me(e,t);if(!n)return{kind:`none`};let r=await Ne(e,n.id,t),i=r.find(e=>e.machine===F(t));return!i&&n.limit!==null&&r.length>=n.limit?{kind:`full`,key:n,activations:r}:(await Q(n.key,t),{kind:`claimed`,tier:n.tier,reused:!!i})}async function Ie(e,n,r={}){let i=C(r),a=g.checkoutLinks[e];if(!a)throw Error(t(`app.license.noCheckoutYet`,{tier:v[e]}));let o=new URLSearchParams(n?{customer_email:n}:{}),s=await(r.fetch??fetch)(`${T(i)}/v1/checkout-links/${a}/redirect?${o}`,{redirect:`manual`,signal:AbortSignal.timeout(15e3)}),c=s.headers.get(`location`);if(!c)throw Error(t(`app.license.checkoutNotOpenedStatus`,{status:s.status}));let l;try{l=new URL(c)}catch{throw Error(t(`app.license.checkoutNotOpened`))}if(l.protocol!==`https:`)throw Error(t(`app.license.checkoutNotHttps`,{protocol:l.protocol}));let u=/\/checkout\/([^/?#]+)/.exec(l.pathname)?.[1];if(!u)throw Error(t(`app.license.checkoutNotOpened`));return{url:l.toString(),secret:u}}async function Le(e,n={}){let{status:r,json:i}=await L(n,`GET`,`/v1/checkouts/client/${e}`);if(r===404)return{status:`expired`};if(r!==200)throw Error(t(`app.license.serviceAnswered`,{status:r}));let a=i?.status;return a===`succeeded`?{status:`succeeded`,email:typeof i.customer_email==`string`?i.customer_email:null}:a===`failed`||a===`expired`?{status:a}:{status:a===`confirmed`?`confirmed`:`open`}}function Re(e,n){let r=Math.floor((n-Date.parse(e))/_);return!Number.isFinite(r)||r<1?t(`app.license.ago.today`):r===1?t(`app.license.ago.yesterday`):r<60?t(`app.license.ago.days`,{count:r}):t(`app.license.ago.months`,{count:Math.floor(r/30)})}export{f as C,m as S,Le as _,Q as a,Ie as b,Ae as c,Oe as d,E as f,Me as g,P as h,v as i,Fe as l,F as m,b as n,Ne as o,H as p,y as r,Re as s,g as t,De as u,Pe as v,M as x,ke as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,t}from"./chunk-translator-BAjzyPKE.js";import{A as n,M as r,j as i,xn as a,yn as o}from"./chunk-src-CxTpK8wk.js";import{l as s,n as c,u as l}from"./chunk-moddle-Dlk0NR-u.js";import{a as u,b as d,c as f,s as p,t as m}from"./chunk-engine-CxgdJ2wO.js";import{a as h,i as g,t as _}from"./chunk-context-B-5CZFAT.js";import{t as ee}from"./chunk-report-CtkTRSGT.js";import{i as te,n as ne,r as v}from"./chunk-rules-CoJAmvwu.js";import{createRequire as y}from"node:module";import b from"node:path";import{existsSync as re,readFileSync as x}from"node:fs";const ie={en:[``,``],ru:[`«`,`»`],de:[`„`,`“`],es:[`"`,`"`],fr:[`« `,` »`],ja:[`「`,`」`],ko:[`「`,`」`],"pt-BR":[`"`,`"`],zh:[`「`,`」`]};function S(e){let[n,r]=ie[t()];return n?`${n}${e}${r}`:e}function C(t){let n=`app.rules.compat.word.${w(t)}`,i=e(n);return i===n?r(t,!0):i}function w(e){let t=e.includes(`:`)?e.slice(e.indexOf(`:`)+1):e;return t&&t[0].toLowerCase()+t.slice(1)}function T(e){return e&&e[0].toUpperCase()+e.slice(1)}const E=/^[aeiou]/,D=/^(user|uni|use|eu)/;function O(e){return E.test(e)&&!D.test(e)?`an`:`a`}function k(e){return typeof e==`string`?e:e?.$type??``}function A(e){return(Array.isArray(e)?e:e===void 0?[]:[e]).map(k).filter(Boolean)}function ae(t){let n=t.map(S);return n.length>1?e(`app.rules.compat.joinOr`,{list:n.slice(0,-1).join(`, `),last:n[n.length-1]}):n[0]??``}function j(t){return t.version?e(`app.rules.compat.targets`,{version:t.version}):``}function M(t){return e(`app.rules.compat.needs`,{allowed:t.allowed,targets:j(t)})}function oe(t){let n=A(t.data.requiredExtensionElement).map(e=>e.slice(e.indexOf(`:`)+1));return n.length===0?null:n.includes(`CalledDecision`)?e(`app.rules.compat.callsNoDecision`,{subject:t.subject}):n.includes(`Script`)?e(`app.rules.compat.hasNoScript`,{subject:t.subject}):n.includes(`TaskDefinition`)?e(`app.rules.compat.hasNoJobType`,{subject:t.subject}):null}function se(t,n){let{subject:r,data:a}=n,o=a.type,s=A(a.requiredProperty);switch(t){case`implementation`:return o===`camunda.propertyRequired`&&s.includes(`type`)?e(`app.rules.compat.hasNoJobType`,{subject:r}):o===`camunda.extensionElementRequired`?oe(n):null;case`called-element`:return o===`camunda.extensionElementRequired`||s.includes(`processId`)?e(`app.rules.compat.callsNoProcess`,{subject:r}):null;case`user-task-definition`:return o===`camunda.extensionElementRequired`?e(`app.rules.compat.hasNoForm`,{subject:r}):null;case`zeebe-user-task`:return o===`camunda.extensionElementRequired`?e(`app.rules.compat.isJobWorkerUserTask`,{subject:r}):null;case`user-task-form`:case`start-event-form`:return o===`camunda.propertyRequired`?e(`app.rules.compat.formWithNoId`,{subject:r}):null;case`message-reference`:case`error-reference`:case`signal-reference`:case`escalation-reference`:{let n=t.slice(0,t.indexOf(`-`));return o!==`camunda.propertyRequired`||!s.includes(`${n}Ref`)?null:e(t===`message-reference`?`app.rules.compat.refersToNoMessage`:t===`error-reference`?`app.rules.compat.refersToNoError`:t===`signal-reference`?`app.rules.compat.refersToNoSignal`:`app.rules.compat.refersToNoEscalation`,{subject:r})}case`subscription`:return o===`camunda.propertyRequired`&&s.includes(`correlationKey`)?e(`app.rules.compat.messageWithoutCorrelationKey`,{subject:r}):null;case`sequence-flow-condition`:return e(o===`camunda.propertyRequired`?`app.rules.compat.needsConditionOrDefault`:`app.rules.compat.conditionNotAllowedHere`,{subject:r});case`variable-name`:return e(`app.rules.compat.unreadableVariableName`,{subject:r});case`loop-characteristics`:return o===`camunda.extensionElementRequired`?e(`app.rules.compat.missingInputCollection`,{subject:r}):null;case`history-time-to-live`:return e(`app.rules.compat.historyTimeToLiveMissing`);case`element-type`:return o===`camunda.elementTypeNotAllowed`?e(`app.rules.compat.elementNeedsVersion`,{elements:T(i(n.kind||k(a.node),`other`)),allowed:n.allowed,targets:j(n)}):null;case`executable-process`:return e(`app.rules.compat.notExecutable`,{subject:r});case`no-multiple-none-start-events`:return e(`app.rules.compat.moreThanOneBlankStart`);case`link-event`:return e(`app.rules.compat.duplicateLinkName`);case`ad-hoc-sub-process`:return o===`camunda.childElementOfTypeRequired`?e(`app.rules.compat.noActivityInside`,{subject:r}):null;case`collapsed-subprocess`:return e(`app.rules.compat.isCollapsed`,{subject:r});case`event-based-gateway-target`:return e(`app.rules.compat.receiveTaskAfterGateway`);default:return null}}function ce(t){let{subject:r,data:i,allowed:a}=t,o=typeof i.property==`string`?S(C(i.property)):``,s=S(C(k(i.extensionElement)));switch(i.type){case`camunda.propertyRequired`:{let n=ae(A(i.requiredProperty).map(e=>C(e)));return a?e(`app.rules.compat.needsPropertyBefore`,{subject:r,list:n,allowed:a,targets:j(t)}):e(`app.rules.compat.missingProperty`,{subject:r,list:n})}case`camunda.extensionElementRequired`:{let t=A(i.requiredExtensionElement)[0];return t?e(`app.rules.compat.missingExtension`,{subject:r,required:S(C(t))}):null}case`camunda.propertyNotAllowed`:return a?O(o)===`an`?e(`app.rules.compat.usesProperty.an`,{subject:r,property:o,needs:M(t)}):e(`app.rules.compat.usesProperty.a`,{subject:r,property:o,needs:M(t)}):O(o)===`an`?e(`app.rules.compat.cannotHaveProperty.an`,{subject:r,property:o}):e(`app.rules.compat.cannotHaveProperty.a`,{subject:r,property:o});case`camunda.extensionElementNotAllowed`:return a?O(s)===`an`?e(`app.rules.compat.usesExtension.an`,{subject:r,extension:s,needs:M(t)}):e(`app.rules.compat.usesExtension.a`,{subject:r,extension:s,needs:M(t)}):O(s)===`an`?e(`app.rules.compat.cannotHaveExtension.an`,{subject:r,extension:s}):e(`app.rules.compat.cannotHaveExtension.a`,{subject:r,extension:s});case`camunda.propertyValueNotAllowed`:case`camunda.propertyTypeNotAllowed`:return a?O(o)===`an`?e(`app.rules.compat.propertyValueNeeds.an`,{subject:r,property:o,needs:M(t)}):e(`app.rules.compat.propertyValueNeeds.a`,{subject:r,property:o,needs:M(t)}):O(o)===`an`?e(`app.rules.compat.propertyValueNotAllowed.an`,{subject:r,property:o}):e(`app.rules.compat.propertyValueNotAllowed.a`,{subject:r,property:o});case`camunda.expressionNotAllowed`:case`camunda.expressionValueNotAllowed`:return a?e(`app.rules.compat.expressionNeeds`,{subject:r,property:o,needs:M(t)}):e(`app.rules.compat.cannotUseExpression`,{subject:r,property:o});case`camunda.feelExpressionInvalid`:return e(`app.rules.compat.invalidFeelExpression`,{subject:r});case`camunda.feelExpressionUnsupportedFunction`:return e(`app.rules.compat.unsupportedFeelFunction`,{subject:r,version:t.version||e(`app.rules.compat.here`)});case`camunda.loopNotAllowed`:return e(`app.rules.compat.loopThatNeverWaits`,{subject:r});case`camunda.elementCollapsedNotAllowed`:return e(`app.rules.compat.isCollapsed`,{subject:r});case`camunda.elementMultipleNotAllowed`:return e(`app.rules.compat.moreThanOneElement`,{kind:n(t.kind||e(`app.rules.compat.element`))});case`camunda.attachedToRefElementTypeNotAllowed`:return e(`app.rules.compat.badBoundaryHost`,{subject:r});case`camunda.propertyDeprecated`:return O(o)===`an`?e(`app.rules.compat.deprecatedProperty.an`,{subject:r,property:o}):e(`app.rules.compat.deprecatedProperty.a`,{subject:r,property:o});case`camunda.secretExpressionFormatDeprecated`:case`camunda.secretExpressionFormatLegacy`:return e(`app.rules.compat.deprecatedSecret`,{subject:r})}let c=typeof i.type==`string`?i.type:``;return c.startsWith(`camunda.secretReference`)?e(`app.rules.compat.unresolvableSecret`,{subject:r}):c.startsWith(`camunda.agent`)?e(`app.rules.compat.invalidAgentSetting`,{subject:r}):null}function le(e){let t=e.replace(/<([^<>]*)>/g,(e,t)=>/^[a-z]+:/i.test(t)&&/^(bpmn|bpmndi|zeebe|camunda|operaton|modeler):/i.test(t)?S(C(t)):t).replace(/\s+/g,` `).trim().replace(/[.]+$/,``);return t&&t[0].toLowerCase()+t.slice(1)}function ue(t){try{let r=t.kind??``,i=(t.name?.trim()??``)||(r?e(`app.rules.compat.theKind`,{kind:n(r)}):e(`app.rules.compat.thisElement`)),a=t.data??{},o=typeof a.allowedVersion==`string`?a.allowedVersion:null,s={subject:i,kind:r,version:t.version??``,data:a,allowed:o};return se(t.rule,s)??ce(s)??e(`app.rules.compat.fallback`,{subject:i,message:le(t.message)})}catch{return t.message}}const N=`penstock-engine`,de={"http://camunda.org/schema/1.0/bpmn":`Camunda 7`,"http://camunda.org/schema/zeebe/1.0":`Camunda 8`,"http://operaton.org/schema/1.0/bpmn":`Operaton`,[u]:`Flowable`,[m]:`Activiti`},P={flowable:u,activiti:m},F={flowable:`Flowable`,activiti:`Activiti`},I={camunda:`http://camunda.org/schema/1.0/bpmn`,zeebe:`http://camunda.org/schema/zeebe/1.0`,operaton:`http://operaton.org/schema/1.0/bpmn`,flowable:u,activiti:m},L=[`assignee`,`candidateUsers`,`candidateGroups`,`dueDate`,`skipExpression`,`expression`,`delegateExpression`];function R(e){let t=e;for(;t.$parent;)t=t.$parent;let n={};for(let[e,r]of Object.entries(t.$attrs??{}))e.startsWith(`xmlns:`)&&typeof r==`string`&&(n[e.slice(6)]=r);return n}function z(e,t){return t[e]??I[e]}function B(e){let t=e;for(;t&&!t.id;)t=t.$parent;return t?.id??``}function V(t){return(typeof t.name==`string`?t.name.trim():``)||e(`app.rules.lint.theElement`,{type:n(String(t.$type??``))})}function H(e){return Object.keys(e.$attrs??{}).filter(e=>e.includes(`:`)&&!e.startsWith(`xmlns:`))}function U(e,t){return typeof e.$instanceOf==`function`?e.$instanceOf(t):e.$type===t}function W(e,t,n){return(typeof e.get==`function`?e.get(`${t}:${n}`):void 0)??e.$attrs?.[`${t}:${n}`]}function fe(t){let n=t.flavour??`flowable`;return{check(t,r){let i=R(t),a=/* @__PURE__ */ new Map,o=(e,t)=>{let r=z(t,i),o=r?de[r]:void 0;o&&r!==P[n]&&a.set(o,[...a.get(o)??[],e])};for(let e of H(t))o(e,e.slice(0,e.indexOf(`:`)));for(let e of t.extensionElements?.values??[]){let t=String(e.$type??``);t.includes(`:`)&&o(t,t.slice(0,t.indexOf(`:`)))}for(let[i,o]of a)r.report(B(t),e(`app.rules.engineCheck.foreignExtension`,{subject:V(t),names:[...new Set(o)].join(`, `),owner:i,engine:F[n]}))}}}function G(e,t){let n=R(e);return H(e).filter(e=>{let r=e.slice(0,e.indexOf(`:`));return r===t||z(r,n)===P[t]})}function pe(t){let n=t.flavour??`flowable`;return{check(t,r){for(let i of G(t,n)){let a=i.slice(i.indexOf(`:`)+1);s.some(e=>e.name===a&&e.flavours.includes(n))||r.report(B(t),e(`app.rules.engineCheck.unknownAttribute`,{subject:V(t),name:i,engine:F[n]}))}}}}function me(t){let n=t.flavour??`flowable`;return{check(t,r){for(let i of G(t,n)){let a=i.slice(i.indexOf(`:`)+1),o=l(n,a);o.length===0||o.some(e=>e.owners.some(e=>U(t,e)))||r.report(B(t),e(`app.rules.engineCheck.attributeNotAllowed`,{subject:V(t),name:i}))}}}}function K(t){let n=t.flavour??`flowable`;return{check(t,r){(U(t,`bpmn:ComplexGateway`)||n===`activiti`&&U(t,`bpmn:ConditionalEventDefinition`))&&r.report(B(t),e(`app.rules.engineCheck.unsupportedElement`,{subject:V(t),engine:F[n]}))}}}function he(t){let n=t.flavour??`flowable`;return{check(t,r){if(!U(t,`bpmn:ServiceTask`)||U(t,`bpmn:SendTask`))return;let i=[`class`,`expression`,`delegateExpression`,`type`].some(e=>{let r=W(t,n,e);return typeof r==`string`&&r.trim()!==``}),a=typeof t.implementation==`string`&&t.implementation.trim()!==``;i||a||r.report(B(t),e(`app.rules.engineCheck.noImplementation`,{subject:V(t),engine:F[n]}))}}}function ge(){return{check(t,n){U(t,`bpmn:ScriptTask`)&&(typeof t.scriptFormat==`string`&&t.scriptFormat.trim()||n.report(B(t),e(`app.rules.engineCheck.noScriptFormat`,{subject:V(t)})))}}}function _e(t){let n=t.flavour??`flowable`;return{check(t,r){let i=t.conditionExpression,a=typeof i?.body==`string`?i.body.trim():``,o=typeof i?.language==`string`?i.language.toLowerCase():``,s=U(t,`bpmn:SequenceFlow`)&&i!==void 0&&(o.includes(`feel`)||a.startsWith(`=`)&&!a.includes("${")),c=L.find(e=>{let r=W(t,n,e);return typeof r==`string`&&r.trim().startsWith(`=`)});(s||c)&&r.report(B(t),e(`app.rules.engineCheck.feelExpression`,{subject:V(t),engine:F[n]}))}}}const q={"foreign-extension":fe,"unknown-attribute":pe,"attribute-not-allowed":me,"unsupported-element":K,"service-task-implementation":he,"script-format":ge,"feel-expression":_e},ve=Object.keys(q),ye={"foreign-extension":`error`,"unknown-attribute":`warn`,"attribute-not-allowed":`warn`,"unsupported-element":`error`,"service-task-implementation":`error`,"script-format":`error`,"feel-expression":`error`};function be(e){return{rules:Object.fromEntries(ve.map(t=>[`${N}/${t}`,[ye[t],{flavour:e}]]))}}const J={resolveRule:e=>q[e],resolveConfig:e=>e===`flowable`||e===`activiti`?be(e):void 0},Y=`camunda-compat`,xe=[`camunda-cloud-1-0`,`camunda-cloud-1-1`,`camunda-cloud-1-2`,`camunda-cloud-1-3`,`camunda-cloud-8-0`,`camunda-cloud-8-1`,`camunda-cloud-8-2`,`camunda-cloud-8-3`,`camunda-cloud-8-4`,`camunda-cloud-8-5`,`camunda-cloud-8-6`,`camunda-cloud-8-7`,`camunda-cloud-8-8`,`camunda-cloud-8-9`,`camunda-cloud-8-10`,`camunda-cloud-8-11`,`camunda-platform-7-19`,`camunda-platform-7-20`,`camunda-platform-7-21`,`camunda-platform-7-22`,`camunda-platform-7-23`,`camunda-platform-7-24`],X={"camunda-cloud":[],"camunda-platform":[]};for(let e of xe){let[,t,n,r]=/^(camunda-(?:cloud|platform))-(\d+)-(\d+)$/.exec(e)??[];X[t].push({config:e,major:Number(n),minor:Number(r)})}function Z(e,t){return{platform:e,version:`${t.major}.${t.minor}`,config:t.config}}function Se(e,t){let n=d(e)?.family;if(n===`flowable`||n===`activiti`)return{platform:n,version:``,config:n};if(n!==`camunda-8`&&n!==`camunda-7`)return null;let r=n===`camunda-8`?`camunda-cloud`:`camunda-platform`,i=X[r],a=i[i.length-1],o=/^\s*(\d+)\.(\d+)/.exec(t??``);if(!o)return Z(r,a);let s=Number(o[1])*1e3+Number(o[2]),c=i.filter(e=>e.major*1e3+e.minor<=s);return Z(r,c.length>0?c[c.length-1]:i[0])}function Ce(e){let t=e?.$attrs;if(!t)return null;let n=Object.keys(t).find(e=>e.endsWith(`:executionPlatformVersion`)),r=n?t[n]:null;return typeof r==`string`&&r.trim()?r.trim():null}const we=`plugin:${Y}/`;function Te(e){let t=e.rules;if(typeof t!=`object`||!t)return e;let n=Object.fromEntries(Object.entries(t).map(([e,t])=>[e.startsWith(`compat/`)?`${Y}/${e.slice(7)}`:e,t]));return{...e,rules:n}}function Ee(e){return e.platform===`flowable`||e.platform===`activiti`}function De(e,t){if(!t||typeof e!=`object`||!e)return e;let n=Te(e),r=n.extends,i=Array.isArray(r)?r:r?[r]:[],a=Ee(t)?`plugin:${N}/`:we;return i.some(e=>typeof e==`string`&&e.startsWith(a))?n:{...n,extends:[...i,`${a}${t.config}`]}}const Oe=/* @__PURE__ */ new Set([`no-multiple-none-start-events`]);function ke(e,t){return(n={})=>{let r=t(n);return{...r,check(t,i){let a=Object.create(i);return a.report=(r,a,o)=>{let s=o&&!Array.isArray(o)&&typeof o==`object`?o:void 0,c=t.id===r,l=ue({rule:e,message:a,name:s?.name??(c?t.name:void 0),kind:c?t.$type:void 0,version:n.version,data:s?.data}),u=Oe.has(e)&&s?{...s,data:{...s.data,scope:c?t.$parent?.id:t.id}}:o;i.report(r,l,u)},r.check(t,a)}}}}function Ae(e,t){let n=e,r=t;return{resolveRule:(e,t)=>e===`bpmnlint-plugin-penstock-engine`?J.resolveRule(t):e===`bpmnlint-plugin-camunda-compat`?ke(t,r.resolveRule(e,t)):n.resolveRule(e,t),resolveConfig:(e,t)=>e===`bpmnlint-plugin-penstock-engine`?J.resolveConfig(t):(e===`bpmnlint-plugin-camunda-compat`?r:n).resolveConfig(e,t)}}function je(e,t,n){return t?{config:De(e.config,t),resolver:Ae(e.resolver,n)}:e}function Me(e){let t=o(e instanceof Error?e:Error(String(e)));return a(t)}const Q=y(import.meta.url),$=Q("bpmnlint/lib/resolver/node-resolver"),Ne=new $({require:Q});function Pe(e){let{root:t,values:n}=_(e),r=h(g(n.lint).configPath),i=r?b.resolve(t,r):b.join(t,`.bpmnlintrc`),a=re(i);return{config:ne(a?x(i,`utf8`):null),resolver:new $({require:y(b.join(t,`penstock-rules.js`))})}}async function Fe(t){let n=Pe(t);try{let r=x(t,`utf8`),i=f(h(_(t).values.engine))??p(r),{rootElement:a,warnings:o=[]}=await c(d(i)?.moddle??`plain`).fromXML(r),s=o.filter(e=>/^unresolved reference/.test(String(e.message))&&e.element?.id);if(s.length>0)return s.map(n=>({file:t,rule:`bpmnlint`,message:e(`app.output.unresolvedReference`,{id:n.element.id,property:String(n.property).replace(/^.*:/,``),value:String(n.value)}),severity:`error`,elements:[n.element.id]}));let l=je(n,Se(i,Ce(a)),Ne);return(await te(a,l)).map(e=>ee(v(e.rule),{file:t,rule:v(e.rule)===`bpmnlint`?`bpmnlint/${e.rule}`:e.rule,message:e.elements.length>0?`${e.message} (${e.elements.join(`, `)})`:e.message,severity:e.severity,elements:e.elements}))}catch(n){return[{file:t,rule:`bpmnlint`,message:e(`app.output.rulesCouldNotRun`,{reason:Me(n)}),severity:`error`}]}}export{Fe as ruleFindings};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{r as e}from"./chunk-translator-BAjzyPKE.js";import{c as t,i as n}from"./chunk-engine-CxgdJ2wO.js";import r from"node:path";import{existsSync as i,readFileSync as a,statSync as o}from"node:fs";import{isMap as s,isScalar as c,isSeq as l,parse as ee,parseDocument as u}from"yaml";const d=[`engine`,`scriptType`,`profile`,`lint.configPath`,`lint.clientBundlePath`,`deployment.url`,`deployment.name`,`deployment.tenantId`,`deployment.source`,`deployment.changedOnly`,`deployment.forTests`,`deployment.activationTime`,`deployment.auth.type`,`deployment.auth.username`,`deployment.auth.clientId`,`deployment.auth.tokenUrl`,`deployment.auth.audience`],f=`PENSTOCK_PROFILE`,p=/\$\{([A-Za-z_][A-Za-z0-9_]*)(?::([^}]*))?\}/g,te=new Map(d.map(e=>[`PENSTOCK_`+e.replace(/\./g,`_`).toUpperCase(),e]));function m(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function h(e,t){let n={...e};for(let[e,r]of Object.entries(t)){if(e===`__proto__`)continue;let t=n[e];n[e]=m(t)&&m(r)?h(t,r):r}return n}function g(e){return e.reduce((e,t)=>h(e,t.values),{})}function _(e,t){return t[f]?.trim()||(typeof e.profile==`string`?e.profile.trim():``)||null}function v(e){let t=e.profiles;return m(t)?Object.keys(t).sort():[]}function y(e,t){if(typeof e==`string`)return e.replace(p,(e,n,r)=>(Object.hasOwn(t,n)?t[n]:void 0)??r??``);if(Array.isArray(e))return e.map(e=>y(e,t));if(m(e)){let n={};for(let[r,i]of Object.entries(e))r!==`__proto__`&&(n[r]=y(i,t));return n}return e}function ne(e){return e.toLowerCase()===`true`?!0:e.toLowerCase()===`false`?!1:/^-?\d+$/.test(e)&&Number.isSafeInteger(Number.parseInt(e,10))?Number.parseInt(e,10):e}function b(e,t,n){let[r,...i]=t;if(i.length===0)return{...e,[r]:n};let a=m(e[r])?e[r]:{};return{...e,[r]:b(a,i,n)}}function x(e,t){let n=e;for(let[e,r]of Object.entries(t)){if(r===void 0||!e.startsWith(`PENSTOCK_`))continue;let t=te.get(e.toUpperCase());t&&t!==`profile`&&(n=b(n,t.split(`.`),ne(r)))}return n}function S(e,t={}){let n=g(e),r=_(n,t),i=m(n.profiles)?n.profiles[r??``]:void 0,{profiles:a,...o}=m(i)?h(n,i):n;return x(y(o,t),t)}const C={"start-event":`create.start-event`,"intermediate-event":`create.intermediate-event`,"end-event":`create.end-event`,gateway:`create.exclusive-gateway`,task:`create.task`,"data-object":`create.data-object`,"data-store":`create.data-store`,"sub-process":`create.subprocess-expanded`,participant:`create.participant-expanded`,group:`create.group`},w=Object.keys(C);function T(e){if(!Array.isArray(e))return null;let t=e.filter(e=>typeof e==`string`&&Object.hasOwn(C,e));return t.length===0?null:[...new Set(t)]}const E={engine:{kind:`text`,values:n},scriptType:{kind:`text`,values:[`none`,`groovy`,`javascript`]},elementTemplates:{kind:`list`},linked:{kind:`list`},palette:{kind:`list`,values:w},lint:{kind:`section`,keys:{configPath:{kind:`text`},clientBundlePath:{kind:`text`}}},conventions:{kind:`section`,keys:{ids:{kind:`section`,keys:{fromName:{kind:`flag`},pattern:{kind:`text`}}},defaults:{kind:`freeSection`}}},variables:{kind:`section`,keys:{check:{kind:`text`,values:[`off`,`fields`,`names`]},inputs:{kind:`list`}}},tests:{kind:`section`,keys:{language:{kind:`text`,values:[`java`,`kotlin`]},out:{kind:`text`},package:{kind:`text`}}},hooks:{kind:`section`,keys:{preCheck:{kind:`text`},postCheck:{kind:`text`},preLayout:{kind:`text`},postLayout:{kind:`text`},preDeploy:{kind:`text`},postDeploy:{kind:`text`}}},deployment:{kind:`section`,keys:{url:{kind:`text`},name:{kind:`text`},tenantId:{kind:`text`},source:{kind:`text`},changedOnly:{kind:`flag`},forTests:{kind:`flag`},activationTime:{kind:`text`},auth:{kind:`section`,keys:{type:{kind:`text`,values:[`none`,`basic`,`oauth`]},username:{kind:`text`},clientId:{kind:`text`},tokenUrl:{kind:`text`},audience:{kind:`text`}}}}},profile:{kind:`text`},profiles:{kind:`freeSection`}};function D(e,t,n={}){return{kind:e,key:t,line:null,column:null,expected:null,found:null,reason:null,...n}}function O(t){return e(t==null?`app.config.found.nothing`:typeof t==`string`?`app.config.found.text`:typeof t==`boolean`?`app.config.found.flag`:typeof t==`number`?`app.config.found.number`:Array.isArray(t)?`app.config.found.list`:`app.config.found.section`)}function k(t){return e(`app.config.expect.${t}`)}function A(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function re(e,t){return t==null?!0:e===`text`?typeof t==`string`:e===`flag`?typeof t==`boolean`:e===`number`?typeof t==`number`:e===`list`?Array.isArray(t)&&t.every(e=>typeof e==`string`):A(t)}function ie(e,n,r){return n===`engine`?t(r)!==null:e.values?.includes(r)??!0}function j(t,n,r,i){for(let[a,o]of Object.entries(t)){let t=r?`${r}.${a}`:a,s=Object.hasOwn(n,a)?n[a]:void 0;if(!s)i.push(D(`unknownKey`,t));else if(!re(s.kind,o))i.push(D(`type`,t,{expected:k(s.kind),found:O(o)}));else if(s.kind===`list`&&s.values&&Array.isArray(o))for(let n of o)typeof n==`string`&&s.values.includes(n)||i.push(D(`type`,t,{expected:e(`app.config.expect.oneOf`,{values:s.values.join(`, `)}),found:typeof n==`string`?n:O(n)}));else s.values&&typeof o==`string`&&!ie(s,t,o)?i.push(D(`type`,t,{expected:e(`app.config.expect.oneOf`,{values:s.values.join(`, `)}),found:o})):s.keys&&A(o)&&j(o,s.keys,t,i)}}function M(e,t,n){return D(`syntax`,null,{reason:e,line:t,column:n})}function N(e){return D(`type`,null,{expected:k(`section`),found:e})}function P(e){if(e==null)return[];if(!A(e))return[N(O(e))];let t=[];return j(e,E,``,t),t}function F(e,{line:t,column:n}){return t===null?e:n===null?`${e}:${t}`:`${e}:${t}:${n}`}const I=[[/^nested mappings are not allowed in compact mappings$/i,`nestedMapping`],[/^map keys must be unique$/i,`duplicateKey`],[/^tabs are not allowed as indentation$/i,`tabIndentation`],[/^implicit keys need to be on a single line$/i,`implicitKey`],[/^unexpected end of the stream within/i,`unclosed`]];function L(t){for(let[n,r]of I)if(n.test(t))return e(`app.config.reason.${r}`);return t}function R(t){return t.kind===`syntax`?e(`app.config.problem.syntaxWhy`,{reason:L(t.reason??``)}):t.kind===`unknownKey`?e(`app.config.problem.unknownKey`,{key:t.key}):t.key===null?e(`app.config.problem.typeOfFile`,{expected:t.expected,found:t.found}):e(`app.config.problem.type`,{key:t.key,expected:t.expected,found:t.found})}function z(e,t){return`${F(t,e)}: ${R(e)}`}function B(t){return e(t===`ide`?`app.config.problem.insteadIde`:`app.config.problem.insteadStopped`)}function V(e,t,n){return[z(e,t),B(n)]}const H=[`penstock.yaml`,`penstock.yml`,`penstock.json`],U=[`penstock.local.yaml`,`penstock.local.yml`,`penstock.local.json`];var W=class extends Error{file;problems;constructor(e,t,n=`stopped`){super(t.flatMap(t=>V(t,e,n)).join(`
|
|
2
|
+
`)),this.name=`ConfigUnreadable`,this.file=e,this.problems=t}};const G=/at line (\d+), column (\d+)/;function K(e){let t=e instanceof Error?e.message:String(e),n=t.split(`
|
|
3
|
+
`)[0].replace(G,``).replace(/[.:]\s*$/,``).trim(),r=G.exec(t),i=e.linePos?.[0];return M(n,r?Number(r[1]):i?.line??null,r?Number(r[2]):i?.col??null)}function q(e,t,n){let r=u(e).contents,i=null;for(let e of t.split(`.`)){if(!s(r))return null;let t=r.items.find(t=>(c(t.key)?t.key.value:t.key)===e);if(!t)return null;i=t.key,r=t.value}let a=i?.range?.[0];if(n&&l(r)&&(a=r.items.find(e=>c(e)&&e.value===n)?.range?.[0]??a),a===void 0)return null;let o=e.slice(0,a);return{line:o.split(`
|
|
4
|
+
`).length,column:a-o.lastIndexOf(`
|
|
5
|
+
`)}}function J(e,t){return t.map(t=>{if(t.key===null)return t;let n=q(e,t.key,t.found);return n?{...t,line:n.line,column:n.column}:t})}function Y(e){let t=a(e,`utf8`),n=null;try{n=t.trim()?ee(t):null}catch(e){return{values:{},problems:[K(e)],unreadable:!0}}let r=J(t,P(n));if(r.length===0)return{values:n??{},problems:r,unreadable:!1};let i=r.filter(e=>e.kind===`syntax`||e.key===null);return i.length>0?{values:{},problems:i,unreadable:!0}:{values:n??{},problems:r,unreadable:!1}}function ae(e){try{return o(e).isFile()}catch{return!1}}function X(e){try{return o(e).isDirectory()?e:r.dirname(e)}catch{return r.dirname(e)}}function Z(e,t){for(let n of t){let t=r.join(e,n);if(ae(t))return t}return null}function Q(e){let t=X(e),n=t;for(;;){if(Z(t,H)||i(r.join(t,`.git`)))return t;i(r.join(t,`package.json`))&&(n=t);let e=r.dirname(t);if(e===t)return n;t=e}}function $(e,t){let n=X(t),i=[],a=n;for(;;){let t=Z(a,U),n=Z(a,H);if(t&&i.push(t),n&&i.push(n),a===e||r.dirname(a)===a)break;a=r.dirname(a)}return i.reverse()}function oe(e){return Y(e).problems}function se(e){return e.map(e=>({file:e,problems:oe(e)})).filter(e=>e.problems.length>0)}function ce(e){let t=Y(e);if(t.unreadable)throw new W(e,t.problems);return{name:e,values:t.values}}function le(e,t=process.env){let n=Q(e),r=$(n,e),i=r.map(ce);return{root:n,files:r,values:S(i,t),merged:g(i)}}export{S as _,se as a,Y as c,R as d,T as f,v as g,g as h,$ as i,V as l,_ as m,W as n,Q as o,f as p,U as r,le as s,H as t,z as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./chunk-version-CdS8_QQd.js";import{r as t}from"./chunk-translator-BAjzyPKE.js";import{l as n}from"./chunk-git-BOKyPQj7.js";import{i as r,n as i,r as a,t as o}from"./chunk-help-DKtpVSxI.js";import{t as s}from"./chunk-own-CX-3lIbf.js";import{parseArgs as c}from"node:util";const l=/* @__PURE__ */ `--profile.--lang.--format.--ci.--out.--base.--images-dir.--image-base.--images-link.--stage.--distribution.--ops.--ops-file.--after.--name.--id.--event.--set.--input.--output.--condition.--package.--only.--junit-xml.--timeout.--example.--engine.--target.--fail-on.--port.--host.--project.--element.--variables.--variables-file.--complete.--error.--workers`.split(`.`),u={lint:{to:[`check`,`--only`,`rules`],name:`penstock check --only rules`},analyze:{to:[`check`,`--only`,`flow`],name:`penstock check --only flow`},against:{to:[`diff`],name:`penstock diff <ref>`},config:{to:[`doctor`],name:`penstock doctor`},profiles:{to:[`doctor`],name:`penstock doctor`},upgrade:{to:[`license`,`buy`],name:`penstock license buy`},login:{to:[`license`,`login`],name:`penstock license login`},logout:{to:[`license`,`logout`],name:`penstock license logout`},wrapper:{to:[`update`],name:`penstock update`}},d={"--json":[`--format`,`json`],"--image":[`--images`]},f={list:[`paths`],run:[`test-cases`],generate:[`test-cases`,`--generate`]},p=Object.fromEntries(l.map(e=>[e.slice(2),{type:`string`,multiple:!0}]));p.out={type:`string`,multiple:!0,short:`o`};function m(e){let t=c({args:e,allowPositionals:!0,strict:!1,options:p,tokens:!0});return{values:t.values,positionals:[...t.positionals],tokens:[...t.tokens]}}function h(e){let t=m(e).tokens.find(e=>e.kind===`positional`);return!t||t.index===void 0?{at:-1,name:``,after:void 0}:{at:t.index,name:String(t.value),after:e[t.index+1]}}function g(e){let{at:n,name:r}=h(e),i=s(u,r);i&&process.stderr.write(`${t(`app.cli.renamed`,{old:r,now:i.name})}\n`);let a=n<0?e:e.slice(0,n),o=i?i.to:n<0?[]:[r],c=n<0?[]:e.slice(n+1);return[...a,...o,...c].flatMap(e=>{let n=s(d,e);return n?(process.stderr.write(`${t(`app.cli.flagRenamed`,{old:e,now:n.join(` `)})}\n`),n):[e]})}function _(e){let t=g(e),n=h(t),r=n.name===`scenarios`?s(f,n.after):void 0,i=r===void 0?n.name===`junit`?[...t.slice(0,n.at),`tests`,...t.slice(n.at+1)]:t:[...t.slice(0,n.at),...r,...t.slice(n.at+2)],a=m(i),o=e=>(a.values[e]??[]).filter(e=>typeof e==`string`),c=h(t);return{tokens:i,asksHelp:t.slice(0,t.includes(`--`)?t.indexOf(`--`):t.length).includes(`--help`),helpNames:c.at<0?[]:t.slice(c.at).filter(e=>e!==`--help`),command:a.positionals[0]??``,words:a.positionals.slice(1),flags:new Set(Object.keys(a.values).map(e=>`--${e}`)),unknownScenario:n.name===`scenarios`&&r===void 0,option:e=>o(e)[0],options:o}}async function v(n){r(n);let s=_(n);if(s.command===`version`||n[0]===`--version`)return process.stdout.write(`${e()??`development`}\n`),0;if(s.command===``||s.command===`help`)return process.stdout.write(a()),0;if(s.asksHelp){let e=o(s.helpNames);return process.stdout.write(e?i(e):a()),0}if(s.unknownScenario)return process.stderr.write(`${t(`app.cli.scenariosUsage`)}\n`),1;let{dispatch:c}=await import(`./chunk-dispatch-CescmVW-.js`);return c(s,n)}function y(e){return e.destroyed?Promise.resolve():new Promise(t=>e.write(``,()=>t()))}async function b(e){n(),await y(process.stdout),await y(process.stderr),process.exit(e)}for(let e of[process.stdout,process.stderr])e.on(`error`,e=>{throw(e.code===`EPIPE`||e.code===`ERR_STREAM_DESTROYED`)&&process.exit(141),e});v(process.argv.slice(2)).then(b).catch(async e=>{let{FolderTooLarge:t}=await import(`./chunk-folders-BO8qUHUV.js`);if(e instanceof t){process.stderr.write(`${e.message}\n`),await b(1);return}let{systemFailure:n}=await import(`./chunk-systemError-cGwrYkmo.js`),r=n(e);r===null?(process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),await b(2)):(process.stderr.write(`${r}\n`),await b(1))});export{};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import{n as e}from"./chunk-version-CdS8_QQd.js";import{t}from"./chunk-atomicWrite-C6J1gDtO.js";import{r as n}from"./chunk-translator-BAjzyPKE.js";import{a as r,r as i}from"./chunk-features-CiC2Yoej.js";import{Jt as a,Kt as o,Lt as s,Pt as c,Qt as l,T as u,Wt as d,Xt as f,Yt as p,Zt as m,ct as h,dn as g,fn as ee,in as _,mn as te,qt as ne,rt as v,t as re,vn as ie}from"./chunk-src-CxTpK8wk.js";import{a as ae,s as oe}from"./chunk-moddle-Dlk0NR-u.js";import{c as se}from"./chunk-engine-CxgdJ2wO.js";import{s as ce}from"./chunk-failure-BK7fu4Yo.js";import{a as le,c as ue}from"./chunk-apply-Dmo_XdOA.js";import{a as de,r as y,t as fe}from"./chunk-context-B-5CZFAT.js";import{r as pe}from"./chunk-editPreview-DGu4slO6.js";import{n as me,t as he}from"./chunk-project-BS-4dy5o.js";import{r as ge}from"./chunk-penstockCli-B0_wWDGy.js";import{i as _e,l as ve,u as ye}from"./chunk-git-BOKyPQj7.js";import{r as be}from"./chunk-commands-CMEkVxle.js";import{s as xe,t as Se}from"./chunk-analyze-D_2dPr5n.js";import{n as b,t as x}from"./chunk-diagrams-wnFsPOKv.js";import{n as Ce}from"./chunk-codeLinks-DW721PAt.js";import{t as we}from"./chunk-diff-BJ2sJwcs.js";import{t as Te}from"./chunk-drawing-C2qewK8L.js";import{r as Ee}from"./chunk-migrate-BaNzQNyD.js";import{n as De,r as Oe}from"./chunk-command-D7WS1aRl.js";import{t as ke}from"./chunk-systemError-F6bMRwXU.js";import{n as Ae}from"./chunk-export-DP1Hab-_.js";import{l as je}from"./chunk-testCases-ba8k3BJD.js";import{n as Me}from"./chunk-taskTest-D-WDCLD5.js";import S from"node:path";import{tmpdir as Ne}from"node:os";import{closeSync as Pe,existsSync as Fe,fsyncSync as Ie,linkSync as Le,lstatSync as Re,mkdirSync as ze,mkdtempSync as Be,openSync as Ve,readFileSync as C,readdirSync as He,realpathSync as w,renameSync as Ue,rmSync as T,statSync as We,unlinkSync as Ge,writeFileSync as Ke}from"node:fs";import{randomBytes as qe}from"node:crypto";import{createInterface as Je}from"node:readline";import{fileURLToPath as Ye,pathToFileURL as Xe}from"node:url";import"@bpmn-io/feelin";import"@bpmn-io/lezer-feel";new Set(Object.values({open_parenthesis:`close_parenthesis`,open_bracket:`close_bracket`,open_brace:`close_brace`}));const Ze=[[`ational`,`ate`],[`tional`,`tion`],[`enci`,`ence`],[`anci`,`ance`],[`izer`,`ize`],[`abli`,`able`],[`alli`,`al`],[`entli`,`ent`],[`eli`,`e`],[`ousli`,`ous`],[`ization`,`ize`],[`ation`,`ate`],[`ator`,`ate`],[`alism`,`al`],[`iveness`,`ive`],[`fulness`,`ful`],[`ousness`,`ous`],[`aliti`,`al`],[`iviti`,`ive`],[`biliti`,`ble`]],Qe=[[`icate`,`ic`],[`ative`,``],[`alize`,`al`],[`iciti`,`ic`],[`ical`,`ic`],[`ful`,``],[`ness`,``]],$e=[`al`,`ance`,`ence`,`er`,`ic`,`able`,`ible`,`ant`,`ement`,`ment`,`ent`,`ion`,`ou`,`ism`,`ate`,`iti`,`ous`,`ive`,`ize`],et=/* @__PURE__ */ new Set([`s`,`t`]);function E(e,t){return`aeiou`.includes(e[t])?!1:e[t]!==`y`||t===0||!E(e,t-1)}function D(e){let t=0,n=0;for(;n<e.length&&E(e,n);)n+=1;for(;n<e.length;){for(;n<e.length&&!E(e,n);)n+=1;if(n>=e.length)break;for(;n<e.length&&E(e,n);)n+=1;t+=1}return t}function tt(e){return[...e].some((t,n)=>!E(e,n))}function nt(e){let t=e.length;return t>=2&&e[t-1]===e[t-2]&&E(e,t-1)}function rt(e){let t=e.length;return t>=3&&E(e,t-3)&&!E(e,t-2)&&E(e,t-1)&&!`wxy`.includes(e[t-1])}function it(e,t,n){return e.slice(0,e.length-t.length)+n}function at(e){return e.endsWith(`sses`)?it(e,`sses`,`ss`):e.endsWith(`ies`)?it(e,`ies`,`i`):e.endsWith(`ss`)||e.endsWith(`us`)||e.endsWith(`is`)?e:e.endsWith(`s`)?e.slice(0,-1):e}function ot(e){return[`at`,`bl`,`iz`].some(t=>e.endsWith(t))?e+`e`:nt(e)&&!`lsz`.includes(e[e.length-1])?e.slice(0,-1):D(e)===1&&rt(e)?e+`e`:e}function st(e){if(e.endsWith(`eed`)){let t=e.slice(0,-3);return D(t)>0?t+`ee`:e}for(let t of[`ed`,`ing`])if(e.endsWith(t)&&tt(e.slice(0,-t.length)))return ot(e.slice(0,-t.length));return e}function ct(e){return e.endsWith(`y`)&&tt(e.slice(0,-1))?e.slice(0,-1)+`i`:e}function lt(e,t){let n=t.find(([t])=>e.endsWith(t));if(!n)return e;let r=e.slice(0,e.length-n[0].length);return D(r)>0?r+n[1]:e}function ut(e){let t=$e.find(t=>e.endsWith(t));if(!t)return e;let n=e.slice(0,e.length-t.length);return D(n)<=1||t===`ion`&&!et.has(n.slice(-1))?e:n}function dt(e){let t=e;if(t.endsWith(`e`)){let e=t.slice(0,-1),n=D(e);(n>1||n===1&&!rt(e))&&(t=e)}return D(t)>1&&t.endsWith(`ll`)&&(t=t.slice(0,-1)),t}const O=/* @__PURE__ */ new Map;function ft(e){if(e.length<=2)return e;let t=O.get(e);if(t!==void 0)return t;let n=dt(ut(lt(lt(ct(st(at(e))),Ze),Qe)));return O.size>=1e4&&O.clear(),O.set(e,n),n}var pt={version:1,stopWords:[`a`,`an`,`the`,`of`],abbreviations:{addr:[`address`],amt:[`amount`],cnt:[`count`],desc:[`description`],dob:[`birth`,`date`],dt:[`date`],id:[`identifier`],img:[`image`],max:[`maximum`],min:[`minimum`],msg:[`message`],no:[`number`],nr:[`number`],num:[`number`],pct:[`percent`],perc:[`percent`],qty:[`quantity`],tel:[`telephone`],tot:[`total`],ts:[`timestamp`],val:[`value`]},families:{number:[`int`,`integer`,`int32`,`int64`,`long`,`short`,`byte`,`double`,`float`,`float32`,`float64`,`decimal`,`bigdecimal`,`biginteger`,`number`],string:[`string`,`str`,`charsequence`,`char`,`character`],boolean:[`boolean`,`bool`],date:[`date`,`localdate`,`localdatetime`,`datetime`,`instant`,`zoneddatetime`,`offsetdatetime`,`time`,`localtime`,`timestamp`],duration:[`duration`,`timespan`],list:[`list`,`arraylist`,`linkedlist`,`array`,`collection`,`set`,`hashset`,`iterable`,`sequence`]},concepts:[{name:`email`,role:`content`,words:[`email`,`mail`,`e mail`],family:`string`,unit:null},{name:`identifier`,role:`attribute`,words:[`identifier`,`key`,`number`,`code`,`uuid`,`guid`],family:null,unit:null},{name:`flag`,role:`marker`,words:[`flag`,`is`,`has`,`can`,`should`,`was`,`will`,`does`],family:`boolean`,unit:null},{name:`percent`,role:`content`,words:[`percent`,`percentage`],family:`number`,unit:`%`},{name:`rate`,role:`content`,words:[`rate`,`factor`,`ratio`],family:`number`,unit:null},{name:`timeout`,role:`content`,words:[`timeout`,`expiry`,`expiration`,`ttl`],family:`duration`,unit:null},{name:`duration`,role:`content`,words:[`duration`,`period`,`elapsed`,`span`],family:`duration`,unit:null},{name:`count`,role:`content`,words:[`count`,`quantity`,`tally`],family:`number`,unit:null},{name:`amount`,role:`content`,words:[`amount`,`total`,`sum`,`price`,`cost`,`fee`],family:`number`,unit:null},{name:`date`,role:`content`,words:[`date`,`day`],family:`date`,unit:null},{name:`name`,role:`content`,words:[`name`,`title`,`label`],family:`string`,unit:null},{name:`address`,role:`content`,words:[`address`],family:`string`,unit:null},{name:`phone`,role:`content`,words:[`phone`,`telephone`,`mobile`],family:`string`,unit:null},{name:`status`,role:`content`,words:[`status`,`state`],family:`string`,unit:null},{name:`url`,role:`content`,words:[`url`,`link`,`uri`,`href`],family:`string`,unit:null},{name:`description`,role:`content`,words:[`description`,`summary`],family:`string`,unit:null}]};const mt=[`content`,`attribute`,`marker`],ht=[`number`,`string`,`boolean`,`date`,`duration`,`list`],gt=/^[\p{Ll}\p{Lo}\p{N}]+(?: [\p{Ll}\p{Lo}\p{N}]+)*$/u,_t=/^[\p{Ll}\p{Lo}\p{N}]+$/u;var vt=class e extends Error{problems;constructor(t){super(JSON.stringify(t)),this.name=e.name,this.problems=t}};const k=e=>typeof e==`object`&&!!e&&!Array.isArray(e),yt=e=>mt.includes(e),bt=e=>ht.includes(e),A=e=>typeof e==`string`&&_t.test(e),xt=e=>e.map(e=>ft(e)).join(` `);function St(e,t){let n=/* @__PURE__ */ new Set;return Array.isArray(e)?(e.forEach((e,r)=>{let i=`stopWords[${r}]`;A(e)?n.has(e)?t.push({code:`repeated`,path:i,value:e}):n.add(e):t.push({code:`notWord`,path:i,value:e})}),n):(t.push({code:`notList`,path:`stopWords`}),n)}function Ct(e,t){let n=/* @__PURE__ */ new Map;if(!k(e))return t.push({code:`notObject`,path:`abbreviations`}),n;for(let[r,i]of Object.entries(e)){let e=`abbreviations.${r}`;A(r)?Array.isArray(i)?i.length===0?t.push({code:`emptyList`,path:e}):i.every(A)?n.set(r,i):t.push({code:`notWord`,path:e,value:i}):t.push({code:`notList`,path:e}):t.push({code:`notWord`,path:`abbreviations`,value:r})}return n}function wt(e,t){let n=/* @__PURE__ */ new Map;if(!k(e))return t.push({code:`notObject`,path:`families`}),n;for(let[r,i]of Object.entries(e)){let e=`families.${r}`;bt(r)?Array.isArray(i)?i.forEach((i,a)=>{let o=`${e}[${a}]`;A(i)?n.has(i)?t.push({code:n.get(i)===r?`repeated`:`owned`,path:o,value:i,other:n.get(i)}):n.set(i,r):t.push({code:`notWord`,path:o,value:i})}):t.push({code:`notList`,path:e}):t.push({code:`unknownFamily`,path:e,value:r})}return n}function Tt(e,t,n){return Array.isArray(e)?e.length===0?(n.push({code:`emptyList`,path:t}),[]):e.flatMap((e,r)=>typeof e==`string`&>.test(e)?[e]:(n.push({code:`notPhrase`,path:`${t}[${r}]`,value:e}),[])):(n.push({code:`notList`,path:t}),[])}function Et(e,t,n){let r=`concepts[${t}]`;if(!k(e))return n.push({code:`notObject`,path:r}),null;let i=typeof e.name==`string`&>.test(e.name)?e.name:null;i===null&&n.push({code:`notPhrase`,path:`${r}.name`,value:e.name});let a=yt(e.role)?e.role:null;a===null&&n.push({code:`unknownRole`,path:`${r}.role`,value:e.role});let o=Tt(e.words,`${r}.words`,n);i!==null&&!o.includes(i)&&n.push({code:`nameNotAmongWords`,path:r,value:i});let s=e.family===null||e.family===void 0?null:e.family;s!==null&&!bt(s)&&n.push({code:`unknownFamily`,path:`${r}.family`,value:s});let c=e.unit===null||e.unit===void 0?null:e.unit;return c!==null&&(typeof c!=`string`||c.trim()===``)&&n.push({code:`notText`,path:`${r}.unit`,value:c}),i===null||a===null||s!==null&&!bt(s)||c!==null&&typeof c!=`string`?null:{name:i,role:a,words:o,family:s,unit:c}}function Dt(e,t){let n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map;return Array.isArray(e)?(e.forEach((e,i)=>{let a=Et(e,i,t);a&&(n.has(a.name)&&t.push({code:`repeated`,path:`concepts[${i}]`,value:a.name}),n.set(a.name,a),a.words.forEach((e,n)=>{let o=xt(e.split(` `)),s=r.get(o);s&&s.name!==a.name?t.push({code:`owned`,path:`concepts[${i}].words[${n}]`,value:e,other:s.name}):r.set(o,a)}))}),{concepts:n,phrases:r}):(t.push({code:`notList`,path:`concepts`}),{concepts:n,phrases:r})}function Ot(e){if(!k(e))throw new vt([{code:`notObject`,path:`$`}]);let t=[];e.version!==1&&t.push({code:`version`,path:`version`,value:e.version});let n=St(e.stopWords,t),r=Ct(e.abbreviations,t),i=wt(e.families,t),{concepts:a,phrases:o}=Dt(e.concepts,t);if(t.length>0)throw new vt(t);return{stopWords:n,abbreviations:r,typeNames:i,concepts:a,phrases:o,longestPhrase:Math.max(1,...[...o.keys()].map(e=>e.split(` `).length))}}const j=Ot(pt),kt=/^([A-Za-z_]\w*)(?:\.[A-Za-z_]\w*|\[\s*\d+\s*\])*$/,At=/^[$#]\{([\s\S]*)\}$/,jt=[`camunda`,`operaton`];function Mt(e){return typeof e==`string`?(e.split(`:`).pop()??``).toLowerCase():``}function M(e){return typeof e==`string`&&e.trim()!==``?e.trim():null}function Nt(e){return e!==null&&e.startsWith(`=`)?M(e.slice(1)):null}function Pt(e){let t=e===null?null:At.exec(e.trim());return t?M(t[1]):null}function Ft(e){let t=e===null?null:kt.exec(e);return t?t[1]:null}function N(e,t,n,r,i=Ft(r)){return{elementId:e,direction:t,target:n,expression:r,variable:i}}function It(e){for(let t of jt){let n=e?.get?.(`${t}:resultVariable`)??e?.$attrs?.[`${t}:resultVariable`];if(M(n)!==null)return M(n)}return null}function Lt(e,t){switch(Mt(t?.$type)){case`iomapping`:return[...(t.inputParameters??[]).map(t=>N(e,`input`,M(t.target),Nt(M(t.source)))),...(t.outputParameters??[]).map(t=>N(e,`output`,M(t.target),Nt(M(t.source)),null))];case`inputoutput`:return[...(t.inputParameters??[]).map(t=>N(e,`input`,M(t.name),Pt(M(t.value)))),...(t.outputParameters??[]).map(t=>N(e,`output`,M(t.name),Pt(M(t.value)),null))];case`connector`:return t.inputOutput?Lt(e,t.inputOutput):[];case`in`:{let n=M(t.source);return[N(e,`input`,M(t.target),n??Pt(M(t.sourceExpression)))]}case`out`:return[N(e,`output`,M(t.target),M(t.source),null)];case`script`:case`calleddecision`:return M(t.resultVariable)===null?[]:[N(e,`result`,M(t.resultVariable),null)];default:return[]}}function Rt(e){let t=String(e.id),n=It(e);return[...(e.extensionElements?.values??[]).flatMap(e=>Lt(t,e)),...n===null?[]:[N(t,`result`,n,null)]]}function zt(e,t){e?.id&&(t.push(...Rt(e)),(e.flowElements??[]).forEach(e=>zt(e,t)))}function Bt(e){let t=[];return(e?.rootElements??[]).filter(e=>e.$type===`bpmn:Process`).forEach(e=>(e.flowElements??[]).forEach(e=>zt(e,t))),t}const Vt=/\p{Lu}+(?=\p{Lu}\p{Ll})|\p{Lu}?[\p{Ll}\p{M}]+|\p{Lu}+|\p{N}+|[\p{Lo}\p{Lm}\p{M}]+/gu,Ht=/\[\s*\d+\s*\]/g,Ut=/^\p{N}+$/u;function Wt(e){return e.replace(Ht,`.`).split(`.`).filter(e=>e.length>0)}function Gt(e){return[...e.matchAll(Vt)].map(e=>e[0].toLowerCase())}function Kt(e,t){return e.flatMap(e=>t.stopWords.has(e)?[]:[...t.abbreviations.get(e)??[e]])}function qt(e,t,n){for(let r=Math.min(n.longestPhrase,e.length-t);r>=1;--r){let i=n.phrases.get(xt(e.slice(t,t+r)));if(i)return{concept:i,length:r}}return null}function Jt(e,t,n){let r=[],i=0;for(;i<e.length;){let a=qt(e,i,n);if(a)r.push({key:a.concept.name,text:e.slice(i,i+a.length).join(` `),role:a.concept.role,segment:t}),i+=a.length;else{let n=e[i];r.push({key:ft(n),text:n,role:Ut.test(n)?`attribute`:`content`,segment:t}),i+=1}}return r}function Yt(e,t){return Wt(e).flatMap((e,n)=>Jt(Kt(Gt(e),t),n,t))}const Xt={names:0,content:0,last:0};function Zt(e,t){let n=Yt(e,t),r=n.filter(e=>e.role===`content`);return{keys:[...new Set(n.map(e=>e.key))],contentKeys:[...new Set(r.map(e=>e.key))],last:r.at(-1)?.key??null,weight:0}}var Qt=class{lexicon;sources=/* @__PURE__ */ new Map;sourceWeights=/* @__PURE__ */ new Map;holders=/* @__PURE__ */ new Map;facts=/* @__PURE__ */ new Map;statistics=/* @__PURE__ */ new Map;mass=/* @__PURE__ */ new Map;total=0;constructor(e=j){this.lexicon=e}get size(){return this.facts.size}replaceSource(e,t){let n=this.sources.get(e)??/* @__PURE__ */ new Set,r=new Set(t);for(let t of n)r.has(t)||this.release(t,e);for(let t of r)n.has(t)||this.retain(t,e);r.size===0?this.sources.delete(e):this.sources.set(e,r)}removeSource(e){this.replaceSource(e,[])}setSourceWeight(e,t){if(!Number.isFinite(t)||t<0)throw RangeError(`sourceWeight:${t}`);this.sourceWeights.set(e,t);for(let t of this.sources.get(e)??[])this.refresh(t)}statisticsOf(e){return{...this.statistics.get(e)??Xt}}weight(e){return 1+Math.log((this.total+1)/((this.mass.get(e)??0)+1))}headness(e){let{content:t,last:n}=this.statisticsOf(e);return(n+1)/(t+2)}retain(e,t){let n=this.holders.get(e)??/* @__PURE__ */ new Set;n.add(t),this.holders.set(e,n),this.facts.has(e)||this.enter(e),this.refresh(e)}release(e,t){let n=this.holders.get(e);n?.delete(t),n?.size===0?(this.holders.delete(e),this.leave(e)):this.refresh(e)}enter(e){let t=Zt(e,this.lexicon);this.facts.set(e,t),t.keys.forEach(e=>this.bump(e,`names`,1)),t.contentKeys.forEach(e=>this.bump(e,`content`,1)),t.last!==null&&this.bump(t.last,`last`,1)}leave(e){let t=this.facts.get(e);t&&(this.reweigh(t,0),t.keys.forEach(e=>this.bump(e,`names`,-1)),t.contentKeys.forEach(e=>this.bump(e,`content`,-1)),t.last!==null&&this.bump(t.last,`last`,-1),this.facts.delete(e))}refresh(e){let t=this.facts.get(e);t&&this.reweigh(t,this.heaviestOf(e))}heaviestOf(e){return[...this.holders.get(e)??[]].reduce((e,t)=>Math.max(e,this.sourceWeights.get(t)??1),0)}reweigh(e,t){let n=t-e.weight;n!==0&&(e.weight=t,this.total+=n,e.keys.forEach(e=>this.mass.set(e,(this.mass.get(e)??0)+n)))}bump(e,t,n){let r=this.statistics.get(e)??{...Xt};r[t]+=n,this.statistics.set(e,r)}},$t={version:1,dimensions:{ratio:{base:`ratio`,assumed:`ratio`,hints:[`rate`,`ratio`,`factor`,`proportion`],range:[0,1],integral:!1,iso:!1},duration:{base:`second`,assumed:null,hints:[`timeout`,`duration`,`time`,`period`,`delay`,`interval`,`elapsed`,`ttl`,`expiry`,`expiration`],range:[0,31536e3],integral:!1,iso:!0},data:{base:`byte`,assumed:null,hints:[],range:null,integral:!1,iso:!1},money:{base:`dollar`,assumed:null,hints:[],range:null,integral:!0,iso:!1}},units:[{name:`ratio`,dimension:`ratio`,per:1,words:[`fraction`],sample:.25},{name:`percent`,dimension:`ratio`,per:.01,words:[`percent`,`percentage`,`pct`],sample:25},{name:`basisPoint`,dimension:`ratio`,per:1e-4,words:[`basis point`,`bps`],sample:150},{name:`second`,dimension:`duration`,per:1,words:[`second`,`seconds`,`sec`,`secs`],iso:{prefix:`PT`,designator:`S`},sample:30},{name:`millisecond`,dimension:`duration`,per:.001,words:[`millisecond`,`milliseconds`,`ms`,`msec`,`msecs`],sample:1500},{name:`minute`,dimension:`duration`,per:60,words:[`minute`,`minutes`,`mins`],iso:{prefix:`PT`,designator:`M`},sample:5},{name:`hour`,dimension:`duration`,per:3600,words:[`hour`,`hours`,`hr`,`hrs`],iso:{prefix:`PT`,designator:`H`},sample:2},{name:`byte`,dimension:`data`,per:1,words:[`byte`,`bytes`],sample:512},{name:`kilobyte`,dimension:`data`,per:1e3,words:[`kilobyte`,`kilobytes`],sample:4},{name:`megabyte`,dimension:`data`,per:1e6,words:[`megabyte`,`megabytes`],sample:8},{name:`gigabyte`,dimension:`data`,per:1e9,words:[`gigabyte`,`gigabytes`],sample:2},{name:`dollar`,dimension:`money`,per:1,words:[`dollar`,`dollars`],sample:20},{name:`cent`,dimension:`money`,per:.01,words:[`cent`,`cents`],sample:250}]};const en=/^[\p{Ll}\p{Lo}\p{N}]+(?: [\p{Ll}\p{Lo}\p{N}]+)*$/u,tn=/^[a-z][A-Za-z]*$/,nn=[`P`,`PT`],rn=/^[YMWDHS]$/;var an=class e extends Error{problems;constructor(t){super(JSON.stringify(t)),this.name=e.name,this.problems=t}};const P=e=>typeof e==`object`&&!!e&&!Array.isArray(e),on=e=>typeof e==`string`&&en.test(e),F=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,I=e=>e.join(` `),sn=e=>e.split(` `).map(e=>ft(e)),cn=(e,t)=>Yt(e,t).map(e=>e.key);function ln(e,t,n){return Array.isArray(e)?e.flatMap((e,r)=>on(e)?[e]:(n.push({code:`notPhrase`,path:`${t}[${r}]`,value:e}),[])):(n.push({code:`notList`,path:t}),[])}function un(e,t,n){if(e==null)return null;if(!P(e))return n.push({code:`notIso`,path:t,value:e}),null;let r=typeof e.prefix==`string`&&nn.includes(e.prefix),i=typeof e.designator==`string`&&rn.test(e.designator);return r||n.push({code:`notIso`,path:`${t}.prefix`,value:e.prefix}),i||n.push({code:`notIso`,path:`${t}.designator`,value:e.designator}),r&&i?{prefix:e.prefix,designator:e.designator}:null}function dn(e,t,n,r){let i=`units[${t}]`;if(!P(e))return r.push({code:`notObject`,path:i}),null;let a=typeof e.name==`string`&&tn.test(e.name)?e.name:null;a===null&&r.push({code:`notName`,path:`${i}.name`,value:e.name});let o=typeof e.dimension==`string`&&n.has(e.dimension)?e.dimension:null;o===null&&r.push({code:`unknownDimension`,path:`${i}.dimension`,value:e.dimension}),F(e.per)||r.push({code:`notPositive`,path:`${i}.per`,value:e.per});let s=ln(e.words,`${i}.words`,r);Array.isArray(e.words)&&s.length===0&&r.push({code:`emptyList`,path:`${i}.words`});let c=un(e.iso,`${i}.iso`,r);return F(e.sample)||r.push({code:`notPositive`,path:`${i}.sample`,value:e.sample}),a===null||o===null||!F(e.per)||!F(e.sample)?null:{name:a,dimension:o,per:e.per,words:s,iso:c,sample:e.sample}}function fn(e,t){let n=/* @__PURE__ */ new Map;return e.forEach((e,r)=>{n.has(e.name)?t.push({code:`repeated`,path:`units[${r}].name`,value:e.name}):n.set(e.name,e)}),n}function pn(e,t,n){let r=/* @__PURE__ */ new Map;return e.forEach(e=>{e.words.forEach(i=>{let a=I(cn(i,t)),o=a===I(sn(i)),s=a===I(sn(e.name));if(!o&&!s){n.push({code:`shadowed`,path:`units.${e.name}.words`,value:i,other:a});return}let c=r.get(a);c&&c!==e?n.push({code:`owned`,path:`units.${e.name}.words`,value:i,other:c.name}):r.set(a,e)})}),r}function mn(e,t,n,r,i){t.forEach(t=>{let a=I(cn(t,n)),o=r.get(a);o&&o!==e?i.push({code:`owned`,path:`dimensions.${e}.hints`,value:t,other:o}):r.set(a,e)})}function hn(e,t,n){return e==null?null:Array.isArray(e)&&e.length===2&&e.every(e=>typeof e==`number`&&Number.isFinite(e))&&e[0]<=e[1]?[e[0],e[1]]:(n.push({code:`notRange`,path:t,value:e}),null)}function gn(e,t,n,r,i){if(e==null)return null;let a=typeof e==`string`?r.get(e):void 0;return a?a.dimension===t?a:(i.push({code:`dimensionMismatch`,path:n,value:e}),null):(i.push({code:`unknownUnit`,path:n,value:e}),null)}function _n(e,t,n,r,i,a){let o=`dimensions.${e}`;if(!P(t))return a.push({code:`notObject`,path:o}),null;let s=gn(t.base,e,`${o}.base`,n,a);s&&s.per!==1&&a.push({code:`notBase`,path:`${o}.base`,value:s.name}),gn(t.assumed,e,`${o}.assumed`,n,a);let c=hn(t.range,`${o}.range`,a);typeof t.integral!=`boolean`&&a.push({code:`notBoolean`,path:`${o}.integral`,value:t.integral}),typeof t.iso!=`boolean`&&a.push({code:`notBoolean`,path:`${o}.iso`,value:t.iso});let l=ln(t.hints,`${o}.hints`,a);return mn(e,l,r,i,a),typeof t.base==`string`?{name:e,base:t.base,assumed:typeof t.assumed==`string`?t.assumed:null,hints:l,range:c,integral:t.integral===!0,iso:t.iso===!0}:null}function vn(e){return Math.max(1,...[...e].map(e=>e.split(` `).length))}function yn(e,t){if(!P(e))throw new an([{code:`notObject`,path:`$`}]);let n=[];e.version!==1&&n.push({code:`version`,path:`version`,value:e.version}),P(e.dimensions)||n.push({code:`notObject`,path:`dimensions`}),Array.isArray(e.units)||n.push({code:`notList`,path:`units`});let r=new Set(P(e.dimensions)?Object.keys(e.dimensions):[]),i=(Array.isArray(e.units)?e.units.map((e,t)=>dn(e,t,r,n)):[]).filter(e=>e!==null),a=fn(i,n),o=pn(i,j,n),s=/* @__PURE__ */ new Map,c=/* @__PURE__ */ new Map;if(P(e.dimensions))for(let[r,i]of Object.entries(e.dimensions)){let e=_n(r,i,a,t,s,n);e&&c.set(r,e)}if(n.length>0)throw new an(n);return{dimensions:c,units:a,words:o,hints:s,longestWord:vn(o.keys()),longestHint:vn(s.keys())}}yn($t,j);const bn=/^P(?!$)(?:\d+(?:\.\d+)?[YMWD])*(?:T(?=\d)(?:\d+(?:\.\d+)?[HMS])+)?$/;function xn(e){return bn.test(e)}function Sn(e,t){for(let n of e?.eventDefinitions??[]){if(n?.$type!==`bpmn:TimerEventDefinition`)continue;let e=typeof n.timeDuration?.body==`string`?n.timeDuration.body.trim():``;xn(e)&&t.push(e)}(e?.flowElements??[]).forEach(e=>Sn(e,t))}function Cn(e){let t=[];return(e?.rootElements??[]).filter(e=>e.$type===`bpmn:Process`).forEach(e=>Sn(e,t)),t}function wn(e){return e.flatMap(e=>{let t=/* @__PURE__ */ new Map;return e.mappings.filter(e=>e.direction!==`input`&&e.target!==null).forEach(e=>t.set(e.elementId,[...t.get(e.elementId)??[],e.target])),[...t].map(([t,n])=>({diagram:e.path,elementId:t,label:e.elementNames.get(t)??``,outputs:n}))})}function Tn(e){return new Map([...e].map(e=>[e.id,[...e.outputs]]))}var En={weightedOverlap:`share of the weight of the words the query and the candidate have in common, over the weight of the words either has; a word weighs by how rarely the project uses it`,softTfidf:`the matcher's soft TF-IDF similarity of the two names: a word that nearly matches another word of the other name counts as a match, weighted as the overlap is`,headEqual:`1 when the query and the candidate name the same head concept, else 0`,tailEqual:`1 when the last content word of the two names is the same concept, else 0`,jaroWinkler:`Jaro-Winkler similarity of the two names lower-cased and stripped of separators`,trigramCosine:`cosine of the character trigram counts of the two names stripped of separators`,lengthRatio:`the shorter over the longer length of the two names stripped of separators`,nameLength:`the length of the candidate name stripped of separators, over 32 and capped at 1`,casingAgrees:`1 when the query and the candidate are written in the same casing style (snake, kebab, camel, pascal, lower, upper, other), else 0`,ownerStripped:`1 when an element id prefix that owns the candidate was removed before matching, else 0`,typeKnown:`1 when the candidate has a known type, else 0`,typeNumber:`1 when the candidate type belongs to the number family of the lexicon, else 0`,readsInProject:`how often the project reads the candidate name outside its own writes, as n over n plus one`,siblingOverlap:`the largest weighted overlap of the candidate's words with the name of each field the same element already gave a name to, earlier in the document, over the weight of the words either has; 0 when there is none`,slotPosition:`the position of the field among the element's fields of the same kind, earlier fields first, over the number of such fields`,slotCount:`the number of the element's fields of the same kind, over eight and capped at 1`,originContract:`1 when the candidate is written by the element's own worker code`,originScript:`1 when the candidate is written by the element's own script body`,originDecision:`1 when the candidate is an output column of a decision the element calls`,originDownstream:`1 when a later element reads the candidate and nothing before this element writes it`,originScope:`1 when the candidate is in scope at the element: written by an element upstream on every path`,originTaskType:`1 when the same task or job type writes the candidate in another diagram of the project`,labelAssociation:`how well the name model's words for the element's label go with the candidate's words: the geometric mean over the candidate's words of the probability the name model gives each word for that label, between 0 and 1; 0 without a name model or a label`};const Dn=[`weightedOverlap`,`softTfidf`,`headEqual`,`tailEqual`,`jaroWinkler`,`trigramCosine`,`lengthRatio`,`nameLength`,`casingAgrees`,`ownerStripped`,`typeKnown`,`typeNumber`,`readsInProject`,`siblingOverlap`,`slotPosition`,`slotCount`,`originContract`,`originScript`,`originDecision`,`originDownstream`,`originScope`,`originTaskType`,`labelAssociation`],On=En;Dn.map(e=>({name:e,definition:On[e]}));const L=e=>e.filter(e=>typeof e==`string`&&e!==``);function kn(e,t){return[...L(t.map(e=>e.name)),...L(e.workers.map(e=>e.value)),...L(e.processes.map(e=>e.id)),...L(e.calls.map(e=>e.calledProcessId)),...L(e.decisions.map(e=>e.id)),...L(e.decisionUses.map(e=>e.decisionId))]}function An(e){return{name:e.name,writes:e.writes,elementId:e.elementId,where:e.where,type:e.type??null}}function jn(e){let t=/* @__PURE__ */ new Map;for(let n of e)n.writes&&t.set(n.elementId,[...t.get(n.elementId)??[],n.name]);return t}function Mn(e){let t=/* @__PURE__ */ new Map;for(let n of e.workers)t.set(n.elementId,[...t.get(n.elementId)??[],`${n.kind}:${n.value}`]);return t}function Nn(e,t,n){let r=new Set(t.model.workers.map(e=>e.elementId)),i=(n?.variables??[]).filter(e=>r.has(e.elementId)).map(An),a=[...t.model.variables,...i];return{path:e,kind:t.kind,model:t.model,order:t.order,mappings:t.mappings,elementNames:new Map(t.model.elements.filter(e=>e.name?.trim()).map(e=>[e.id,e.name])),variables:a,decisionUses:t.model.decisionUses,codeWrites:jn(i),workerKeys:Mn(t.model),names:kn(t.model,a),timers:t.timers}}function Pn(e){return e.mappings.filter(e=>e.direction!==`input`&&e.target!==null).flatMap(t=>(e.workerKeys.get(t.elementId)??[]).map(n=>({diagram:e.path,elementId:t.elementId,workerKey:n,outputs:[t.target]})))}function Fn(e){let t=/* @__PURE__ */ new Map;for(let n of e)for(let e of n.variables)!e.writes&&e.where!==`output`&&t.set(e.name,(t.get(e.name)??0)+1);return t}function In(e,t){return e.path<t.path?-1:+(e.path>t.path)}function Ln(e,t){let n=/* @__PURE__ */ new Map;for(let r of e.filter(e=>g(e.path)===`bpmn`||g(e.path)===`dmn`).sort(In))n.has(r.text)&&r.path!==t||n.set(r.text,r);return[...n.values()].sort(In)}async function Rn(e){let t=g(e.path);if(t!==`bpmn`&&t!==`dmn`)return null;try{let n=t===`bpmn`?await ae(e.text):null;return t===`bpmn`&&n===null?null:{kind:t,model:await ee(e.path,e.text),order:n?te(n):/* @__PURE__ */ new Map,mappings:n?Bt(n):[],timers:n?Cn(n):[]}}catch{return null}}function zn(e){let t=new Qt(j);return e.forEach(e=>t.replaceSource(e.path,e.names)),t}var Bn=class{cache=/* @__PURE__ */ new Map;async build(e,t=null,n={}){let r=Ln(e,n.focus),i=new Set(r.map(e=>e.path));for(let e of[...this.cache.keys()])i.has(e)||this.cache.delete(e);let a=[],o=Date.now();for(let e of r){let t=await this.parse(e);t!==null&&a.push({path:e.path,file:t}),n.pause&&Date.now()-o>=8&&(await n.pause(),o=Date.now())}let s=a.map(({path:e,file:n})=>Nn(e,n,t)),c=s.filter(e=>e.kind===`bpmn`);return{diagrams:s,project:{types:t?.types??[],...t?.variableChecks?{inputs:t.variableChecks.inputs}:{},decisionOutputs:Tn(s.flatMap(e=>e.model.decisions)),taskOutputs:c.flatMap(Pn),peers:wn(c.map(e=>({path:e.path,elementNames:e.elementNames,mappings:e.mappings}))),names:c.flatMap(e=>e.variables.map(t=>({name:t.name,diagram:e.path,elementId:t.elementId}))),reads:Fn(s),timers:c.flatMap(e=>e.timers.map(t=>({diagram:e.path,text:t})))},vocabulary:zn(s)}}async parse(e){let t=this.cache.get(e.path);if(t!==void 0&&t.text===e.text)return t.parsed;let n=await Rn(e);return this.cache.set(e.path,{text:e.text,parsed:n}),n}};function Vn(e,t){return[e.slice(0,t),Math.max(0,e.length-t)]}function Hn(e){return{name:e.name,where:e.where,...e.sample?{sample:e.sample}:{}}}function Un(e,t){let n=/* @__PURE__ */ new Map;for(let t of e)for(let e of t.model.workers){let t=`${e.kind}:${e.value}`,r=n.get(t);n.set(t,{kind:e.kind,value:e.value,elements:(r?.elements??0)+1})}let r=[...new Set(e.flatMap(e=>e.model.processes.map(e=>e.id)))].sort(),i=e.flatMap(e=>e.model.decisions.map(e=>({id:e.id,outputs:[...e.outputs]}))).sort((e,t)=>e.id<t.id?-1:1),[a,o]=Vn([...n.values()].sort((e,t)=>e.value<t.value?-1:1),t),[s,c]=Vn(r,t),[l,u]=Vn(i,t);return{jobTypes:a,processes:s,decisions:l,omitted:{jobTypes:o,processes:c,decisions:u}}}async function Wn(e,t,r,i={}){let a=i.limit??50,o=[.../* @__PURE__ */ new Set([...x(e,[`process`,`decision`]),t])],s=await new Bn().build(o.map(e=>({path:e,text:C(e,`utf8`)})),null,{focus:t}),l=s.diagrams.find(e=>e.path===t),u=l?.model.elements.find(e=>e.id===r);if(!l||!u){let e=(l?.model.elements??[]).map(e=>e.id);throw Error(n(`app.cli.mcp.noElement`,{file:t,id:r,ids:e.length>0?v(e.slice(0,a)):n(`app.cli.mcp.nothing`)}))}let d=c({model:{variables:[...l.variables]},order:l.order,types:[]},r,{wholeProcess:!0}),f=l.elementNames,p=l.variables.filter(e=>e.elementId===r);return{element:{id:u.id,type:u.type,...u.name?{name:u.name}:{}},process:u.processId??l.model.processes[0]?.id??null,inScope:d.variables.map(e=>({name:e.name,type:e.type,certainty:e.certainty,local:e.writers.every(e=>e.elementId===r),writtenBy:e.writers.map(e=>({element:e.elementId,...f.get(e.elementId)?{name:f.get(e.elementId)}:{},where:e.where}))})),startVariablesUnknown:d.startVariablesUnknown,reads:p.filter(e=>!e.writes).map(Hn),writes:p.filter(e=>e.writes).map(Hn),jobTypes:l.model.workers.filter(e=>e.elementId===r).map(e=>({kind:e.kind,value:e.value})),project:Un(s.diagrams,a)}}const Gn=[`element`,`variable`,`message`,`decision`,`process`,`form-field`];function R(e,t){let n=null;for(let r of t){if(!r)continue;let t=r.toLowerCase(),i=t===e?0:t.startsWith(e)?1:t.includes(e)?2:null;i!==null&&(n===null||i<n)&&(n=i)}return n}async function Kn(e,t,n={}){let r=t.trim().toLowerCase(),i=new Set(n.kinds??Gn),a=Math.max(1,n.limit??50),o=[],s=[],c=(e,t)=>{e!==null&&i.has(t.kind)&&o.push({rank:e,hit:t})};for(let t of x(e,[`process`,`decision`,`form`])){let e;try{e=await ee(t,C(t,`utf8`))}catch{s.push(t);continue}for(let n of e.processes)c(R(r,[n.id,n.name]),{kind:`process`,id:n.id,...n.name?{name:n.name}:{},file:t});for(let n of e.elements)c(R(r,[n.id,n.name]),{kind:`element`,id:n.id,...n.name?{name:n.name}:{},type:n.type,file:t,...n.processId?{process:n.processId}:{}});for(let n of e.messages)c(R(r,[n.id,n.name]),{kind:`message`,id:n.id,...n.name?{name:n.name}:{},file:t});for(let n of e.decisions)c(R(r,[n.id,n.name,...n.outputs]),{kind:`decision`,id:n.id,...n.name?{name:n.name}:{},file:t,outputs:n.outputs});let n=/* @__PURE__ */ new Map;for(let t of e.variables){let e=n.get(t.name)??{writtenBy:/* @__PURE__ */ new Set,readBy:/* @__PURE__ */ new Set};(t.writes?e.writtenBy:e.readBy).add(t.elementId),n.set(t.name,e)}for(let[e,i]of n)c(R(r,[e]),{kind:`variable`,id:e,file:t,writtenBy:[...i.writtenBy].sort(),readBy:[...i.readBy].sort()});for(let n of e.formKeys)c(R(r,[n]),{kind:`form-field`,id:n,file:t})}o.sort((e,t)=>e.rank-t.rank||(e.hit.file<t.hit.file?-1:+(e.hit.file>t.hit.file))||(e.hit.id<t.hit.id?-1:+(e.hit.id>t.hit.id)));let l=o.slice(0,a).map(e=>e.hit);return{query:t,total:o.length,shown:l.length,hits:l,unreadable:s}}const qn=e=>(e??``).replace(/^#/,``),z=e=>e&&e.trim()?e.trim():null;function Jn(e){let t=(e,t)=>(e??[]).map(e=>qn(t(e)?.href)).filter(e=>e!==``);return{decisions:t(e.informationRequirement,e=>e.requiredDecision),inputData:t(e.informationRequirement,e=>e.requiredInput),knowledge:t(e.knowledgeRequirement,e=>e.requiredKnowledge),sources:t(e.authorityRequirement,e=>e.requiredAuthority??e.requiredDecision??e.requiredInput)}}async function Yn(e){let t=await ie(e),n=t.rootElement,r=new Map((await re(t.xml)).map(e=>[e.decisionId,e])),i=n.drgElement??[],a=i.filter(e=>e.$type===`dmn:Decision`&&e.id).map(e=>{let t=r.get(e.id),n=e.decisionLogic,i=n?.$type===`dmn:DecisionTable`?`decisionTable`:n?.$type===`dmn:LiteralExpression`?`literalExpression`:`other`;return{id:e.id,name:z(e.name)??e.id,logic:i,...t?{hitPolicy:t.hitPolicy,...t.aggregation?{aggregation:t.aggregation}:{}}:{},inputs:t?.inputs??[],outputs:t?.outputs??[],rules:t?.rules??[],...i===`literalExpression`&&z(n?.text)?{expression:z(n?.text)}:{},requires:Jn(e)}}),o=e=>i.filter(t=>t.$type===e&&t.id).map(e=>({id:e.id,name:z(e.name)??e.id}));return{kind:`decision`,id:z(n.id),name:z(n.name),decisions:a,inputData:o(`dmn:InputData`),knowledge:o(`dmn:BusinessKnowledgeModel`)}}function Xn(e){let t=JSON.parse(e),n=[],r=(e,t,i)=>{if(!(i>200))for(let a of e){if(typeof a!=`object`||!a||Array.isArray(a))continue;let e=typeof a.type==`string`?a.type:`unknown`,o=z(a.label)??z(a.text),s=Array.isArray(a.values)?a.values.filter(e=>typeof e==`object`&&!!e):[];if(n.push({id:z(a.id),type:e,key:z(a.key),label:o,group:t,required:a.validate?.required===!0,options:s.map(e=>typeof e.value==`string`?e.value:JSON.stringify(e.value)),isInput:u.has(e)}),Array.isArray(a.components)){let n=z(a.path)??z(a.key)??o??e;r(a.components,[...t,n],i+1)}}};return r(Array.isArray(t?.components)?t.components:[],[],0),{kind:`form`,id:typeof t?.id==`string`?t.id:null,type:typeof t?.type==`string`?t.type:null,components:n}}async function Zn(e){let t=C(e,`utf8`);return/\.dmn$/i.test(e)?Yn(t):Xn(t)}async function Qn(e,t){let n=[];for(let r of x(e,[`process`]))try{let e=await ee(r,C(r,`utf8`));for(let i of t(e))n.push({file:r,element:i})}catch{continue}return n}async function $n(e,t,n){let r=await Zn(t);if(r.kind===`decision`){let i=r.decisions.find(e=>e.id===n);if(!i)throw Error(er(t,n,r.decisions.map(e=>e.id)));return{element:{id:i.id,type:`decision`,name:i.name},decision:i,requiredBy:r.decisions.filter(e=>e.requires.decisions.includes(i.id)).map(e=>e.id),usedBy:await Qn(e,e=>e.decisionUses.filter(e=>e.decisionId===i.id).map(e=>e.elementId))}}let i=r.components.find(e=>e.id===n||e.key===n);if(!i)throw Error(er(t,n,r.components.map(e=>e.key??e.id??``).filter(e=>e!==``)));let a=r.id;return{element:{id:i.key??i.id??n,type:i.type,...i.label?{name:i.label}:{}},component:i,requiredBy:[],usedBy:a===null?[]:await Qn(e,e=>e.formUses.filter(e=>e.formId===a).map(e=>e.elementId))}}function er(e,t,r){return n(`app.cli.mcp.noElement`,{file:e,id:t,ids:r.length>0?v(r.slice(0,50)):n(`app.cli.mcp.nothing`)})}function tr(e){let t=se(e);return t===`camunda-7`||t===`operaton`||t===`cib-seven`?t:ar(e)?`camunda-7`:`camunda-8`}function B(e,t){let n=e.replace(/\.[^.]+$/,``).replace(/[^A-Za-z0-9_.-]+/g,`_`).replace(/^[^A-Za-z_]+/,``);return n?`${t}_${n}`:`${t}_1`}function V(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`)}function nr(e,t){let n=f(e),r=B(t,`Process`);return`<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" ${n.namespaces} xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" modeler:executionPlatform="${n.name}" modeler:executionPlatformVersion="${n.version}">
|
|
3
|
+
<bpmn:process id="${r}" name="${V(t.replace(/\.[^.]+$/,``))}" isExecutable="true"${o(e).process}>
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" />
|
|
5
|
+
</bpmn:process>
|
|
6
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
7
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="${r}">
|
|
8
|
+
<bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
|
|
9
|
+
<dc:Bounds x="182" y="102" width="36" height="36" />
|
|
10
|
+
</bpmndi:BPMNShape>
|
|
11
|
+
</bpmndi:BPMNPlane>
|
|
12
|
+
</bpmndi:BPMNDiagram>
|
|
13
|
+
</bpmn:definitions>
|
|
14
|
+
`}function rr(e,t){let n=f(e),r=B(t,`Decision`),i=V(t.replace(/\.[^.]+$/,``)),o=l(e);return`<?xml version="1.0" encoding="UTF-8"?>
|
|
15
|
+
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"${o.namespace} xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" name="${i}" namespace="${a(e)}" modeler:executionPlatform="${n.name}" modeler:executionPlatformVersion="${n.version}">
|
|
16
|
+
<decision id="${r}" name="${i}"${o.attribute}>
|
|
17
|
+
<decisionTable id="DecisionTable_1">
|
|
18
|
+
<input id="Input_1">
|
|
19
|
+
<inputExpression id="InputExpression_1" typeRef="string">
|
|
20
|
+
<text></text>
|
|
21
|
+
</inputExpression>
|
|
22
|
+
</input>
|
|
23
|
+
<output id="Output_1" typeRef="string" />
|
|
24
|
+
</decisionTable>
|
|
25
|
+
</decision>
|
|
26
|
+
<dmndi:DMNDI>
|
|
27
|
+
<dmndi:DMNDiagram id="DMNDiagram_1">
|
|
28
|
+
<dmndi:DMNShape id="DMNShape_1" dmnElementRef="${r}">
|
|
29
|
+
<dc:Bounds height="80" width="180" x="160" y="100" />
|
|
30
|
+
</dmndi:DMNShape>
|
|
31
|
+
</dmndi:DMNDiagram>
|
|
32
|
+
</dmndi:DMNDI>
|
|
33
|
+
</definitions>
|
|
34
|
+
`}function ir(e,t){let n=f(e);return`${JSON.stringify({components:[],type:`default`,id:B(t,`Form`),executionPlatform:n.name,executionPlatformVersion:n.version,schemaVersion:18},null,2)}\n`}function ar(e){let t=se(e);return t===`flowable`||t===`activiti`?t:null}function or(e,t){let n=B(t,`Process`);return`<?xml version="1.0" encoding="UTF-8"?>
|
|
35
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:${e}="${oe[e]}" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
|
|
36
|
+
<bpmn:process id="${n}" name="${V(t.replace(/\.[^.]+$/,``))}" isExecutable="true">
|
|
37
|
+
<bpmn:startEvent id="StartEvent_1" />
|
|
38
|
+
</bpmn:process>
|
|
39
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
40
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="${n}">
|
|
41
|
+
<bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
|
|
42
|
+
<dc:Bounds x="182" y="102" width="36" height="36" />
|
|
43
|
+
</bpmndi:BPMNShape>
|
|
44
|
+
</bpmndi:BPMNPlane>
|
|
45
|
+
</bpmndi:BPMNDiagram>
|
|
46
|
+
</bpmn:definitions>
|
|
47
|
+
`}function sr(e,t,n,r){let i=ar(n);if(i&&e===`bpmn`)return t===`example`?d(i):or(i,r);let a=tr(n);return t===`example`?e===`bpmn`?m(a):e===`dmn`?ne(a):p(a):e===`bpmn`?nr(a,r):e===`dmn`?rr(a,r):ir(a,r)}var H=class extends Error{};const cr=[`UNIQUE`,`FIRST`,`PRIORITY`,`ANY`,`COLLECT`,`RULE ORDER`,`OUTPUT ORDER`],lr=[`string`,`number`,`boolean`,`integer`,`long`,`double`,`date`,`time`,`dateTime`],ur=[`textfield`,`textarea`,`number`,`checkbox`,`checklist`,`radio`,`select`,`taglist`,`datetime`],dr=[`checklist`,`radio`,`select`,`taglist`],fr=/^[A-Za-z_][\w.-]*$/;function U(e,t){throw new H(n(`app.cli.create.shouldBe`,{where:e,what:t}))}function W(e,t,r){if(typeof e!=`object`||!e||Array.isArray(e))return U(t,n(`app.cli.create.anObject`));for(let i of Object.keys(e))if(!r.includes(i))throw new H(n(`app.cli.create.unknownKey`,{where:t,key:i,allowed:r.join(`, `)}));return e}function G(e,t,r){return e===void 0&&!r?[]:!Array.isArray(e)||r&&e.length===0?U(t,n(`app.cli.create.aList`)):e}function K(e,t,r=!0){if(e!==void 0||r)return typeof e!=`string`||r&&e.trim()===``?U(t,n(`app.cli.create.someText`)):e}function q(e,t,r,i=!1){if(e!==void 0||i)return typeof e!=`string`||!r.includes(e)?U(t,n(`app.cli.create.oneOf`,{list:r.join(`, `)})):e}function pr(e,t,r){let i=G(e,t,!0);return i.length===r?i.map((e,n)=>K(e,`${t}[${n}]`,!1)??``):U(t,n(`app.cli.create.entries`,{count:r}))}function mr(e,t,n,r){let i=W(n,`spec`,[`hitPolicy`,`inputs`,`outputs`,`rules`]),a=q(i.hitPolicy,`spec.hitPolicy`,cr),o=G(i.inputs,`spec.inputs`,!0).map((e,t)=>{let n=`spec.inputs[${t}]`,r=W(e,n,[`label`,`expression`,`typeRef`]);return{label:K(r.label,`${n}.label`,!1),expression:K(r.expression,`${n}.expression`),typeRef:q(r.typeRef,`${n}.typeRef`,lr)??`string`}}),s=G(i.outputs,`spec.outputs`,!0).map((e,t)=>{let n=`spec.outputs[${t}]`,r=W(e,n,[`name`,`label`,`typeRef`]);return{name:K(r.name,`${n}.name`),label:K(r.label,`${n}.label`,!1),typeRef:q(r.typeRef,`${n}.typeRef`,lr)??`string`}}),c=G(i.rules,`spec.rules`,!1).map((e,t)=>{let n=`spec.rules[${t}]`,r=W(e,n,[`when`,`then`,`description`]);return{when:pr(r.when,`${n}.when`,o.length),then:pr(r.then,`${n}.then`,s.length),description:K(r.description,`${n}.description`,!1)}}),l=(e,t)=>t?` ${e}="${V(t)}"`:``,u=` <decisionTable id="DecisionTable_1"${a&&a!==`UNIQUE`?` hitPolicy="${a}"`:``}>
|
|
48
|
+
${o.map((e,t)=>` <input id="Input_${t+1}"${l(`label`,e.label)}>
|
|
49
|
+
<inputExpression id="InputExpression_${t+1}" typeRef="${e.typeRef}">
|
|
50
|
+
<text>${h(e.expression)}</text>
|
|
51
|
+
</inputExpression>
|
|
52
|
+
</input>`).join(`
|
|
53
|
+
`)}
|
|
54
|
+
${s.map((e,t)=>` <output id="Output_${t+1}"${l(`label`,e.label)} name="${V(e.name)}" typeRef="${e.typeRef}" />`).join(`
|
|
55
|
+
`)}
|
|
56
|
+
${c.map((e,t)=>` <rule id="Rule_${t+1}">${e.description?`\n <description>${h(e.description)}</description>`:``}
|
|
57
|
+
${e.when.map((e,n)=>` <inputEntry id="InputEntry_${t+1}_${n+1}">\n <text>${h(e)}</text>\n </inputEntry>`).join(`
|
|
58
|
+
`)}
|
|
59
|
+
${e.then.map((e,n)=>` <outputEntry id="OutputEntry_${t+1}_${n+1}">\n <text>${h(e)}</text>\n </outputEntry>`).join(`
|
|
60
|
+
`)}
|
|
61
|
+
</rule>`).join(`
|
|
62
|
+
`)}
|
|
63
|
+
</decisionTable>`.replace(/\n\n+/g,`
|
|
64
|
+
`),d=rr(e,t),f=d.indexOf(` <decisionTable`),p=d.indexOf(`</decisionTable>`)+16,m=r?.trim()?`\n <description>${h(r.trim())}</description>`:``,g=d.slice(0,f)+u+d.slice(p);return m?g.replace(/(<decision [^>]*>)/,`$1${m}`):g}function hr(e,t,r){let i=W(r,`spec`,[`fields`]),a=/* @__PURE__ */ new Set,o=G(i.fields,`spec.fields`,!0).map((e,t)=>{let r=`spec.fields[${t}]`,i=W(e,r,[`type`,`key`,`label`,`text`,`options`,`required`]),o=q(i.type,`${r}.type`,[...ur,`text`,`button`],!0),s=`Field_${t+1}`;if(o===`text`)return{type:o,id:s,text:K(i.text,`${r}.text`)};if(o===`button`)return{type:o,id:s,label:K(i.label,`${r}.label`),action:`submit`};let c=K(i.key,`${r}.key`);if(!fr.test(c))return U(`${r}.key`,n(`app.cli.create.aName`));if(a.has(c))return U(`${r}.key`,n(`app.cli.create.unique`,{key:c}));a.add(c);let l={type:o,id:s,key:c,label:K(i.label,`${r}.label`,!1)??c};if(dr.includes(o))l.values=G(i.options,`${r}.options`,!0).map((e,t)=>{let n=W(e,`${r}.options[${t}]`,[`label`,`value`]);return{label:K(n.label,`${r}.options[${t}].label`),value:K(n.value,`${r}.options[${t}].value`)}});else if(i.options!==void 0)return U(`${r}.options`,n(`app.cli.create.onlyChoices`));if(i.required!==void 0){if(typeof i.required!=`boolean`)return U(`${r}.required`,n(`app.cli.create.trueOrFalse`));i.required&&(l.validate={required:!0})}return l}),s=JSON.parse(ir(e,t));return`${JSON.stringify({...s,components:o},null,2)}\n`}async function gr(e,t,r){let i,a,o;if(t===null){if(!ye(r))throw Error(n(`app.cli.mcp.badRevision`,{ref:r}));let t=_e(S.dirname(e),r,`./${S.basename(e)}`);if(t===null)throw Error(n(`app.cli.mcp.noCommittedVersion`,{file:e,ref:r}));i=t,a=e,o={before:`${r}:${y(e)}`,after:y(e)}}else i=e,a=t,o={before:y(e),after:y(t)};try{let e=await we(i,a,!0);if(!e.ok||!e.summary)throw Error(e.lines.join(`
|
|
65
|
+
`));let t=t=>e.summary.entries.filter(e=>e.change===t).map(({id:e,type:t,name:n})=>({id:e,type:t,...n?{name:n}:{}})),n=t(`added`),r=t(`removed`),s=t(`changed`),c=e.summary.movedIds;return{...o,identical:n.length+r.length+s.length+c.length===0,added:n,removed:r,changed:s,moved:c}}finally{ve()}}async function _r(e,r){let{measureDiagram:i}=await import(`./chunk-diagram-CIy-F5iz.js`),a=Be(S.join(Ne(),`penstock-layout-`));try{let o=S.join(a,`laid-out.bpmn`),s=C(e,`utf8`),c=await i(e,{outPath:o}),l=C(o,`utf8`),u=l!==s,d=u?await we(e,o,!0):null,f=d?.summary?.movedIds??[],p=(d?.summary?.entries??[]).map(({change:e,id:t,type:n})=>({change:e,id:t,type:n})),m=!1;if(u&&!r){if(C(e,`utf8`)!==s)throw Error(`${n(`app.cli.edit.changedWhileEditing`)} ${n(`app.cli.nothingWritten`)}`);t(e,l),m=!0}return{file:e,dryRun:r,wrote:m,summary:n(u?m?`app.output.reflowedLayout`:`app.cli.mcp.wouldReflow`:`app.output.noChange`),moved:f,structuralChanges:p,defectsAfter:c.defects.map(e=>`${e.kind}: ${e.detail}`)}}finally{T(a,{recursive:!0,force:!0})}}async function vr(e,t){let n=[],r=await je(e,{teamcity:!1,generate:!1,junit:!1,write:e=>n.push(e),confirm:void 0,stepTimeoutMs:t===void 0?void 0:t*1e3}),i=[...n,...r.lines].join(`
|
|
66
|
+
`).trim();if(!r.ok)throw Error(i);return i}async function yr(e,t){let n=[],r=t.hold?{kind:`hold`}:t.error===void 0?{kind:`complete`,variables:t.complete}:{kind:`error`,errorCode:t.error},i=await Me(e,{element:t.element,variables:t.variables,mode:r,process:t.process,write:e=>n.push(e),confirm:void 0,stepTimeoutMs:t.timeoutSeconds===void 0?void 0:t.timeoutSeconds*1e3}),a=[...n,...i.lines].join(`
|
|
67
|
+
`).trim();if(!i.ok)throw Error(a);return a}async function br(e,t,r,i){if(t!==`svg`&&t!==`png`)throw Error(n(`app.cli.export.unknownFormat`,{format:String(t)}));if(r!==null){let n=Be(S.join(Ne(),`penstock-export-`));try{let i=await Ae([e],t,n);if(!i.ok)throw Error(i.lines.join(`
|
|
68
|
+
`));ze(r,{recursive:!0});for(let e of He(n)){let t=S.join(r,`.${e}.${qe(6).toString(`hex`)}.tmp`);Ke(t,C(S.join(n,e)),{flag:`wx`}),Ue(t,S.join(r,e))}return{text:i.lines.map(e=>e.replaceAll(n,r)).join(`
|
|
69
|
+
`)}}finally{T(n,{recursive:!0,force:!0})}}if(t===`svg`){let{svg:t,skipped:r}=await Te(C(e,`utf8`));if(t.length>i)throw Error(n(`app.cli.mcp.imageTooLarge`,{size:t.length}));return{text:[t,...r.map(e=>n(`app.cli.export.notDrawn`,{element:e}))].join(`
|
|
70
|
+
`)}}let a=Be(S.join(Ne(),`penstock-image-`));try{let t=await Ae([e],`png`,a);if(!t.ok)throw Error(t.lines.join(`
|
|
71
|
+
`));let r=C(S.join(a,`${me(e)}.png`)).toString(`base64`);return{text:n(`app.cli.mcp.pngReturned`,{file:y(e)}),image:{data:r,mimeType:`image/png`}}}finally{T(a,{recursive:!0,force:!0})}}async function xr(e,t,n){let r=await Ee(`analyze`,e,{format:`json`,failOn:`error`,baseline:!1,updateBaseline:!1,dryRun:!1,verbose:n,target:t}),i=r.lines.join(`
|
|
72
|
+
`);if(r.refused===!0||!i.startsWith(`{`)){if(r.ok)return i;throw Error(i)}return i}async function Sr(e,t){let n=await Ee(`apply`,e,{format:`json`,failOn:`error`,baseline:!1,updateBaseline:!1,dryRun:!t.write,verbose:!1,target:t.target,workers:t.workers,write:t.write}),r=n.lines.join(`
|
|
73
|
+
`);if(r.startsWith(`{`)||n.ok)return r;throw Error(r)}const Cr=/\.(bpmn|dmn|form)$/i;function wr(e){if(typeof e!=`object`||!e||Array.isArray(e))throw new H(n(`app.cli.create.shouldBe`,{where:`spec`,what:n(`app.cli.create.anObject`)}));let t=e;for(let e of Object.keys(t))if(e!==`steps`&&e!==`operations`)throw new H(n(`app.cli.create.unknownKey`,{where:`spec`,key:e,allowed:`steps, operations`}));if(t.steps===void 0==(t.operations===void 0))throw new H(n(`app.cli.create.oneOfStepsOperations`));if(t.operations!==void 0)return Array.isArray(t.operations)?t.operations:[t.operations];if(!Array.isArray(t.steps)||t.steps.length===0)throw new H(n(`app.cli.create.shouldBe`,{where:`spec.steps`,what:n(`app.cli.create.aList`)}));let r=`StartEvent_1`;return t.steps.map((e,t)=>{let i=`spec.steps[${t}]`;if(typeof e!=`object`||!e||Array.isArray(e))throw new H(n(`app.cli.create.shouldBe`,{where:i,what:n(`app.cli.create.anObject`)}));let a=e;for(let e of Object.keys(a))if(![`element`,`name`,`event`,`id`,`properties`].includes(e))throw new H(n(`app.cli.create.unknownKey`,{where:i,key:e,allowed:`element, name, event, id, properties`}));if(typeof a.element!=`string`||!Object.hasOwn(le,a.element))throw new H(n(`app.cli.create.shouldBe`,{where:`${i}.element`,what:n(`app.cli.create.oneOf`,{list:Object.keys(le).join(`, `)})}));let o=typeof a.id==`string`&&a.id!==``?a.id:`Step_${t+1}`,s={op:`add`,element:a.element,after:r,id:o,...a.name===void 0?{}:{name:a.name},...a.event===void 0?{}:{event:a.event},...a.properties===void 0?{}:{properties:a.properties}};return r=o,s})}function Tr(e){return S.join(S.dirname(e),`.${S.basename(e)}.${qe(6).toString(`hex`)}.pending${S.extname(e)}`)}async function Er(e,t,r){if(!Cr.test(e))throw Error(n(`app.cli.create.badExtension`,{file:e}));let i=b(e);if(i===null)throw Error(n(`app.cli.create.badExtension`,{file:e}));if(Dr(e))throw Error(n(`app.cli.create.exists`,{file:e}));ze(S.dirname(e),{recursive:!0});let a=w(S.dirname(e));r(a);let o=S.join(a,S.basename(e));if(Dr(o))throw Error(n(`app.cli.create.exists`,{file:o}));let s=t.name?.trim()||S.basename(o).replace(/\.[^.]+$/,``),c=de(fe(o).values.engine)??null,l=Tr(o),u;try{if(i===`process`){let e=sr(`bpmn`,`empty`,c,s);if(t.spec===void 0&&!t.description)u=e;else{let n=t.spec===void 0?[]:wr(t.spec),r=/<bpmn:process id="([^"]+)"/.exec(e)?.[1];t.description?.trim()&&r&&n.push({op:`set`,id:r,properties:{documentation:t.description.trim()}}),Ke(l,e,{flag:`wx`});let i=await pe(l,n);if(T(l,{force:!0}),!i.ok)throw Error(i.message);u=i.after}}else if(i===`decision`)u=t.spec===void 0&&!t.description?sr(`dmn`,`empty`,c,s):mr(tr(c),s,t.spec??{inputs:[{expression:`input`}],outputs:[{name:`output`}]},t.description);else{if(t.description)throw Error(n(`app.cli.create.noDescriptionForForms`));u=t.spec===void 0?sr(`form`,`empty`,c,s):hr(tr(c),s,t.spec)}}catch(e){throw T(l,{force:!0}),e instanceof H?Error(`${e.message} ${n(`app.cli.nothingWritten`)}`):e}try{let e=Ve(l,`wx`,420);try{Ke(e,u),Ie(e)}finally{Pe(e)}let t=(await be([l],{format:`json`,baseline:!1,updateBaseline:!1,sections:[`drawing`,`flow`]})).reported.filter(e=>e.severity===`error`);if(t.length>0)throw Error(`${t.map(e=>`${e.rule}: ${e.message}`).join(`
|
|
74
|
+
`)}\n${n(`app.cli.nothingWritten`)}`);let a=(await be([l],{format:`json`,baseline:!1,updateBaseline:!1})).reported.map(({rule:e,severity:t,message:n})=>({rule:e,severity:t,message:n}));r(w(S.dirname(o)));try{Le(l,o)}catch(e){throw e.code===`EEXIST`?Error(n(`app.cli.create.exists`,{file:o})):e}return{file:o,kind:i,wrote:!0,findings:a}}finally{try{Ge(l)}catch{T(l,{force:!0})}}}function Dr(e){try{return Re(e),!0}catch{return!1}}const Or=[`2025-06-18`,`2025-03-26`,`2024-11-05`],kr=5e3,Ar=1e5,J=[`process`,`decision`,`form`];function jr(e){return e.feature?n(`app.cli.mcp.partOf`,{description:n(e.description),gives:i(e.feature)}):n(e.description)}var Y=class extends Error{};function Mr(e,t=Ar){return e.length<=t?e:`${e.slice(0,t)}\n${n(`app.cli.mcp.truncated`,{shown:t,total:e.length})}`}function Nr(e,t){let r=e.inputSchema.properties??{},i=Object.keys(r),a=Object.keys(t).filter(e=>!i.includes(e));if(a.length===0)return null;let o=i.length>0?v(i):n(`app.cli.mcp.nothing`);return n(`app.cli.mcp.takesNot`,{tool:e.name,list:o,extra:v(a)})}function Pr(e,t){let r=(e.inputSchema.required??[]).filter(e=>t[e]===void 0);return r.length===0?[]:[n(`app.cli.mcp.needs`,{tool:e.name,list:v(r)})]}function Fr(e,t){let n,r=new Promise(e=>{n=setTimeout(e,t)});return Promise.race([e,r]).finally(()=>clearTimeout(n))}function X(e){let t=S.resolve(e),n=[],r=t;for(;;)try{return n.length===0?w(r):S.join(w(r),...n)}catch{let e=S.dirname(r);if(e===r)return t;n.unshift(S.basename(r)),r=e}}function Ir(e){return X(e.startsWith(`file://`)?Ye(e):e)}function Z(e,t){let n=X(e);return t.some(e=>{let t=X(e);return n===t||n.startsWith(t+S.sep)})}function Lr(e){if(he(e)||Fe(S.join(e,`.git`)))return!0;try{return x(e).length>0}catch{return!1}}function Rr(e){let t;try{t=w(e)}catch{throw new Y(n(`app.cli.mcp.noDirectory`,{target:e}))}if(!We(t).isDirectory())throw new Y(n(`app.cli.mcp.notADirectory`,{target:e}));return t}function Q(e,t){if(e!==void 0){if(typeof e!=`string`||!S.isAbsolute(e.trim()))throw new Y(n(`app.cli.mcp.projectMustBeAbsolute`));let r=Rr(e.trim());if(t!==null&&!Z(r,t))throw new Y(n(`app.cli.mcp.outsideRoots`,{target:e}));if(!Lr(r))throw new Y(n(`app.cli.mcp.notAPenstockProject`,{target:e}));return[r]}if(t===null)throw new Y(n(`app.cli.mcp.projectNotGiven`));return t}function $(e,t,r=[`process`]){if(typeof e!=`string`||!S.isAbsolute(e.trim()))throw new Y(n(`app.cli.mcp.fileMustBeAbsolute`));let i;try{i=w(e.trim())}catch{throw new Y(n(`app.cli.mcp.noFile`,{file:e}))}let a=b(i);if(!We(i).isFile()||a===null||!r.includes(a))throw new Y(n(r.length===1?`app.cli.mcp.notABpmnDiagram`:`app.cli.mcp.notADiagram`,{file:e}));if(t!==null&&!Z(i,t))throw new Y(n(`app.cli.mcp.outsideRoots`,{target:e}));return i}function zr(e,t){let n=t===null?null:t.map(X).find(t=>e.startsWith(t+S.sep))??null,r=S.dirname(e);for(;;){if(he(r)||Fe(S.join(r,`.git`)))return r;let t=S.dirname(r);if(t===r||r===n)return S.dirname(e);r=t}}function Br(e){if(e!==void 0){if(!Array.isArray(e)||e.length===0||e.some(e=>!Gn.includes(e)))throw new Y(n(`app.cli.mcp.mustBeOneOf`,{tool:`search_elements`,name:`kinds`,list:Gn.join(`, `)}));return e}}function Vr(e,t,r){if(e!==void 0){if(typeof e!=`number`||!Number.isInteger(e)||e<1)throw new Y(n(`app.cli.mcp.mustBePositive`,{tool:t,name:r}));return e}}function Hr(e){let t={type:`string`,description:n(`app.cli.mcp.param.file`)},r={type:`string`,description:n(`app.cli.mcp.param.anyFile`)},i={type:`string`,description:n(`app.cli.mcp.param.project`)};return[{name:`list_diagrams`,description:`${n(`app.cli.mcp.tool.listDiagrams`)} ${n(`app.cli.mcp.tool.listDiagramsMore`)}`,inputSchema:{type:`object`,additionalProperties:!1,properties:{project:i}},feature:null,call:async t=>{let n=e(),r=Q(t.project,n).flatMap(e=>x(e,J)),i=Array.from(new Set(r)).sort().map(e=>({file:e,kind:b(e)}));return JSON.stringify(i,null,2)}},{name:`show_diagram`,description:`${n(`app.cli.mcp.tool.showDiagram`)} ${n(`app.cli.mcp.tool.showDiagramMore`)}`,inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:r}},feature:null,call:async t=>{let n=$(t.file,e(),J);try{return b(n)===`process`?JSON.stringify({kind:`process`,...await Oe(n)},null,2):JSON.stringify(await Zn(n),null,2)}catch(e){throw new Y(ce(n,e))}}},{name:`element_context`,description:`${n(`app.cli.mcp.tool.elementContext`)} ${n(`app.cli.mcp.tool.elementContextMore`)}`,inputSchema:{type:`object`,additionalProperties:!1,required:[`file`,`element`],properties:{file:r,element:{type:`string`,description:n(`app.cli.mcp.param.element`)}}},feature:null,call:async t=>{let r=$(t.file,e(),J);if(typeof t.element!=`string`||t.element.trim()===``)throw new Y(n(`app.cli.mcp.needs`,{tool:`element_context`,list:`element`}));try{let n=zr(r,e());return b(r)===`process`?JSON.stringify(await Wn(n,r,t.element.trim()),null,2):JSON.stringify(await $n(n,r,t.element.trim()),null,2)}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`check_diagram`,description:`${n(`app.cli.mcp.tool.checkDiagram`)} ${n(`app.cli.mcp.tool.checkDiagramMore`)}`,inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:r}},feature:null,call:async t=>{let r=$(t.file,e(),J),i=await be([r],{format:`json`,baseline:!1,updateBaseline:!1}),a=i.reported;return b(r)===`decision`&&i.flowSkipped?JSON.stringify({findings:a,notice:n(`app.output.flowAnalysisLeftOut`)},null,2):a.length===0?`[]`:JSON.stringify(a,null,2)}},{name:`analyze_flow`,description:n(`app.cli.mcp.tool.analyzeFlow`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:t}},feature:`flow-analysis`,call:async t=>JSON.stringify((await Se($(t.file,e()))).problems,null,2)},{name:`list_scenarios`,description:n(`app.cli.mcp.tool.listScenarios`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:t}},feature:`paths`,call:async t=>JSON.stringify(await xe($(t.file,e())),null,2)},{name:`check_code_links`,description:n(`app.cli.mcp.tool.checkCodeLinks`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:i}},feature:`code-links`,call:async t=>{let n=e(),r=Q(t.project,n),i=[];for(let e of r){let t=x(e),n=await Ce(e,t,`json`);if(n.lines[0]){let e=JSON.parse(n.lines[0]);Array.isArray(e)&&i.push(...e)}}return JSON.stringify(i,null,2)}},{name:`edit_diagram`,description:n(`app.cli.mcp.tool.editDiagram`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`,`operations`],properties:{file:t,operations:ue(),dryRun:{type:`boolean`,description:n(`app.cli.mcp.param.dryRun`)}}},feature:`edit`,call:async t=>{if(t.dryRun!==void 0&&typeof t.dryRun!=`boolean`)throw new Y(n(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`edit_diagram`,name:`dryRun`}));let r=$(t.file,e()),i=await De(r,t.operations,{dryRun:t.dryRun===!0});if(!i.ok)throw new Y(i.lines.join(`
|
|
75
|
+
`));return i.lines.join(`
|
|
76
|
+
`)}},{name:`search_elements`,description:n(`app.cli.mcp.tool.searchElements`),inputSchema:{type:`object`,additionalProperties:!1,required:[`query`],properties:{query:{type:`string`,description:n(`app.cli.mcp.param.query`)},project:i,kinds:{type:`array`,items:{type:`string`,enum:[...Gn]},description:n(`app.cli.mcp.param.kinds`)},limit:{type:`integer`,minimum:1,description:n(`app.cli.mcp.param.limit`)}}},feature:null,call:async t=>{if(typeof t.query!=`string`||t.query.trim()===``)throw new Y(n(`app.cli.mcp.needs`,{tool:`search_elements`,list:`query`}));let r=Br(t.kinds),i=Vr(t.limit,`search_elements`,`limit`),a=Q(t.project,e()),o=await Promise.all(a.map(e=>Kn(e,t.query,{kinds:r,limit:i}))),s=/* @__PURE__ */ new Set,c=o.flatMap(e=>e.hits).filter(e=>{let t=`${e.kind}|${e.file}|${e.id}`;return!s.has(t)&&(s.add(t),!0)}),l=o.reduce((e,t)=>e+t.total,0),u=c.slice(0,i??c.length);return JSON.stringify({query:t.query,total:l,shown:u.length,hits:u,unreadable:o.flatMap(e=>e.unreadable)},null,2)}},{name:`diff_diagrams`,description:n(`app.cli.mcp.tool.diffDiagrams`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:r,other:{type:`string`,description:n(`app.cli.mcp.param.other`)},ref:{type:`string`,description:n(`app.cli.mcp.param.ref`)}}},feature:null,call:async t=>{if(t.other!==void 0&&t.ref!==void 0)throw new Y(n(`app.cli.mcp.onlyOneOf`,{tool:`diff_diagrams`,first:`other`,second:`ref`}));if(t.ref!==void 0&&typeof t.ref!=`string`)throw new Y(n(`app.cli.mcp.needs`,{tool:`diff_diagrams`,list:`ref`}));let r=$(t.file,e(),J),i=t.other===void 0?null:$(t.other,e(),J);return JSON.stringify(await gr(r,i,typeof t.ref==`string`?t.ref:`HEAD`),null,2)}},{name:`export_image`,description:n(`app.cli.mcp.tool.exportImage`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:t,format:{type:`string`,enum:[`svg`,`png`],description:n(`app.cli.mcp.param.format`)},out:{type:`string`,description:n(`app.cli.mcp.param.out`)}}},feature:null,call:async t=>{let r=$(t.file,e()),i=t.format===void 0?`svg`:t.format;if(i!==`svg`&&i!==`png`)throw new Y(n(`app.cli.mcp.mustBeOneOf`,{tool:`export_image`,name:`format`,list:`svg, png`}));let a=null;if(t.out!==void 0){if(typeof t.out!=`string`||!S.isAbsolute(t.out.trim()))throw new Y(n(`app.cli.mcp.outMustBeAbsolute`));a=X(t.out.trim());let r=e();if(r!==null&&!Z(a,r))throw new Y(n(`app.cli.mcp.outsideRoots`,{target:t.out}))}let o=await br(r,i,a,Ar),s=[{type:`text`,text:Mr(o.text)}];return o.image&&s.push({type:`image`,...o.image}),{content:s}}},{name:`layout_diagram`,description:n(`app.cli.mcp.tool.layoutDiagram`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:t,dryRun:{type:`boolean`,description:n(`app.cli.mcp.param.dryRun`)}}},feature:`auto-layout`,call:async t=>{if(t.dryRun!==void 0&&typeof t.dryRun!=`boolean`)throw new Y(n(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`layout_diagram`,name:`dryRun`}));let r=$(t.file,e());try{return JSON.stringify(await _r(r,t.dryRun===!0),null,2)}catch(e){throw new Y(ce(r,e))}}},{name:`run_scenarios`,description:n(`app.cli.mcp.tool.runScenarios`),inputSchema:{type:`object`,additionalProperties:!1,properties:{file:t,project:i,timeout:{type:`integer`,minimum:1,description:n(`app.cli.mcp.param.timeout`)}}},feature:`test-runs`,call:async t=>{if(t.file!==void 0&&t.project!==void 0)throw new Y(n(`app.cli.mcp.onlyOneOf`,{tool:`run_scenarios`,first:`file`,second:`project`}));let r=Vr(t.timeout,`run_scenarios`,`timeout`);return vr(t.file===void 0?Q(t.project,e()):[$(t.file,e())],r)}},{name:`test_task`,description:n(`app.cli.mcp.tool.testTask`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`,`element`],properties:{file:t,element:{type:`string`,description:n(`app.cli.mcp.param.element`)},variables:{type:`object`,description:n(`app.cli.mcp.param.variables`)},complete:{type:`object`,description:n(`app.cli.mcp.param.complete`)},error:{type:`string`,description:n(`app.cli.mcp.param.error`)},hold:{type:`boolean`,description:n(`app.cli.mcp.param.hold`)},process:{type:`string`,description:n(`app.cli.mcp.param.process`)},timeout:{type:`integer`,minimum:1,description:n(`app.cli.mcp.param.timeout`)}}},feature:`test-runs`,call:async t=>{if(typeof t.element!=`string`||t.element.trim()===``)throw new Y(n(`app.cli.mcp.mustBeText`,{tool:`test_task`,name:`element`}));for(let e of[`variables`,`complete`]){let r=t[e];if(r!==void 0&&(typeof r!=`object`||!r||Array.isArray(r)))throw new Y(n(`app.cli.mcp.mustBeObject`,{tool:`test_task`,name:e}))}if(t.error!==void 0&&typeof t.error!=`string`)throw new Y(n(`app.cli.mcp.mustBeText`,{tool:`test_task`,name:`error`}));if(t.process!==void 0&&typeof t.process!=`string`)throw new Y(n(`app.cli.mcp.mustBeText`,{tool:`test_task`,name:`process`}));if(t.hold!==void 0&&typeof t.hold!=`boolean`)throw new Y(n(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`test_task`,name:`hold`}));if([t.complete!==void 0,t.error!==void 0,t.hold===!0].filter(Boolean).length>1)throw new Y(n(`app.output.taskTest.oneMode`));let r=Vr(t.timeout,`test_task`,`timeout`);return yr($(t.file,e()),{element:t.element.trim(),variables:t.variables,complete:t.complete,error:t.error,hold:t.hold===!0,process:t.process,timeoutSeconds:r})}},{name:`migrate_analyze`,description:n(`app.cli.mcp.tool.migrateAnalyze`),inputSchema:{type:`object`,additionalProperties:!1,properties:{file:r,project:i,target:{type:`string`,enum:[..._],description:n(`app.cli.mcp.param.target`)},verbose:{type:`boolean`,description:n(`app.cli.mcp.param.verbose`)}}},feature:null,call:async t=>{if(t.file!==void 0&&t.project!==void 0)throw new Y(n(`app.cli.mcp.onlyOneOf`,{tool:`migrate_analyze`,first:`file`,second:`project`}));if(t.verbose!==void 0&&typeof t.verbose!=`boolean`)throw new Y(n(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`migrate_analyze`,name:`verbose`}));if(t.target!==void 0&&(typeof t.target!=`string`||!_.includes(t.target)))throw new Y(n(`app.cli.mcp.mustBeOneOf`,{tool:`migrate_analyze`,name:`target`,list:_.join(`, `)}));let r=t.file===void 0?Q(t.project,e()):[$(t.file,e(),J)],i=e(),a=fe(r[0]).root;if(i!==null&&!Z(a,i))throw new Y(n(`app.cli.mcp.outsideRoots`,{target:a}));try{return await xr(r,t.target,t.verbose===!0)}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`migrate_apply`,description:n(`app.cli.mcp.tool.migrateApply`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:i,target:{type:`string`,enum:[..._],description:n(`app.cli.mcp.param.target`)},workers:{type:`string`,enum:[...s],description:n(`app.cli.mcp.param.workers`)},write:{type:`boolean`,description:n(`app.cli.mcp.param.write`)}}},feature:`migration`,call:async t=>{if(t.write!==void 0&&typeof t.write!=`boolean`)throw new Y(n(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`migrate_apply`,name:`write`}));if(t.target!==void 0&&(typeof t.target!=`string`||!_.includes(t.target)))throw new Y(n(`app.cli.mcp.mustBeOneOf`,{tool:`migrate_apply`,name:`target`,list:_.join(`, `)}));if(t.workers!==void 0&&(typeof t.workers!=`string`||!s.includes(t.workers)))throw new Y(n(`app.cli.mcp.mustBeOneOf`,{tool:`migrate_apply`,name:`workers`,list:s.join(`, `)}));let r=Q(t.project,e()),i=e(),a=fe(r[0]).root;if(i!==null&&!Z(a,i))throw new Y(n(`app.cli.mcp.outsideRoots`,{target:a}));try{return await Sr(r,{target:t.target,workers:t.workers,write:t.write===!0})}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`create_diagram`,description:n(`app.cli.mcp.tool.createDiagram`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:{type:`string`,description:n(`app.cli.mcp.param.newFile`)},name:{type:`string`,description:n(`app.cli.mcp.param.diagramName`)},description:{type:`string`,description:n(`app.cli.mcp.param.diagramDescription`)},spec:{type:`object`,description:n(`app.cli.mcp.param.spec`)}}},feature:`edit`,call:async t=>{if(typeof t.file!=`string`||!S.isAbsolute(t.file.trim()))throw new Y(n(`app.cli.mcp.fileMustBeAbsolute`));for(let e of[`name`,`description`])if(t[e]!==void 0&&typeof t[e]!=`string`)throw new Y(n(`app.cli.mcp.mustBeText`,{tool:`create_diagram`,name:e}));if(t.spec!==void 0&&(typeof t.spec!=`object`||t.spec===null||Array.isArray(t.spec)))throw new Y(n(`app.cli.mcp.mustBeObject`,{tool:`create_diagram`,name:`spec`}));let r=e(),i=e=>{if(r!==null&&!Z(e,r))throw new Y(n(`app.cli.mcp.outsideRoots`,{target:String(t.file)}))},a=X(t.file.trim());i(a);try{return JSON.stringify(await Er(a,{name:t.name,description:t.description,spec:t.spec},i),null,2)}catch(e){throw e instanceof Y?e:new Y(e instanceof Error?e.message:String(e))}}}]}const Ur={process:`application/xml`,decision:`application/xml`,form:`application/json`},Wr=[{name:`review_diagram`,description:`app.cli.mcp.prompt.reviewDiagram.description`,text:`app.cli.mcp.prompt.reviewDiagram.text`},{name:`explain_process`,description:`app.cli.mcp.prompt.explainProcess.description`,text:`app.cli.mcp.prompt.explainProcess.text`}];function Gr(e){return e===null?[]:Array.from(new Set(e.flatMap(e=>Lr(e)?x(e,J):[]))).sort().map(t=>{let n=b(t),r=e.map(X).find(e=>t.startsWith(e+S.sep));return{uri:Xe(t).href,name:r?S.relative(r,t):S.basename(t),mimeType:Ur[n],description:n}})}function Kr(e,t){if(typeof e!=`string`||!e.startsWith(`file://`))throw new Y(n(`app.cli.mcp.fileMustBeAbsolute`));let r=$(Ye(e),t,J);return{contents:[{uri:e,mimeType:Ur[b(r)],text:Mr(C(r,`utf8`))}]}}function qr(e,t,r){let i=Wr.find(t=>t.name===e);if(!i)throw new Y(n(`app.cli.mcp.unknownPrompt`,{name:String(e)}));let a=$(t?.file,r,J);return{description:n(i.description),messages:[{role:`user`,content:{type:`text`,text:n(i.text,{file:a})}}]}}var Jr=class{hasRootsCapability=!1;clientRoots=null;rootsPromise=null;nextRequestId=1;pendingRequests=/* @__PURE__ */ new Map;writeOutput;toolList;project;constructor(e,t=null){this.writeOutput=e,this.project=t===null?null:[t],this.toolList=Hr(()=>this.project??(this.hasRootsCapability?this.clientRoots??[]:null))}requestRoots(){let e=`roots-${this.nextRequestId++}`,t=new Promise(t=>{this.pendingRequests.set(e,t)}).then(e=>{let t=e.result?.roots;this.clientRoots=Array.isArray(t)?t.map(e=>typeof e?.uri==`string`?Ir(e.uri):null).filter(e=>e!==null):[]});return this.writeOutput({jsonrpc:`2.0`,id:e,method:`roots/list`,params:{}}),t}onResponse(e){if(e.id!==void 0&&e.id!==null){let t=this.pendingRequests.get(e.id);t&&(this.pendingRequests.delete(e.id),t(e))}}async onMessage(e){let t=await this.handle(e);t&&e.id!==void 0&&e.id!==null&&this.writeOutput(t)}async handle(t){let i=e=>({jsonrpc:`2.0`,id:t.id,result:e}),a=(e,n)=>({jsonrpc:`2.0`,id:t.id,error:{code:e,message:n}}),o=t.id===void 0||t.id===null;switch(t.method){case`initialize`:{let r=String(t.params?.protocolVersion??``);return(t.params?.capabilities??{}).roots&&(this.hasRootsCapability=!0,this.rootsPromise=this.requestRoots()),i({protocolVersion:Or.includes(r)?r:Or[0],capabilities:{tools:{listChanged:!1},resources:{listChanged:!1,subscribe:!1},prompts:{listChanged:!1}},serverInfo:{name:`penstock`,version:e()??`development`},instructions:n(`app.cli.mcp.instructions`)})}case`notifications/initialized`:return null;case`notifications/roots/list_changed`:return this.rootsPromise=this.requestRoots(),null;case`ping`:return i({});case`tools/list`:return i({tools:this.toolList.map(e=>({name:e.name,description:jr(e),inputSchema:e.inputSchema}))});case`resources/list`:case`resources/read`:case`prompts/list`:case`prompts/get`:{this.hasRootsCapability&&this.rootsPromise&&await Fr(this.rootsPromise,kr);let e=this.project??(this.hasRootsCapability?this.clientRoots??[]:null);try{return t.method===`prompts/list`?i({prompts:Wr.map(e=>({name:e.name,description:n(e.description),arguments:[{name:`file`,description:n(`app.cli.mcp.param.anyFile`),required:!0}]}))}):t.method===`prompts/get`?i(qr(t.params?.name,t.params?.arguments,e)):t.method===`resources/list`?i({resources:Gr(e)}):i(Kr(t.params?.uri,e))}catch(e){return a(-32602,e instanceof Error?e.message:String(e))}}case`tools/call`:{this.hasRootsCapability&&this.rootsPromise&&await Fr(this.rootsPromise,kr);let e=String(t.params?.name??``),o=this.toolList.find(t=>t.name===e);if(!o)return a(-32602,n(`app.cli.mcp.unknownTool`,{name:e}));let s=t.params?.arguments??{},c=Nr(o,s)??Pr(o,s)[0];if(c)return i({content:[{type:`text`,text:c}],isError:!0});if(this.hasRootsCapability&&this.clientRoots===null&&this.project===null)return i({content:[{type:`text`,text:n(`app.cli.mcp.rootsNotSaid`)}],isError:!0});if(o.feature){let e=await r(o.feature);if(e)return i({content:[{type:`text`,text:e.lines.join(`
|
|
77
|
+
`)}],isError:!0})}try{let e=await o.call(s);return i({content:typeof e==`string`?[{type:`text`,text:Mr(e)}]:e.content,isError:!1})}catch(e){return i({content:[{type:`text`,text:ke(e)??(e instanceof Error?e.message:String(e))}],isError:!0})}}default:return o?null:a(-32601,n(`app.cli.mcp.methodNotFound`,{method:String(t.method)}))}}};function Yr(e,t,n,r){return e.then(()=>t(n)).catch(e=>{n.id!==void 0&&n.id!==null&&r({jsonrpc:`2.0`,id:n.id??null,error:{code:-32603,message:e instanceof Error?e.message:String(e)}})})}async function Xr(e=null){let t=Je({input:process.stdin}),r=e=>process.stdout.write(`${JSON.stringify(e)}\n`),i=new Jr(r,e===null?null:X(S.resolve(e))),a=Promise.resolve();return t.on(`line`,e=>{if(!e.trim())return;let t;try{t=JSON.parse(e)}catch{r({jsonrpc:`2.0`,id:null,error:{code:-32700,message:n(`app.cli.mcp.parseError`)}});return}!t||typeof t!=`object`||Array.isArray(t)?r({jsonrpc:`2.0`,id:null,error:{code:-32600,message:n(`app.cli.mcp.notARequest`)}}):t.method===void 0&&t.id!==void 0&&t.id!==null?i.onResponse(t):a=Yr(a,e=>i.onMessage(e),t,r)}),await new Promise(e=>t.on(`close`,()=>e())),await a,0}function Zr(t=e()){let n=ge(t);return JSON.stringify({mcpServers:{penstock:n===null?{command:`penstock`,args:[`mcp`]}:{command:`npx`,args:[`--yes`,n,`mcp`]}}},null,2)}export{Xr as mcpCommand,Zr as mcpConfig};
|