@nk070281sjv/cli 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +210 -0
  2. package/dist/dashboard/client/assets/_basePickBy-CyrHyeyN.js +1 -0
  3. package/dist/dashboard/client/assets/_baseUniq-Bg7NJSGS.js +1 -0
  4. package/dist/dashboard/client/assets/arc-zDGAKMur.js +1 -0
  5. package/dist/dashboard/client/assets/architectureDiagram-VXUJARFQ-BxlGxm0Q.js +36 -0
  6. package/dist/dashboard/client/assets/blockDiagram-VD42YOAC-BskTNyX5.js +122 -0
  7. package/dist/dashboard/client/assets/c4Diagram-YG6GDRKO-Dr9QQ-dn.js +10 -0
  8. package/dist/dashboard/client/assets/channel-BUnm_-UQ.js +1 -0
  9. package/dist/dashboard/client/assets/chunk-4BX2VUAB-xq9xoCTv.js +1 -0
  10. package/dist/dashboard/client/assets/chunk-55IACEB6-DYdXYVh5.js +1 -0
  11. package/dist/dashboard/client/assets/chunk-B4BG7PRW-BGAyFRFS.js +165 -0
  12. package/dist/dashboard/client/assets/chunk-DI55MBZ5-C5ul9stk.js +220 -0
  13. package/dist/dashboard/client/assets/chunk-FMBD7UC4-BSaPo2xa.js +15 -0
  14. package/dist/dashboard/client/assets/chunk-QN33PNHL-CyzabUv0.js +1 -0
  15. package/dist/dashboard/client/assets/chunk-QZHKN3VN-CceRbxt_.js +1 -0
  16. package/dist/dashboard/client/assets/chunk-TZMSLE5B-Bjg9IoOQ.js +1 -0
  17. package/dist/dashboard/client/assets/classDiagram-2ON5EDUG-D_fkmNvU.js +1 -0
  18. package/dist/dashboard/client/assets/classDiagram-v2-WZHVMYZB-D_fkmNvU.js +1 -0
  19. package/dist/dashboard/client/assets/clone-DTyrNOLZ.js +1 -0
  20. package/dist/dashboard/client/assets/cose-bilkent-S5V4N54A-DEdXBrCt.js +1 -0
  21. package/dist/dashboard/client/assets/cytoscape.esm-DtBltrT8.js +331 -0
  22. package/dist/dashboard/client/assets/dagre-6UL2VRFP-DRdIiP58.js +4 -0
  23. package/dist/dashboard/client/assets/defaultLocale-DX6XiGOO.js +1 -0
  24. package/dist/dashboard/client/assets/diagram-PSM6KHXK-Bo7Q2VlK.js +24 -0
  25. package/dist/dashboard/client/assets/diagram-QEK2KX5R-2Fmc2o5x.js +43 -0
  26. package/dist/dashboard/client/assets/diagram-S2PKOQOG-5WE8f0p7.js +24 -0
  27. package/dist/dashboard/client/assets/erDiagram-Q2GNP2WA-DD-iXWd_.js +60 -0
  28. package/dist/dashboard/client/assets/flowDiagram-NV44I4VS-CCWo8Ue9.js +162 -0
  29. package/dist/dashboard/client/assets/ganttDiagram-JELNMOA3-CNY4d5UK.js +267 -0
  30. package/dist/dashboard/client/assets/gitGraphDiagram-V2S2FVAM-Dq5SBEJJ.js +65 -0
  31. package/dist/dashboard/client/assets/graph-BTt9lokK.js +1 -0
  32. package/dist/dashboard/client/assets/index-B0k81q2b.js +581 -0
  33. package/dist/dashboard/client/assets/index-Czwdh6UA.css +1 -0
  34. package/dist/dashboard/client/assets/infoDiagram-HS3SLOUP-AnKZja-G.js +2 -0
  35. package/dist/dashboard/client/assets/init-Gi6I4Gst.js +1 -0
  36. package/dist/dashboard/client/assets/journeyDiagram-XKPGCS4Q-nC-_WjPN.js +139 -0
  37. package/dist/dashboard/client/assets/kanban-definition-3W4ZIXB7-BEY73sWU.js +89 -0
  38. package/dist/dashboard/client/assets/katex-DGN8GczM.js +261 -0
  39. package/dist/dashboard/client/assets/layout-D4DfNpzH.js +1 -0
  40. package/dist/dashboard/client/assets/linear-ZpGvKjeP.js +1 -0
  41. package/dist/dashboard/client/assets/mermaid-renderer-BCDxmS9g.js +256 -0
  42. package/dist/dashboard/client/assets/mindmap-definition-VGOIOE7T-MzAaKESA.js +68 -0
  43. package/dist/dashboard/client/assets/ordinal-Cboi1Yqb.js +1 -0
  44. package/dist/dashboard/client/assets/pieDiagram-ADFJNKIX-B_X1kySF.js +30 -0
  45. package/dist/dashboard/client/assets/quadrantDiagram-AYHSOK5B-CMoIEMLN.js +7 -0
  46. package/dist/dashboard/client/assets/requirementDiagram-UZGBJVZJ-v4CRsn1w.js +64 -0
  47. package/dist/dashboard/client/assets/sankeyDiagram-TZEHDZUN-CPcyN8Jj.js +10 -0
  48. package/dist/dashboard/client/assets/sequenceDiagram-WL72ISMW-CTg0Vx1H.js +145 -0
  49. package/dist/dashboard/client/assets/stateDiagram-FKZM4ZOC-BMWBN6Nq.js +1 -0
  50. package/dist/dashboard/client/assets/stateDiagram-v2-4FDKWEC3-C9Jk1xd0.js +1 -0
  51. package/dist/dashboard/client/assets/timeline-definition-IT6M3QCI-B8xFcSGb.js +61 -0
  52. package/dist/dashboard/client/assets/treemap-GDKQZRPO-HQQuGl9w.js +162 -0
  53. package/dist/dashboard/client/assets/xychartDiagram-PRI3JC2R-Drz0SW3I.js +7 -0
  54. package/dist/dashboard/client/favicon-dark.ico +0 -0
  55. package/dist/dashboard/client/favicon-light.ico +0 -0
  56. package/dist/dashboard/client/index.html +15 -0
  57. package/dist/dashboard/server.js +39699 -0
  58. package/dist/index.js +39236 -0
  59. package/package.json +58 -0
package/README.md ADDED
@@ -0,0 +1,210 @@
1
+ <p align="center">
2
+ <a href="https://github.com/spencermarx/open-code-review">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/spencermarx/open-code-review/main/assets/OCR-Logo-Text-Light.png">
5
+ <img src="https://raw.githubusercontent.com/spencermarx/open-code-review/main/assets/OCR-Logo-Text-Dark.png" alt="Open Code Review" width="300">
6
+ </picture>
7
+ </a>
8
+ </p>
9
+
10
+ # @open-code-review/cli
11
+
12
+ Command-line interface for [Open Code Review](https://github.com/spencermarx/open-code-review) — multi-tool setup, real-time progress tracking, environment health checks, and a web dashboard for managing reviews.
13
+
14
+ ## Quick Start
15
+
16
+ **Requires Node.js >= 22.5** — OCR's storage engine is Node's built-in SQLite (`node:sqlite`), so there's no native module to compile and it installs cleanly under any package manager (npm, **pnpm 10+**, yarn).
17
+
18
+ ```bash
19
+ # 1. Install globally
20
+ npm install -g @open-code-review/cli
21
+
22
+ # 2. Initialize in your project
23
+ cd your-project
24
+ ocr init
25
+
26
+ # 3. Launch the dashboard
27
+ ocr dashboard
28
+ ```
29
+
30
+ `ocr init` detects your installed AI tools and configures each one automatically. Then use your AI assistant to run a review:
31
+
32
+ ```
33
+ /ocr:review # Claude Code / Cursor
34
+ /ocr-review # Windsurf / other tools
35
+ /ocr-review against spec.md # With requirements context
36
+ /ocr-review --team architect:1,java-spring-engineer:1 # Custom team composition
37
+ /ocr-review --reviewer "Focus on error handling" # Add an ephemeral reviewer
38
+ /ocr-map # Code Review Map for large changesets
39
+ ```
40
+
41
+ Run `ocr doctor` to verify your setup at any time.
42
+
43
+ ## Reviewer Library
44
+
45
+ OCR ships with 7 reviewer personas focused on backend service review: Architect, Database Administrator, Integration API Contract Engineer, Java Spring Engineer, Performance, QA Test Engineer, and Security Engineer.
46
+
47
+ Add ephemeral one-off reviewers with `--reviewer`, or create persistent custom reviewers with `/ocr:create-reviewer`.
48
+
49
+ ## Multi-Model Teams
50
+
51
+ Different reviewers can run on different models. Pair a fast generalist with a deeper specialist, or mix vendors across a single team:
52
+
53
+ ```yaml
54
+ # .ocr/config.yaml
55
+ models:
56
+ aliases:
57
+ workhorse: claude-sonnet-4-6
58
+ big-brain: claude-opus-4-7
59
+ default: claude-sonnet-4-6
60
+
61
+ default_team:
62
+ architect: # per-instance models
63
+ - { model: big-brain }
64
+ - { model: workhorse, name: architect-balanced }
65
+ security-engineer: { count: 1, model: big-brain } # one model, multiple instances
66
+ java-spring-engineer: 2 # default model
67
+
68
+ pipeline_agents:
69
+ aggregation: { model: big-brain }
70
+ validation: { model: big-brain }
71
+ synthesis: { model: big-brain }
72
+ ```
73
+
74
+ Override per-review from the dashboard's Command Center, or via `--team` on the CLI. The dashboard auto-discovers every model your installed vendor (Claude Code or OpenCode) offers.
75
+
76
+ OpenCode reviews use `ocr review run-agents` internally. The CLI starts every
77
+ resolved reviewer process, writes exact prompt snapshots under
78
+ `rounds/round-{n}/prompts/`, writes reviewer stdout under `reviews/`, and then
79
+ runs `aggregation`, `validation`, and `synthesis` as separate process agents.
80
+ If any configured reviewer or pipeline model is missing or any process fails,
81
+ the round stops instead of continuing with a partial team or fabricated output.
82
+
83
+ ## Commands
84
+
85
+ ### `ocr init`
86
+
87
+ Initialize Open Code Review in your project. Creates `.ocr/` with skills, commands, and config, then configures your detected AI tools.
88
+
89
+ ```bash
90
+ ocr init # Interactive — select tools
91
+ ocr init --tools claude,windsurf # Non-interactive
92
+ ocr init --tools all # Configure all detected tools
93
+ ```
94
+
95
+ ### `ocr dashboard`
96
+
97
+ Start the web dashboard for running reviews, browsing results, triaging findings, and posting to GitHub. Bundled with the CLI — no separate install.
98
+
99
+ ```bash
100
+ ocr dashboard # Default port (4173)
101
+ ocr dashboard --port 8080 # Custom port
102
+ ocr dashboard --no-open # Don't auto-open browser
103
+ ```
104
+
105
+ ### `ocr progress`
106
+
107
+ Watch a review or map session in real-time. Shows current phase, elapsed time, reviewer status, finding counts, and completion percentage.
108
+
109
+ ```bash
110
+ ocr progress # Auto-detect current session
111
+ ocr progress --session 2026-01-26-main # Specific session
112
+ ```
113
+
114
+ ### `ocr doctor`
115
+
116
+ Verify your OCR installation and all dependencies.
117
+
118
+ ```bash
119
+ ocr doctor
120
+ ```
121
+
122
+ Checks: `git`, AI CLI tools (Claude Code, OpenCode), `gh` (GitHub CLI), `.ocr/` setup, and capabilities.
123
+
124
+ ### `ocr update`
125
+
126
+ Update OCR skills and commands after upgrading the package. Preserves your `.ocr/config.yaml` and all reviewer personas.
127
+
128
+ ```bash
129
+ ocr update # Update everything
130
+ ocr update --dry-run # Preview changes
131
+ ocr update --commands # Commands only
132
+ ocr update --skills # Skills and references only
133
+ ocr update --inject # AGENTS.md/CLAUDE.md only
134
+ ```
135
+
136
+ ### `ocr reviewers`
137
+
138
+ Manage reviewer personas. Sync metadata from reviewer markdown files to `reviewers-meta.json` for the dashboard.
139
+
140
+ ```bash
141
+ ocr reviewers sync --stdin # Pipe JSON from AI-generated metadata
142
+ ```
143
+
144
+ ### `ocr state`
145
+
146
+ Internal command used by the review workflow to manage session state. Subcommands: `begin`, `advance`, `complete-round`, `complete-map`, `finish`, `status`, `show`, `sync`, `reconcile`.
147
+
148
+ ```bash
149
+ ocr state begin --session-id <id> --branch <branch> --workflow-type review
150
+ ocr state advance --phase reviews # Advance to a phase (graph-validated)
151
+ ocr state complete-round --stdin # Finalize a round from piped JSON
152
+ ocr state finish # Close the workflow (invariant-checked)
153
+ ocr state status --json # Completeness + next action
154
+ ocr state show --json # Show current session state
155
+ ocr state sync # Rebuild state from filesystem
156
+ ```
157
+
158
+ ### `ocr review run-agents`
159
+
160
+ Internal execution entrypoint used for OpenCode reviews. It is normally called
161
+ by the dashboard or installed `/ocr-review` command, not typed by hand.
162
+
163
+ ```bash
164
+ ocr review run-agents --session-id <session-id> --round <n>
165
+ ocr review run-agents [target] --fresh --requirements <text-or-path> --team <json>
166
+ ```
167
+
168
+ This path owns process spawning and artifact writing. Agents return stdout and
169
+ NDJSON only; they do not write OCR session files directly.
170
+
171
+ ## Supported AI Tools
172
+
173
+ `ocr init` detects and configures all of these automatically:
174
+
175
+ | Tool | Config Directory |
176
+ |------|------------------|
177
+ | Amazon Q Developer | `.aws/amazonq/` |
178
+ | Augment (Auggie) | `.augment/` |
179
+ | Claude Code | `.claude/` |
180
+ | Cline | `.cline/` |
181
+ | Codex | `.codex/` |
182
+ | Continue | `.continue/` |
183
+ | Cursor | `.cursor/` |
184
+ | Gemini CLI | `.gemini/` |
185
+ | GitHub Copilot | `.github/` |
186
+ | Kilo Code | `.kilocode/` |
187
+ | OpenCode | `.opencode/` |
188
+ | Qoder | `.qoder/` |
189
+ | RooCode | `.roo/` |
190
+ | Windsurf | `.windsurf/` |
191
+
192
+ ## Updating
193
+
194
+ After upgrading the package:
195
+
196
+ ```bash
197
+ npm i -g @open-code-review/cli@latest
198
+ ocr update
199
+ ```
200
+
201
+ The CLI notifies you when a new version is available.
202
+
203
+ ## Links
204
+
205
+ - **Full documentation**: [github.com/spencermarx/open-code-review](https://github.com/spencermarx/open-code-review)
206
+ - **npm**: [@open-code-review/cli](https://www.npmjs.com/package/@open-code-review/cli)
207
+
208
+ ## License
209
+
210
+ Apache-2.0
@@ -0,0 +1 @@
1
+ import{e as x,c as O,g as m,k as P,h as p,j as w,l as A,m as c,n as I,t as N,o as E}from"./_baseUniq-Bg7NJSGS.js";import{aQ as g,aA as F,aR as M,aS as T,aT as _,aU as l,aV as $,aW as B,aX as S,aY as y}from"./mermaid-renderer-BCDxmS9g.js";var R=/\s/;function G(n){for(var r=n.length;r--&&R.test(n.charAt(r)););return r}var H=/^\s+/;function L(n){return n&&n.slice(0,G(n)+1).replace(H,"")}var o=NaN,W=/^[-+]0x[0-9a-f]+$/i,X=/^0b[01]+$/i,Y=/^0o[0-7]+$/i,q=parseInt;function z(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=L(n);var t=X.test(n);return t||Y.test(n)?q(n.slice(2),t?2:8):W.test(n)?o:+n}var v=1/0,C=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=z(n),n===v||n===-v){var r=n<0?-1:1;return r*C}return n===n?n:0}function Q(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,U=b.hasOwnProperty,dn=F(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&M(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=T(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||_(h,b[u])&&!U.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function D(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var J=Math.max;function Z(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:Q(t);return a<0&&(a=J(i+a,0)),p(n,m(r),a)}var hn=D(Z);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=$(n)?A:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&c(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,B,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:S(r[a+1])?[]:{})}y(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=E(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,Q as j,un as l,gn as m,K as t};
@@ -0,0 +1 @@
1
+ import{bd as S,be as Rn,aV as T,bf as w,aU as sn,bg as xn,bh as mn,bi as Mn,bj as un,bk as x,aS as U,bl as Cn,bm as on,bn as Fn,bo as E,bb as gn,bp as R,aQ as ln,bq as Dn,br as D,bs as Gn,bt as Un,bu as _,aY as Bn,bv as Nn,aT as Kn,bw as X,bx as jn,by as Hn,aX as qn,aW as cn,b9 as Yn,bz as M}from"./mermaid-renderer-BCDxmS9g.js";var Zn="[object Symbol]";function B(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var Q=w?w.prototype:void 0,J=Q?Q.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(B(n))return J?J.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Qn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Jn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Qn(n,Jn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||B(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||B(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Cn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Br="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Br:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Yr="[object Map]";function Zr(n){return S(n)&&E(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Qr="[object Set]";function Jr(n){return S(n)&&E(n)==Qr}var rn=R&&R.isSet,Wr=rn?gn(rn):Jr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Un(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(C(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,C(d,r,e,p,n,i))});var A=b?u?yr:G:u?U:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Bn(a,p,C(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Be="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Be:return n==r+"";case Fe:var s=Le;case Ue:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Qe=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Je=Object.prototype,an=Je.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Qe)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=M&&1/H(new M([,-0]))[1]==yt?function(n){return new M(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,B as e,_t as f,Ln as g,Qn as h,Et as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
@@ -0,0 +1 @@
1
+ import{a0 as ln,a1 as an,a2 as H,a3 as q,a4 as B,a5 as un,a6 as y,a7 as tn,a8 as L,a9 as _,aa as rn,ab as o,ac as on,ad as sn,ae as fn}from"./mermaid-renderer-BCDxmS9g.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(on(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,F=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<an)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};