@hienlh/ppm 0.13.84 → 0.13.87

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 (74) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/cli-reference.md +4 -4
  4. package/assets/skills/ppm/references/http-api.md +1 -1
  5. package/dist/web/assets/architecture-PBZL5I3N-B9sV3kyt.js +1 -0
  6. package/dist/web/assets/{audio-preview-BDvRxNLM.js → audio-preview-CGlpWhgr.js} +1 -1
  7. package/dist/web/assets/{chat-tab-BufLWyuh.js → chat-tab-ClgbHbv9.js} +3 -3
  8. package/dist/web/assets/{code-editor-BTazCHFV.js → code-editor-DP88cKaY.js} +2 -2
  9. package/dist/web/assets/{conflict-editor-_26EuzFY.js → conflict-editor-BeoPXciT.js} +1 -1
  10. package/dist/web/assets/{database-viewer-4Zhmq-Y_.js → database-viewer-Y8XylYBB.js} +1 -1
  11. package/dist/web/assets/{diff-viewer-BqajGrQu.js → diff-viewer-Cb3db8F6.js} +1 -1
  12. package/dist/web/assets/{docx-preview-B_twNQVN.js → docx-preview-DjTD6P6D.js} +1 -1
  13. package/dist/web/assets/{extension-webview-QeJr_2ep.js → extension-webview-Dk8ddm19.js} +1 -1
  14. package/dist/web/assets/{git-log-panel-BeJ1dm7u.js → git-log-panel-LXe9nyBs.js} +1 -1
  15. package/dist/web/assets/gitGraph-HDMCJU4V-BCsg0_Oa.js +1 -0
  16. package/dist/web/assets/{glide-data-grid-oGWwEx-C.js → glide-data-grid-DZQDtmiO.js} +1 -1
  17. package/dist/web/assets/{image-preview-7bjGlR19.js → image-preview-KEBnOWRV.js} +1 -1
  18. package/dist/web/assets/{index-DUQla965.js → index-DFsZOUXU.js} +5 -5
  19. package/dist/web/assets/info-3K5VOQVL-BDE-e-D2.js +1 -0
  20. package/dist/web/assets/keybindings-store-C1GQSO5O.js +1 -0
  21. package/dist/web/assets/{markdown-renderer-DNM11etB.js → markdown-renderer-C1aREZeW.js} +3 -3
  22. package/dist/web/assets/notification-store-CQPEClB9.js +1 -0
  23. package/dist/web/assets/packet-RMMSAZCW-CEiM7H81.js +1 -0
  24. package/dist/web/assets/{pdf-preview-DFU1txpL.js → pdf-preview-DpD6lwbe.js} +1 -1
  25. package/dist/web/assets/pie-UPGHQEXC-DhBYRSnI.js +1 -0
  26. package/dist/web/assets/{port-forwarding-tab-CJmXr1Y_.js → port-forwarding-tab-CeTcNsRi.js} +1 -1
  27. package/dist/web/assets/{postgres-viewer-CaXJeBw1.js → postgres-viewer-aszM5Fcd.js} +1 -1
  28. package/dist/web/assets/radar-KQ55EAFF-Clvc0804.js +1 -0
  29. package/dist/web/assets/{settings-store-BL2a9FtJ.js → settings-store-B5e8CNie.js} +1 -1
  30. package/dist/web/assets/settings-tab-Degb8F2N.js +1 -0
  31. package/dist/web/assets/{sql-query-editor-BVz7tnJt.js → sql-query-editor-Dd7g17iv.js} +1 -1
  32. package/dist/web/assets/{sqlite-viewer-Dpz0BVbf.js → sqlite-viewer-DoUIUYFP.js} +1 -1
  33. package/dist/web/assets/{system-monitor-tab-Bpjmj8cy.js → system-monitor-tab-ByFvt-X1.js} +1 -1
  34. package/dist/web/assets/{terminal-tab-DoAf-HTf.js → terminal-tab-CbIyX35G.js} +1 -1
  35. package/dist/web/assets/treemap-KZPCXAKY-bRKWoUUh.js +1 -0
  36. package/dist/web/assets/{use-monaco-theme-B9wG8s0C.js → use-monaco-theme-DAPyqocR.js} +1 -1
  37. package/dist/web/assets/{vendor-mermaid-Bfbv_YGB.js → vendor-mermaid-v5g7E-EQ.js} +2 -2
  38. package/dist/web/assets/{video-preview-CKxVc4yo.js → video-preview-B7FgYduA.js} +1 -1
  39. package/dist/web/index.html +3 -3
  40. package/dist/web/sw.js +1 -1
  41. package/package.json +1 -1
  42. package/schemas/ppm-config.schema.json +2 -2
  43. package/src/cli/commands/init.ts +2 -1
  44. package/src/providers/claude-agent-sdk.ts +4 -3
  45. package/src/services/slash-discovery/skill-loader.ts +2 -2
  46. package/src/services/supervisor.ts +11 -4
  47. package/src/services/tunnel.service.ts +1 -1
  48. package/src/types/config.ts +1 -1
  49. package/src/web/components/settings/proxy-test-section.tsx +1 -0
  50. package/.opencode/.env.example +0 -98
  51. package/.opencode/skills/ads-management/scripts/.env.example +0 -13
  52. package/.opencode/skills/ai-multimodal/.env.example +0 -230
  53. package/.opencode/skills/cip-design/.env.example +0 -6
  54. package/.opencode/skills/devops/.env.example +0 -76
  55. package/.opencode/skills/docs-seeker/.env.example +0 -15
  56. package/.opencode/skills/elevenlabs/.env.example +0 -3
  57. package/.opencode/skills/marketing-dashboard/.env.example +0 -15
  58. package/.opencode/skills/marketing-dashboard/app/.env.example +0 -2
  59. package/.opencode/skills/marketing-dashboard/server/.env.example +0 -2
  60. package/.opencode/skills/mcp-management/scripts/dist/analyze-tools.js +0 -70
  61. package/.opencode/skills/mcp-management/scripts/dist/cli.js +0 -160
  62. package/.opencode/skills/mcp-management/scripts/dist/mcp-client.js +0 -183
  63. package/.opencode/skills/payment-integration/scripts/.env.example +0 -20
  64. package/.opencode/skills/sequential-thinking/.env.example +0 -8
  65. package/dist/web/assets/architecture-PBZL5I3N-zg_XUpAf.js +0 -1
  66. package/dist/web/assets/gitGraph-HDMCJU4V-CAfOBCyo.js +0 -1
  67. package/dist/web/assets/info-3K5VOQVL-CevMMhkM.js +0 -1
  68. package/dist/web/assets/keybindings-store-C6fOhpuR.js +0 -1
  69. package/dist/web/assets/notification-store-FhBnY4N6.js +0 -1
  70. package/dist/web/assets/packet-RMMSAZCW-CBPKYQg3.js +0 -1
  71. package/dist/web/assets/pie-UPGHQEXC-BA4yGjJM.js +0 -1
  72. package/dist/web/assets/radar-KQ55EAFF-0aJoWjiU.js +0 -1
  73. package/dist/web/assets/settings-tab-CvqKKtLt.js +0 -1
  74. package/dist/web/assets/treemap-KZPCXAKY-C2M84arV.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a as e,i as t,n,o as r,r as i,t as a}from"./rolldown-runtime-FhOqtrmT.js";var o=`modulepreload`,s=function(e){return`/`+e},l={},u=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))},i=document.getElementsByTagName(`link`),a=document.querySelector(`meta[property=csp-nonce]`),u=a?.nonce||a?.getAttribute(`nonce`);r=e(t.map(e=>{if(e=s(e,n),e in l)return;l[e]=!0;let t=e.endsWith(`.css`),r=t?`[rel="stylesheet"]`:``;if(n)for(let n=i.length-1;n>=0;n--){let r=i[n];if(r.href===e&&(!t||r.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${e}"]${r}`))return;let a=document.createElement(`link`);if(a.rel=t?`stylesheet`:o,t||(a.as=`script`),a.crossOrigin=``,a.href=e,u&&a.setAttribute(`nonce`,u),document.head.appendChild(a),t)return new Promise((t,n)=>{a.addEventListener(`load`,t),a.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${e}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function d(e){return typeof e==`object`&&!!e&&typeof e.$type==`string`}function f(e){return typeof e==`object`&&!!e&&typeof e.$refText==`string`&&`ref`in e}function p(e){return typeof e==`object`&&!!e&&typeof e.$refText==`string`&&`items`in e}function m(e){return typeof e==`object`&&!!e&&typeof e.name==`string`&&typeof e.type==`string`&&typeof e.path==`string`}function h(e){return typeof e==`object`&&!!e&&typeof e.info==`object`&&typeof e.message==`string`}var g=class{constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let t=this.types[e.container.$type];if(!t)throw Error(`Type ${e.container.$type||`undefined`} not found.`);let n=t.properties[e.property]?.referenceType;if(!n)throw Error(`Property ${e.property||`undefined`} of type ${e.container.$type} is not a reference.`);return n}getTypeMetaData(e){return this.types[e]||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return d(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||=this.subtypes[e]={};let r=n[t];if(r!==void 0)return r;{let r=this.types[e],i=r?r.superTypes.some(e=>this.isSubtype(e,t)):!1;return n[t]=i,i}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let t=this.getAllTypes(),n=[];for(let r of t)this.isSubtype(r,e)&&n.push(r);return this.allSubtypes[e]=n,n}}};function _(e){return typeof e==`object`&&!!e&&Array.isArray(e.content)}function v(e){return typeof e==`object`&&!!e&&typeof e.tokenType==`object`}function y(e){return _(e)&&typeof e.fullText==`string`}var b=class e{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){let e=[],t=this.iterator(),n;do n=t.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){let n=this.map(n=>[e?e(n):n,t?t(n):n]);return new Map(n)}toString(){return this.join()}concat(t){return new e(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),e=>{let t;if(!e.firstDone){do if(t=this.nextFn(e.first),!t.done)return t;while(!t.done);e.firstDone=!0}do if(t=e.iterator.next(),!t.done)return t;while(!t.done);return w})}join(e=`,`){let t=this.iterator(),n=``,r,i=!1;do r=t.next(),r.done||(i&&(n+=e),n+=x(r.value)),i=!0;while(!r.done);return n}indexOf(e,t=0){let n=this.iterator(),r=0,i=n.next();for(;!i.done;){if(r>=t&&i.value===e)return r;i=n.next(),r++}return-1}every(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){let t=this.iterator(),n=0,r=t.next();for(;!r.done;)e(r.value,n),r=t.next(),n++}map(t){return new e(this.startFn,e=>{let{done:n,value:r}=this.nextFn(e);return n?w:{done:!1,value:t(r)}})}filter(t){return new e(this.startFn,e=>{let n;do if(n=this.nextFn(e),!n.done&&t(n.value))return n;while(!n.done);return w})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,t){let n=this.iterator(),r=t,i=n.next();for(;!i.done;)r=r===void 0?i.value:e(r,i.value),i=n.next();return r}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){let r=e.next();if(r.done)return n;let i=this.recursiveReduce(e,t,n);return i===void 0?r.value:t(i,r.value)}find(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){let t=this.iterator(),n=0,r=t.next();for(;!r.done;){if(e(r.value))return n;r=t.next(),n++}return-1}includes(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(n.value===e)return!0;n=t.next()}return!1}flatMap(t){return new e(()=>({this:this.startFn()}),e=>{do{if(e.iterator){let t=e.iterator.next();if(t.done)e.iterator=void 0;else return t}let{done:n,value:r}=this.nextFn(e.this);if(!n){let n=t(r);if(S(n))e.iterator=n[Symbol.iterator]();else return{done:!1,value:n}}}while(e.iterator);return w})}flat(t){if(t===void 0&&(t=1),t<=0)return this;let n=t>1?this.flat(t-1):this;return new e(()=>({this:n.startFn()}),e=>{do{if(e.iterator){let t=e.iterator.next();if(t.done)e.iterator=void 0;else return t}let{done:t,value:r}=n.nextFn(e.this);if(!t)if(S(r))e.iterator=r[Symbol.iterator]();else return{done:!1,value:r}}while(e.iterator);return w})}head(){let e=this.iterator().next();if(!e.done)return e.value}tail(t=1){return new e(()=>{let e=this.startFn();for(let n=0;n<t;n++)if(this.nextFn(e).done)return e;return e},this.nextFn)}limit(t){return new e(()=>({size:0,state:this.startFn()}),e=>(e.size++,e.size>t?w:this.nextFn(e.state)))}distinct(t){return new e(()=>({set:new Set,internalState:this.startFn()}),e=>{let n;do if(n=this.nextFn(e.internalState),!n.done){let r=t?t(n.value):n.value;if(!e.set.has(r))return e.set.add(r),n}while(!n.done);return w})}exclude(e,t){let n=new Set;for(let r of e){let e=t?t(r):r;n.add(e)}return this.filter(e=>{let r=t?t(e):e;return!n.has(r)})}};function x(e){return typeof e==`string`?e:e===void 0?`undefined`:typeof e.toString==`function`?e.toString():Object.prototype.toString.call(e)}function S(e){return!!e&&typeof e[Symbol.iterator]==`function`}var C=new b(()=>void 0,()=>w),w=Object.freeze({done:!0,value:void 0});function T(...e){if(e.length===1){let t=e[0];if(t instanceof b)return t;if(S(t))return new b(()=>t[Symbol.iterator](),e=>e.next());if(typeof t.length==`number`)return new b(()=>({index:0}),e=>e.index<t.length?{done:!1,value:t[e.index++]}:w)}return e.length>1?new b(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){let e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){let n=e[t.collIndex++];S(n)?t.iterator=n[Symbol.iterator]():n&&typeof n.length==`number`&&(t.array=n)}}while(t.iterator||t.array||t.collIndex<e.length);return w}):C}var E=class extends b{constructor(e,t,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),e=>{for(e.pruned&&=(e.iterators.pop(),!1);e.iterators.length>0;){let n=e.iterators[e.iterators.length-1].next();if(n.done)e.iterators.pop();else return e.iterators.push(t(n.value)[Symbol.iterator]()),n}return w})}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}},D;(function(e){function t(e){return e.reduce((e,t)=>e+t,0)}e.sum=t;function n(e){return e.reduce((e,t)=>e*t,0)}e.product=n;function r(e){return e.reduce((e,t)=>Math.min(e,t))}e.min=r;function i(e){return e.reduce((e,t)=>Math.max(e,t))}e.max=i})(D||={});function O(e,t={}){for(let[n,r]of Object.entries(e))n.startsWith(`$`)||(Array.isArray(r)?r.forEach((r,i)=>{d(r)&&(r.$container=e,r.$containerProperty=n,r.$containerIndex=i,t.deep&&O(r,t))}):d(r)&&(r.$container=e,r.$containerProperty=n,t.deep&&O(r,t)))}function k(e,t){let n=e;for(;n;){if(t(n))return n;n=n.$container}}function A(e){let t=j(e).$document;if(!t)throw Error(`AST node has no document.`);return t}function j(e){for(;e.$container;)e=e.$container;return e}function M(e){return f(e)?e.ref?[e.ref]:[]:p(e)?e.items.map(e=>e.ref):[]}function N(e,t){if(!e)throw Error(`Node must be an AstNode.`);let n=t?.range;return new b(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let r=t.keys[t.keyIndex];if(!r.startsWith(`$`)){let i=e[r];if(d(i)){if(t.keyIndex++,I(i,n))return{done:!1,value:i}}else if(Array.isArray(i)){for(;t.arrayIndex<i.length;){let e=i[t.arrayIndex++];if(d(e)&&I(e,n))return{done:!1,value:e}}t.arrayIndex=0}}t.keyIndex++}return w})}function P(e,t){if(!e)throw Error(`Root node must be an AstNode.`);return new E(e,e=>N(e,t))}function F(e,t){if(!e)throw Error(`Root node must be an AstNode.`);return t?.range&&!I(e,t.range)?new E(e,()=>[]):new E(e,e=>N(e,t),{includeRoot:!0})}function I(e,t){if(!t)return!0;let n=e.$cstNode?.range;return n?Ot(n,t):!1}function L(e){return new b(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let n=t.keys[t.keyIndex];if(!n.startsWith(`$`)){let r=e[n];if(f(r)||p(r))return t.keyIndex++,{done:!1,value:{reference:r,container:e,property:n}};if(Array.isArray(r)){for(;t.arrayIndex<r.length;){let i=t.arrayIndex++,a=r[i];if(f(a)||p(r))return{done:!1,value:{reference:a,container:e,property:n,index:i}}}t.arrayIndex=0}}t.keyIndex++}return w})}function R(e,t){let n=e.getTypeMetaData(t.$type),r=t;for(let e of Object.values(n.properties))e.defaultValue!==void 0&&r[e.name]===void 0&&(r[e.name]=z(e.defaultValue))}function z(e){return Array.isArray(e)?[...e.map(z)]:e}var B={$type:`AbstractElement`,cardinality:`cardinality`};function V(e){return St.isInstance(e,B.$type)}var H={$type:`AbstractParserRule`};function ee(e){return St.isInstance(e,H.$type)}var te={$type:`AbstractRule`},U={$type:`AbstractType`},ne={$type:`Action`,cardinality:`cardinality`,feature:`feature`,inferredType:`inferredType`,operator:`operator`,type:`type`};function re(e){return St.isInstance(e,ne.$type)}var W={$type:`Alternatives`,cardinality:`cardinality`,elements:`elements`};function G(e){return St.isInstance(e,W.$type)}var K={$type:`ArrayLiteral`,elements:`elements`},ie={$type:`ArrayType`,elementType:`elementType`},ae={$type:`Assignment`,cardinality:`cardinality`,feature:`feature`,operator:`operator`,predicate:`predicate`,terminal:`terminal`};function oe(e){return St.isInstance(e,ae.$type)}var se={$type:`BooleanLiteral`,true:`true`};function ce(e){return St.isInstance(e,se.$type)}var le={$type:`CharacterRange`,cardinality:`cardinality`,left:`left`,lookahead:`lookahead`,parenthesized:`parenthesized`,right:`right`};function ue(e){return St.isInstance(e,le.$type)}var de={$type:`Condition`},fe={$type:`Conjunction`,left:`left`,right:`right`};function pe(e){return St.isInstance(e,fe.$type)}var me={$type:`CrossReference`,cardinality:`cardinality`,deprecatedSyntax:`deprecatedSyntax`,isMulti:`isMulti`,terminal:`terminal`,type:`type`};function he(e){return St.isInstance(e,me.$type)}var ge={$type:`Disjunction`,left:`left`,right:`right`};function _e(e){return St.isInstance(e,ge.$type)}var ve={$type:`EndOfFile`,cardinality:`cardinality`};function ye(e){return St.isInstance(e,ve.$type)}var be={$type:`Grammar`,imports:`imports`,interfaces:`interfaces`,isDeclared:`isDeclared`,name:`name`,rules:`rules`,types:`types`},xe={$type:`GrammarImport`,path:`path`},Se={$type:`Group`,cardinality:`cardinality`,elements:`elements`,guardCondition:`guardCondition`,predicate:`predicate`};function Ce(e){return St.isInstance(e,Se.$type)}var we={$type:`InferredType`,name:`name`};function Te(e){return St.isInstance(e,we.$type)}var Ee={$type:`InfixRule`,call:`call`,dataType:`dataType`,inferredType:`inferredType`,name:`name`,operators:`operators`,parameters:`parameters`,returnType:`returnType`};function De(e){return St.isInstance(e,Ee.$type)}var Oe={$type:`InfixRuleOperatorList`,associativity:`associativity`,operators:`operators`},ke={$type:`InfixRuleOperators`,precedences:`precedences`},Ae={$type:`Interface`,attributes:`attributes`,name:`name`,superTypes:`superTypes`};function je(e){return St.isInstance(e,Ae.$type)}var Me={$type:`Keyword`,cardinality:`cardinality`,predicate:`predicate`,value:`value`};function Ne(e){return St.isInstance(e,Me.$type)}var Pe={$type:`NamedArgument`,calledByName:`calledByName`,parameter:`parameter`,value:`value`},Fe={$type:`NegatedToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,terminal:`terminal`};function Ie(e){return St.isInstance(e,Fe.$type)}var Le={$type:`Negation`,value:`value`};function Re(e){return St.isInstance(e,Le.$type)}var ze={$type:`NumberLiteral`,value:`value`},Be={$type:`Parameter`,name:`name`},Ve={$type:`ParameterReference`,parameter:`parameter`};function He(e){return St.isInstance(e,Ve.$type)}var Ue={$type:`ParserRule`,dataType:`dataType`,definition:`definition`,entry:`entry`,fragment:`fragment`,inferredType:`inferredType`,name:`name`,parameters:`parameters`,returnType:`returnType`};function We(e){return St.isInstance(e,Ue.$type)}var Ge={$type:`ReferenceType`,isMulti:`isMulti`,referenceType:`referenceType`},Ke={$type:`RegexToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,regex:`regex`};function qe(e){return St.isInstance(e,Ke.$type)}var Je={$type:`ReturnType`,name:`name`};function Ye(e){return St.isInstance(e,Je.$type)}var Xe={$type:`RuleCall`,arguments:`arguments`,cardinality:`cardinality`,predicate:`predicate`,rule:`rule`};function Ze(e){return St.isInstance(e,Xe.$type)}var Qe={$type:`SimpleType`,primitiveType:`primitiveType`,stringType:`stringType`,typeRef:`typeRef`};function $e(e){return St.isInstance(e,Qe.$type)}var et={$type:`StringLiteral`,value:`value`},tt={$type:`TerminalAlternatives`,cardinality:`cardinality`,elements:`elements`,lookahead:`lookahead`,parenthesized:`parenthesized`};function nt(e){return St.isInstance(e,tt.$type)}var rt={$type:`TerminalElement`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`},it={$type:`TerminalGroup`,cardinality:`cardinality`,elements:`elements`,lookahead:`lookahead`,parenthesized:`parenthesized`};function at(e){return St.isInstance(e,it.$type)}var ot={$type:`TerminalRule`,definition:`definition`,fragment:`fragment`,hidden:`hidden`,name:`name`,type:`type`};function st(e){return St.isInstance(e,ot.$type)}var ct={$type:`TerminalRuleCall`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,rule:`rule`};function lt(e){return St.isInstance(e,ct.$type)}var ut={$type:`Type`,name:`name`,type:`type`};function dt(e){return St.isInstance(e,ut.$type)}var ft={$type:`TypeAttribute`,defaultValue:`defaultValue`,isOptional:`isOptional`,name:`name`,type:`type`},pt={$type:`TypeDefinition`},mt={$type:`UnionType`,types:`types`},ht={$type:`UnorderedGroup`,cardinality:`cardinality`,elements:`elements`};function gt(e){return St.isInstance(e,ht.$type)}var _t={$type:`UntilToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,terminal:`terminal`};function eee(e){return St.isInstance(e,_t.$type)}var vt={$type:`ValueLiteral`},yt={$type:`Wildcard`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`};function bt(e){return St.isInstance(e,yt.$type)}var xt=class extends g{constructor(){super(...arguments),this.types={AbstractElement:{name:B.$type,properties:{cardinality:{name:B.cardinality}},superTypes:[]},AbstractParserRule:{name:H.$type,properties:{},superTypes:[te.$type,U.$type]},AbstractRule:{name:te.$type,properties:{},superTypes:[]},AbstractType:{name:U.$type,properties:{},superTypes:[]},Action:{name:ne.$type,properties:{cardinality:{name:ne.cardinality},feature:{name:ne.feature},inferredType:{name:ne.inferredType},operator:{name:ne.operator},type:{name:ne.type,referenceType:U.$type}},superTypes:[B.$type]},Alternatives:{name:W.$type,properties:{cardinality:{name:W.cardinality},elements:{name:W.elements,defaultValue:[]}},superTypes:[B.$type]},ArrayLiteral:{name:K.$type,properties:{elements:{name:K.elements,defaultValue:[]}},superTypes:[vt.$type]},ArrayType:{name:ie.$type,properties:{elementType:{name:ie.elementType}},superTypes:[pt.$type]},Assignment:{name:ae.$type,properties:{cardinality:{name:ae.cardinality},feature:{name:ae.feature},operator:{name:ae.operator},predicate:{name:ae.predicate},terminal:{name:ae.terminal}},superTypes:[B.$type]},BooleanLiteral:{name:se.$type,properties:{true:{name:se.true,defaultValue:!1}},superTypes:[de.$type,vt.$type]},CharacterRange:{name:le.$type,properties:{cardinality:{name:le.cardinality},left:{name:le.left},lookahead:{name:le.lookahead},parenthesized:{name:le.parenthesized,defaultValue:!1},right:{name:le.right}},superTypes:[rt.$type]},Condition:{name:de.$type,properties:{},superTypes:[]},Conjunction:{name:fe.$type,properties:{left:{name:fe.left},right:{name:fe.right}},superTypes:[de.$type]},CrossReference:{name:me.$type,properties:{cardinality:{name:me.cardinality},deprecatedSyntax:{name:me.deprecatedSyntax,defaultValue:!1},isMulti:{name:me.isMulti,defaultValue:!1},terminal:{name:me.terminal},type:{name:me.type,referenceType:U.$type}},superTypes:[B.$type]},Disjunction:{name:ge.$type,properties:{left:{name:ge.left},right:{name:ge.right}},superTypes:[de.$type]},EndOfFile:{name:ve.$type,properties:{cardinality:{name:ve.cardinality}},superTypes:[B.$type]},Grammar:{name:be.$type,properties:{imports:{name:be.imports,defaultValue:[]},interfaces:{name:be.interfaces,defaultValue:[]},isDeclared:{name:be.isDeclared,defaultValue:!1},name:{name:be.name},rules:{name:be.rules,defaultValue:[]},types:{name:be.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:xe.$type,properties:{path:{name:xe.path}},superTypes:[]},Group:{name:Se.$type,properties:{cardinality:{name:Se.cardinality},elements:{name:Se.elements,defaultValue:[]},guardCondition:{name:Se.guardCondition},predicate:{name:Se.predicate}},superTypes:[B.$type]},InferredType:{name:we.$type,properties:{name:{name:we.name}},superTypes:[U.$type]},InfixRule:{name:Ee.$type,properties:{call:{name:Ee.call},dataType:{name:Ee.dataType},inferredType:{name:Ee.inferredType},name:{name:Ee.name},operators:{name:Ee.operators},parameters:{name:Ee.parameters,defaultValue:[]},returnType:{name:Ee.returnType,referenceType:U.$type}},superTypes:[H.$type]},InfixRuleOperatorList:{name:Oe.$type,properties:{associativity:{name:Oe.associativity},operators:{name:Oe.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:ke.$type,properties:{precedences:{name:ke.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:Ae.$type,properties:{attributes:{name:Ae.attributes,defaultValue:[]},name:{name:Ae.name},superTypes:{name:Ae.superTypes,defaultValue:[],referenceType:U.$type}},superTypes:[U.$type]},Keyword:{name:Me.$type,properties:{cardinality:{name:Me.cardinality},predicate:{name:Me.predicate},value:{name:Me.value}},superTypes:[B.$type]},NamedArgument:{name:Pe.$type,properties:{calledByName:{name:Pe.calledByName,defaultValue:!1},parameter:{name:Pe.parameter,referenceType:Be.$type},value:{name:Pe.value}},superTypes:[]},NegatedToken:{name:Fe.$type,properties:{cardinality:{name:Fe.cardinality},lookahead:{name:Fe.lookahead},parenthesized:{name:Fe.parenthesized,defaultValue:!1},terminal:{name:Fe.terminal}},superTypes:[rt.$type]},Negation:{name:Le.$type,properties:{value:{name:Le.value}},superTypes:[de.$type]},NumberLiteral:{name:ze.$type,properties:{value:{name:ze.value}},superTypes:[vt.$type]},Parameter:{name:Be.$type,properties:{name:{name:Be.name}},superTypes:[]},ParameterReference:{name:Ve.$type,properties:{parameter:{name:Ve.parameter,referenceType:Be.$type}},superTypes:[de.$type]},ParserRule:{name:Ue.$type,properties:{dataType:{name:Ue.dataType},definition:{name:Ue.definition},entry:{name:Ue.entry,defaultValue:!1},fragment:{name:Ue.fragment,defaultValue:!1},inferredType:{name:Ue.inferredType},name:{name:Ue.name},parameters:{name:Ue.parameters,defaultValue:[]},returnType:{name:Ue.returnType,referenceType:U.$type}},superTypes:[H.$type]},ReferenceType:{name:Ge.$type,properties:{isMulti:{name:Ge.isMulti,defaultValue:!1},referenceType:{name:Ge.referenceType}},superTypes:[pt.$type]},RegexToken:{name:Ke.$type,properties:{cardinality:{name:Ke.cardinality},lookahead:{name:Ke.lookahead},parenthesized:{name:Ke.parenthesized,defaultValue:!1},regex:{name:Ke.regex}},superTypes:[rt.$type]},ReturnType:{name:Je.$type,properties:{name:{name:Je.name}},superTypes:[]},RuleCall:{name:Xe.$type,properties:{arguments:{name:Xe.arguments,defaultValue:[]},cardinality:{name:Xe.cardinality},predicate:{name:Xe.predicate},rule:{name:Xe.rule,referenceType:te.$type}},superTypes:[B.$type]},SimpleType:{name:Qe.$type,properties:{primitiveType:{name:Qe.primitiveType},stringType:{name:Qe.stringType},typeRef:{name:Qe.typeRef,referenceType:U.$type}},superTypes:[pt.$type]},StringLiteral:{name:et.$type,properties:{value:{name:et.value}},superTypes:[vt.$type]},TerminalAlternatives:{name:tt.$type,properties:{cardinality:{name:tt.cardinality},elements:{name:tt.elements,defaultValue:[]},lookahead:{name:tt.lookahead},parenthesized:{name:tt.parenthesized,defaultValue:!1}},superTypes:[rt.$type]},TerminalElement:{name:rt.$type,properties:{cardinality:{name:rt.cardinality},lookahead:{name:rt.lookahead},parenthesized:{name:rt.parenthesized,defaultValue:!1}},superTypes:[B.$type]},TerminalGroup:{name:it.$type,properties:{cardinality:{name:it.cardinality},elements:{name:it.elements,defaultValue:[]},lookahead:{name:it.lookahead},parenthesized:{name:it.parenthesized,defaultValue:!1}},superTypes:[rt.$type]},TerminalRule:{name:ot.$type,properties:{definition:{name:ot.definition},fragment:{name:ot.fragment,defaultValue:!1},hidden:{name:ot.hidden,defaultValue:!1},name:{name:ot.name},type:{name:ot.type}},superTypes:[te.$type]},TerminalRuleCall:{name:ct.$type,properties:{cardinality:{name:ct.cardinality},lookahead:{name:ct.lookahead},parenthesized:{name:ct.parenthesized,defaultValue:!1},rule:{name:ct.rule,referenceType:ot.$type}},superTypes:[rt.$type]},Type:{name:ut.$type,properties:{name:{name:ut.name},type:{name:ut.type}},superTypes:[U.$type]},TypeAttribute:{name:ft.$type,properties:{defaultValue:{name:ft.defaultValue},isOptional:{name:ft.isOptional,defaultValue:!1},name:{name:ft.name},type:{name:ft.type}},superTypes:[]},TypeDefinition:{name:pt.$type,properties:{},superTypes:[]},UnionType:{name:mt.$type,properties:{types:{name:mt.types,defaultValue:[]}},superTypes:[pt.$type]},UnorderedGroup:{name:ht.$type,properties:{cardinality:{name:ht.cardinality},elements:{name:ht.elements,defaultValue:[]}},superTypes:[B.$type]},UntilToken:{name:_t.$type,properties:{cardinality:{name:_t.cardinality},lookahead:{name:_t.lookahead},parenthesized:{name:_t.parenthesized,defaultValue:!1},terminal:{name:_t.terminal}},superTypes:[rt.$type]},ValueLiteral:{name:vt.$type,properties:{},superTypes:[]},Wildcard:{name:yt.$type,properties:{cardinality:{name:yt.cardinality},lookahead:{name:yt.lookahead},parenthesized:{name:yt.parenthesized,defaultValue:!1}},superTypes:[rt.$type]}}}},St=new xt;function Ct(e){return new E(e,e=>_(e)?e.content:[],{includeRoot:!0})}function tee(e,t){for(;e.container;)if(e=e.container,e===t)return!0;return!1}function wt(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function Tt(e){if(!e)return;let{offset:t,end:n,range:r}=e;return{range:r,offset:t,end:n,length:n-t}}var Et;(function(e){e[e.Before=0]=`Before`,e[e.After=1]=`After`,e[e.OverlapFront=2]=`OverlapFront`,e[e.OverlapBack=3]=`OverlapBack`,e[e.Inside=4]=`Inside`,e[e.Outside=5]=`Outside`})(Et||={});function Dt(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return Et.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return Et.After;let n=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,r=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return n&&r?Et.Inside:n?Et.OverlapBack:r?Et.OverlapFront:Et.Outside}function Ot(e,t){return Dt(e,t)>Et.After}var nee=/^[\w\p{L}]$/u;function ree(e,t){if(e){let n=iee(e,!0);if(n&&kt(n,t))return n;if(y(e)){let n=e.content.findIndex(e=>!e.hidden);for(let r=n-1;r>=0;r--){let n=e.content[r];if(kt(n,t))return n}}}}function kt(e,t){return v(e)&&t.includes(e.tokenType.name)}function iee(e,t=!0){for(;e.container;){let n=e.container,r=n.content.indexOf(e);for(;r>0;){r--;let e=n.content[r];if(t||!e.hidden)return e}e=n}}var At=class extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};function jt(e,t=`Error: Got unexpected value.`){throw Error(t)}function Mt(e){return e.charCodeAt(0)}function Nt(e,t){Array.isArray(e)?e.forEach(function(e){t.push(e)}):t.push(e)}function Pt(e,t){if(e[t]===!0)throw`duplicate flag `+t;e[t],e[t]=!0}function Ft(e){if(e===void 0)throw Error(`Internal Error - Should never get here!`);return!0}function It(){throw Error(`Internal Error - Should never get here!`)}function Lt(e){return e.type===`Character`}var Rt=[];for(let e=Mt(`0`);e<=Mt(`9`);e++)Rt.push(e);var zt=[Mt(`_`)].concat(Rt);for(let e=Mt(`a`);e<=Mt(`z`);e++)zt.push(e);for(let e=Mt(`A`);e<=Mt(`Z`);e++)zt.push(e);var Bt=[Mt(` `),Mt(`\f`),Mt(`
1
+ import{a as e,i as t,n,o as r,r as i,t as a}from"./rolldown-runtime-FhOqtrmT.js";var o=`modulepreload`,s=function(e){return`/`+e},l={},u=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function u(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=u(t.map(t=>{if(t=s(t,n),t in l)return;l[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let u=document.createElement(`link`);if(u.rel=r?`stylesheet`:o,r||(u.as=`script`),u.crossOrigin=``,u.href=t,a&&u.setAttribute(`nonce`,a),document.head.appendChild(u),r)return new Promise((e,n)=>{u.addEventListener(`load`,e),u.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function d(e){return typeof e==`object`&&!!e&&typeof e.$type==`string`}function f(e){return typeof e==`object`&&!!e&&typeof e.$refText==`string`&&`ref`in e}function p(e){return typeof e==`object`&&!!e&&typeof e.$refText==`string`&&`items`in e}function m(e){return typeof e==`object`&&!!e&&typeof e.name==`string`&&typeof e.type==`string`&&typeof e.path==`string`}function h(e){return typeof e==`object`&&!!e&&typeof e.info==`object`&&typeof e.message==`string`}var g=class{constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let t=this.types[e.container.$type];if(!t)throw Error(`Type ${e.container.$type||`undefined`} not found.`);let n=t.properties[e.property]?.referenceType;if(!n)throw Error(`Property ${e.property||`undefined`} of type ${e.container.$type} is not a reference.`);return n}getTypeMetaData(e){return this.types[e]||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return d(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||=this.subtypes[e]={};let r=n[t];if(r!==void 0)return r;{let r=this.types[e],i=r?r.superTypes.some(e=>this.isSubtype(e,t)):!1;return n[t]=i,i}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let t=this.getAllTypes(),n=[];for(let r of t)this.isSubtype(r,e)&&n.push(r);return this.allSubtypes[e]=n,n}}};function _(e){return typeof e==`object`&&!!e&&Array.isArray(e.content)}function v(e){return typeof e==`object`&&!!e&&typeof e.tokenType==`object`}function y(e){return _(e)&&typeof e.fullText==`string`}var b=class e{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){let e=[],t=this.iterator(),n;do n=t.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){let n=this.map(n=>[e?e(n):n,t?t(n):n]);return new Map(n)}toString(){return this.join()}concat(t){return new e(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),e=>{let t;if(!e.firstDone){do if(t=this.nextFn(e.first),!t.done)return t;while(!t.done);e.firstDone=!0}do if(t=e.iterator.next(),!t.done)return t;while(!t.done);return w})}join(e=`,`){let t=this.iterator(),n=``,r,i=!1;do r=t.next(),r.done||(i&&(n+=e),n+=x(r.value)),i=!0;while(!r.done);return n}indexOf(e,t=0){let n=this.iterator(),r=0,i=n.next();for(;!i.done;){if(r>=t&&i.value===e)return r;i=n.next(),r++}return-1}every(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){let t=this.iterator(),n=0,r=t.next();for(;!r.done;)e(r.value,n),r=t.next(),n++}map(t){return new e(this.startFn,e=>{let{done:n,value:r}=this.nextFn(e);return n?w:{done:!1,value:t(r)}})}filter(t){return new e(this.startFn,e=>{let n;do if(n=this.nextFn(e),!n.done&&t(n.value))return n;while(!n.done);return w})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,t){let n=this.iterator(),r=t,i=n.next();for(;!i.done;)r=r===void 0?i.value:e(r,i.value),i=n.next();return r}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){let r=e.next();if(r.done)return n;let i=this.recursiveReduce(e,t,n);return i===void 0?r.value:t(i,r.value)}find(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){let t=this.iterator(),n=0,r=t.next();for(;!r.done;){if(e(r.value))return n;r=t.next(),n++}return-1}includes(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(n.value===e)return!0;n=t.next()}return!1}flatMap(t){return new e(()=>({this:this.startFn()}),e=>{do{if(e.iterator){let t=e.iterator.next();if(t.done)e.iterator=void 0;else return t}let{done:n,value:r}=this.nextFn(e.this);if(!n){let n=t(r);if(S(n))e.iterator=n[Symbol.iterator]();else return{done:!1,value:n}}}while(e.iterator);return w})}flat(t){if(t===void 0&&(t=1),t<=0)return this;let n=t>1?this.flat(t-1):this;return new e(()=>({this:n.startFn()}),e=>{do{if(e.iterator){let t=e.iterator.next();if(t.done)e.iterator=void 0;else return t}let{done:t,value:r}=n.nextFn(e.this);if(!t)if(S(r))e.iterator=r[Symbol.iterator]();else return{done:!1,value:r}}while(e.iterator);return w})}head(){let e=this.iterator().next();if(!e.done)return e.value}tail(t=1){return new e(()=>{let e=this.startFn();for(let n=0;n<t;n++)if(this.nextFn(e).done)return e;return e},this.nextFn)}limit(t){return new e(()=>({size:0,state:this.startFn()}),e=>(e.size++,e.size>t?w:this.nextFn(e.state)))}distinct(t){return new e(()=>({set:new Set,internalState:this.startFn()}),e=>{let n;do if(n=this.nextFn(e.internalState),!n.done){let r=t?t(n.value):n.value;if(!e.set.has(r))return e.set.add(r),n}while(!n.done);return w})}exclude(e,t){let n=new Set;for(let r of e){let e=t?t(r):r;n.add(e)}return this.filter(e=>{let r=t?t(e):e;return!n.has(r)})}};function x(e){return typeof e==`string`?e:e===void 0?`undefined`:typeof e.toString==`function`?e.toString():Object.prototype.toString.call(e)}function S(e){return!!e&&typeof e[Symbol.iterator]==`function`}var C=new b(()=>void 0,()=>w),w=Object.freeze({done:!0,value:void 0});function T(...e){if(e.length===1){let t=e[0];if(t instanceof b)return t;if(S(t))return new b(()=>t[Symbol.iterator](),e=>e.next());if(typeof t.length==`number`)return new b(()=>({index:0}),e=>e.index<t.length?{done:!1,value:t[e.index++]}:w)}return e.length>1?new b(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){let e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){let n=e[t.collIndex++];S(n)?t.iterator=n[Symbol.iterator]():n&&typeof n.length==`number`&&(t.array=n)}}while(t.iterator||t.array||t.collIndex<e.length);return w}):C}var E=class extends b{constructor(e,t,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),e=>{for(e.pruned&&=(e.iterators.pop(),!1);e.iterators.length>0;){let n=e.iterators[e.iterators.length-1].next();if(n.done)e.iterators.pop();else return e.iterators.push(t(n.value)[Symbol.iterator]()),n}return w})}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}},D;(function(e){function t(e){return e.reduce((e,t)=>e+t,0)}e.sum=t;function n(e){return e.reduce((e,t)=>e*t,0)}e.product=n;function r(e){return e.reduce((e,t)=>Math.min(e,t))}e.min=r;function i(e){return e.reduce((e,t)=>Math.max(e,t))}e.max=i})(D||={});function O(e,t={}){for(let[n,r]of Object.entries(e))n.startsWith(`$`)||(Array.isArray(r)?r.forEach((r,i)=>{d(r)&&(r.$container=e,r.$containerProperty=n,r.$containerIndex=i,t.deep&&O(r,t))}):d(r)&&(r.$container=e,r.$containerProperty=n,t.deep&&O(r,t)))}function k(e,t){let n=e;for(;n;){if(t(n))return n;n=n.$container}}function A(e){let t=j(e).$document;if(!t)throw Error(`AST node has no document.`);return t}function j(e){for(;e.$container;)e=e.$container;return e}function M(e){return f(e)?e.ref?[e.ref]:[]:p(e)?e.items.map(e=>e.ref):[]}function N(e,t){if(!e)throw Error(`Node must be an AstNode.`);let n=t?.range;return new b(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let r=t.keys[t.keyIndex];if(!r.startsWith(`$`)){let i=e[r];if(d(i)){if(t.keyIndex++,I(i,n))return{done:!1,value:i}}else if(Array.isArray(i)){for(;t.arrayIndex<i.length;){let e=i[t.arrayIndex++];if(d(e)&&I(e,n))return{done:!1,value:e}}t.arrayIndex=0}}t.keyIndex++}return w})}function P(e,t){if(!e)throw Error(`Root node must be an AstNode.`);return new E(e,e=>N(e,t))}function F(e,t){if(!e)throw Error(`Root node must be an AstNode.`);return t?.range&&!I(e,t.range)?new E(e,()=>[]):new E(e,e=>N(e,t),{includeRoot:!0})}function I(e,t){if(!t)return!0;let n=e.$cstNode?.range;return n?Ot(n,t):!1}function L(e){return new b(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let n=t.keys[t.keyIndex];if(!n.startsWith(`$`)){let r=e[n];if(f(r)||p(r))return t.keyIndex++,{done:!1,value:{reference:r,container:e,property:n}};if(Array.isArray(r)){for(;t.arrayIndex<r.length;){let i=t.arrayIndex++,a=r[i];if(f(a)||p(r))return{done:!1,value:{reference:a,container:e,property:n,index:i}}}t.arrayIndex=0}}t.keyIndex++}return w})}function R(e,t){let n=e.getTypeMetaData(t.$type),r=t;for(let e of Object.values(n.properties))e.defaultValue!==void 0&&r[e.name]===void 0&&(r[e.name]=z(e.defaultValue))}function z(e){return Array.isArray(e)?[...e.map(z)]:e}var B={$type:`AbstractElement`,cardinality:`cardinality`};function V(e){return St.isInstance(e,B.$type)}var H={$type:`AbstractParserRule`};function ee(e){return St.isInstance(e,H.$type)}var te={$type:`AbstractRule`},U={$type:`AbstractType`},ne={$type:`Action`,cardinality:`cardinality`,feature:`feature`,inferredType:`inferredType`,operator:`operator`,type:`type`};function re(e){return St.isInstance(e,ne.$type)}var W={$type:`Alternatives`,cardinality:`cardinality`,elements:`elements`};function G(e){return St.isInstance(e,W.$type)}var K={$type:`ArrayLiteral`,elements:`elements`},ie={$type:`ArrayType`,elementType:`elementType`},ae={$type:`Assignment`,cardinality:`cardinality`,feature:`feature`,operator:`operator`,predicate:`predicate`,terminal:`terminal`};function oe(e){return St.isInstance(e,ae.$type)}var se={$type:`BooleanLiteral`,true:`true`};function ce(e){return St.isInstance(e,se.$type)}var le={$type:`CharacterRange`,cardinality:`cardinality`,left:`left`,lookahead:`lookahead`,parenthesized:`parenthesized`,right:`right`};function ue(e){return St.isInstance(e,le.$type)}var de={$type:`Condition`},fe={$type:`Conjunction`,left:`left`,right:`right`};function pe(e){return St.isInstance(e,fe.$type)}var me={$type:`CrossReference`,cardinality:`cardinality`,deprecatedSyntax:`deprecatedSyntax`,isMulti:`isMulti`,terminal:`terminal`,type:`type`};function he(e){return St.isInstance(e,me.$type)}var ge={$type:`Disjunction`,left:`left`,right:`right`};function _e(e){return St.isInstance(e,ge.$type)}var ve={$type:`EndOfFile`,cardinality:`cardinality`};function ye(e){return St.isInstance(e,ve.$type)}var be={$type:`Grammar`,imports:`imports`,interfaces:`interfaces`,isDeclared:`isDeclared`,name:`name`,rules:`rules`,types:`types`},xe={$type:`GrammarImport`,path:`path`},Se={$type:`Group`,cardinality:`cardinality`,elements:`elements`,guardCondition:`guardCondition`,predicate:`predicate`};function Ce(e){return St.isInstance(e,Se.$type)}var we={$type:`InferredType`,name:`name`};function Te(e){return St.isInstance(e,we.$type)}var Ee={$type:`InfixRule`,call:`call`,dataType:`dataType`,inferredType:`inferredType`,name:`name`,operators:`operators`,parameters:`parameters`,returnType:`returnType`};function De(e){return St.isInstance(e,Ee.$type)}var Oe={$type:`InfixRuleOperatorList`,associativity:`associativity`,operators:`operators`},ke={$type:`InfixRuleOperators`,precedences:`precedences`},Ae={$type:`Interface`,attributes:`attributes`,name:`name`,superTypes:`superTypes`};function je(e){return St.isInstance(e,Ae.$type)}var Me={$type:`Keyword`,cardinality:`cardinality`,predicate:`predicate`,value:`value`};function Ne(e){return St.isInstance(e,Me.$type)}var Pe={$type:`NamedArgument`,calledByName:`calledByName`,parameter:`parameter`,value:`value`},Fe={$type:`NegatedToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,terminal:`terminal`};function Ie(e){return St.isInstance(e,Fe.$type)}var Le={$type:`Negation`,value:`value`};function Re(e){return St.isInstance(e,Le.$type)}var ze={$type:`NumberLiteral`,value:`value`},Be={$type:`Parameter`,name:`name`},Ve={$type:`ParameterReference`,parameter:`parameter`};function He(e){return St.isInstance(e,Ve.$type)}var Ue={$type:`ParserRule`,dataType:`dataType`,definition:`definition`,entry:`entry`,fragment:`fragment`,inferredType:`inferredType`,name:`name`,parameters:`parameters`,returnType:`returnType`};function We(e){return St.isInstance(e,Ue.$type)}var Ge={$type:`ReferenceType`,isMulti:`isMulti`,referenceType:`referenceType`},Ke={$type:`RegexToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,regex:`regex`};function qe(e){return St.isInstance(e,Ke.$type)}var Je={$type:`ReturnType`,name:`name`};function Ye(e){return St.isInstance(e,Je.$type)}var Xe={$type:`RuleCall`,arguments:`arguments`,cardinality:`cardinality`,predicate:`predicate`,rule:`rule`};function Ze(e){return St.isInstance(e,Xe.$type)}var Qe={$type:`SimpleType`,primitiveType:`primitiveType`,stringType:`stringType`,typeRef:`typeRef`};function $e(e){return St.isInstance(e,Qe.$type)}var et={$type:`StringLiteral`,value:`value`},tt={$type:`TerminalAlternatives`,cardinality:`cardinality`,elements:`elements`,lookahead:`lookahead`,parenthesized:`parenthesized`};function nt(e){return St.isInstance(e,tt.$type)}var rt={$type:`TerminalElement`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`},it={$type:`TerminalGroup`,cardinality:`cardinality`,elements:`elements`,lookahead:`lookahead`,parenthesized:`parenthesized`};function at(e){return St.isInstance(e,it.$type)}var ot={$type:`TerminalRule`,definition:`definition`,fragment:`fragment`,hidden:`hidden`,name:`name`,type:`type`};function st(e){return St.isInstance(e,ot.$type)}var ct={$type:`TerminalRuleCall`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,rule:`rule`};function lt(e){return St.isInstance(e,ct.$type)}var ut={$type:`Type`,name:`name`,type:`type`};function dt(e){return St.isInstance(e,ut.$type)}var ft={$type:`TypeAttribute`,defaultValue:`defaultValue`,isOptional:`isOptional`,name:`name`,type:`type`},pt={$type:`TypeDefinition`},mt={$type:`UnionType`,types:`types`},ht={$type:`UnorderedGroup`,cardinality:`cardinality`,elements:`elements`};function gt(e){return St.isInstance(e,ht.$type)}var _t={$type:`UntilToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,terminal:`terminal`};function eee(e){return St.isInstance(e,_t.$type)}var vt={$type:`ValueLiteral`},yt={$type:`Wildcard`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`};function bt(e){return St.isInstance(e,yt.$type)}var xt=class extends g{constructor(){super(...arguments),this.types={AbstractElement:{name:B.$type,properties:{cardinality:{name:B.cardinality}},superTypes:[]},AbstractParserRule:{name:H.$type,properties:{},superTypes:[te.$type,U.$type]},AbstractRule:{name:te.$type,properties:{},superTypes:[]},AbstractType:{name:U.$type,properties:{},superTypes:[]},Action:{name:ne.$type,properties:{cardinality:{name:ne.cardinality},feature:{name:ne.feature},inferredType:{name:ne.inferredType},operator:{name:ne.operator},type:{name:ne.type,referenceType:U.$type}},superTypes:[B.$type]},Alternatives:{name:W.$type,properties:{cardinality:{name:W.cardinality},elements:{name:W.elements,defaultValue:[]}},superTypes:[B.$type]},ArrayLiteral:{name:K.$type,properties:{elements:{name:K.elements,defaultValue:[]}},superTypes:[vt.$type]},ArrayType:{name:ie.$type,properties:{elementType:{name:ie.elementType}},superTypes:[pt.$type]},Assignment:{name:ae.$type,properties:{cardinality:{name:ae.cardinality},feature:{name:ae.feature},operator:{name:ae.operator},predicate:{name:ae.predicate},terminal:{name:ae.terminal}},superTypes:[B.$type]},BooleanLiteral:{name:se.$type,properties:{true:{name:se.true,defaultValue:!1}},superTypes:[de.$type,vt.$type]},CharacterRange:{name:le.$type,properties:{cardinality:{name:le.cardinality},left:{name:le.left},lookahead:{name:le.lookahead},parenthesized:{name:le.parenthesized,defaultValue:!1},right:{name:le.right}},superTypes:[rt.$type]},Condition:{name:de.$type,properties:{},superTypes:[]},Conjunction:{name:fe.$type,properties:{left:{name:fe.left},right:{name:fe.right}},superTypes:[de.$type]},CrossReference:{name:me.$type,properties:{cardinality:{name:me.cardinality},deprecatedSyntax:{name:me.deprecatedSyntax,defaultValue:!1},isMulti:{name:me.isMulti,defaultValue:!1},terminal:{name:me.terminal},type:{name:me.type,referenceType:U.$type}},superTypes:[B.$type]},Disjunction:{name:ge.$type,properties:{left:{name:ge.left},right:{name:ge.right}},superTypes:[de.$type]},EndOfFile:{name:ve.$type,properties:{cardinality:{name:ve.cardinality}},superTypes:[B.$type]},Grammar:{name:be.$type,properties:{imports:{name:be.imports,defaultValue:[]},interfaces:{name:be.interfaces,defaultValue:[]},isDeclared:{name:be.isDeclared,defaultValue:!1},name:{name:be.name},rules:{name:be.rules,defaultValue:[]},types:{name:be.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:xe.$type,properties:{path:{name:xe.path}},superTypes:[]},Group:{name:Se.$type,properties:{cardinality:{name:Se.cardinality},elements:{name:Se.elements,defaultValue:[]},guardCondition:{name:Se.guardCondition},predicate:{name:Se.predicate}},superTypes:[B.$type]},InferredType:{name:we.$type,properties:{name:{name:we.name}},superTypes:[U.$type]},InfixRule:{name:Ee.$type,properties:{call:{name:Ee.call},dataType:{name:Ee.dataType},inferredType:{name:Ee.inferredType},name:{name:Ee.name},operators:{name:Ee.operators},parameters:{name:Ee.parameters,defaultValue:[]},returnType:{name:Ee.returnType,referenceType:U.$type}},superTypes:[H.$type]},InfixRuleOperatorList:{name:Oe.$type,properties:{associativity:{name:Oe.associativity},operators:{name:Oe.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:ke.$type,properties:{precedences:{name:ke.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:Ae.$type,properties:{attributes:{name:Ae.attributes,defaultValue:[]},name:{name:Ae.name},superTypes:{name:Ae.superTypes,defaultValue:[],referenceType:U.$type}},superTypes:[U.$type]},Keyword:{name:Me.$type,properties:{cardinality:{name:Me.cardinality},predicate:{name:Me.predicate},value:{name:Me.value}},superTypes:[B.$type]},NamedArgument:{name:Pe.$type,properties:{calledByName:{name:Pe.calledByName,defaultValue:!1},parameter:{name:Pe.parameter,referenceType:Be.$type},value:{name:Pe.value}},superTypes:[]},NegatedToken:{name:Fe.$type,properties:{cardinality:{name:Fe.cardinality},lookahead:{name:Fe.lookahead},parenthesized:{name:Fe.parenthesized,defaultValue:!1},terminal:{name:Fe.terminal}},superTypes:[rt.$type]},Negation:{name:Le.$type,properties:{value:{name:Le.value}},superTypes:[de.$type]},NumberLiteral:{name:ze.$type,properties:{value:{name:ze.value}},superTypes:[vt.$type]},Parameter:{name:Be.$type,properties:{name:{name:Be.name}},superTypes:[]},ParameterReference:{name:Ve.$type,properties:{parameter:{name:Ve.parameter,referenceType:Be.$type}},superTypes:[de.$type]},ParserRule:{name:Ue.$type,properties:{dataType:{name:Ue.dataType},definition:{name:Ue.definition},entry:{name:Ue.entry,defaultValue:!1},fragment:{name:Ue.fragment,defaultValue:!1},inferredType:{name:Ue.inferredType},name:{name:Ue.name},parameters:{name:Ue.parameters,defaultValue:[]},returnType:{name:Ue.returnType,referenceType:U.$type}},superTypes:[H.$type]},ReferenceType:{name:Ge.$type,properties:{isMulti:{name:Ge.isMulti,defaultValue:!1},referenceType:{name:Ge.referenceType}},superTypes:[pt.$type]},RegexToken:{name:Ke.$type,properties:{cardinality:{name:Ke.cardinality},lookahead:{name:Ke.lookahead},parenthesized:{name:Ke.parenthesized,defaultValue:!1},regex:{name:Ke.regex}},superTypes:[rt.$type]},ReturnType:{name:Je.$type,properties:{name:{name:Je.name}},superTypes:[]},RuleCall:{name:Xe.$type,properties:{arguments:{name:Xe.arguments,defaultValue:[]},cardinality:{name:Xe.cardinality},predicate:{name:Xe.predicate},rule:{name:Xe.rule,referenceType:te.$type}},superTypes:[B.$type]},SimpleType:{name:Qe.$type,properties:{primitiveType:{name:Qe.primitiveType},stringType:{name:Qe.stringType},typeRef:{name:Qe.typeRef,referenceType:U.$type}},superTypes:[pt.$type]},StringLiteral:{name:et.$type,properties:{value:{name:et.value}},superTypes:[vt.$type]},TerminalAlternatives:{name:tt.$type,properties:{cardinality:{name:tt.cardinality},elements:{name:tt.elements,defaultValue:[]},lookahead:{name:tt.lookahead},parenthesized:{name:tt.parenthesized,defaultValue:!1}},superTypes:[rt.$type]},TerminalElement:{name:rt.$type,properties:{cardinality:{name:rt.cardinality},lookahead:{name:rt.lookahead},parenthesized:{name:rt.parenthesized,defaultValue:!1}},superTypes:[B.$type]},TerminalGroup:{name:it.$type,properties:{cardinality:{name:it.cardinality},elements:{name:it.elements,defaultValue:[]},lookahead:{name:it.lookahead},parenthesized:{name:it.parenthesized,defaultValue:!1}},superTypes:[rt.$type]},TerminalRule:{name:ot.$type,properties:{definition:{name:ot.definition},fragment:{name:ot.fragment,defaultValue:!1},hidden:{name:ot.hidden,defaultValue:!1},name:{name:ot.name},type:{name:ot.type}},superTypes:[te.$type]},TerminalRuleCall:{name:ct.$type,properties:{cardinality:{name:ct.cardinality},lookahead:{name:ct.lookahead},parenthesized:{name:ct.parenthesized,defaultValue:!1},rule:{name:ct.rule,referenceType:ot.$type}},superTypes:[rt.$type]},Type:{name:ut.$type,properties:{name:{name:ut.name},type:{name:ut.type}},superTypes:[U.$type]},TypeAttribute:{name:ft.$type,properties:{defaultValue:{name:ft.defaultValue},isOptional:{name:ft.isOptional,defaultValue:!1},name:{name:ft.name},type:{name:ft.type}},superTypes:[]},TypeDefinition:{name:pt.$type,properties:{},superTypes:[]},UnionType:{name:mt.$type,properties:{types:{name:mt.types,defaultValue:[]}},superTypes:[pt.$type]},UnorderedGroup:{name:ht.$type,properties:{cardinality:{name:ht.cardinality},elements:{name:ht.elements,defaultValue:[]}},superTypes:[B.$type]},UntilToken:{name:_t.$type,properties:{cardinality:{name:_t.cardinality},lookahead:{name:_t.lookahead},parenthesized:{name:_t.parenthesized,defaultValue:!1},terminal:{name:_t.terminal}},superTypes:[rt.$type]},ValueLiteral:{name:vt.$type,properties:{},superTypes:[]},Wildcard:{name:yt.$type,properties:{cardinality:{name:yt.cardinality},lookahead:{name:yt.lookahead},parenthesized:{name:yt.parenthesized,defaultValue:!1}},superTypes:[rt.$type]}}}},St=new xt;function Ct(e){return new E(e,e=>_(e)?e.content:[],{includeRoot:!0})}function tee(e,t){for(;e.container;)if(e=e.container,e===t)return!0;return!1}function wt(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function Tt(e){if(!e)return;let{offset:t,end:n,range:r}=e;return{range:r,offset:t,end:n,length:n-t}}var Et;(function(e){e[e.Before=0]=`Before`,e[e.After=1]=`After`,e[e.OverlapFront=2]=`OverlapFront`,e[e.OverlapBack=3]=`OverlapBack`,e[e.Inside=4]=`Inside`,e[e.Outside=5]=`Outside`})(Et||={});function Dt(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return Et.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return Et.After;let n=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,r=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return n&&r?Et.Inside:n?Et.OverlapBack:r?Et.OverlapFront:Et.Outside}function Ot(e,t){return Dt(e,t)>Et.After}var nee=/^[\w\p{L}]$/u;function ree(e,t){if(e){let n=iee(e,!0);if(n&&kt(n,t))return n;if(y(e)){let n=e.content.findIndex(e=>!e.hidden);for(let r=n-1;r>=0;r--){let n=e.content[r];if(kt(n,t))return n}}}}function kt(e,t){return v(e)&&t.includes(e.tokenType.name)}function iee(e,t=!0){for(;e.container;){let n=e.container,r=n.content.indexOf(e);for(;r>0;){r--;let e=n.content[r];if(t||!e.hidden)return e}e=n}}var At=class extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};function jt(e,t=`Error: Got unexpected value.`){throw Error(t)}function Mt(e){return e.charCodeAt(0)}function Nt(e,t){Array.isArray(e)?e.forEach(function(e){t.push(e)}):t.push(e)}function Pt(e,t){if(e[t]===!0)throw`duplicate flag `+t;e[t],e[t]=!0}function Ft(e){if(e===void 0)throw Error(`Internal Error - Should never get here!`);return!0}function It(){throw Error(`Internal Error - Should never get here!`)}function Lt(e){return e.type===`Character`}var Rt=[];for(let e=Mt(`0`);e<=Mt(`9`);e++)Rt.push(e);var zt=[Mt(`_`)].concat(Rt);for(let e=Mt(`a`);e<=Mt(`z`);e++)zt.push(e);for(let e=Mt(`A`);e<=Mt(`Z`);e++)zt.push(e);var Bt=[Mt(` `),Mt(`\f`),Mt(`
2
2
  `),Mt(`\r`),Mt(` `),Mt(`\v`),Mt(` `),Mt(`\xA0`),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(`\u2028`),Mt(`\u2029`),Mt(` `),Mt(` `),Mt(` `),Mt(``)],aee=/[0-9a-fA-F]/,Vt=/[0-9]/,oee=/[1-9]/,Ht=class{constructor(){this.idx=0,this.input=``,this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar(`/`);let t=this.disjunction();this.consumeChar(`/`);let n={type:`Flags`,loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case`g`:Pt(n,`global`);break;case`i`:Pt(n,`ignoreCase`);break;case`m`:Pt(n,`multiLine`);break;case`u`:Pt(n,`unicode`);break;case`y`:Pt(n,`sticky`);break}if(this.idx!==this.input.length)throw Error(`Redundant input: `+this.input.substring(this.idx));return{type:`Pattern`,flags:n,value:t,loc:this.loc(0)}}disjunction(){let e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()===`|`;)this.consumeChar(`|`),e.push(this.alternative());return{type:`Disjunction`,value:e,loc:this.loc(t)}}alternative(){let e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:`Alternative`,value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case`^`:return{type:`StartAnchor`,loc:this.loc(e)};case`$`:return{type:`EndAnchor`,loc:this.loc(e)};case`\\`:switch(this.popChar()){case`b`:return{type:`WordBoundary`,loc:this.loc(e)};case`B`:return{type:`NonWordBoundary`,loc:this.loc(e)}}throw Error(`Invalid Assertion Escape`);case`(`:this.consumeChar(`?`);let t;switch(this.popChar()){case`=`:t=`Lookahead`;break;case`!`:t=`NegativeLookahead`;break;case`<`:switch(this.popChar()){case`=`:t=`Lookbehind`;break;case`!`:t=`NegativeLookbehind`}break}Ft(t);let n=this.disjunction();return this.consumeChar(`)`),{type:t,value:n,loc:this.loc(e)}}return It()}quantifier(e=!1){let t,n=this.idx;switch(this.popChar()){case`*`:t={atLeast:0,atMost:1/0};break;case`+`:t={atLeast:1,atMost:1/0};break;case`?`:t={atLeast:0,atMost:1};break;case`{`:let n=this.integerIncludingZero();switch(this.popChar()){case`}`:t={atLeast:n,atMost:n};break;case`,`:let e;this.isDigit()?(e=this.integerIncludingZero(),t={atLeast:n,atMost:e}):t={atLeast:n,atMost:1/0},this.consumeChar(`}`);break}if(e===!0&&t===void 0)return;Ft(t);break}if(!(e===!0&&t===void 0)&&Ft(t))return this.peekChar(0)===`?`?(this.consumeChar(`?`),t.greedy=!1):t.greedy=!0,t.type=`Quantifier`,t.loc=this.loc(n),t}atom(){let e,t=this.idx;switch(this.peekChar()){case`.`:e=this.dotAll();break;case`\\`:e=this.atomEscape();break;case`[`:e=this.characterClass();break;case`(`:e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Ft(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):It()}dotAll(){return this.consumeChar(`.`),{type:`Set`,complement:!0,value:[Mt(`
3
3
  `),Mt(`\r`),Mt(`\u2028`),Mt(`\u2029`)]}}atomEscape(){switch(this.consumeChar(`\\`),this.peekChar()){case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:return this.decimalEscapeAtom();case`d`:case`D`:case`s`:case`S`:case`w`:case`W`:return this.characterClassEscape();case`f`:case`n`:case`r`:case`t`:case`v`:return this.controlEscapeAtom();case`c`:return this.controlLetterEscapeAtom();case`0`:return this.nulCharacterAtom();case`x`:return this.hexEscapeSequenceAtom();case`u`:return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:`GroupBackReference`,value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case`d`:e=Rt;break;case`D`:e=Rt,t=!0;break;case`s`:e=Bt;break;case`S`:e=Bt,t=!0;break;case`w`:e=zt;break;case`W`:e=zt,t=!0;break}return Ft(e)?{type:`Set`,value:e,complement:t}:It()}controlEscapeAtom(){let e;switch(this.popChar()){case`f`:e=Mt(`\f`);break;case`n`:e=Mt(`
4
4
  `);break;case`r`:e=Mt(`\r`);break;case`t`:e=Mt(` `);break;case`v`:e=Mt(`\v`);break}return Ft(e)?{type:`Character`,value:e}:It()}controlLetterEscapeAtom(){this.consumeChar(`c`);let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error(`Invalid `);return{type:`Character`,value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar(`0`),{type:`Character`,value:Mt(`\0`)}}hexEscapeSequenceAtom(){return this.consumeChar(`x`),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar(`u`),this.parseHexDigits(4)}identityEscapeAtom(){return{type:`Character`,value:Mt(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case`
@@ -240,7 +240,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
240
240
  `))}Y(Rk,`preprocessMarkdown`);function zk(e){return e.split(/\\n|\n|<br\s*\/?>/gi).map(e=>e.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(e=>({content:e,type:`normal`}))??[])}Y(zk,`nonMarkdownToLines`);function Bk(e,t={}){let n=Rk(e,t),r=Ak.lexer(n),i=[[]],a=0;function o(e,t=`normal`){e.type===`text`?e.text.split(`
241
241
  `).forEach((e,n)=>{n!==0&&(a++,i.push([])),e.split(` `).forEach(e=>{e=e.replace(/&#39;/g,`'`),e&&i[a].push({content:e,type:t})})}):e.type===`strong`||e.type===`em`?e.tokens.forEach(t=>{o(t,e.type)}):e.type===`html`&&i[a].push({content:e.text,type:`normal`})}return Y(o,`processNode`),r.forEach(e=>{e.type===`paragraph`?e.tokens?.forEach(e=>{o(e)}):e.type===`html`?i[a].push({content:e.text,type:`normal`}):i[a].push({content:e.raw,type:`normal`})}),i}Y(Bk,`markdownToLines`);function Vk(e){return e?`<p>${e.replace(/\\n|\n/g,`<br />`)}</p>`:``}Y(Vk,`nonMarkdownToHTML`);function Hk(e,{markdownAutoWrap:t}={}){let n=Ak.lexer(e);function r(e){return e.type===`text`?t===!1?e.text.replace(/\n */g,`<br/>`).replace(/ /g,`&nbsp;`):e.text.replace(/\n */g,`<br/>`):e.type===`strong`?`<strong>${e.tokens?.map(r).join(``)}</strong>`:e.type===`em`?`<em>${e.tokens?.map(r).join(``)}</em>`:e.type===`paragraph`?`<p>${e.tokens?.map(r).join(``)}</p>`:e.type===`space`?``:e.type===`html`?`${e.text}`:e.type===`escape`?e.text:(X.warn(`Unsupported markdown: ${e.type}`),e.raw)}return Y(r,`output`),n.map(r).join(``)}Y(Hk,`markdownToHTML`);function Uk(e){return Intl.Segmenter?[...new Intl.Segmenter().segment(e)].map(e=>e.segment):[...e]}Y(Uk,`splitTextToChars`);function Wk(e,t){return Gk(e,[],Uk(t.content),t.type)}Y(Wk,`splitWordToFitWidth`);function Gk(e,t,n,r){if(n.length===0)return[{content:t.join(``),type:r},{content:``,type:r}];let[i,...a]=n,o=[...t,i];return e([{content:o.join(``),type:r}])?Gk(e,o,a,r):(t.length===0&&i&&(t.push(i),n.shift()),[{content:t.join(``),type:r},{content:n.join(``),type:r}])}Y(Gk,`splitWordToFitWidthRecursion`);function Kk(e,t){if(e.some(({content:e})=>e.includes(`
242
242
  `)))throw Error(`splitLineToFitWidth does not support newlines in the line`);return qk(e,t)}Y(Kk,`splitLineToFitWidth`);function qk(e,t,n=[],r=[]){if(e.length===0)return r.length>0&&n.push(r),n.length>0?n:[];let i=``;e[0].content===` `&&(i=` `,e.shift());let a=e.shift()??{content:` `,type:`normal`},o=[...r];if(i!==``&&o.push({content:i,type:`normal`}),o.push(a),t(o))return qk(e,t,n,o);if(r.length>0)n.push(r),e.unshift(a);else if(a.content){let[r,i]=Wk(t,a);n.push([r]),i.content&&e.unshift(i)}return qk(e,t,n)}Y(qk,`splitLineToFitWidthRecursion`);function Jk(e,t){t&&e.attr(`style`,t)}Y(Jk,`applyStyle`);var Yk=16384;async function Xk(e,t,n,r,i=!1,a=Sv()){let o=e.append(`foreignObject`);o.attr(`width`,`${Math.min(10*n,Yk)}px`),o.attr(`height`,`${Math.min(10*n,Yk)}px`);let s=o.append(`xhtml:div`),l=Bv(t.label)?await Hv(t.label.replace(Uv.lineBreakRegex,`
243
- `),a):Nv(t.label,a),u=t.isNode?`nodeLabel`:`edgeLabel`,d=s.append(`span`);d.html(l),Jk(d,t.labelStyle),d.attr(`class`,`${u} ${r}`),Jk(s,t.labelStyle),s.style(`display`,`table-cell`),s.style(`white-space`,`nowrap`),s.style(`line-height`,`1.5`),n!==1/0&&(s.style(`max-width`,n+`px`),s.style(`text-align`,`center`)),s.attr(`xmlns`,`http://www.w3.org/1999/xhtml`),i&&s.attr(`class`,`labelBkg`);let f=s.node().getBoundingClientRect();return f.width===n&&(s.style(`display`,`table`),s.style(`white-space`,`break-spaces`),s.style(`width`,n+`px`),f=s.node().getBoundingClientRect()),o.node()}Y(Xk,`addHtmlSpan`);function Zk(e,t,n,r=!1){let i=e.append(`tspan`).attr(`class`,`text-outer-tspan`).attr(`x`,0).attr(`y`,t*n-.1+`em`).attr(`dy`,n+`em`);return r&&i.attr(`text-anchor`,`middle`),i}Y(Zk,`createTspan`);function Qk(e,t,n){let r=e.append(`text`),i=Zk(r,1,t);tA(i,n);let a=i.node().getComputedTextLength();return r.remove(),a}Y(Qk,`computeWidthOfText`);function $k(e,t,n){let r=e.append(`text`),i=Zk(r,1,t);tA(i,[{content:n,type:`normal`}]);let a=i.node()?.getBoundingClientRect();return a&&r.remove(),a}Y($k,`computeDimensionOfText`);function eA(e,t,n,r=!1,i=!1){let a=1.1,o=t.append(`g`),s=o.insert(`rect`).attr(`class`,`background`).attr(`style`,`stroke: none`),l=o.append(`text`).attr(`y`,`-10.1`);i&&l.attr(`text-anchor`,`middle`);let u=0;for(let t of n){let n=Y(t=>Qk(o,a,t)<=e,`checkWidth`),r=n(t)?[t]:Kk(t,n);for(let e of r)tA(Zk(l,u,a,i),e),u++}if(r){let e=l.node().getBBox();return s.attr(`x`,e.x-2).attr(`y`,e.y-2).attr(`width`,e.width+4).attr(`height`,e.height+4),o.node()}else return l.node()}Y(eA,`createFormattedText`);function tA(e,t){e.text(``),t.forEach((t,n)=>{let r=e.append(`tspan`).attr(`font-style`,t.type===`em`?`italic`:`normal`).attr(`class`,`text-inner-tspan`).attr(`font-weight`,t.type===`strong`?`bold`:`normal`);n===0?r.text(t.content):r.text(` `+t.content)})}Y(tA,`updateTextContentAndStyles`);async function nA(e,t={}){let n=[];e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(e,r,i)=>(n.push((async()=>{let n=`${r}:${i}`;return await Npe(n)?await Lk(n,void 0,{class:`label-icon`}):`<i class='${Nv(e,t).replace(`:`,` `)}'></i>`})()),e));let r=await Promise.all(n);return e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>r.shift()??``)}Y(nA,`replaceIconSubstring`);var rA=Y(async(e,t=``,{style:n=``,isTitle:r=!1,classes:i=``,useHtmlLabels:a=!0,markdown:o=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},d)=>{if(X.debug(`XYZ createText`,t,n,r,i,a,s,`addSvgBackground: `,u),a){let r=await nA(OO(o?Hk(t,d):Vk(t)),d),a=t.replace(/\\\\/g,`\\`);return await Xk(e,{isNode:s,label:Bv(t)?a:r,labelStyle:n.replace(`fill:`,`color:`)},l,i,u,d)}else{let i=t.replace(/<br\s*\/?>/g,`<br/>`),a=eA(l,e,o?Bk(i.replace(`<br>`,`<br/>`),d):zk(i),t?u:!1,!s);if(s){/stroke:/.exec(n)&&(n=n.replace(`stroke:`,`lineColor:`));let e=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/color:/g,`fill:`);bx(a).attr(`style`,e)}else{let e=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/background:/g,`fill:`);bx(a).select(`rect`).attr(`style`,e.replace(/background:/g,`fill:`));let t=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/color:/g,`fill:`);bx(a).select(`text`).attr(`style`,t)}return r?bx(a).selectAll(`tspan.text-outer-tspan`).classed(`title-row`,!0):bx(a).selectAll(`tspan.text-outer-tspan`).classed(`row`,!0),a}},`createText`);function iA(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}Y(iA,`populateCommonDb`);var aA={},Ppe={info:Ih(async()=>{let{createInfoServices:e}=await u(async()=>{let{createInfoServices:e}=await import(`./info-3K5VOQVL-CevMMhkM.js`);return{createInfoServices:e}},[]);aA.info=e().Info.parser.LangiumParser},`info`),packet:Ih(async()=>{let{createPacketServices:e}=await u(async()=>{let{createPacketServices:e}=await import(`./packet-RMMSAZCW-CBPKYQg3.js`);return{createPacketServices:e}},[]);aA.packet=e().Packet.parser.LangiumParser},`packet`),pie:Ih(async()=>{let{createPieServices:e}=await u(async()=>{let{createPieServices:e}=await import(`./pie-UPGHQEXC-BA4yGjJM.js`);return{createPieServices:e}},[]);aA.pie=e().Pie.parser.LangiumParser},`pie`),architecture:Ih(async()=>{let{createArchitectureServices:e}=await u(async()=>{let{createArchitectureServices:e}=await import(`./architecture-PBZL5I3N-zg_XUpAf.js`);return{createArchitectureServices:e}},[]);aA.architecture=e().Architecture.parser.LangiumParser},`architecture`),gitGraph:Ih(async()=>{let{createGitGraphServices:e}=await u(async()=>{let{createGitGraphServices:e}=await import(`./gitGraph-HDMCJU4V-CAfOBCyo.js`);return{createGitGraphServices:e}},[]);aA.gitGraph=e().GitGraph.parser.LangiumParser},`gitGraph`),radar:Ih(async()=>{let{createRadarServices:e}=await u(async()=>{let{createRadarServices:e}=await import(`./radar-KQ55EAFF-0aJoWjiU.js`);return{createRadarServices:e}},[]);aA.radar=e().Radar.parser.LangiumParser},`radar`),treemap:Ih(async()=>{let{createTreemapServices:e}=await u(async()=>{let{createTreemapServices:e}=await import(`./treemap-KZPCXAKY-C2M84arV.js`);return{createTreemapServices:e}},[]);aA.treemap=e().Treemap.parser.LangiumParser},`treemap`)};async function oA(e,t){let n=Ppe[e];if(!n)throw Error(`Unknown diagram type: ${e}`);aA[e]||await n();let r=aA[e].parse(t);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new Fpe(r);return r.value}Ih(oA,`parse`);var Fpe=class extends Error{constructor(e){let t=e.lexerErrors.map(e=>`Lexer error on line ${e.line!==void 0&&!isNaN(e.line)?e.line:`?`}, column ${e.column!==void 0&&!isNaN(e.column)?e.column:`?`}: ${e.message}`).join(`
243
+ `),a):Nv(t.label,a),u=t.isNode?`nodeLabel`:`edgeLabel`,d=s.append(`span`);d.html(l),Jk(d,t.labelStyle),d.attr(`class`,`${u} ${r}`),Jk(s,t.labelStyle),s.style(`display`,`table-cell`),s.style(`white-space`,`nowrap`),s.style(`line-height`,`1.5`),n!==1/0&&(s.style(`max-width`,n+`px`),s.style(`text-align`,`center`)),s.attr(`xmlns`,`http://www.w3.org/1999/xhtml`),i&&s.attr(`class`,`labelBkg`);let f=s.node().getBoundingClientRect();return f.width===n&&(s.style(`display`,`table`),s.style(`white-space`,`break-spaces`),s.style(`width`,n+`px`),f=s.node().getBoundingClientRect()),o.node()}Y(Xk,`addHtmlSpan`);function Zk(e,t,n,r=!1){let i=e.append(`tspan`).attr(`class`,`text-outer-tspan`).attr(`x`,0).attr(`y`,t*n-.1+`em`).attr(`dy`,n+`em`);return r&&i.attr(`text-anchor`,`middle`),i}Y(Zk,`createTspan`);function Qk(e,t,n){let r=e.append(`text`),i=Zk(r,1,t);tA(i,n);let a=i.node().getComputedTextLength();return r.remove(),a}Y(Qk,`computeWidthOfText`);function $k(e,t,n){let r=e.append(`text`),i=Zk(r,1,t);tA(i,[{content:n,type:`normal`}]);let a=i.node()?.getBoundingClientRect();return a&&r.remove(),a}Y($k,`computeDimensionOfText`);function eA(e,t,n,r=!1,i=!1){let a=1.1,o=t.append(`g`),s=o.insert(`rect`).attr(`class`,`background`).attr(`style`,`stroke: none`),l=o.append(`text`).attr(`y`,`-10.1`);i&&l.attr(`text-anchor`,`middle`);let u=0;for(let t of n){let n=Y(t=>Qk(o,a,t)<=e,`checkWidth`),r=n(t)?[t]:Kk(t,n);for(let e of r)tA(Zk(l,u,a,i),e),u++}if(r){let e=l.node().getBBox();return s.attr(`x`,e.x-2).attr(`y`,e.y-2).attr(`width`,e.width+4).attr(`height`,e.height+4),o.node()}else return l.node()}Y(eA,`createFormattedText`);function tA(e,t){e.text(``),t.forEach((t,n)=>{let r=e.append(`tspan`).attr(`font-style`,t.type===`em`?`italic`:`normal`).attr(`class`,`text-inner-tspan`).attr(`font-weight`,t.type===`strong`?`bold`:`normal`);n===0?r.text(t.content):r.text(` `+t.content)})}Y(tA,`updateTextContentAndStyles`);async function nA(e,t={}){let n=[];e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(e,r,i)=>(n.push((async()=>{let n=`${r}:${i}`;return await Npe(n)?await Lk(n,void 0,{class:`label-icon`}):`<i class='${Nv(e,t).replace(`:`,` `)}'></i>`})()),e));let r=await Promise.all(n);return e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>r.shift()??``)}Y(nA,`replaceIconSubstring`);var rA=Y(async(e,t=``,{style:n=``,isTitle:r=!1,classes:i=``,useHtmlLabels:a=!0,markdown:o=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},d)=>{if(X.debug(`XYZ createText`,t,n,r,i,a,s,`addSvgBackground: `,u),a){let r=await nA(OO(o?Hk(t,d):Vk(t)),d),a=t.replace(/\\\\/g,`\\`);return await Xk(e,{isNode:s,label:Bv(t)?a:r,labelStyle:n.replace(`fill:`,`color:`)},l,i,u,d)}else{let i=t.replace(/<br\s*\/?>/g,`<br/>`),a=eA(l,e,o?Bk(i.replace(`<br>`,`<br/>`),d):zk(i),t?u:!1,!s);if(s){/stroke:/.exec(n)&&(n=n.replace(`stroke:`,`lineColor:`));let e=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/color:/g,`fill:`);bx(a).attr(`style`,e)}else{let e=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/background:/g,`fill:`);bx(a).select(`rect`).attr(`style`,e.replace(/background:/g,`fill:`));let t=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/color:/g,`fill:`);bx(a).select(`text`).attr(`style`,t)}return r?bx(a).selectAll(`tspan.text-outer-tspan`).classed(`title-row`,!0):bx(a).selectAll(`tspan.text-outer-tspan`).classed(`row`,!0),a}},`createText`);function iA(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}Y(iA,`populateCommonDb`);var aA={},Ppe={info:Ih(async()=>{let{createInfoServices:e}=await u(async()=>{let{createInfoServices:e}=await import(`./info-3K5VOQVL-BDE-e-D2.js`);return{createInfoServices:e}},[]);aA.info=e().Info.parser.LangiumParser},`info`),packet:Ih(async()=>{let{createPacketServices:e}=await u(async()=>{let{createPacketServices:e}=await import(`./packet-RMMSAZCW-CEiM7H81.js`);return{createPacketServices:e}},[]);aA.packet=e().Packet.parser.LangiumParser},`packet`),pie:Ih(async()=>{let{createPieServices:e}=await u(async()=>{let{createPieServices:e}=await import(`./pie-UPGHQEXC-DhBYRSnI.js`);return{createPieServices:e}},[]);aA.pie=e().Pie.parser.LangiumParser},`pie`),architecture:Ih(async()=>{let{createArchitectureServices:e}=await u(async()=>{let{createArchitectureServices:e}=await import(`./architecture-PBZL5I3N-B9sV3kyt.js`);return{createArchitectureServices:e}},[]);aA.architecture=e().Architecture.parser.LangiumParser},`architecture`),gitGraph:Ih(async()=>{let{createGitGraphServices:e}=await u(async()=>{let{createGitGraphServices:e}=await import(`./gitGraph-HDMCJU4V-BCsg0_Oa.js`);return{createGitGraphServices:e}},[]);aA.gitGraph=e().GitGraph.parser.LangiumParser},`gitGraph`),radar:Ih(async()=>{let{createRadarServices:e}=await u(async()=>{let{createRadarServices:e}=await import(`./radar-KQ55EAFF-Clvc0804.js`);return{createRadarServices:e}},[]);aA.radar=e().Radar.parser.LangiumParser},`radar`),treemap:Ih(async()=>{let{createTreemapServices:e}=await u(async()=>{let{createTreemapServices:e}=await import(`./treemap-KZPCXAKY-bRKWoUUh.js`);return{createTreemapServices:e}},[]);aA.treemap=e().Treemap.parser.LangiumParser},`treemap`)};async function oA(e,t){let n=Ppe[e];if(!n)throw Error(`Unknown diagram type: ${e}`);aA[e]||await n();let r=aA[e].parse(t);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new Fpe(r);return r.value}Ih(oA,`parse`);var Fpe=class extends Error{constructor(e){let t=e.lexerErrors.map(e=>`Lexer error on line ${e.line!==void 0&&!isNaN(e.line)?e.line:`?`}, column ${e.column!==void 0&&!isNaN(e.column)?e.column:`?`}: ${e.message}`).join(`
244
244
  `),n=e.parserErrors.map(e=>`Parse error on line ${e.token.startLine!==void 0&&!isNaN(e.token.startLine)?e.token.startLine:`?`}, column ${e.token.startColumn!==void 0&&!isNaN(e.token.startColumn)?e.token.startColumn:`?`}: ${e.message}`).join(`
245
245
  `);super(`Parsing failed: ${t} ${n}`),this.result=e}static{Ih(this,`MermaidParseError`)}};function sA(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Ipe(e){if(Array.isArray(e))return e}function Lpe(e){if(Array.isArray(e))return sA(e)}function cA(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Rpe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,mA(r.key),r)}}function lA(e,t,n){return t&&Rpe(e.prototype,t),Object.defineProperty(e,`prototype`,{writable:!1}),e}function uA(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=gA(e))||t){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
246
246
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(s)throw a}}}}function dA(e,t,n){return(t=mA(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zpe(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function Bpe(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],l=!0,u=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,i=e}finally{try{if(!l&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function Vpe(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
@@ -1 +1 @@
1
- import{b as e}from"./vendor-markdown-0Mxgxy0L.js";import{t}from"./file-exclamation-point-Baz81y5z.js";import"./api-client-bbJLzRVE.js";import{mt as n}from"./index-DUQla965.js";import{t as r}from"./use-blob-url-BiQjyxOy.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load video.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`video`,{src:o,controls:!0,className:`max-w-full max-h-full`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as VideoPreview};
1
+ import{b as e}from"./vendor-markdown-0Mxgxy0L.js";import{t}from"./file-exclamation-point-Baz81y5z.js";import"./api-client-bbJLzRVE.js";import{mt as n}from"./index-DFsZOUXU.js";import{t as r}from"./use-blob-url-BiQjyxOy.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load video.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`video`,{src:o,controls:!0,className:`max-w-full max-h-full`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as VideoPreview};
@@ -39,9 +39,9 @@
39
39
  <link rel="preconnect" href="https://fonts.googleapis.com" />
40
40
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
41
41
  <link href="https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400;500;600;700&family=Geist:wght@400;500;600;700&display=swap" rel="stylesheet" />
42
- <script type="module" crossorigin src="/assets/index-DUQla965.js"></script>
42
+ <script type="module" crossorigin src="/assets/index-DFsZOUXU.js"></script>
43
43
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-FhOqtrmT.js">
44
- <link rel="modulepreload" crossorigin href="/assets/vendor-mermaid-Bfbv_YGB.js">
44
+ <link rel="modulepreload" crossorigin href="/assets/vendor-mermaid-v5g7E-EQ.js">
45
45
  <link rel="modulepreload" crossorigin href="/assets/vendor-markdown-0Mxgxy0L.js">
46
46
  <link rel="modulepreload" crossorigin href="/assets/vendor-ui-UXCWAcmi.js">
47
47
  <link rel="modulepreload" crossorigin href="/assets/utils-B1vxU5xS.js">
@@ -50,7 +50,7 @@
50
50
  <link rel="modulepreload" crossorigin href="/assets/input-BDYfKz0A.js">
51
51
  <link rel="modulepreload" crossorigin href="/assets/react-9ZmE0_ty.js">
52
52
  <link rel="modulepreload" crossorigin href="/assets/api-client-bbJLzRVE.js">
53
- <link rel="modulepreload" crossorigin href="/assets/settings-store-BL2a9FtJ.js">
53
+ <link rel="modulepreload" crossorigin href="/assets/settings-store-B5e8CNie.js">
54
54
  <link rel="modulepreload" crossorigin href="/assets/eye-off-BacF7RVS.js">
55
55
  <link rel="modulepreload" crossorigin href="/assets/chevron-down-CiFNPrfI.js">
56
56
  <link rel="modulepreload" crossorigin href="/assets/database-NmqHg29g.js">
package/dist/web/sw.js CHANGED
@@ -1 +1 @@
1
- try{self[`workbox:core:7.3.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}},n={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},r=e=>[n.prefix,e,n.suffix].filter(e=>e&&e.length>0).join(`-`),i=e=>{for(let t of Object.keys(n))e(t)},a={updateDetails:e=>{i(t=>{typeof e[t]==`string`&&(n[t]=e[t])})},getGoogleAnalyticsName:e=>e||r(n.googleAnalytics),getPrecacheName:e=>e||r(n.precache),getPrefix:()=>n.prefix,getRuntimeName:e=>e||r(n.runtime),getSuffix:()=>n.suffix};function o(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.3.0`]&&_()}catch{}var s=`__WB_REVISION__`;function c(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(s,n),{cacheKey:i.href,url:a.href}}var l=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},u=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function f(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function p(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=f()?i.body:await i.blob();return new Response(s,o)}var m=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function h(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function g(e,t,n,r){let i=h(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===h(t.url,n))return e.match(t,r)}var v=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},y=new Set;async function b(){for(let e of y)await e()}function x(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.3.0`]&&_()}catch{}function S(e){return typeof e==`string`?new Request(e):e}var C=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=S(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=S(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=S(e);await x(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:m(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await g(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await b(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=S(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},w=class{constructor(e={}){this.cacheName=a.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new C(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},T=class e extends w{constructor(t={}){t.cacheName=a.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};T.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},T.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await p(e):e}};var E=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new T({cacheName:a.getPrecacheName(e),plugins:[...t,new u({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=c(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return o(e,async()=>{let t=new l;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return o(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},D,O=()=>(D||=new E,D);try{self[`workbox:routing:7.3.0`]&&_()}catch{}var k=e=>e&&typeof e==`object`?e:{handle:e},A=class{constructor(e,t,n=`GET`){this.handler=k(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=k(e)}},j=class extends A{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},M=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,k(e))}setCatchHandler(e){this._catchHandler=k(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},N,P=()=>(N||(N=new M,N.addFetchListener(),N.addCacheListener()),N);function F(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new A(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new j(e,n,r);else if(typeof e==`function`)i=new A(e,n,r);else if(e instanceof A)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return P().registerRoute(i),i}function I(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*L(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=I(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var R=class extends A{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of L(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function z(e){F(new R(O(),e))}function B(e){O().precache(e)}function V(e,t){B(e),z(t)}V([{"revision":"1872c500de691dce40960bb85481de07","url":"registerSW.js"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"138a36653c98182b0a315a532e48736c","url":"index.html"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":null,"url":"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2"},{"revision":null,"url":"assets/api-settings-CQWMP6tw.js"},{"revision":null,"url":"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2"},{"revision":null,"url":"assets/image-preview-7bjGlR19.js"},{"revision":null,"url":"assets/csv-preview-DqoFTfkO.js"},{"revision":null,"url":"assets/react-9ZmE0_ty.js"},{"revision":null,"url":"assets/utils-B1vxU5xS.js"},{"revision":null,"url":"assets/arrow-down-D825m4vm.js"},{"revision":null,"url":"assets/extension-webview-QeJr_2ep.js"},{"revision":null,"url":"assets/video-preview-CKxVc4yo.js"},{"revision":null,"url":"assets/table-BzjWcs87.js"},{"revision":null,"url":"assets/KaTeX_Main-Regular-B22Nviop.woff2"},{"revision":null,"url":"assets/trash-2-D5P4y8p_.js"},{"revision":null,"url":"assets/audio-preview-BDvRxNLM.js"},{"revision":null,"url":"assets/sparkles-CulWHe4c.js"},{"revision":null,"url":"assets/file-exclamation-point-Baz81y5z.js"},{"revision":null,"url":"assets/packet-RMMSAZCW-CBPKYQg3.js"},{"revision":null,"url":"assets/dist-JYGF-20y.js"},{"revision":null,"url":"assets/github.min-D2BCvnWf.css"},{"revision":null,"url":"assets/code-editor-BTazCHFV.js"},{"revision":null,"url":"assets/wifi-cAuzu8sM.js"},{"revision":null,"url":"assets/dist-B5ErTtYs.js"},{"revision":null,"url":"assets/chat-tab-BufLWyuh.js"},{"revision":null,"url":"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2"},{"revision":null,"url":"assets/csv-parser-B9nz_FWE.js"},{"revision":null,"url":"assets/katex-DxcN2mZR.js"},{"revision":null,"url":"assets/chevron-right-BzAdxJRG.js"},{"revision":null,"url":"assets/port-forwarding-tab-CJmXr1Y_.js"},{"revision":null,"url":"assets/glide-data-grid-nthEL3fk.css"},{"revision":null,"url":"assets/git-log-panel-BeJ1dm7u.js"},{"revision":null,"url":"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2"},{"revision":null,"url":"assets/shield-off-C_MK1u09.js"},{"revision":null,"url":"assets/vendor-markdown-0Mxgxy0L.js"},{"revision":null,"url":"assets/vendor-xterm-vh96p1Au.js"},{"revision":null,"url":"assets/system-monitor-tab-Bpjmj8cy.js"},{"revision":null,"url":"assets/terminal-tab-DoAf-HTf.js"},{"revision":null,"url":"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2"},{"revision":null,"url":"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2"},{"revision":null,"url":"assets/api-client-bbJLzRVE.js"},{"revision":null,"url":"assets/sqlite-viewer-Dpz0BVbf.js"},{"revision":null,"url":"assets/postgres-viewer-CaXJeBw1.js"},{"revision":null,"url":"assets/database-NmqHg29g.js"},{"revision":null,"url":"assets/chevron-down-CiFNPrfI.js"},{"revision":null,"url":"assets/notification-store-FhBnY4N6.js"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2"},{"revision":null,"url":"assets/esm-A3ZetkGj.js"},{"revision":null,"url":"assets/tab-store-B_Kf29se.js"},{"revision":null,"url":"assets/project-store-Byuc-f31.js"},{"revision":null,"url":"assets/input-BDYfKz0A.js"},{"revision":null,"url":"assets/rolldown-runtime-FhOqtrmT.js"},{"revision":null,"url":"assets/docx-preview-B_twNQVN.js"},{"revision":null,"url":"assets/panel-store-BETELS-N.js"},{"revision":null,"url":"assets/vendor-ui-UXCWAcmi.js"},{"revision":null,"url":"assets/info-3K5VOQVL-CevMMhkM.js"},{"revision":null,"url":"assets/KaTeX_Math-Italic-t53AETM-.woff2"},{"revision":null,"url":"assets/github-dark-dimmed.min-BrpRStFV.css"},{"revision":null,"url":"assets/pie-UPGHQEXC-BA4yGjJM.js"},{"revision":null,"url":"assets/pdf-preview-DFU1txpL.js"},{"revision":null,"url":"assets/markdown-renderer-DNM11etB.js"},{"revision":null,"url":"assets/use-blob-url-BiQjyxOy.js"},{"revision":null,"url":"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2"},{"revision":null,"url":"assets/KaTeX_Script-Regular-D3wIWfF6.woff2"},{"revision":null,"url":"assets/arrow-up-Rcw6_KKu.js"},{"revision":null,"url":"assets/gitGraph-HDMCJU4V-CAfOBCyo.js"},{"revision":null,"url":"assets/eye-off-BacF7RVS.js"},{"revision":null,"url":"assets/sql-query-editor-BVz7tnJt.js"},{"revision":null,"url":"assets/KaTeX_Main-Bold-Cx986IdX.woff2"},{"revision":null,"url":"assets/conflict-editor-_26EuzFY.js"},{"revision":null,"url":"assets/diff-viewer-BqajGrQu.js"},{"revision":null,"url":"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2"},{"revision":null,"url":"assets/x-BVxklgnd.js"},{"revision":null,"url":"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2"},{"revision":null,"url":"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2"},{"revision":null,"url":"assets/architecture-PBZL5I3N-zg_XUpAf.js"},{"revision":null,"url":"assets/data-grid-overlay-editor-DZGHoBdv.js"},{"revision":null,"url":"assets/radar-KQ55EAFF-0aJoWjiU.js"},{"revision":null,"url":"assets/keybindings-store-C6fOhpuR.js"},{"revision":null,"url":"assets/createLucideIcon-BjHrJDVb.js"},{"revision":null,"url":"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2"},{"revision":null,"url":"assets/database-viewer-4Zhmq-Y_.js"},{"revision":null,"url":"assets/code-CuravVys.js"},{"revision":null,"url":"assets/data-grid-types-DcEKQO3y.js"},{"revision":null,"url":"assets/settings-store-BL2a9FtJ.js"},{"revision":null,"url":"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2"},{"revision":null,"url":"assets/index-DXxsPKPw.css"},{"revision":null,"url":"assets/search-BEy08Exr.js"},{"revision":null,"url":"assets/number-overlay-editor-DSno9uQL.js"},{"revision":null,"url":"assets/treemap-KZPCXAKY-C2M84arV.js"},{"revision":null,"url":"assets/vendor-mermaid-Bfbv_YGB.js"},{"revision":null,"url":"assets/shield-check-77W0OMbn.js"},{"revision":null,"url":"assets/use-monaco-theme-B9wG8s0C.js"},{"revision":null,"url":"assets/index-DUQla965.js"},{"revision":null,"url":"assets/lib-D4CEhqqn.js"},{"revision":null,"url":"assets/glide-data-grid-oGWwEx-C.js"},{"revision":null,"url":"assets/vendor-xterm-BrP-ENHg.css"},{"revision":null,"url":"assets/settings-tab-CvqKKtLt.js"},{"revision":null,"url":"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2"},{"revision":"d0f94ce046cf8cf09605ee7664dac557","url":"monacoeditorwork/html.worker.bundle.js"},{"revision":"a424156a79b9c1b907db93aa3180585a","url":"monacoeditorwork/editor.worker.bundle.js"},{"revision":"b3a7f967560c9816492a1567b3f7f0dc","url":"monacoeditorwork/css.worker.bundle.js"},{"revision":"a5d8a1acfc29c2a4c882a54ffc93def3","url":"monacoeditorwork/json.worker.bundle.js"},{"revision":"948e060affb598c339be40d69e1f6f9c","url":"monacoeditorwork/ts.worker.bundle.js"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"26dccd02a2ef7522892015154f5e3680","url":"manifest.webmanifest"}]);
1
+ try{self[`workbox:core:7.3.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}},n={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},r=e=>[n.prefix,e,n.suffix].filter(e=>e&&e.length>0).join(`-`),i=e=>{for(let t of Object.keys(n))e(t)},a={updateDetails:e=>{i(t=>{typeof e[t]==`string`&&(n[t]=e[t])})},getGoogleAnalyticsName:e=>e||r(n.googleAnalytics),getPrecacheName:e=>e||r(n.precache),getPrefix:()=>n.prefix,getRuntimeName:e=>e||r(n.runtime),getSuffix:()=>n.suffix};function o(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.3.0`]&&_()}catch{}var s=`__WB_REVISION__`;function c(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(s,n),{cacheKey:i.href,url:a.href}}var l=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},u=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function f(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function p(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=f()?i.body:await i.blob();return new Response(s,o)}var m=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function h(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function g(e,t,n,r){let i=h(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===h(t.url,n))return e.match(t,r)}var v=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},y=new Set;async function b(){for(let e of y)await e()}function x(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.3.0`]&&_()}catch{}function S(e){return typeof e==`string`?new Request(e):e}var C=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=S(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=S(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=S(e);await x(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:m(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await g(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await b(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=S(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},w=class{constructor(e={}){this.cacheName=a.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new C(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},T=class e extends w{constructor(t={}){t.cacheName=a.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};T.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},T.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await p(e):e}};var E=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new T({cacheName:a.getPrecacheName(e),plugins:[...t,new u({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=c(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return o(e,async()=>{let t=new l;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return o(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},D,O=()=>(D||=new E,D);try{self[`workbox:routing:7.3.0`]&&_()}catch{}var k=e=>e&&typeof e==`object`?e:{handle:e},A=class{constructor(e,t,n=`GET`){this.handler=k(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=k(e)}},j=class extends A{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},M=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,k(e))}setCatchHandler(e){this._catchHandler=k(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},N,P=()=>(N||(N=new M,N.addFetchListener(),N.addCacheListener()),N);function F(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new A(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new j(e,n,r);else if(typeof e==`function`)i=new A(e,n,r);else if(e instanceof A)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return P().registerRoute(i),i}function I(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*L(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=I(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var R=class extends A{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of L(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function z(e){F(new R(O(),e))}function B(e){O().precache(e)}function V(e,t){B(e),z(t)}V([{"revision":"1872c500de691dce40960bb85481de07","url":"registerSW.js"},{"revision":"a70a82b2893ee58fa2e8d2e411f0fbdf","url":"index.html"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"948e060affb598c339be40d69e1f6f9c","url":"monacoeditorwork/ts.worker.bundle.js"},{"revision":"a5d8a1acfc29c2a4c882a54ffc93def3","url":"monacoeditorwork/json.worker.bundle.js"},{"revision":"d0f94ce046cf8cf09605ee7664dac557","url":"monacoeditorwork/html.worker.bundle.js"},{"revision":"a424156a79b9c1b907db93aa3180585a","url":"monacoeditorwork/editor.worker.bundle.js"},{"revision":"b3a7f967560c9816492a1567b3f7f0dc","url":"monacoeditorwork/css.worker.bundle.js"},{"revision":null,"url":"assets/x-BVxklgnd.js"},{"revision":null,"url":"assets/wifi-cAuzu8sM.js"},{"revision":null,"url":"assets/video-preview-B7FgYduA.js"},{"revision":null,"url":"assets/vendor-xterm-vh96p1Au.js"},{"revision":null,"url":"assets/vendor-xterm-BrP-ENHg.css"},{"revision":null,"url":"assets/vendor-ui-UXCWAcmi.js"},{"revision":null,"url":"assets/vendor-mermaid-v5g7E-EQ.js"},{"revision":null,"url":"assets/vendor-markdown-0Mxgxy0L.js"},{"revision":null,"url":"assets/utils-B1vxU5xS.js"},{"revision":null,"url":"assets/use-monaco-theme-DAPyqocR.js"},{"revision":null,"url":"assets/use-blob-url-BiQjyxOy.js"},{"revision":null,"url":"assets/treemap-KZPCXAKY-bRKWoUUh.js"},{"revision":null,"url":"assets/trash-2-D5P4y8p_.js"},{"revision":null,"url":"assets/terminal-tab-CbIyX35G.js"},{"revision":null,"url":"assets/table-BzjWcs87.js"},{"revision":null,"url":"assets/tab-store-B_Kf29se.js"},{"revision":null,"url":"assets/system-monitor-tab-ByFvt-X1.js"},{"revision":null,"url":"assets/sqlite-viewer-DoUIUYFP.js"},{"revision":null,"url":"assets/sql-query-editor-Dd7g17iv.js"},{"revision":null,"url":"assets/sparkles-CulWHe4c.js"},{"revision":null,"url":"assets/shield-off-C_MK1u09.js"},{"revision":null,"url":"assets/shield-check-77W0OMbn.js"},{"revision":null,"url":"assets/settings-tab-Degb8F2N.js"},{"revision":null,"url":"assets/settings-store-B5e8CNie.js"},{"revision":null,"url":"assets/search-BEy08Exr.js"},{"revision":null,"url":"assets/rolldown-runtime-FhOqtrmT.js"},{"revision":null,"url":"assets/react-9ZmE0_ty.js"},{"revision":null,"url":"assets/radar-KQ55EAFF-Clvc0804.js"},{"revision":null,"url":"assets/project-store-Byuc-f31.js"},{"revision":null,"url":"assets/postgres-viewer-aszM5Fcd.js"},{"revision":null,"url":"assets/port-forwarding-tab-CeTcNsRi.js"},{"revision":null,"url":"assets/pie-UPGHQEXC-DhBYRSnI.js"},{"revision":null,"url":"assets/pdf-preview-DpD6lwbe.js"},{"revision":null,"url":"assets/panel-store-BETELS-N.js"},{"revision":null,"url":"assets/packet-RMMSAZCW-CEiM7H81.js"},{"revision":null,"url":"assets/number-overlay-editor-DSno9uQL.js"},{"revision":null,"url":"assets/notification-store-CQPEClB9.js"},{"revision":null,"url":"assets/markdown-renderer-C1aREZeW.js"},{"revision":null,"url":"assets/lib-D4CEhqqn.js"},{"revision":null,"url":"assets/keybindings-store-C1GQSO5O.js"},{"revision":null,"url":"assets/katex-DxcN2mZR.js"},{"revision":null,"url":"assets/input-BDYfKz0A.js"},{"revision":null,"url":"assets/info-3K5VOQVL-BDE-e-D2.js"},{"revision":null,"url":"assets/index-DXxsPKPw.css"},{"revision":null,"url":"assets/index-DFsZOUXU.js"},{"revision":null,"url":"assets/image-preview-KEBnOWRV.js"},{"revision":null,"url":"assets/glide-data-grid-nthEL3fk.css"},{"revision":null,"url":"assets/glide-data-grid-DZQDtmiO.js"},{"revision":null,"url":"assets/github.min-D2BCvnWf.css"},{"revision":null,"url":"assets/github-dark-dimmed.min-BrpRStFV.css"},{"revision":null,"url":"assets/gitGraph-HDMCJU4V-BCsg0_Oa.js"},{"revision":null,"url":"assets/git-log-panel-LXe9nyBs.js"},{"revision":null,"url":"assets/file-exclamation-point-Baz81y5z.js"},{"revision":null,"url":"assets/eye-off-BacF7RVS.js"},{"revision":null,"url":"assets/extension-webview-Dk8ddm19.js"},{"revision":null,"url":"assets/esm-A3ZetkGj.js"},{"revision":null,"url":"assets/docx-preview-DjTD6P6D.js"},{"revision":null,"url":"assets/dist-JYGF-20y.js"},{"revision":null,"url":"assets/dist-B5ErTtYs.js"},{"revision":null,"url":"assets/diff-viewer-Cb3db8F6.js"},{"revision":null,"url":"assets/database-viewer-Y8XylYBB.js"},{"revision":null,"url":"assets/database-NmqHg29g.js"},{"revision":null,"url":"assets/data-grid-types-DcEKQO3y.js"},{"revision":null,"url":"assets/data-grid-overlay-editor-DZGHoBdv.js"},{"revision":null,"url":"assets/csv-preview-DqoFTfkO.js"},{"revision":null,"url":"assets/csv-parser-B9nz_FWE.js"},{"revision":null,"url":"assets/createLucideIcon-BjHrJDVb.js"},{"revision":null,"url":"assets/conflict-editor-BeoPXciT.js"},{"revision":null,"url":"assets/code-editor-DP88cKaY.js"},{"revision":null,"url":"assets/code-CuravVys.js"},{"revision":null,"url":"assets/chevron-right-BzAdxJRG.js"},{"revision":null,"url":"assets/chevron-down-CiFNPrfI.js"},{"revision":null,"url":"assets/chat-tab-ClgbHbv9.js"},{"revision":null,"url":"assets/audio-preview-CGlpWhgr.js"},{"revision":null,"url":"assets/arrow-up-Rcw6_KKu.js"},{"revision":null,"url":"assets/arrow-down-D825m4vm.js"},{"revision":null,"url":"assets/architecture-PBZL5I3N-B9sV3kyt.js"},{"revision":null,"url":"assets/api-settings-CQWMP6tw.js"},{"revision":null,"url":"assets/api-client-bbJLzRVE.js"},{"revision":null,"url":"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2"},{"revision":null,"url":"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2"},{"revision":null,"url":"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2"},{"revision":null,"url":"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2"},{"revision":null,"url":"assets/KaTeX_Script-Regular-D3wIWfF6.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2"},{"revision":null,"url":"assets/KaTeX_Math-Italic-t53AETM-.woff2"},{"revision":null,"url":"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Regular-B22Nviop.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2"},{"revision":null,"url":"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Bold-Cx986IdX.woff2"},{"revision":null,"url":"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2"},{"revision":null,"url":"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2"},{"revision":null,"url":"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"26dccd02a2ef7522892015154f5e3680","url":"manifest.webmanifest"}]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hienlh/ppm",
3
- "version": "0.13.84",
3
+ "version": "0.13.87",
4
4
  "description": "Personal Project Manager — mobile-first web IDE with AI assistance",
5
5
  "author": "hienlh",
6
6
  "license": "MIT",
@@ -56,8 +56,8 @@
56
56
  "api_key_env": { "type": "string" },
57
57
  "model": {
58
58
  "type": "string",
59
- "description": "Model ID (e.g. claude-sonnet-4-6, claude-opus-4-6)",
60
- "examples": ["claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5"]
59
+ "description": "Model ID (e.g. claude-sonnet-4-6, claude-opus-4-8)",
60
+ "examples": ["claude-sonnet-4-6", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-haiku-4-5"]
61
61
  },
62
62
  "effort": {
63
63
  "type": "string",
@@ -120,7 +120,8 @@ export async function initProject(options: InitOptions = {}) {
120
120
  message: "AI model:",
121
121
  choices: [
122
122
  { value: "claude-sonnet-4-6", name: "Claude Sonnet 4.6 (fast, recommended)" },
123
- { value: "claude-opus-4-7", name: "Claude Opus 4.7 (most powerful)" },
123
+ { value: "claude-opus-4-8", name: "Claude Opus 4.8 (most powerful)" },
124
+ { value: "claude-opus-4-7", name: "Claude Opus 4.7 (powerful)" },
124
125
  { value: "claude-opus-4-6", name: "Claude Opus 4.6 (powerful)" },
125
126
  { value: "claude-haiku-4-5", name: "Claude Haiku 4.5 (cheap)" },
126
127
  ],
@@ -284,7 +284,7 @@ export class ClaudeAgentSdkProvider implements AIProvider {
284
284
  // SDK uses `errors: string[]` array for error details
285
285
  const errorsArr = Array.isArray(e.errors) ? (e.errors as string[]).join(" ") : "";
286
286
  const msg = errorsArr || String(e.error ?? "");
287
- if (msg.includes("429") || msg.toLowerCase().includes("rate limit") || msg.toLowerCase().includes("overloaded") || msg.toLowerCase().includes("hit your limit")) return 429;
287
+ if (msg.includes("429") || msg.toLowerCase().includes("rate limit") || msg.toLowerCase().includes("overloaded") || /hit your (?:[\w-]+\s+)*limit/i.test(msg)) return 429;
288
288
  if (msg.includes("401") || msg.toLowerCase().includes("unauthorized") || msg.toLowerCase().includes("invalid api key")) return 401;
289
289
  }
290
290
  return null;
@@ -518,6 +518,7 @@ export class ClaudeAgentSdkProvider implements AIProvider {
518
518
  async listModels(): Promise<ModelOption[]> {
519
519
  return [
520
520
  { value: "claude-sonnet-4-6", label: "Claude Sonnet 4.6" },
521
+ { value: "claude-opus-4-8", label: "Claude Opus 4.8" },
521
522
  { value: "claude-opus-4-7", label: "Claude Opus 4.7" },
522
523
  { value: "claude-opus-4-6", label: "Claude Opus 4.6" },
523
524
  { value: "claude-haiku-4-5", label: "Claude Haiku 4.5" },
@@ -1167,7 +1168,7 @@ export class ClaudeAgentSdkProvider implements AIProvider {
1167
1168
  if (textContent && /API Error:\s*401\b.*authentication_error/i.test(textContent)) {
1168
1169
  assistantError = "authentication_failed";
1169
1170
  console.warn(`[sdk] session=${sessionId} detected 401 in assistant text content — treating as auth error`);
1170
- } else if (textContent && /hit your limit|you've hit your limit/i.test(textContent)) {
1171
+ } else if (textContent && /hit your (?:[\w-]+\s+)*limit/i.test(textContent)) {
1171
1172
  assistantError = "rate_limit";
1172
1173
  console.warn(`[sdk] session=${sessionId} detected quota limit in assistant text content — treating as rate_limit`);
1173
1174
  }
@@ -1448,7 +1449,7 @@ export class ClaudeAgentSdkProvider implements AIProvider {
1448
1449
  hint = "\n\nHint: Network connectivity issue. Check your internet connection and firewall/proxy settings.";
1449
1450
  } else if (detailLower.includes("401") || detailLower.includes("unauthorized") || detailLower.includes("invalid api key")) {
1450
1451
  hint = "\n\nHint: Authentication failed. Try re-adding your account in Settings → Accounts.";
1451
- } else if (detailLower.includes("hit your limit")) {
1452
+ } else if (/hit your (?:[\w-]+\s+)*limit/i.test(detailLower)) {
1452
1453
  hint = "\n\nHint: Account quota exhausted. Will auto-switch on next message if other accounts are available.";
1453
1454
  }
1454
1455
  const fullMsg = sdkDetail ? `${baseMsg}\n${sdkDetail}${hint}` : baseMsg;
@@ -29,7 +29,7 @@ function walkDir(dir: string, visitor: (filePath: string) => void, visited = new
29
29
  const resolved = resolve(dir);
30
30
  if (visited.has(resolved)) return;
31
31
  // Prevent symlink escape: resolved path must stay within root boundary
32
- if (rootBoundary && resolved !== rootBoundary && !resolved.startsWith(rootBoundary + "/")) return;
32
+ if (rootBoundary && resolved !== rootBoundary && !resolved.startsWith(rootBoundary + sep)) return;
33
33
  visited.add(resolved);
34
34
  let entries: string[];
35
35
  try { entries = readdirSync(dir); } catch { return; }
@@ -117,7 +117,7 @@ function loadSkills(root: SkillRoot): SlashItemWithSource[] {
117
117
  if (!filePath.endsWith(".md") || basename(filePath) === "SKILL.md") return;
118
118
  const dir = resolve(filePath, "..");
119
119
  let ancestor = dir;
120
- while ((ancestor + "/").startsWith(boundary + "/") && ancestor !== boundary) {
120
+ while ((ancestor + sep).startsWith(boundary + sep) && ancestor !== boundary) {
121
121
  if (dirsWithSkillMd.has(ancestor)) return;
122
122
  ancestor = resolve(ancestor, "..");
123
123
  }
@@ -25,12 +25,13 @@ import { sdNotify } from "./sd-notify.ts";
25
25
  const MAX_RESTARTS = 10;
26
26
  const BACKOFF_BASE_MS = 1000;
27
27
  const BACKOFF_MAX_MS = 60_000;
28
+ const TUNNEL_COOLDOWN_MS = 600_000; // 10min cooldown after MAX_RESTARTS before retrying tunnel
28
29
  const STABLE_WINDOW_MS = 300_000; // 5min stable → reset restart counter
29
30
  const SERVER_HEALTH_INTERVAL_MS = 30_000;
30
31
  const SERVER_HEALTH_FAIL_THRESHOLD = 3;
31
32
  const TUNNEL_PROBE_INTERVAL_MS = 30_000; // 30s — adopted tunnels have no `exited` promise
32
33
  const TUNNEL_PROBE_FAIL_THRESHOLD = 3; // 3 HTTP failures before regenerating (PID check is instant)
33
- const TUNNEL_URL_REGEX = /https:\/\/[a-z0-9-]+\.trycloudflare\.com/;
34
+ const TUNNEL_URL_REGEX = /https:\/\/(?!api\.)[a-z0-9-]+\.trycloudflare\.com/;
34
35
  const UPGRADE_CHECK_INTERVAL_MS = 900_000; // 15min
35
36
  const UPGRADE_SKIP_INITIAL_MS = 300_000; // 5min delay before first check
36
37
  const SELF_REPLACE_TIMEOUT_MS = 30_000; // 30s to wait for new supervisor
@@ -262,9 +263,12 @@ export async function spawnTunnel(port: number): Promise<void> {
262
263
  tunnelRestarts++;
263
264
 
264
265
  if (tunnelRestarts > MAX_RESTARTS) {
265
- log("ERROR", `Tunnel exceeded ${MAX_RESTARTS} URL extraction failures, disabling tunnel`);
266
+ log("WARN", `Tunnel exceeded ${MAX_RESTARTS} URL extraction failures, cooldown ${TUNNEL_COOLDOWN_MS}ms before retry`);
266
267
  updateStatus({ shareUrl: null, tunnelPid: null });
267
- return;
268
+ await Bun.sleep(TUNNEL_COOLDOWN_MS);
269
+ tunnelRestarts = 0;
270
+ if (shuttingDown) return;
271
+ return spawnTunnel(port);
268
272
  }
269
273
 
270
274
  const delay = backoffDelay(tunnelRestarts);
@@ -293,8 +297,11 @@ export async function spawnTunnel(port: number): Promise<void> {
293
297
  tunnelRestarts++;
294
298
 
295
299
  if (tunnelRestarts > MAX_RESTARTS) {
296
- log("ERROR", `Tunnel exceeded ${MAX_RESTARTS} restarts, disabling tunnel`);
300
+ log("WARN", `Tunnel exceeded ${MAX_RESTARTS} restarts, cooldown ${TUNNEL_COOLDOWN_MS}ms before retry`);
297
301
  updateStatus({ shareUrl: null, tunnelPid: null });
302
+ await Bun.sleep(TUNNEL_COOLDOWN_MS);
303
+ tunnelRestarts = 0;
304
+ if (!shuttingDown) return spawnTunnel(port);
298
305
  return;
299
306
  }
300
307
 
@@ -4,7 +4,7 @@ import { existsSync, unlinkSync, readFileSync, writeFileSync, renameSync } from
4
4
  import { ensureCloudflared } from "./cloudflared.service.ts";
5
5
  import { getPpmDir } from "./ppm-dir.ts";
6
6
 
7
- const TUNNEL_URL_REGEX = /https:\/\/[a-z0-9-]+\.trycloudflare\.com/;
7
+ const TUNNEL_URL_REGEX = /https:\/\/(?!api\.)[a-z0-9-]+\.trycloudflare\.com/;
8
8
  const decoder = new TextDecoder();
9
9
 
10
10
  /** Extract tunnel URL from cloudflared stderr output */
@@ -104,7 +104,7 @@ export const DEFAULT_CONFIG: PpmConfig = {
104
104
 
105
105
  const VALID_TYPES = ["agent-sdk", "cli", "mock"] as const;
106
106
  const VALID_EFFORTS = ["low", "medium", "high"] as const;
107
- const VALID_MODELS = ["claude-sonnet-4-6", "claude-opus-4-7", "claude-opus-4-6", "claude-haiku-4-5"] as const;
107
+ const VALID_MODELS = ["claude-sonnet-4-6", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-haiku-4-5"] as const;
108
108
  /** Allowed CLI commands for CLI providers (prevents command injection) */
109
109
  const VALID_CLI_COMMANDS = ["cursor-agent", "codex", "gemini"] as const;
110
110
  /** Only these values are allowed for default_provider in config */
@@ -160,6 +160,7 @@ function ProxyTestForm({ authKey, baseUrl }: ProxyTestDialogProps) {
160
160
  className="h-8 w-full rounded-md border bg-background px-2 text-[11px]"
161
161
  >
162
162
  <option value="claude-sonnet-4-6">claude-sonnet-4-6</option>
163
+ <option value="claude-opus-4-8">claude-opus-4-8</option>
163
164
  <option value="claude-opus-4-7">claude-opus-4-7</option>
164
165
  <option value="claude-haiku-4-5-20251001">claude-haiku-4-5</option>
165
166
  <option value="claude-opus-4-6">claude-opus-4-6</option>
@@ -1,98 +0,0 @@
1
- # Claude Code - Global Environment Variables
2
- # Location: .claude/.env
3
- # Priority: LOWEST (overridden by skills/.env and skill-specific .env)
4
- # Scope: Project-wide configuration, global defaults
5
- # Setup: Copy to .claude/.env and configure
6
-
7
- # ============================================
8
- # Environment Variable Hierarchy
9
- # ============================================
10
- # Priority order (highest to lowest):
11
- # 1. process.env - Runtime environment (HIGHEST)
12
- # 2. .claude/skills/<skill>/.env - Skill-specific overrides
13
- # 3. .claude/skills/.env - Shared across all skills
14
- # 4. .claude/.env - Global defaults (this file, LOWEST)
15
- #
16
- # All skills use centralized resolver: ~/.claude/scripts/resolve_env.py
17
- # Debug hierarchy: python ~/.claude/scripts/resolve_env.py --show-hierarchy
18
-
19
- # ============================================
20
- # ClaudeKit API Key (for VidCap, ReviewWeb services)
21
- # ============================================
22
- # Get your API key from https://claudekit.cc/api-keys
23
- # Required for accessing ClaudeKit services via skills
24
- CLAUDEKIT_API_KEY=
25
-
26
- # ============================================
27
- # Claude Code Notification Hooks
28
- # ============================================
29
- # Discord Webhook URL (for Discord notifications)
30
- # Get from: Server Settings → Integrations → Webhooks → New Webhook
31
- DISCORD_WEBHOOK_URL=
32
-
33
- # Telegram Bot Token (for Telegram notifications)
34
- # Get from: @BotFather in Telegram
35
- TELEGRAM_BOT_TOKEN=
36
-
37
- # Telegram Chat ID (your chat ID or group ID)
38
- # Get from: https://api.telegram.org/bot<BOT_TOKEN>/getUpdates
39
- TELEGRAM_CHAT_ID=
40
-
41
- # ============================================
42
- # AI/ML API Keys (Global Defaults)
43
- # ============================================
44
- # Google Gemini API (for ai-multimodal, docs-seeker skills)
45
- # Get from: https://aistudio.google.com/apikey
46
- GEMINI_API_KEY=
47
-
48
- # Vertex AI Configuration (Optional alternative to AI Studio)
49
- # GEMINI_USE_VERTEX=true
50
- # VERTEX_PROJECT_ID=
51
- # VERTEX_LOCATION=us-central1
52
-
53
- # OpenAI API Key (if using OpenAI-based skills)
54
- # OPENAI_API_KEY=
55
-
56
- # Anthropic API Key (if using Claude API directly)
57
- # ANTHROPIC_API_KEY=
58
-
59
- # ElevenLabs API Key
60
- # Get your key at: https://elevenlabs.io/app/settings/api-keys
61
- # ELEVENLABS_API_KEY=
62
-
63
- # ============================================
64
- # Development & CI/CD
65
- # ============================================
66
- # NODE_ENV=development
67
- # DEBUG=false
68
- # LOG_LEVEL=info
69
-
70
- # ============================================
71
- # Project Configuration
72
- # ============================================
73
- # PROJECT_NAME=claudekit-engineer
74
- # ENVIRONMENT=local
75
-
76
- # ============================================
77
- # Example Usage Scenarios
78
- # ============================================
79
- # Scenario 1: Global default for all skills
80
- # .claude/.env (this file): GEMINI_API_KEY=global-dev-key
81
- # Result: All skills use global-dev-key
82
- #
83
- # Scenario 2: Override for all skills
84
- # .claude/.env (this file): GEMINI_API_KEY=global-dev-key
85
- # .claude/skills/.env: GEMINI_API_KEY=skills-prod-key
86
- # Result: All skills use skills-prod-key
87
- #
88
- # Scenario 3: Skill-specific override
89
- # .claude/.env (this file): GEMINI_API_KEY=global-key
90
- # .claude/skills/.env: GEMINI_API_KEY=shared-key
91
- # .claude/skills/ai-multimodal/.env: GEMINI_API_KEY=high-quota-key
92
- # Result: ai-multimodal uses high-quota-key, other skills use shared-key
93
- #
94
- # Scenario 4: Runtime testing
95
- # export GEMINI_API_KEY=test-key
96
- # Result: All skills use test-key regardless of config files
97
- #
98
- # Priority: runtime > skill-specific > shared > global (this file)