@kyun.si/codex-hongguo 0.0.24 → 0.0.26

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-hongguo",
3
- "version": "0.0.24",
3
+ "version": "0.0.26",
4
4
  "description": "在 Codex 会话侧栏观看红果短剧,回合停止时保存进度。",
5
5
  "hooks": "./hooks/hooks.json",
6
6
  "skills": "./skills/",
package/README.en.md CHANGED
@@ -16,7 +16,7 @@ Install with npm:
16
16
  npx @kyun.si/codex-hongguo@latest setup
17
17
  ```
18
18
 
19
- The command checks the environment, downloads and verifies the playback component, then installs the plugin through Codex's native marketplace. The first installation requires a network connection; later runs reuse the local cache. Open a new local chat after installing, run plugin Setup, and review the Hooks.
19
+ The command checks the environment, downloads and verifies the playback component, then installs the plugin through Codex's native marketplace. The first installation requires a network connection; later runs reuse the local cache. The installer tells you to review, trust and enable `UserPromptSubmit`, `Stop` and `Interrupt` in Codex **Settings → Hooks**. Then open a new local chat to use the plugin.
20
20
 
21
21
  ### Post-Install Setup
22
22
 
@@ -69,6 +69,7 @@ The switches are independent, saved across restarts, and shared by all chats. Ot
69
69
 
70
70
  - **Playback pauses too often**: Turn off **Pause automatically when a task ends** in the player's Settings and save to keep watching continuously.
71
71
  - **A new task does not resume playback**: Enable and save **Play automatically when a task starts**. Keep the player open in that chat with an episode selected. New defaults do not override a previously saved off setting.
72
+ - **A recommendation opens without playing**: During a running task, it should start muted. If that task ends before playback starts, the player asks you to click Play to continue. A host autoplay restriction is also shown explicitly.
72
73
 
73
74
  ## Updating, Disabling & Uninstalling
74
75
 
@@ -97,7 +98,7 @@ The default user data directories below are removed automatically during uninsta
97
98
  | macOS | `~/Library/Application Support/CodexHongguo/` |
98
99
  | Linux | `codex-hongguo` under `XDG_DATA_HOME` (defaults to `~/.local/share/codex-hongguo/`) |
99
100
 
100
- Inside this folder, `player.sqlite` and its WAL/SHM files store progress, turn state, recommendation rotation and settings. `media/` holds prepared full episodes, capped at 40 episodes and 1 GiB with protection for active files. `panel-media/` contains temporary panel fragments with separate cleanup; its size is outside that 1 GiB limit. `device/` holds the upstream SDK's anonymous device profile. Raw hook payloads, prompts and assistant replies are not written to disk. Third-party runtime dependency notices are under `licenses/` in the plugin root.
101
+ Inside this folder, `player.sqlite` and its WAL/SHM files store progress, turn state, recommendation rotation, catalog and episode metadata, refresh state and settings. `media/` holds prepared full episodes, capped at 40 episodes and 1 GiB with protection for active files. `panel-media/` contains temporary panel fragments with separate cleanup; its size is outside that 1 GiB limit. `device/` holds the upstream SDK's anonymous device profile. Raw hook payloads, prompts and assistant replies are not written to disk. Third-party runtime dependency notices are under `licenses/` in the plugin root.
101
102
 
102
103
  ## Features & Limitations
103
104
 
@@ -105,7 +106,7 @@ Inside this folder, `player.sqlite` and its WAL/SHM files store progress, turn s
105
106
  | --- | --- |
106
107
  | Host scope | Supports only Codex Desktop conversations running on the local executor; does not support cloud/remote executors or other host applications. |
107
108
  | Content source & streams | Connects to the Hongguo catalog only (no multi-provider source switcher); when an episode offers multiple streams, the player selects a playable stream automatically without a manual quality selector. |
108
- | Recommendations & search | Catalog browsing and search rely on the anonymous upstream SDK; the home view prioritizes unwatched shows in batches of up to 12 (cached for 15 minutes) and falls back to configurable search keywords when recommendations are sparse. |
109
+ | Recommendations & search | Catalog browsing and search rely on the anonymous upstream SDK; the home view prioritizes unwatched shows in batches of up to 12 (recommendations and episode pages share a persistent 15-minute cache across chats, serve stale data while refreshing, and back off after failures) and falls back to configurable search keywords when recommendations are sparse. |
109
110
  | Anonymous rate-limit recovery | When an anonymous device is rejected or streams come back empty, the SDK performs bounded retries and device resets before surfacing the failure reason with a retry action. |
110
111
  | Progress persistence | Saves playback position locally every ~5 seconds while playing, as well as on pause, seek, episode change, or panel hide. |
111
112
  | Turn linkage & autoplay | Task-start autoplay and task-end automatic pausing both default to on; see Global playback settings above. Autoplay next is enabled by default and remembers changes. |
package/README.md CHANGED
@@ -16,7 +16,7 @@
16
16
  npx @kyun.si/codex-hongguo@latest setup
17
17
  ```
18
18
 
19
- 命令会检查运行环境、自动下载并校验播放组件,再通过 Codex 原生市场安装插件。首次安装需要联网,之后复用本机缓存。安装完成后打开新的本地聊天,运行插件 Setup 并审查 Hooks。
19
+ 命令会检查运行环境、自动下载并校验播放组件,再通过 Codex 原生市场安装插件。首次安装需要联网,之后复用本机缓存。安装完成时会提示你到 Codex「设置 → Hooks」审查、信任并启用 `UserPromptSubmit`、`Stop`、`Interrupt`。然后打开新的本地聊天使用。
20
20
 
21
21
  ### 安装后配置
22
22
 
@@ -68,6 +68,7 @@ npx @kyun.si/codex-hongguo@latest setup
68
68
  - **回合联动显示「待确认」**:到 Codex「设置 → Hooks」核对三个事件。环境检查通过不等于回合联动已生效;未完成时可先手动观看。
69
69
  - **任务结束时频繁暂停**:在播放器「设置」中关闭「任务结束自动暂停」并保存,即可持续播放。
70
70
  - **新任务开始没有续播**:确认「任务开始自动播放」已开启并保存,且播放器在对应聊天中保持打开、已选中剧集。新默认值不会覆盖此前手动保存的关闭设置。
71
+ - **点推荐后没有开播**:任务仍在执行时应自动静音播放;如果推荐所属任务在开播前已结束,会提示点击播放继续。宿主限制自动播放时,也会显示明确提示。
71
72
 
72
73
  ## 更新、禁用与卸载
73
74
 
@@ -96,7 +97,7 @@ npx @kyun.si/codex-hongguo@latest uninstall
96
97
  | macOS | `~/Library/Application Support/CodexHongguo/` |
97
98
  | Linux | `XDG_DATA_HOME` 下的 `codex-hongguo`(缺省为 `~/.local/share/codex-hongguo/`) |
98
99
 
99
- 目录内 `player.sqlite`(及其 WAL/SHM 文件)保存观看进度、回合状态、推荐轮换与播放器设置;`media/` 保存本机处理后的整集缓存(上限 40 集、1 GiB,活动文件有保护期);`panel-media/` 保存单独回收的临时面板分片,其占用不计入整集缓存的 1 GiB 上限;`device/` 为上游 SDK 管理的匿名设备档案。本插件不将 Hook 原始输入、提示词和模型回复写入磁盘。第三方运行时依赖的许可证位于插件根目录 `licenses/`。
100
+ 目录内 `player.sqlite`(及其 WAL/SHM 文件)保存观看进度、回合状态、推荐轮换、片库与分集元数据、刷新状态及播放器设置;`media/` 保存本机处理后的整集缓存(上限 40 集、1 GiB,活动文件有保护期);`panel-media/` 保存单独回收的临时面板分片,其占用不计入整集缓存的 1 GiB 上限;`device/` 为上游 SDK 管理的匿名设备档案。本插件不将 Hook 原始输入、提示词和模型回复写入磁盘。第三方运行时依赖的许可证位于插件根目录 `licenses/`。
100
101
 
101
102
  ## 功能与限制
102
103
 
@@ -104,7 +105,7 @@ npx @kyun.si/codex-hongguo@latest uninstall
104
105
  | --- | --- |
105
106
  | 适用宿主 | 仅支持 Codex 桌面客户端中使用本机执行器的对话,不适用于云端/远程执行器或其他宿主环境。 |
106
107
  | 片源与选流 | 仅接入红果短剧单片源(不含多片源切换);同一集存在多档媒体流时由播放器自动选流,不提供手动清晰度切换。 |
107
- | 推荐与搜索 | 片库与搜索依赖匿名上游 SDK;首页优先推荐未看过的剧,每批最多 12 部(推荐缓存 15 分钟),推荐不足时按设置中的补充关键词搜索。 |
108
+ | 推荐与搜索 | 片库与搜索依赖匿名上游 SDK;首页优先推荐未看过的剧,每批最多 12 部(推荐与分集缓存 15 分钟,跨对话共享;过期先使用已有内容并后台刷新,失败后逐步延长重试间隔),推荐不足时按设置中的补充关键词搜索。 |
108
109
  | 匿名限流与恢复 | 匿名设备被拒或片源为空时,SDK 会按有限次数自动重试与恢复;仍失败时在界面显示原因供手动重试。 |
109
110
  | 进度保存 | 播放期间每约 5 秒自动保存一次进度,暂停、拖动、换集或隐藏面板时也会立即保存。 |
110
111
  | 回合联动与连播 | 任务开始自动播放、任务结束自动暂停均默认开启,详见「全局播放设置」。连播默认开启,当前集播完自动播放下一集;关闭后也会记住。 |
package/dist/cli/main.mjs CHANGED
@@ -1,14 +1,14 @@
1
1
  import {createRequire as __cr} from 'node:module';const require=__cr(import.meta.url);
2
- var pt=Object.create;var KA=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var vt=Object.getOwnPropertyNames;var mt=Object.getPrototypeOf,yt=Object.prototype.hasOwnProperty;var F=(A=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(A,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):A)(function(A){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')});var m=(A,e)=>()=>{try{return e||A((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}};var dt=(A,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of vt(e))!yt.call(A,n)&&n!==t&&KA(A,n,{get:()=>e[n],enumerable:!(r=wt(e,n))||r.enumerable});return A};var UA=(A,e,t)=>(t=A!=null?pt(mt(A)):{},dt(e||!A||!A.__esModule?KA(t,"default",{value:A,enumerable:!0}):t,A));var jA=m((tn,PA)=>{PA.exports=TA;TA.sync=xt;var OA=F("fs");function Dt(A,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var r=0;r<t.length;r++){var n=t[r].toLowerCase();if(n&&A.substr(-n.length).toLowerCase()===n)return!0}return!1}function zA(A,e,t){return!A.isSymbolicLink()&&!A.isFile()?!1:Dt(e,t)}function TA(A,e,t){OA.stat(A,function(r,n){t(r,r?!1:zA(n,A,e))})}function xt(A,e){return zA(OA.statSync(A),A,e)}});var _A=m((rn,VA)=>{VA.exports=XA;XA.sync=Nt;var WA=F("fs");function XA(A,e,t){WA.stat(A,function(r,n){t(r,r?!1:ZA(n,e))})}function Nt(A,e){return ZA(WA.statSync(A),e)}function ZA(A,e){return A.isFile()&&kt(A,e)}function kt(A,e){var t=A.mode,r=A.uid,n=A.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),g=parseInt("100",8),C=parseInt("010",8),a=parseInt("001",8),I=g|C,i=t&a||t&C&&n===o||t&g&&r===s||t&I&&s===0;return i}});var Ae=m((on,$A)=>{var nn=F("fs"),tA;process.platform==="win32"||global.TESTING_WINDOWS?tA=jA():tA=_A();$A.exports=aA;aA.sync=St;function aA(A,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(r,n){aA(A,e||{},function(s,o){s?n(s):r(o)})})}tA(A,e||{},function(r,n){r&&(r.code==="EACCES"||e&&e.ignoreErrors)&&(r=null,n=!1),t(r,n)})}function St(A,e){try{return tA.sync(A,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var se=m((sn,oe)=>{var K=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",ee=F("path"),Ft=K?";":":",te=Ae(),re=A=>Object.assign(new Error(`not found: ${A}`),{code:"ENOENT"}),ne=(A,e)=>{let t=e.colon||Ft,r=A.match(/\//)||K&&A.match(/\\/)?[""]:[...K?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=K?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=K?n.split(t):[""];return K&&A.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:r,pathExt:s,pathExtExe:n}},ie=(A,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:r,pathExt:n,pathExtExe:s}=ne(A,e),o=[],g=a=>new Promise((I,i)=>{if(a===r.length)return e.all&&o.length?I(o):i(re(A));let c=r[a],f=/^".*"$/.test(c)?c.slice(1,-1):c,u=ee.join(f,A),h=!f&&/^\.[\\\/]/.test(A)?A.slice(0,2)+u:u;I(C(h,a,0))}),C=(a,I,i)=>new Promise((c,f)=>{if(i===n.length)return c(g(I+1));let u=n[i];te(a+u,{pathExt:s},(h,Q)=>{if(!h&&Q)if(e.all)o.push(a+u);else return c(a+u);return c(C(a,I,i+1))})});return t?g(0).then(a=>t(null,a),t):g(0)},Mt=(A,e)=>{e=e||{};let{pathEnv:t,pathExt:r,pathExtExe:n}=ne(A,e),s=[];for(let o=0;o<t.length;o++){let g=t[o],C=/^".*"$/.test(g)?g.slice(1,-1):g,a=ee.join(C,A),I=!C&&/^\.[\\\/]/.test(A)?A.slice(0,2)+a:a;for(let i=0;i<r.length;i++){let c=I+r[i];try{if(te.sync(c,{pathExt:n}))if(e.all)s.push(c);else return c}catch{}}}if(e.all&&s.length)return s;if(e.nothrow)return null;throw re(A)};oe.exports=ie;ie.sync=Mt});var ge=m((an,gA)=>{"use strict";var ae=(A={})=>{let e=A.env||process.env;return(A.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(r=>r.toUpperCase()==="PATH")||"Path"};gA.exports=ae;gA.exports.default=ae});var fe=m((gn,ce)=>{"use strict";var Ie=F("path"),Jt=se(),Lt=ge();function Ce(A,e){let t=A.options.env||process.env,r=process.cwd(),n=A.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(A.options.cwd)}catch{}let o;try{o=Jt.sync(A.command,{path:t[Lt({env:t})],pathExt:e?Ie.delimiter:void 0})}catch{}finally{s&&process.chdir(r)}return o&&(o=Ie.resolve(n?A.options.cwd:"",o)),o}function bt(A){return Ce(A)||Ce(A,!0)}ce.exports=bt});var ue=m((In,CA)=>{"use strict";var IA=/([()\][%!^"`<>&|;, *?])/g;function Ht(A){return A=A.replace(IA,"^$1"),A}function Yt(A,e){return A=`${A}`,A=A.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),A=A.replace(/(?=(\\+?)?)\1$/,"$1$1"),A=`"${A}"`,A=A.replace(IA,"^$1"),e&&(A=A.replace(IA,"^$1")),A}CA.exports.command=Ht;CA.exports.argument=Yt});var le=m((Cn,he)=>{"use strict";he.exports=/^#!(.*)/});var Ee=m((cn,Qe)=>{"use strict";var Gt=le();Qe.exports=(A="")=>{let e=A.match(Gt);if(!e)return null;let[t,r]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?r:r?`${n} ${r}`:n}});var pe=m((fn,Be)=>{"use strict";var cA=F("fs"),Rt=Ee();function qt(A){let t=Buffer.alloc(150),r;try{r=cA.openSync(A,"r"),cA.readSync(r,t,0,150,0),cA.closeSync(r)}catch{}return Rt(t.toString())}Be.exports=qt});var ye=m((un,me)=>{"use strict";var Kt=F("path"),we=fe(),ve=ue(),Ut=pe(),Ot=process.platform==="win32",zt=/\.(?:com|exe)$/i,Tt=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Pt(A){A.file=we(A);let e=A.file&&Ut(A.file);return e?(A.args.unshift(A.file),A.command=e,we(A)):A.file}function jt(A){if(!Ot)return A;let e=Pt(A),t=!zt.test(e);if(A.options.forceShell||t){let r=Tt.test(e);A.command=Kt.normalize(A.command),A.command=ve.command(A.command),A.args=A.args.map(s=>ve.argument(s,r));let n=[A.command].concat(A.args).join(" ");A.args=["/d","/s","/c",`"${n}"`],A.command=process.env.comspec||"cmd.exe",A.options.windowsVerbatimArguments=!0}return A}function Wt(A,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let r={command:A,args:e,options:t,file:void 0,original:{command:A,args:e}};return t.shell?r:jt(r)}me.exports=Wt});var xe=m((hn,De)=>{"use strict";var fA=process.platform==="win32";function uA(A,e){return Object.assign(new Error(`${e} ${A.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${A.command}`,path:A.command,spawnargs:A.args})}function Xt(A,e){if(!fA)return;let t=A.emit;A.emit=function(r,n){if(r==="exit"){let s=de(n,e);if(s)return t.call(A,"error",s)}return t.apply(A,arguments)}}function de(A,e){return fA&&A===1&&!e.file?uA(e.original,"spawn"):null}function Zt(A,e){return fA&&A===1&&!e.file?uA(e.original,"spawnSync"):null}De.exports={hookChildProcess:Xt,verifyENOENT:de,verifyENOENTSync:Zt,notFoundError:uA}});var Se=m((ln,U)=>{"use strict";var Ne=F("child_process"),hA=ye(),lA=xe();function ke(A,e,t){let r=hA(A,e,t),n=Ne.spawn(r.command,r.args,r.options);return lA.hookChildProcess(n,r),n}function Vt(A,e,t){let r=hA(A,e,t),n=Ne.spawnSync(r.command,r.args,r.options);return n.error=n.error||lA.verifyENOENTSync(n.status,r),n}U.exports=ke;U.exports.spawn=ke;U.exports.sync=Vt;U.exports._parse=hA;U.exports._enoent=lA});var Ge=m((_,mA)=>{(function(e,t){typeof _=="object"&&typeof mA=="object"?mA.exports=t(F("stream/web")):typeof define=="function"&&define.amd?define(["stream/web"],t):typeof _=="object"?_["xz-decompress"]=t(F("stream/web")):e["xz-decompress"]=t(e["stream/web"])})(_,A=>(()=>{"use strict";var e=[,(s=>{s.exports="data:application/wasm;base64,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ACABQX9qIgENAAsgAkJ/hSECCyACC8oQAgx/An4CQAJAIAAoAiRFDQAgACgCACECDAELQQAhAiAAQQA6ACggAEIANwMAIABCADcDGCAAQcgAakEAQeQAEIaAgIAAGiAAQawBakEMNgIACyAAIAEoAgQiAzYCECAAQeAAaiEEIABByABqIQUgAEG2AWohBiAAQbABaiEHIABBqAFqIQggASgCECEJAkACQAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACDgoBAgAEBQYHCAkKDwsgASgCACEKIAAoAqgBIQIgACgCrAEhCyABKAIEIQwgASgCCCENDAILIAcgACgCqAEiDGogASgCACABKAIEIgJqIAEoAgggAmsiAiAAKAKsASAMayIMIAIgDEkbIgIQh4CAgAAaIAEgASgCBCACajYCBEEAIQwgAEEAIAAoAqgBIAJqIgIgAiAAKAKsASILRhs2AqgBIAIgC0cNESAAQQE2AgACQCAHQaiIgIAAQQYQhICAgABFDQBBBSEMDBILIAZBAkEAEI2AgIAAIAAoALgBRw0QQQYhDCAGLQAADREgACAALQC3ASICNgIgIAJBBEsNEUEBIAJ0QRNxRQ0RCyABKAIEIgwgASgCCCINRg0OAkAgASgCACIKIAxqLQAAIgsNACAAIAw2AhAgASAMQQFqNgIEQQYhAgwMC0EAIQIgAEEANgKoASAAQQI2AgAgACALQQJ0QQRqIgs2AqwBIAAgCzYCQAsgByACaiAKIAxqIA0gDGsiDCALIAJrIgIgDCACSRsiAhCHgICAABogASABKAIEIAJqNgIEQQAhDCAAQQAgACgCqAEgAmoiAiACIAAoAqwBIgtGGzYCqAEgAiALRw0PIAAgAkF8aiICNgKsAUEHIQwgByACQQAQjYCAgAAgByAAKAKsASICaigAAEcNDyAAQQI2AqgBIAAtALEBIgtBP3ENDAJAAkAgC0HAAHFFDQAgACAHIAggAhCRgICAAEEBRw0RIAAgACkDCDcDMCAAKAKsASECIAAtALEBIQsMAQsgAEJ/NwMwC0J/IQ4CQCALwEF/Sg0AIAAgByAIIAIQkYCAgABBAUcNECAAKAKsASECIAApAwghDgsgACAONwM4IAIgACgCqAEiC2tBAkkNDyAAIAtBAWoiCjYCqAEgCCALakEI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AA8LIAEgA0EBaiIFNgIEAkAgASgCACADai0AACAAKQMYIAAoAgQiA62Ip0H/AXFGDQBBBw8LIAAgA0EIaiIGNgIEIAUhAyAGIAJJDQALIABBADYCBCAAQgA3AxhBAQtvAQF/QQchAQJAIABBugFqLwAAQdm0AUcNACAAQbQBakEGQQAQjYCAgAAgAEGwAWooAABHDQAgAEGAAWopAwBCAoggADUAtAFSDQAgAEG4AWotAAANAEEBQQcgACgCICAAQbkBai0AAEYbIQELIAELwAIBA38CQAJAAkAgACgCJA0AIABBADoAKCAAQQA2AgBBASECDAELAkAgACgCAEEKRw0AQQAhAwwCC0ECIQMMAQtBASEDCwJAAkADQAJAAkACQAJAIAMOAwABAwMLIAEoAgQiAyABKAIIIgRGDQQgASgCACEFAkADQCAFIANqLQAADQEgASADQQFqIgM2AgQgACAAKAIEQQFqQQNxNgIEIAQgA0YNBgwACwsCQCAAKAIERQ0AQQcPCyAAKAIkRQ0BIABBADoAKCAAQQA2AgBBASEDDAMLIABCADcDGCAAQQA2AgQgAEHIAGpBAEHkABCGgICAABogAEGsAWpBDDYCAAtBAiEDDAELIAAgARCQgICAACIDQQFHDQIgAEEKNgIAQQAhAwwACwsCQCACDQBBAA8LQQdBASAAKAIEGyEDCyADC3UBAX8CQEG4CRCAgICAACICRQ0AIAIgADYCJCACIAAgARCbgICAACIANgKwCQJAIABFDQAgAkEAOgAoIAJCADcDACACQgA3AxggAkHIAGpBAEHkABCGgICAABogAkGsAWpBDDYCACACDwsgAhCCgICAAAtBAAseAAJAIABFDQAgACgCsAkQnYCAgAAgABCCgICAAAsL3RABCn8gAEHo3QFqIQIgAEHUAGohAyAAQRxqIgRBCGohBQJAAkADQCAAKAJAIQYCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCBCIHIAEoAghJDQAgBkEHRg0BDBELIAYOCQECAwQFBgcACQ4LIAAoAkwhBgwHC0EBIQYgASAHQQFqNgIEIAEoAgAgB2otAAAiB0UNCAJAAkAgB0HfAUsNACAHQQFHDQELIABBgAI7AVACQCAAKAI8DQAgACABKAIMIAEoAhAiBmo2AhggACABKAIUIAZrNgIsCyAEQgA3AgAgBUIANwIADAoLIAAtAFBFDQkMDQsgASAHQQFqNgIEIAEoAgAgB2otAAAhByAAQQI2AkAgACAHQQh0IAAoAkhqNgJIDAsLIAEgB0EBajYCBCABKAIAIAdqLQAAIQcgAEEDNgJAIAAgByAAKAJIakEBajYCSAwKCyABIAdBAWo2AgQgASgCACAHai0AACEHIABBBDYCQCAAIAdBCHQ2AkwMCQsgASAHQQFqNgIEIAEoAgAgB2otAAAhByAAIAAoAkQ2AkAgACAHIAAoAkxqQQFqNgJMDAgLIAEgB0EBajYCBEEHIQYgASgCACAHai0AACIHQeABSw0DQQAhCAJAAkAgB0EtTw0AQQAhCQwBCyAHQVNqIgcgB0H/AXFBLW4iCUEtbGshByAJQQFqIQkLIABBfyAJdEF/czYCdAJAIAdB/wFxQQlJDQAgB0F3aiIHIAdB/wFxQQluIghBCWxrIQcgCEEBaiEICyAAIAg2AnAgACAHQf8BcSIHNgJsIAggB2pBBEsNAyADQgA3AgAgA0EIakIANwIAIANBEGpBADYCACAAQX8gCHRBf3M2AnBB+AAhBwNAIAAgB2pBgAg7AQAgB0ECaiIHQeTdAUcNAAsgAEEGNgJAIABBBTYCCCAAQv////8PNwIACyAAKAJMIgpBBUkNBwJAIAAoAggiB0UNACAHQX9qIQYgASgCBCEHIAEoAgghCQNAIAkgB0YNCiABIAdBAWoiCDYCBCABKAIAIAdqLQAAIQcgACAGNgIIIAAgByAAKAIEQQh0cjYCBCAIIQcgBkF/aiIGQX9HDQALCyAAQQc2AkAgACAKQXtqIgY2AkwLIAAgACgCICIHIAEoAhQgASgCEGsiCCAAKAJIIgkgCCAJSRsiCGogACgCLCIJIAkgB2sgCEsbNgIoIAEoAggiCiABKAIEIghrIQcCQAJAAkAgACgC5N0BIgkNACAGDQFBACEGCyACIAlqIAEoAgAgCGpBKiAJayIIIAYgCWsiBiAIIAZJGyIGIAcgBiAHSRsiBxCHgICAABoCQAJAIAAoAuTdASIIIAdqIgYgACgCTEcNACACIAhqIAdqQQBBPyAGaxCGgICAABogACgC5N0BIAdqIQYMAQsCQCAGQRRLDQAgACAGNgLk3QEgASABKAIEIAdqNgIEDAMLIAZBa2ohBgsgAEEANgIQIAAgAjYCDCAAIAY2AhRBByEGIAAQmoCAgABFDQMgACgCECIIIAAoAuTdASIJIAdqSw0DIAAgACgCTCAIayIGNgJMAkAgCCAJTw0AIAAgCSAIayIHNgLk3QEgAiACIAhqIAcQhYCAgAAaDAILIABBADYC5N0BIAEgASgCBCAIIAlraiIINgIEIAEoAggiCiAIayEHCwJAIAdBFUkNACAAIAg2AhAgACABKAIANgIMIAAgCkFraiAIIAZqIAcgBkEVakkbNgIUQQchBiAAEJqAgIAARQ0DIAAoAkwiByAAKAIQIgggASgCBGsiCUkNAyABIAg2AgQgACAHIAlrIgY2AkwgASgCCCAIayIHQRRLDQELIAIgASgCACAIaiAHIAYgByAGSRsiBxCHgICAABogACAHNgLk3QEgASABKAIEIAdqNgIECyAAKAIgIgYgACgCHCIIayEHAkAgACgCPEUNAAJAIAYgACgCLEcNACAAQQA2AiALIAEoAgwgASgCEGogACgCGCAIaiAHEIeAgIAAGiAAKAIgIQYLIAAgBjYCHCABIAEoAhAgB2oiCDYCECAAIAAoAkgiBiAHazYCSAJAIAYgB0cNAEEHIQYgACgCTA0CIAAoAmgNAiAAKAIEDQIgAEEANgJADAQLQQAhBiAIIAEoAhRGDQEgASgCBCABKAIIRw0FIAAoAuTdASAAKAJMTw0FDAELAkADQCAAKAJMIghFDQFBACEGIAEoAggiCSAHTQ0CIAEoAhQiCiABKAIQIgtNDQIgACAIIAkgB2siBiAKIAtrIgkgBiAJSRsiBiAAKAIsIAAoAiAiCWsiCiAGIApJGyIGIAggBiAISRsiBms2AkwgCSAAKAIYaiABKAIAIAdqIAYQhYCAgAAaIAAgACgCICAGaiIHNgIgAkAgACgCJCAHTw0AIAAgBzYCJAsCQCAAKAI8RQ0AAkAgByAAKAIsRw0AIABBADYCIAsgASgCDCABKAIQaiABKAIAIAEoAgRqIAYQhYCAgAAaIAAoAiAhBwsgACAHNgIcIAEgASgCECAGajYCECABIAEoAgQgBmoiBzYCBAwACwsgAEEANgJADAQLIAYPCyAHwEF/Sg0BIABBATYCQCAAIAdBEHRBgID8AHE2AkgCQCAHQcABSQ0AIABBBTYCRCAAQQA6AFEMAwsgAC0AUQ0DIABBBjYCRCAHQaABSQ0CIANCADcCACADQRBqQQA2AgAgA0EIakIANwIAQfgAIQcDQCAAIAdqQYAIOwEAIAdBAmoiB0Hk3QFHDQALCyAAQQU2AgggAEL/////DzcCAAwBCyAHQQJLDQEgAEKDgICAgAE3AkAMAAsLQQcPC0EAC5wYARR/IABBGGohAQJAIABBIGooAgAiAiAAQShqKAIAIgNPDQAgAEHoAGoiBCgCAEUNACABIAQgACgCVBCegICAABogACgCKCEDIAAoAiAhAgsCQCACIANPDQAgAEHYC2ohBSAAQbwNaiEGIABB3A1qIQcgAEHoAGohCCAAQeAVaiEJIABB1ABqIQoDQCAAKAIQIgsgACgCFEsNASAAIAAoAmQiDEEFdGogACgCdCACcSINQQF0aiIOQfgAaiEPAkACQCAAKAIAIgNBgICACEkNACAAKAIEIRAMAQsgACADQQh0IgM2AgAgACALQQFqIgQ2AhAgACAAKAIEQQh0IAAoAgwgC2otAAByIhA2AgQgBCELCwJAAkAgECADQQt2IA8vAQAiEWwiBE8NACAAIAQ2AgAgDyARQYAQIBFrQQV2ajsBACACQX9qIQMCQCACDQAgACgCLCADaiEDCwJAAkAgACgCJCIRDQBBACEDDAELIAEoAgAgA2otAAAhAwsgACAAKAJwIAJxIAAoAmwiD3QgA0EIIA9rdmpBgAxsakHkHWohDgJAAkAgDEEGSw0AQQEhAwNAIA4gA0EBdCIDaiEQAkACQCAAKAIAIgRBgICACEkNACAAKAIEIQwMAQsgACAEQQh0IgQ2AgAgACAAKAIQIg9BAWo2AhAgACAAKAIEQQh0IA8gACgCDGotAAByIgw2AgQLAkACQCAMIARBC3YgEC8BACIRbCIPSQ0AIAAgDCAPazYCBCAEIA9rIQ8gA0EBciEDIBEgEUEFdmshBAwBCyARQYAQIBFrQQV2aiEECyAAIA82AgAgECAEOwEAIANBgAJJDQALIAAoAiAhAgwBCyACIAAoAlQiD0F/c2ohAwJAIAIgD0sNACAAKAIsIANqIQMLAkACQCARDQBBACESDAELIAEoAgAgA2otAAAhEgtBASEDQYACIQ8DQCAOIBJBAXQiEiAPcSITIA9qIANqQQF0aiERAkACQCAEQf///wdNDQAgBCENDAELIAAgBEEIdCINNgIAIAAgC0EBaiIENgIQIAAgEEEIdCAAKAIMIAtqLQAAciIQNgIEIAQhCwsCQAJAIBAgDUELdiARLwEAIgxsIgRPIhQNACAMQYAQIAxrQQV2aiEMDAELIAAgECAEayIQNgIEIA0gBGshBCAMIAxBBXZrIQxBACEPCyAAIAQ2AgAgESAMOwEAIA8gE3MhDyADQQF0IBRyIgNBgAJJDQALCyAAIAJBAWo2AiAgACgCGCACaiADOgAAAkAgACgCJCAAKAIgIgJPDQAgACACNgIkC0EAIQMCQCAAKAJkIgRBBEkNAAJAIARBCUsNACAEQX1qIQMMAQsgBEF6aiEDCyAAIAM2AmQMAQsgACADIARrIgM2AgAgACAQIARrIgQ2AgQgDyARIBFBBXZrOwEAIAAgDEEBdGoiEkH4A2ohDwJAAkAgA0H///8HTQ0AIAshEwwBCyAAIANBCHQiAzYCACAAIAtBAWoiEzYCECAAIARBCHQgACgCDCALai0AAHIiBDYCBAsCQAJAIAQgA0ELdiAPLwEAIhBsIhFJDQAgACADIBFrIgw2AgAgACAEIBFrIgM2AgQgDyAQIBBBBXZrOwEAIBJBkARqIQ8CQAJAIAxB////B00NACATIREMAQsgACAMQQh0Igw2AgAgACATQQFqIhE2AhAgACADQQh0IAAoAgwgE2otAAByIgM2AgQLAkACQCADIAxBC3YgDy8BACIQbCIETw0AIAAgBDYCACAPIBBBgBAgEGtBBXZqOwEAIA5B2ARqIQ8CQCAEQf///wdLDQAgACAEQQh0IgQ2AgAgACARQQFqNgIQIAAgA0EIdCAAKAIMIBFqLQAAciIDNgIECwJAIAMgBEELdiAPLwEAIhBsIhFJDQAgACAEIBFrNgIAIAAgAyARazYCBCAPIBAgEEEFdms7AQAMAgsgACARNgIAIA8gEEGAECAQa0EFdmo7AQAgAEEBNgJoIABBCUELIAAoAmRBB0kbNgJkDAMLIAAgDCAEayIMNgIAIAAgAyAEayIDNgIEIA8gECAQQQV2azsBACASQagEaiEEAkACQCAMQf///wdNDQAgESEODAELIAAgDEEIdCIMNgIAIAAgEUEBaiIONgIQIAAgA0EIdCAAKAIMIBFqLQAAciIDNgIECwJAAkAgAyAMQQt2IAQvAQAiD2wiEE8NACAAIBA2AgAgBCAPQYAQIA9rQQV2ajsBACAAKAJYIQMMAQsgACAMIBBrIhE2AgAgACADIBBrIgM2AgQgBCAPIA9BBXZrOwEAIBJBwARqIQ8CQCARQf///wdLDQAgACARQQh0IhE2AgAgACAOQQFqNgIQIAAgA0EIdCAAKAIMIA5qLQAAciIDNgIECwJAAkAgAyARQQt2IA8vAQAiEGwiBE8NACAQQYAQIBBrQQV2aiEQIAAoAlwhAwwBCyAAIAMgBGs2AgQgACgCYCEDIAAgACgCXDYCYCARIARrIQQgECAQQQV2ayEQCyAAIAQ2AgAgDyAQOwEAIAAgACgCWDYCXAsgACAAKAJUNgJYIAAgAzYCVAsgAEEIQQsgACgCZEEHSRs2AmQgACAJIA0Qn4CAgAAMAQsgACARNgIAIA8gEEGAECAQa0EFdmo7AQAgACAAKAJcNgJgIAAgACkCVDcCWCAAQQdBCiAAKAJkQQdJGzYCZCAAIAcgDRCfgICAACAKIAAoAmgiA0F+akEDIANBBkkbQQd0akGEB2ohDUEBIQMDQCANIANBAXQiA2ohEAJAAkAgACgCACIEQYCAgAhJDQAgACgCBCEMDAELIAAgBEEIdCIENgIAIAAgACgCECIPQQFqNgIQIAAgACgCBEEIdCAPIAAoAgxqLQAAciIMNgIECwJAAkAgDCAEQQt2IBAvAQAiEWwiD0kNACAAIAwgD2s2AgQgBCAPayEPIANBAXIhAyARIBFBBXZrIQQMAQsgEUGAECARa0EFdmohBAsgACAPNgIAIBAgBDsBACADQcAASQ0ACwJAIANBQGoiBEEDSw0AIAAgBDYCVAwBCyAAIANBAXFBAnIiDzYCVCAEQQF2IRACQCAEQQ1LDQAgACAPIBBBf2oiDnQiBDYCVEEBIQ8gBSAEQQF0akHAACADa0EBdGpBfmohEkEAIQwDQCASIA9BAXQiD2ohEAJAAkAgACgCACIDQYCAgAhJDQAgACgCBCENDAELIAAgA0EIdCIDNgIAIAAgACgCECIEQQFqNgIQIAAgACgCBEEIdCAEIAAoAgxqLQAAciINNgIECwJAAkAgDSADQQt2IBAvAQAiEWwiBEkNACAAIA0gBGs2AgQgACAAKAJUQQEgDHRqNgJUIAMgBGshBCAPQQFyIQ8gESARQQV2ayEDDAELIBFBgBAgEWtBBXZqIQMLIAAgBDYCACAQIAM7AQAgDiAMQQFqIgxHDQAMAgsLIBBBe2ohECAAKAIEIQQgACgCACEDA0ACQCADQf///wdLDQAgACADQQh0IgM2AgAgACAAKAIQIhFBAWo2AhAgBEEIdCARIAAoAgxqLQAAciEECyAAIANBAXYiAzYCACAAIAQgA2siBEEfdSIRIA9BAXRqQQFqIg82AlQgACARIANxIARqIgQ2AgQgEEF/aiIQDQALIAAgD0EEdDYCVEEAIQxBASEPA0AgBiAPQQF0Ig9qIRACQAJAIAAoAgAiA0GAgIAISQ0AIAAoAgQhDQwBCyAAIANBCHQiAzYCACAAIAAoAhAiBEEBajYCECAAIAAoAgRBCHQgBCAAKAIMai0AAHIiDTYCBAsCQAJAIA0gA0ELdiAQLwEAIhFsIgRJDQAgACANIARrNgIEIAAgACgCVEEBIAx0ajYCVCADIARrIQQgD0EBciEPIBEgEUEFdmshAwwBCyARQYAQIBFrQQV2aiEDCyAAIAQ2AgAgECADOwEAIAxBAWoiDEEERw0ACwsCQCABIAggACgCVBCegICAAA0AQQAPCyAAKAIgIQILIAIgACgCKEkNAAsLQQEhAwJAIAAoAgAiBEH///8HSw0AIAAgBEEIdDYCAEEBIQMgACAAKAIQIgRBAWo2AhAgACAAKAIEQQh0IAQgACgCDGotAAByNgIECyADC3ABAX8CQEGo3gEQgICAgAAiAkUNACACQTRqIAE2AgAgAkE8aiAANgIAAkACQAJAIABBf2oOAgABAgsgAiABEICAgIAAIgA2AhggAA0BIAIQgoCAgAAMAgsgAkEANgIYIAJBOGpBADYCAAsgAg8LQQAL0gEBAn9BBiECAkAgAUEnSw0AIABBMGogAUEBcUECciABQQF2QQtqdCIBNgIAAkACQCAAQTxqKAIAIgNFDQBBBCECIAEgAEE0aigCAEsNAiAAQSxqIAE2AgAgA0ECRw0AIABBOGoiAygCACABTw0AIAAgATYCOCAAKAIYEIKAgIAAIAAgACgCMBCAgICAACIBNgIYIAENAEEDIQIMAQtBACECIABBADYCQCAAQdAAakEBOgAAIABB6ABqQQA2AgAgAEHk3QFqIQMLIANBADYCAAsgAgsjAAJAIABBPGooAgBFDQAgACgCGBCCgICAAAsgABCCgICAAAvHAQEDf0EAIQMCQCAAKAIMIAJNDQAgACgCGCACTQ0AIAEgASgCACIDIAAoAhAgACgCCCIEayIFIAMgBSADSRsiBWs2AgAgBCACQX9zaiEDAkAgBCACSw0AIAAoAhQgA2ohAwsDQCAAKAIAIgIgA2otAAAhASAAIAAoAggiBEEBajYCCCACIARqIAE6AABBACADQQFqIgMgAyAAKAIURhshAyAFQX9qIgUNAAtBASEDIAAoAgwgACgCCCIFTw0AIAAgBTYCDAsgAwvoBAEGfwJAAkAgACgCACIDQYCAgAhJDQAgACgCBCEEDAELIAAgA0EIdCIDNgIAIAAgACgCECIFQQFqNgIQIAAgACgCBEEIdCAFIAAoAgxqLQAAciIENgIECwJAAkAgBCADQQt2IAEvAQAiBWwiBk8NACAAIAY2AgAgASAFQYAQIAVrQQV2ajsBACABIAJBBHRqQQRqIQdBCCEIQQIhAQwBCyAAIAMgBmsiAzYCACAAIAQgBmsiBDYCBCABIAUgBUEFdms7AQACQCADQf///wdLDQAgACADQQh0IgM2AgAgACAAKAIQIgVBAWo2AhAgACAEQQh0IAUgACgCDGotAAByIgQ2AgQLAkAgBCADQQt2IAEvAQIiBWwiBk8NACAAIAY2AgAgASAFQYAQIAVrQQV2ajsBAiABIAJBBHRqQYQCaiEHQQghCEEKIQEMAQsgACADIAZrNgIAIAAgBCAGazYCBCABIAUgBUEFdms7AQIgAUGEBGohB0GAAiEIQRIhAQsgAEHoAGogATYCAEEBIQEDQCAHIAFBAXQiAWohBAJAAkAgACgCACIDQYCAgAhJDQAgACgCBCECDAELIAAgA0EIdCIDNgIAIAAgACgCECIFQQFqNgIQIAAgACgCBEEIdCAFIAAoAgxqLQAAciICNgIECwJAAkAgAiADQQt2IAQvAQAiBmwiBUkNACAAIAIgBWs2AgQgAyAFayEFIAFBAXIhASAGIAZBBXZrIQMMAQsgBkGAECAGa0EFdmohAwsgACAFNgIAIAQgAzsBACABIAhJDQALIABB6ABqIgAgASAIayAAKAIAajYCAAsLNQEAQYAICy4IAAAAEAAAABgAAAAgAAAAKAAAADAAAABAAAAAUAAAAIAAAAAAAQAA/Td6WFoA"}),(s=>{s.exports=A})],t={};function r(s){var o=t[s];if(o!==void 0)return o.exports;var g=t[s]={exports:{}};return e[s](g,g.exports,r),g.exports}r.d=(s,o)=>{for(var g in o)r.o(o,g)&&!r.o(s,g)&&Object.defineProperty(s,g,{enumerable:!0,get:o[g]})},r.o=(s,o)=>Object.prototype.hasOwnProperty.call(s,o),r.r=s=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})};var n={};return(()=>{r.r(n),r.d(n,{XzReadableStream:()=>i});var s=r(1);let o=globalThis.ReadableStream||r(2).ReadableStream,g=0,C=1;class a{constructor(f){this.exports=f.exports,this.memory=this.exports.memory,this.ptr=this.exports.create_context(),this._refresh(),this.bufSize=this.mem32[0],this.inStart=this.mem32[1]-this.ptr,this.inEnd=this.inStart+this.bufSize,this.outStart=this.mem32[4]-this.ptr}supplyInput(f){this._refresh(),this.mem8.subarray(this.inStart,this.inEnd).set(f,0),this.exports.supply_input(this.ptr,f.byteLength),this._refresh()}getNextOutput(){let f=this.exports.get_next_output(this.ptr);if(this._refresh(),f!==g&&f!==C)throw new Error(`get_next_output failed with error code ${f}`);return{outChunk:this.mem8.slice(this.outStart,this.outStart+this.mem32[5]),finished:f===C}}needsMoreInput(){return this.mem32[2]===this.mem32[3]}outputBufferIsFull(){return this.mem32[5]===this.bufSize}resetOutputBuffer(){this.outPos=this.mem32[5]=0}dispose(){this.exports.destroy_context(this.ptr),this.exports=null}_refresh(){this.memory.buffer!==this.mem8?.buffer&&(this.mem8=new Uint8Array(this.memory.buffer,this.ptr),this.mem32=new Uint32Array(this.memory.buffer,this.ptr))}}class I{constructor(){this.locked=!1,this.waitQueue=[]}async acquire(){if(!this.locked){this.locked=!0;return}return new Promise(f=>{this.waitQueue.push(f)})}release(){this.waitQueue.length>0?this.waitQueue.shift()():this.locked=!1}}class i extends o{static _moduleInstancePromise;static _moduleInstance;static _contextMutex=new I;static async _getModuleInstance(){let f=s.replace("data:application/wasm;base64,",""),u=Uint8Array.from(atob(f),B=>B.charCodeAt(0)).buffer,h={},Q=await WebAssembly.instantiate(u,h);i._moduleInstance=Q.instance}constructor(f){let u,h=null,Q=f.getReader();super({async start(B){await i._contextMutex.acquire();try{i._moduleInstance||await(i._moduleInstancePromise||(i._moduleInstancePromise=i._getModuleInstance())),u=new a(i._moduleInstance)}catch(v){throw i._contextMutex.release(),v}},async pull(B){try{if(u.needsMoreInput()){if(h===null||h.byteLength===0){let{done:L,value:b}=await Q.read();L||(h=b)}let E=Math.min(u.bufSize,h.byteLength);u.supplyInput(h.subarray(0,E)),h=h.subarray(E)}let v=u.getNextOutput();B.enqueue(v.outChunk),u.resetOutputBuffer(),v.finished&&(u.dispose(),i._contextMutex.release(),B.close())}catch(v){throw u&&u.dispose(),i._contextMutex.release(),v}},cancel(){try{return u&&u.dispose(),Q.cancel()}finally{i._contextMutex.release()}}})}}})(),n})())});import{readFileSync as Zr,existsSync as Vr}from"node:fs";import{fileURLToPath as _r}from"node:url";var SA=UA(Se(),1);import{accessSync as Lr,constants as tt,statSync as br}from"node:fs";import{homedir as Hr}from"node:os";import{posix as rt,win32 as kA}from"node:path";import{createHash as Oe,randomUUID as pr}from"node:crypto";import{createReadStream as ze}from"node:fs";import{mkdir as qe,lstat as DA,open as Te,readFile as Pe,writeFile as wr,rename as vr,rm as T,chmod as mr,stat as Ke,unlink as yr,rmdir as Ue}from"node:fs/promises";import{lstatSync as dr}from"node:fs";import{homedir as je}from"node:os";import{posix as xA,win32 as NA}from"node:path";import{spawnSync as Dr}from"node:child_process";import{createRequire as _t}from"module";var $t=_t("/"),z,Ar,er;try{z=$t("worker_threads"),Ar=z.Worker,er=z.isMarkedAsUntransferable}catch{}var D=Uint8Array,O=Uint16Array,tr=Int32Array,Fe=new D([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Me=new D([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),rr=new D([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Je=function(A,e){for(var t=new O(31),r=0;r<31;++r)t[r]=e+=1<<A[r-1];for(var n=new tr(t[30]),r=1;r<30;++r)for(var s=t[r];s<t[r+1];++s)n[s]=s-t[r]<<5|r;return{b:t,r:n}},z=Je(Fe,2),Le=z.b,nr=z.r;Le[28]=258,nr[258]=28;var be=Je(Me,0),ir=be.b,En=be.r,pA=new O(32768);for(l=0;l<32768;++l)J=(l&43690)>>1|(l&21845)<<1,J=(J&52428)>>2|(J&13107)<<2,J=(J&61680)>>4|(J&3855)<<4,pA[l]=((J&65280)>>8|(J&255)<<8)>>1;var J,l,Z=(function(A,e,t){for(var r=A.length,n=0,s=new O(e);n<r;++n)A[n]&&++s[A[n]-1];var o=new O(e);for(n=1;n<e;++n)o[n]=o[n-1]+s[n-1]<<1;var g;if(t){g=new O(1<<e);var C=15-e;for(n=0;n<r;++n)if(A[n])for(var a=n<<4|A[n],I=e-A[n],i=o[A[n]-1]++<<I,c=i|(1<<I)-1;i<=c;++i)g[pA[i]>>C]=a}else for(g=new O(r),n=0;n<r;++n)A[n]&&(g[n]=pA[o[A[n]-1]++]>>15-A[n]);return g}),V=new D(288);for(l=0;l<144;++l)V[l]=8;var l;for(l=144;l<256;++l)V[l]=9;var l;for(l=256;l<280;++l)V[l]=7;var l;for(l=280;l<288;++l)V[l]=8;var l,He=new D(32);for(l=0;l<32;++l)He[l]=5;var l;var or=Z(V,9,1);var sr=Z(He,5,1),QA=function(A){for(var e=A[0],t=1;t<A.length;++t)A[t]>e&&(e=A[t]);return e},S=function(A,e,t){var r=e/8|0;return(A[r]|A[r+1]<<8)>>(e&7)&t},EA=function(A,e){var t=e/8|0;return(A[t]|A[t+1]<<8|A[t+2]<<16)>>(e&7)},ar=function(A){return(A+7)/8|0},vA=function(A,e,t){return(e==null||e<0)&&(e=0),(t==null||t>A.length)&&(t=A.length),new D(A.subarray(e,t))};var gr=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],d=function(A,e,t){var r=new Error(e||gr[A]);if(r.code=A,Error.captureStackTrace&&Error.captureStackTrace(r,d),!t)throw r;return r},Ir=function(A,e,t,r){var n=A.length,s=r?r.length:0;if(!n||e.f&&!e.l)return t||new D(0);var o=!t,g=o||e.i!=2,C=e.i;o&&(t=new D(n*3));var a=function(GA){var RA=t.length;if(GA>RA){var qA=new D(Math.max(RA*2,GA));qA.set(t),t=qA}},I=e.f||0,i=e.p||0,c=e.b||0,f=e.l,u=e.d,h=e.m,Q=e.n,B=n*8;do{if(!f){I=S(A,i,1);var v=S(A,i+1,3);if(i+=3,v)if(v==1)f=or,u=sr,h=9,Q=5;else if(v==2){var p=S(A,i,31)+257,k=S(A,i+10,15)+4,AA=p+S(A,i+5,31)+1;i+=14;for(var y=new D(AA),nA=new D(19),x=0;x<k;++x)nA[rr[x]]=S(A,i+x*3,7);i+=k*3;for(var MA=QA(nA),ht=(1<<MA)-1,lt=Z(nA,MA,1),x=0;x<AA;){var JA=lt[S(A,i,ht)];i+=JA&15;var E=JA>>4;if(E<16)y[x++]=E;else{var R=0,eA=0;for(E==16?(eA=3+S(A,i,3),i+=2,R=y[x-1]):E==17?(eA=3+S(A,i,7),i+=3):E==18&&(eA=11+S(A,i,127),i+=7);eA--;)y[x++]=R}}var LA=y.subarray(0,p),H=y.subarray(p);h=QA(LA),Q=QA(H),f=Z(LA,h,1),u=Z(H,Q,1)}else d(1);else{var E=ar(i)+4,L=A[E-4]|A[E-3]<<8,b=E+L;if(b>n){C&&d(0);break}g&&a(c+L),t.set(A.subarray(E,b),c),e.b=c+=L,e.p=i=b*8,e.f=I;continue}if(i>B){C&&d(0);break}}g&&a(c+131072);for(var Qt=(1<<h)-1,Et=(1<<Q)-1,iA=i;;iA=i){var R=f[EA(A,i)&Qt],q=R>>4;if(i+=R&15,i>B){C&&d(0);break}if(R||d(2),q<256)t[c++]=q;else if(q==256){iA=i,f=null;break}else{var bA=q-254;if(q>264){var x=q-257,X=Fe[x];bA=S(A,i,(1<<X)-1)+Le[x],i+=X}var oA=u[EA(A,i)&Et],sA=oA>>4;oA||d(3),i+=oA&15;var H=ir[sA];if(sA>3){var X=Me[sA];H+=EA(A,i)&(1<<X)-1,i+=X}if(i>B){C&&d(0);break}g&&a(c+131072);var HA=c+bA;if(c<H){var YA=s-H,Bt=Math.min(H,HA);for(YA+c<0&&d(3);c<Bt;++c)t[c]=r[YA+c]}for(;c<HA;++c)t[c]=t[c-H]}}e.l=f,e.p=iA,e.b=c,e.f=I,f&&(I=1,e.m=h,e.d=u,e.n=Q)}while(!I);return c!=t.length&&o?vA(t,0,c):t.subarray(0,c)};var Cr=new D(0);var M=function(A,e){return A[e]|A[e+1]<<8},N=function(A,e){return(A[e]|A[e+1]<<8|A[e+2]<<16|A[e+3]<<24)>>>0},BA=function(A,e){return N(A,e)+N(A,e+4)*4294967296};function cr(A,e){return Ir(A,{i:2},e&&e.out,e&&e.dictionary)}var wA=typeof TextDecoder<"u"&&new TextDecoder,fr=0;try{wA.decode(Cr,{stream:!0}),fr=1}catch{}var ur=function(A){for(var e="",t=0;;){var r=A[t++],n=(r>127)+(r>223)+(r>239);if(t+n>A.length)return{s:e,r:vA(A,t-1)};n?n==3?(r=((r&15)<<18|(A[t++]&63)<<12|(A[t++]&63)<<6|A[t++]&63)-65536,e+=String.fromCharCode(55296|r>>10,56320|r&1023)):n&1?e+=String.fromCharCode((r&31)<<6|A[t++]&63):e+=String.fromCharCode((r&15)<<12|(A[t++]&63)<<6|A[t++]&63):e+=String.fromCharCode(r)}};function hr(A,e){if(e){for(var t="",r=0;r<A.length;r+=16384)t+=String.fromCharCode.apply(null,A.subarray(r,r+16384));return t}else{if(wA)return wA.decode(A);var n=ur(A),s=n.s,t=n.r;return t.length&&d(8),s}}var lr=function(A,e){return e+30+M(A,e+26)+M(A,e+28)},Qr=function(A,e,t){var r=M(A,e+28),n=M(A,e+30),s=hr(A.subarray(e+46,e+46+r),!(M(A,e+8)&2048)),o=e+46+r,g=Er(A,o,n,t,N(A,e+20),N(A,e+24),N(A,e+42)),C=g[0],a=g[1],I=g[2];return[M(A,e+10),C,a,s,o+n+M(A,e+32),I]},Er=function(A,e,t,r,n,s,o){var g=n==4294967295,C=s==4294967295,a=o==4294967295,I=e+t,i=g+C+a;if(r&&i){for(;e+4<I;e+=4+M(A,e+2))if(M(A,e)==1)return[g?BA(A,e+4+8*C):n,C?BA(A,e+4):s,a?BA(A,e+4+8*(C+g)):o,1];r<2&&d(13)}return[n,s,o,0]};function Ye(A,e){for(var t={},r=A.length-22;N(A,r)!=101010256;--r)(!r||A.length-r>65558)&&d(13);var n=M(A,r+8);if(!n)return{};var s=N(A,r+16),o=N(A,r-20)==117853008;if(o){var g=N(A,r-12);o=N(A,g)==101075792,o&&(n=N(A,g+32),s=N(A,g+48))}for(var C=e&&e.filter,a=0;a<n;++a){var I=Qr(A,s,o),i=I[0],c=I[1],f=I[2],u=I[3],h=I[4],Q=I[5],B=lr(A,Q);s=h,(!C||C({name:u,size:c,originalSize:f,compression:i}))&&(i?i==8?t[u]=cr(A.subarray(B,B+c),{out:new D(f)}):d(14,"unknown compression type "+i):t[u]=vA(A,B,B+c))}return t}var We=UA(Ge(),1);var Re={"darwin-arm64":{version:"9.0.2",url:"https://www.osxexperts.net/ffmpeg902arm.zip",format:"zip",entry:"ffmpeg",archiveBytes:22665869,archiveSha256:"07e00300593799005b060c03a99fe648b1edda0f30c36b0c1adafe8e3247e586",binaryBytes:52160568,binarySha256:"762f16b2913b8d3b8fdb8092df12b691053b035b13ae9b88205513c55cb8e71e"},"darwin-x64":{version:"9.0.2",url:"https://evermeet.cx/ffmpeg/ffmpeg-9.0.2.zip",format:"zip",entry:"ffmpeg",archiveBytes:26198325,archiveSha256:"4acc0be580f9b2788029eb7bd4d645ff87968911b0a62aeeb3940d42d54558d5",binaryBytes:80827688,binarySha256:"a45b462cf91ed89148ae218c4577e30896485d7a6792c3673bcf5f823fa01b63"},"linux-x64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-linux64-gpl-9.0.tar.xz",format:"tar.xz",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-linux64-gpl-9.0/bin/ffmpeg",archiveBytes:153175100,archiveSha256:"73e29a56974ae5a651133a04584c7483b21afe941e17dc91d79814a758b608d3"},"linux-arm64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-linuxarm64-gpl-9.0.tar.xz",format:"tar.xz",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-linuxarm64-gpl-9.0/bin/ffmpeg",archiveBytes:128664064,archiveSha256:"6cad88ae5bcec356cfc5d7979a036cc4007128201928a0cf243df3db483276cc"},"win32-x64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-win64-gpl-9.0.zip",format:"zip",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-win64-gpl-9.0/bin/ffmpeg.exe",archiveBytes:195110184,archiveSha256:"693f3e224bc184b40524a62ca47526cfebaf2504414021b92fe75f677ad868b9"}};var P=new Map,rA=new Map,xr="@kyun.si/codex-hongguo",w=()=>Error("\u64AD\u653E\u7EC4\u4EF6\u81EA\u52A8\u51C6\u5907\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u548C\u7F13\u5B58\u76EE\u5F55\u6743\u9650\u540E\u91CD\u8BD5\u5B89\u88C5\u3002"),Nr=A=>new Promise(e=>setTimeout(e,A));function Xe(A={}){let{env:e=process.env,home:t=je(),platform:r=process.platform,arch:n=process.arch}=A,s=r==="win32"?NA:xA;if(e.HONGGUO_FFMPEG){if(!s.isAbsolute(e.HONGGUO_FFMPEG))throw w();return{...A,env:e,platform:r,target:e.HONGGUO_FFMPEG,override:!0}}let o=(A.artifacts||Re)[r+"-"+n];if(!o)throw Error("\u5F53\u524D\u7CFB\u7EDF\u67B6\u6784\u6682\u4E0D\u652F\u6301\u81EA\u52A8\u51C6\u5907\u64AD\u653E\u7EC4\u4EF6\u3002");let g=Ze({env:e,home:t,platform:r,paths:s}),C=s.join(g,"runtime","ffmpeg",o.archiveSha256.slice(0,16),r+"-"+n);return{...A,env:e,platform:r,artifact:o,directory:C,target:s.join(C,r==="win32"?"ffmpeg.exe":"ffmpeg")}}function Ze({env:A,home:e,platform:t,paths:r}){return A.HONGGUO_RUNTIME_DIR?r.join(A.HONGGUO_RUNTIME_DIR,"codex-hongguo"):t==="darwin"?r.join(e,"Library","Caches","CodexHongguo"):t==="win32"?r.join(A.LOCALAPPDATA||r.join(e,"AppData","Local"),"CodexHongguo","Cache"):r.join(A.XDG_CACHE_HOME||r.join(e,".cache"),"codex-hongguo")}function Ve(A){return Xe(A).target}function yA(A){try{let e=dr(A);return e.isFile()&&!e.isSymbolicLink()?`${e.size}:${e.mtimeMs}:${e.ctimeMs}`:null}catch{return null}}async function _e(A){let e=Oe("sha256");for await(let t of ze(A))e.update(t);return e.digest("hex")}function $e(A,e){return e.probe?e.probe(A):Dr(A,["-version"],{stdio:"ignore",timeout:5e3,windowsHide:!0}).status===0}async function dA(A){let{target:e,artifact:t}=A;if(P.get(e)&&P.get(e)===yA(e))return!0;try{let r=await DA(e);if(!r.isFile()||r.isSymbolicLink())return!1;if(t){let n=JSON.parse(await Pe(e+".json","utf8"));if(n.archiveSha256!==t.archiveSha256||!/^[a-f0-9]{64}$/.test(n.binarySha256)||r.size!==(t.binaryBytes||n.binaryBytes)||await _e(e)!==(t.binarySha256||n.binarySha256))return!1}return $e(e,A)?(P.set(e,yA(e)),!0):!1}catch{return!1}}async function kr(A,e,t){let r=new Set(["github.com","release-assets.githubusercontent.com","objects.githubusercontent.com","evermeet.cx","www.osxexperts.net"]),n=AbortSignal.timeout(3e5),s=new URL(A.url),o;for(let I=0;I<=6;I++){if(s.protocol!=="https:"||s.username||s.password||s.port||!r.has(s.hostname))throw w();if(o=await t(s,{redirect:"manual",signal:n}),![301,302,303,307,308].includes(o.status))break;let i=o.headers.get("location");if(await o.body?.cancel(),!i||I===6)throw w();s=new URL(i,s)}if(!o.ok||!o.body||Number(o.headers.get("content-length"))>A.archiveBytes)throw await o.body?.cancel(),w();let g=await Te(e,"wx",384),C=Oe("sha256"),a=0;try{for await(let I of o.body){if(a+=I.length,a>A.archiveBytes)throw w();C.update(I),await g.writeFile(I)}if(a!==A.archiveBytes||C.digest("hex")!==A.archiveSha256)throw w()}finally{await g.close()}}async function Sr(A,e,t){let r=await Te(t,"wx",384);try{if(A.format==="zip"){let c=Ye(await Pe(e),{filter:f=>f.name===A.entry&&f.originalSize<=(A.binaryBytes||268435456)})[A.entry];if(!c||A.binaryBytes&&c.length!==A.binaryBytes)throw w();await r.writeFile(c);return}let n=new We.default.XzReadableStream(Fr(e)),s=n.getReader(),o=Buffer.alloc(0),g=0,C=0,a=!1,I=0;try{for(;;){let{value:i,done:c}=await s.read();if(c)break;if(I+=i.length,I>1024*1024*1024)throw w();for(o=Buffer.concat([o,i]);o.length;)if(g){let f=Math.min(g,o.length);if(a&&await r.writeFile(o.subarray(0,f)),o=o.subarray(f),g-=f,!g&&a)return}else if(C){let f=Math.min(C,o.length);o=o.subarray(f),C-=f}else{if(o.length<512)break;let f=o.subarray(0,512);o=o.subarray(512);let u=(B,v)=>f.subarray(B,v).toString("utf8").split("\0")[0],h=[u(345,500),u(0,100)].filter(Boolean).join("/"),Q=parseInt(u(124,136).trim()||"0",8);if(!Number.isSafeInteger(Q)||Q<0||Q>512*1024*1024||(a=h===A.entry,a&&(A.binaryBytes&&Q!==A.binaryBytes||Q>256*1024*1024||![0,48].includes(f[156]))))throw w();g=Q,C=(512-Q%512)%512}}throw w()}finally{await s.cancel().catch(()=>{})}}finally{await r.close()}}function Fr(A){let e=ze(A)[Symbol.asyncIterator]();return new ReadableStream({async pull(t){let{value:r,done:n}=await e.next();n?t.close():t.enqueue(r)},async cancel(){await e.return?.()}})}async function At(A={}){let e=Xe(A);if(await dA(e))return e.target;if(e.override)throw w();if(rA.has(e.target))return rA.get(e.target);let t=Jr(e).finally(()=>rA.delete(e.target));return rA.set(e.target,t),t}async function Mr(A,e){for(let t=A;;t=e.dirname(t)){let r=await DA(t);if(!r.isDirectory()||r.isSymbolicLink())return!1;if(e.dirname(t)===t)return!0}}async function et(A={}){let{env:e=process.env,home:t=je(),platform:r=process.platform}=A,n=r==="win32"?NA:xA,s=Ze({env:e,home:t,platform:r,paths:n}),o=n.join(s,"runtime","ffmpeg"),g=n.dirname(o),C=()=>Error("\u63D2\u4EF6\u5DF2\u5378\u8F7D\uFF0C\u4F46\u64AD\u653E\u7EC4\u4EF6\u6E05\u7406\u5931\u8D25\u3002\u8BF7\u5173\u95ED\u64AD\u653E\u5668\u5E76\u68C0\u67E5\u7F13\u5B58\u76EE\u5F55\u6743\u9650\u540E\uFF0C\u91CD\u65B0\u8FD0\u884C uninstall\u3002");if(!n.isAbsolute(s))throw C();try{if(!await Mr(g,n))throw C();let a=await DA(o);a.isDirectory()&&!a.isSymbolicLink()?await T(o,{recursive:!0,force:!0,maxRetries:10,retryDelay:100}):await yr(o);for(let I of P.keys()){let i=n.relative(o,I);i&&!i.startsWith(".."+n.sep)&&!n.isAbsolute(i)&&P.delete(I)}}catch(a){if(a.code==="ENOENT")return{removed:0};throw C()}return await Ue(g).catch(()=>{}),await Ue(s).catch(()=>{}),{removed:1}}async function Jr(A){let{directory:e,target:t,artifact:r}=A,n=e+".lock",s=Date.now()+42e4;await qe(e,{recursive:!0,mode:448});let o=!1;for(;!o;)try{await qe(n,{mode:448}),o=!0}catch(i){if(i.code!=="EEXIST"||Date.now()>s)throw w();if(await dA(A))return t;try{Date.now()-(await Ke(n)).mtimeMs>6e5&&await T(n,{recursive:!0,force:!0})}catch{}await Nr(200)}let g=A.platform==="win32"?NA:xA,C=g.basename(t)+"."+pr(),a=g.join(e,C+".archive"),I=g.join(e,C+".part");try{if(await dA(A))return t;await kr(r,a,A.fetchImpl||fetch),await Sr(r,a,I);let i=await _e(I);if(r.binarySha256&&i!==r.binarySha256||(await mr(I,493),!$e(I,A)))throw w();return A.platform==="win32"&&await T(t,{force:!0}),await vr(I,t),await wr(t+".json",JSON.stringify({owner:xr,schema:1,archiveSha256:r.archiveSha256,binarySha256:i,binaryBytes:(await Ke(t)).size,version:r.version})+`
3
- `,{mode:384}),P.set(t,yA(t)),t}catch{throw w()}finally{await Promise.all([T(a,{force:!0}),T(I,{force:!0}),T(n,{recursive:!0,force:!0})])}}var nt=SA.default,$=SA.default.sync;function it(A){if(!(!A?.pid||A.exitCode!==null||A.signalCode!==null))if(A.stdin?.destroy(),process.platform==="win32"){let e=kA.join(process.env.SystemRoot||"C:\\Windows","System32","taskkill.exe");$(e,["/pid",String(A.pid),"/t","/f"],{stdio:"ignore",timeout:3e3,windowsHide:!0})}else A.kill()}function j(A,e,{env:t=process.env,home:r=Hr(),platform:n=process.platform,arch:s=process.arch}={}){if(e)return e;if(A==="ffmpeg")return Ve({env:t,home:r,platform:n,arch:s});let{delimiter:o,dirname:g,join:C,isAbsolute:a,extname:I}=n==="win32"?kA:rt,i=Object.keys(t).find(h=>h.toUpperCase()==="PATH")||"PATH",c=[g(process.execPath),...(t[i]||"").split(o).filter(Boolean).map(h=>h.replace(/^"(.*)"$/,"$1"))];n!=="win32"?c.push("/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin",C(r,".volta/bin"),C(r,".local/bin")):c.push(C(t.APPDATA||C(r,"AppData","Roaming"),"npm"),C(r,".volta","bin"));let f=n!=="win32"||I(A)?[""]:[".exe",".com",".cmd",".bat"],u=c.filter(a).flatMap(h=>f.map(Q=>C(h,A+Q)));A==="codex"&&n==="darwin"&&u.push("/Applications/Codex.app/Contents/Resources/codex");for(let h of u)try{if(Lr(h,n==="win32"?tt.F_OK:tt.X_OK),br(h).isFile())return h}catch{}return A}function ot(){let{delimiter:A,dirname:e}=process.platform==="win32"?kA:rt,t=Object.keys(process.env).find(r=>r.toUpperCase()==="PATH")||"PATH";process.env[t]=[...new Set([e(process.execPath),...(process.env[t]||"").split(A).filter(Boolean)])].join(A),process.env.HONGGUO_CODEX=j("codex",process.env.HONGGUO_CODEX)}import{realpathSync as Kr}from"node:fs";import{relative as Ur,resolve as Or,isAbsolute as zr}from"node:path";import{homedir as Yr}from"node:os";import{posix as Gr,win32 as Rr}from"node:path";import{fileURLToPath as qr}from"node:url";var st=qr(new URL("../../",import.meta.url));function FA({env:A=process.env,home:e=Yr(),platform:t=process.platform}={}){let{join:r}=t==="win32"?Rr:Gr;return A.HONGGUO_DATA_DIR?A.HONGGUO_DATA_DIR:t==="darwin"?r(e,"Library","Application Support","CodexHongguo"):t==="win32"?r(A.LOCALAPPDATA||r(e,"AppData","Local"),"CodexHongguo"):r(A.XDG_DATA_HOME||r(e,".local","share"),"codex-hongguo")}var at=["userPromptSubmit","stop","interrupt"],Y=()=>({status:"unknown",events:at.map(A=>({event:A,status:"unknown"}))});function gt({command:A=j("codex",process.env.HONGGUO_CODEX),args:e=["app-server"],cwd:t=process.cwd(),timeoutMs:r=8e3,pluginRoot:n=st,installedId:s}={}){let o=C=>{try{return Kr(C)}catch{return Or(C)}},g=o(n);return new Promise(C=>{let a,I=!1,i="",c=0,f=h=>{I||(I=!0,clearTimeout(u),it(a),C(h))},u=setTimeout(()=>f(Y()),r);try{a=nt(A,e,{cwd:t,stdio:["pipe","pipe","ignore"],windowsHide:!0}),a.on("error",()=>f(Y())),a.on("exit",()=>f(Y())),a.stdin.on("error",()=>f(Y())),a.stdout.setEncoding("utf8");let h=Q=>a.stdin.write(JSON.stringify(Q)+`
4
- `);a.stdout.on("data",Q=>{if(I)return;if(c+=Buffer.byteLength(Q),c>2*1024*1024)return f(Y());i+=Q;let B;for(;!I&&(B=i.indexOf(`
5
- `))>=0;){let v=i.slice(0,B);i=i.slice(B+1);let E;try{E=JSON.parse(v)}catch{continue}if(E.error&&[1,2].includes(E.id))return f(Y());if(E.id===1&&E.result&&(h({jsonrpc:"2.0",method:"initialized"}),h({jsonrpc:"2.0",id:2,method:"hooks/list",params:{cwds:[t]}})),E.id===2&&Array.isArray(E.result?.data)){let L=E.result.data.flatMap(p=>Array.isArray(p?.hooks)?p.hooks:[]).filter(p=>typeof p?.pluginId=="string"&&p.pluginId.split("@")[0]==="codex-hongguo").filter(p=>{if(typeof p.sourcePath!="string")return!1;if(s)return p.pluginId===s;let k=Ur(g,o(p.sourcePath));return k&&!k.startsWith("..")&&!zr(k)});if(!L.length)return f(Y());let b=at.map(p=>{let k=L.filter(y=>y.eventName===p),AA=k.length?k.some(y=>!y.enabled)?"disabled":k.every(y=>["trusted","managed"].includes(y.trustStatus))?"ready":k.some(y=>["untrusted","modified"].includes(y.trustStatus))?"needs_review":"unknown":"missing";return{event:p,status:AA}});f({status:b.every(p=>p.status==="ready")?"ready":"needs_attention",events:b})}}}),h({jsonrpc:"2.0",id:1,method:"initialize",params:{clientInfo:{name:"hongguo-setup",version:"1"},capabilities:{experimentalApi:!0}}})}catch{f(Y())}})}import{lstat as It,rm as Tr,unlink as Pr}from"node:fs/promises";import{homedir as jr}from"node:os";import{posix as Wr,win32 as Xr}from"node:path";async function Ct(A={}){let{env:e=process.env,home:t=jr(),platform:r=process.platform}=A,n=r==="win32"?Xr:Wr,s=n.resolve(FA({env:e,home:t,platform:r})),o=n.resolve(FA({env:{...e,HONGGUO_DATA_DIR:void 0},home:t,platform:r})),g=s===o?[s]:["player.sqlite","player.sqlite-wal","player.sqlite-shm","player.sqlite-journal","media","panel-media","device"].map(a=>n.join(s,a)),C=!1;for(let a of g)try{for(let i=n.dirname(a);;i=n.dirname(i)){let c=await It(i);if(!c.isDirectory()||c.isSymbolicLink())throw Error("Substituted data ancestor");if(n.dirname(i)===i)break}let I=await It(a);I.isDirectory()&&!I.isSymbolicLink()?await Tr(a,{recursive:!0,force:!0,maxRetries:10,retryDelay:100}):await Pr(a)}catch(I){I.code!=="ENOENT"&&(C=!0)}if(C)throw Error("\u63D2\u4EF6\u5DF2\u5378\u8F7D\uFF0C\u4F46\u672C\u5730\u6570\u636E\u6E05\u7406\u5931\u8D25\u3002\u8BF7\u5173\u95ED\u64AD\u653E\u5668\u5E76\u68C0\u67E5\u6570\u636E\u76EE\u5F55\u6743\u9650\u540E\uFF0C\u91CD\u65B0\u8FD0\u884C uninstall\u3002")}var W="hongguo-local",G="codex-hongguo@"+W,ut="mreasonyang/codex-hongguo",ct=A=>typeof A=="string"?A.replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,"").replace(/\/$/,""):A;function ft(A,e=process.env){return t=>{let r=$(A,[...t,"--json"],{env:e,encoding:"utf8",timeout:12e4,windowsHide:!0,maxBuffer:4194304});if(r.status!==0)throw Error("Codex \u6B65\u9AA4\u5931\u8D25\uFF1A"+t.slice(0,3).join(" ")+"\u3002\u8BF7\u5728 Codex \u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u68C0\u67E5\u72B6\u6001\u540E\u91CD\u8BD5\u3002");try{return JSON.parse(r.stdout)}catch{throw Error("Codex \u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u7ED3\u679C\uFF0C\u8BF7\u66F4\u65B0 Codex \u540E\u91CD\u8BD5\u3002")}}}function $r(A){if(/^[\w.-]+\/[\w.-]+$/.test(A)||Vr(A))return A;throw Error("--marketplace \u53EA\u63A5\u53D7 owner/repo \u6216\u73B0\u6709\u672C\u5730\u5E02\u573A\u76EE\u5F55\u3002")}function An({run:A,source:e=ut,update:t=!1,dryRun:r=!1,log:n=console.log}){if($r(e),r){n("\u5C06\u4F7F\u7528 Codex \u539F\u751F\u5E02\u573A\u5B89\u88C5 "+G+"\uFF1B\u5E02\u573A\u6765\u6E90\uFF1A"+e),n("\u89C2\u770B\u8FDB\u5EA6\u4FDD\u7559\u5728\u539F\u6570\u636E\u76EE\u5F55\u3002\u5B89\u88C5\u5B8C\u6210\u540E\u9700\u5728 Codex \u4E2D\u5BA1\u67E5\u5E76\u4FE1\u4EFB\u4E09\u4E2A Hooks\u3002");return}let s=A(["plugin","marketplace","list"]).marketplaces?.find(C=>C.name===W),o=s?.marketplaceSource?.source,g=!!s&&ct(o)!==ct(e);g&&A(["plugin","marketplace","remove",W]);try{A(["plugin","marketplace","add",e]),t&&!g&&s?.marketplaceSource?.sourceType==="git"&&A(["plugin","marketplace","upgrade",W]),A(["plugin","add",G])}catch(C){if(g&&o){try{A(["plugin","marketplace","remove",W])}catch{}try{A(["plugin","marketplace","add",o]),A(["plugin","add",G])}catch{throw Error("\u5B89\u88C5\u5931\u8D25\uFF0C\u539F\u5E02\u573A\u672A\u80FD\u81EA\u52A8\u6062\u590D\u3002\u8BF7\u4ECE Codex \u63D2\u4EF6\u8BBE\u7F6E\u91CD\u65B0\u6DFB\u52A0\u539F\u6765\u6E90\uFF1B\u89C2\u770B\u8FDB\u5EA6\u4ECD\u4FDD\u7559\u3002")}}throw C}n("\u7EA2\u679C\u77ED\u5267\u5DF2\u5B89\u88C5\u3002\u91CD\u65B0\u6253\u5F00\u64AD\u653E\u5668\u5373\u53EF\u4F7F\u7528\u65B0\u7248\u3002")}async function ti(A=process.argv.slice(2)){try{let[e="help",...t]=A;if(e==="--version"){console.log(JSON.parse(Zr(new URL("../../package.json",import.meta.url),"utf8")).version);return}if(["help","--help","-h"].includes(e)){console.log(`\u7EA2\u679C\u77ED\u5267
2
+ var pt=Object.create;var KA=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var vt=Object.getOwnPropertyNames;var mt=Object.getPrototypeOf,yt=Object.prototype.hasOwnProperty;var F=(A=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(A,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):A)(function(A){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')});var m=(A,e)=>()=>{try{return e||A((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}};var dt=(A,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of vt(e))!yt.call(A,n)&&n!==t&&KA(A,n,{get:()=>e[n],enumerable:!(r=wt(e,n))||r.enumerable});return A};var UA=(A,e,t)=>(t=A!=null?pt(mt(A)):{},dt(e||!A||!A.__esModule?KA(t,"default",{value:A,enumerable:!0}):t,A));var jA=m((tn,PA)=>{PA.exports=TA;TA.sync=xt;var OA=F("fs");function Dt(A,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var r=0;r<t.length;r++){var n=t[r].toLowerCase();if(n&&A.substr(-n.length).toLowerCase()===n)return!0}return!1}function zA(A,e,t){return!A.isSymbolicLink()&&!A.isFile()?!1:Dt(e,t)}function TA(A,e,t){OA.stat(A,function(r,n){t(r,r?!1:zA(n,A,e))})}function xt(A,e){return zA(OA.statSync(A),A,e)}});var _A=m((rn,VA)=>{VA.exports=XA;XA.sync=Nt;var WA=F("fs");function XA(A,e,t){WA.stat(A,function(r,n){t(r,r?!1:ZA(n,e))})}function Nt(A,e){return ZA(WA.statSync(A),e)}function ZA(A,e){return A.isFile()&&kt(A,e)}function kt(A,e){var t=A.mode,r=A.uid,n=A.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),g=parseInt("100",8),c=parseInt("010",8),a=parseInt("001",8),I=g|c,i=t&a||t&c&&n===o||t&g&&r===s||t&I&&s===0;return i}});var Ae=m((on,$A)=>{var nn=F("fs"),tA;process.platform==="win32"||global.TESTING_WINDOWS?tA=jA():tA=_A();$A.exports=aA;aA.sync=St;function aA(A,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(r,n){aA(A,e||{},function(s,o){s?n(s):r(o)})})}tA(A,e||{},function(r,n){r&&(r.code==="EACCES"||e&&e.ignoreErrors)&&(r=null,n=!1),t(r,n)})}function St(A,e){try{return tA.sync(A,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var se=m((sn,oe)=>{var K=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",ee=F("path"),Ft=K?";":":",te=Ae(),re=A=>Object.assign(new Error(`not found: ${A}`),{code:"ENOENT"}),ne=(A,e)=>{let t=e.colon||Ft,r=A.match(/\//)||K&&A.match(/\\/)?[""]:[...K?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=K?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=K?n.split(t):[""];return K&&A.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:r,pathExt:s,pathExtExe:n}},ie=(A,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:r,pathExt:n,pathExtExe:s}=ne(A,e),o=[],g=a=>new Promise((I,i)=>{if(a===r.length)return e.all&&o.length?I(o):i(re(A));let C=r[a],f=/^".*"$/.test(C)?C.slice(1,-1):C,u=ee.join(f,A),h=!f&&/^\.[\\\/]/.test(A)?A.slice(0,2)+u:u;I(c(h,a,0))}),c=(a,I,i)=>new Promise((C,f)=>{if(i===n.length)return C(g(I+1));let u=n[i];te(a+u,{pathExt:s},(h,Q)=>{if(!h&&Q)if(e.all)o.push(a+u);else return C(a+u);return C(c(a,I,i+1))})});return t?g(0).then(a=>t(null,a),t):g(0)},Mt=(A,e)=>{e=e||{};let{pathEnv:t,pathExt:r,pathExtExe:n}=ne(A,e),s=[];for(let o=0;o<t.length;o++){let g=t[o],c=/^".*"$/.test(g)?g.slice(1,-1):g,a=ee.join(c,A),I=!c&&/^\.[\\\/]/.test(A)?A.slice(0,2)+a:a;for(let i=0;i<r.length;i++){let C=I+r[i];try{if(te.sync(C,{pathExt:n}))if(e.all)s.push(C);else return C}catch{}}}if(e.all&&s.length)return s;if(e.nothrow)return null;throw re(A)};oe.exports=ie;ie.sync=Mt});var ge=m((an,gA)=>{"use strict";var ae=(A={})=>{let e=A.env||process.env;return(A.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(r=>r.toUpperCase()==="PATH")||"Path"};gA.exports=ae;gA.exports.default=ae});var fe=m((gn,ce)=>{"use strict";var Ie=F("path"),Jt=se(),Lt=ge();function Ce(A,e){let t=A.options.env||process.env,r=process.cwd(),n=A.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(A.options.cwd)}catch{}let o;try{o=Jt.sync(A.command,{path:t[Lt({env:t})],pathExt:e?Ie.delimiter:void 0})}catch{}finally{s&&process.chdir(r)}return o&&(o=Ie.resolve(n?A.options.cwd:"",o)),o}function bt(A){return Ce(A)||Ce(A,!0)}ce.exports=bt});var ue=m((In,CA)=>{"use strict";var IA=/([()\][%!^"`<>&|;, *?])/g;function Yt(A){return A=A.replace(IA,"^$1"),A}function Gt(A,e){return A=`${A}`,A=A.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),A=A.replace(/(?=(\\+?)?)\1$/,"$1$1"),A=`"${A}"`,A=A.replace(IA,"^$1"),e&&(A=A.replace(IA,"^$1")),A}CA.exports.command=Yt;CA.exports.argument=Gt});var le=m((Cn,he)=>{"use strict";he.exports=/^#!(.*)/});var Ee=m((cn,Qe)=>{"use strict";var Ht=le();Qe.exports=(A="")=>{let e=A.match(Ht);if(!e)return null;let[t,r]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?r:r?`${n} ${r}`:n}});var pe=m((fn,Be)=>{"use strict";var cA=F("fs"),Rt=Ee();function qt(A){let t=Buffer.alloc(150),r;try{r=cA.openSync(A,"r"),cA.readSync(r,t,0,150,0),cA.closeSync(r)}catch{}return Rt(t.toString())}Be.exports=qt});var ye=m((un,me)=>{"use strict";var Kt=F("path"),we=fe(),ve=ue(),Ut=pe(),Ot=process.platform==="win32",zt=/\.(?:com|exe)$/i,Tt=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Pt(A){A.file=we(A);let e=A.file&&Ut(A.file);return e?(A.args.unshift(A.file),A.command=e,we(A)):A.file}function jt(A){if(!Ot)return A;let e=Pt(A),t=!zt.test(e);if(A.options.forceShell||t){let r=Tt.test(e);A.command=Kt.normalize(A.command),A.command=ve.command(A.command),A.args=A.args.map(s=>ve.argument(s,r));let n=[A.command].concat(A.args).join(" ");A.args=["/d","/s","/c",`"${n}"`],A.command=process.env.comspec||"cmd.exe",A.options.windowsVerbatimArguments=!0}return A}function Wt(A,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let r={command:A,args:e,options:t,file:void 0,original:{command:A,args:e}};return t.shell?r:jt(r)}me.exports=Wt});var xe=m((hn,De)=>{"use strict";var fA=process.platform==="win32";function uA(A,e){return Object.assign(new Error(`${e} ${A.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${A.command}`,path:A.command,spawnargs:A.args})}function Xt(A,e){if(!fA)return;let t=A.emit;A.emit=function(r,n){if(r==="exit"){let s=de(n,e);if(s)return t.call(A,"error",s)}return t.apply(A,arguments)}}function de(A,e){return fA&&A===1&&!e.file?uA(e.original,"spawn"):null}function Zt(A,e){return fA&&A===1&&!e.file?uA(e.original,"spawnSync"):null}De.exports={hookChildProcess:Xt,verifyENOENT:de,verifyENOENTSync:Zt,notFoundError:uA}});var Se=m((ln,U)=>{"use strict";var Ne=F("child_process"),hA=ye(),lA=xe();function ke(A,e,t){let r=hA(A,e,t),n=Ne.spawn(r.command,r.args,r.options);return lA.hookChildProcess(n,r),n}function Vt(A,e,t){let r=hA(A,e,t),n=Ne.spawnSync(r.command,r.args,r.options);return n.error=n.error||lA.verifyENOENTSync(n.status,r),n}U.exports=ke;U.exports.spawn=ke;U.exports.sync=Vt;U.exports._parse=hA;U.exports._enoent=lA});var He=m((_,mA)=>{(function(e,t){typeof _=="object"&&typeof mA=="object"?mA.exports=t(F("stream/web")):typeof define=="function"&&define.amd?define(["stream/web"],t):typeof _=="object"?_["xz-decompress"]=t(F("stream/web")):e["xz-decompress"]=t(e["stream/web"])})(_,A=>(()=>{"use strict";var e=[,(s=>{s.exports="data:application/wasm;base64,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ACABQX9qIgENAAsgAkJ/hSECCyACC8oQAgx/An4CQAJAIAAoAiRFDQAgACgCACECDAELQQAhAiAAQQA6ACggAEIANwMAIABCADcDGCAAQcgAakEAQeQAEIaAgIAAGiAAQawBakEMNgIACyAAIAEoAgQiAzYCECAAQeAAaiEEIABByABqIQUgAEG2AWohBiAAQbABaiEHIABBqAFqIQggASgCECEJAkACQAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACDgoBAgAEBQYHCAkKDwsgASgCACEKIAAoAqgBIQIgACgCrAEhCyABKAIEIQwgASgCCCENDAILIAcgACgCqAEiDGogASgCACABKAIEIgJqIAEoAgggAmsiAiAAKAKsASAMayIMIAIgDEkbIgIQh4CAgAAaIAEgASgCBCACajYCBEEAIQwgAEEAIAAoAqgBIAJqIgIgAiAAKAKsASILRhs2AqgBIAIgC0cNESAAQQE2AgACQCAHQaiIgIAAQQYQhICAgABFDQBBBSEMDBILIAZBAkEAEI2AgIAAIAAoALgBRw0QQQYhDCAGLQAADREgACAALQC3ASICNgIgIAJBBEsNEUEBIAJ0QRNxRQ0RCyABKAIEIgwgASgCCCINRg0OAkAgASgCACIKIAxqLQAAIgsNACAAIAw2AhAgASAMQQFqNgIEQQYhAgwMC0EAIQIgAEEANgKoASAAQQI2AgAgACALQQJ0QQRqIgs2AqwBIAAgCzYCQAsgByACaiAKIAxqIA0gDGsiDCALIAJrIgIgDCACSRsiAhCHgICAABogASABKAIEIAJqNgIEQQAhDCAAQQAgACgCqAEgAmoiAiACIAAoAqwBIgtGGzYCqAEgAiALRw0PIAAgAkF8aiICNgKsAUEHIQwgByACQQAQjYCAgAAgByAAKAKsASICaigAAEcNDyAAQQI2AqgBIAAtALEBIgtBP3ENDAJAAkAgC0HAAHFFDQAgACAHIAggAhCRgICAAEEBRw0RIAAgACkDCDcDMCAAKAKsASECIAAtALEBIQsMAQsgAEJ/NwMwC0J/IQ4CQCALwEF/Sg0AIAAgByAIIAIQkYCAgABBAUcNECAAKAKsASECIAApAwghDgsgACAONwM4IAIgACgCqAEiC2tBAkkNDyAAIAtBAWoiCjYCqAEgCCALakEI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AA8LIAEgA0EBaiIFNgIEAkAgASgCACADai0AACAAKQMYIAAoAgQiA62Ip0H/AXFGDQBBBw8LIAAgA0EIaiIGNgIEIAUhAyAGIAJJDQALIABBADYCBCAAQgA3AxhBAQtvAQF/QQchAQJAIABBugFqLwAAQdm0AUcNACAAQbQBakEGQQAQjYCAgAAgAEGwAWooAABHDQAgAEGAAWopAwBCAoggADUAtAFSDQAgAEG4AWotAAANAEEBQQcgACgCICAAQbkBai0AAEYbIQELIAELwAIBA38CQAJAAkAgACgCJA0AIABBADoAKCAAQQA2AgBBASECDAELAkAgACgCAEEKRw0AQQAhAwwCC0ECIQMMAQtBASEDCwJAAkADQAJAAkACQAJAIAMOAwABAwMLIAEoAgQiAyABKAIIIgRGDQQgASgCACEFAkADQCAFIANqLQAADQEgASADQQFqIgM2AgQgACAAKAIEQQFqQQNxNgIEIAQgA0YNBgwACwsCQCAAKAIERQ0AQQcPCyAAKAIkRQ0BIABBADoAKCAAQQA2AgBBASEDDAMLIABCADcDGCAAQQA2AgQgAEHIAGpBAEHkABCGgICAABogAEGsAWpBDDYCAAtBAiEDDAELIAAgARCQgICAACIDQQFHDQIgAEEKNgIAQQAhAwwACwsCQCACDQBBAA8LQQdBASAAKAIEGyEDCyADC3UBAX8CQEG4CRCAgICAACICRQ0AIAIgADYCJCACIAAgARCbgICAACIANgKwCQJAIABFDQAgAkEAOgAoIAJCADcDACACQgA3AxggAkHIAGpBAEHkABCGgICAABogAkGsAWpBDDYCACACDwsgAhCCgICAAAtBAAseAAJAIABFDQAgACgCsAkQnYCAgAAgABCCgICAAAsL3RABCn8gAEHo3QFqIQIgAEHUAGohAyAAQRxqIgRBCGohBQJAAkADQCAAKAJAIQYCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCBCIHIAEoAghJDQAgBkEHRg0BDBELIAYOCQECAwQFBgcACQ4LIAAoAkwhBgwHC0EBIQYgASAHQQFqNgIEIAEoAgAgB2otAAAiB0UNCAJAAkAgB0HfAUsNACAHQQFHDQELIABBgAI7AVACQCAAKAI8DQAgACABKAIMIAEoAhAiBmo2AhggACABKAIUIAZr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"}),(s=>{s.exports=A})],t={};function r(s){var o=t[s];if(o!==void 0)return o.exports;var g=t[s]={exports:{}};return e[s](g,g.exports,r),g.exports}r.d=(s,o)=>{for(var g in o)r.o(o,g)&&!r.o(s,g)&&Object.defineProperty(s,g,{enumerable:!0,get:o[g]})},r.o=(s,o)=>Object.prototype.hasOwnProperty.call(s,o),r.r=s=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})};var n={};return(()=>{r.r(n),r.d(n,{XzReadableStream:()=>i});var s=r(1);let o=globalThis.ReadableStream||r(2).ReadableStream,g=0,c=1;class a{constructor(f){this.exports=f.exports,this.memory=this.exports.memory,this.ptr=this.exports.create_context(),this._refresh(),this.bufSize=this.mem32[0],this.inStart=this.mem32[1]-this.ptr,this.inEnd=this.inStart+this.bufSize,this.outStart=this.mem32[4]-this.ptr}supplyInput(f){this._refresh(),this.mem8.subarray(this.inStart,this.inEnd).set(f,0),this.exports.supply_input(this.ptr,f.byteLength),this._refresh()}getNextOutput(){let f=this.exports.get_next_output(this.ptr);if(this._refresh(),f!==g&&f!==c)throw new Error(`get_next_output failed with error code ${f}`);return{outChunk:this.mem8.slice(this.outStart,this.outStart+this.mem32[5]),finished:f===c}}needsMoreInput(){return this.mem32[2]===this.mem32[3]}outputBufferIsFull(){return this.mem32[5]===this.bufSize}resetOutputBuffer(){this.outPos=this.mem32[5]=0}dispose(){this.exports.destroy_context(this.ptr),this.exports=null}_refresh(){this.memory.buffer!==this.mem8?.buffer&&(this.mem8=new Uint8Array(this.memory.buffer,this.ptr),this.mem32=new Uint32Array(this.memory.buffer,this.ptr))}}class I{constructor(){this.locked=!1,this.waitQueue=[]}async acquire(){if(!this.locked){this.locked=!0;return}return new Promise(f=>{this.waitQueue.push(f)})}release(){this.waitQueue.length>0?this.waitQueue.shift()():this.locked=!1}}class i extends o{static _moduleInstancePromise;static _moduleInstance;static _contextMutex=new I;static async _getModuleInstance(){let f=s.replace("data:application/wasm;base64,",""),u=Uint8Array.from(atob(f),B=>B.charCodeAt(0)).buffer,h={},Q=await WebAssembly.instantiate(u,h);i._moduleInstance=Q.instance}constructor(f){let u,h=null,Q=f.getReader();super({async start(B){await i._contextMutex.acquire();try{i._moduleInstance||await(i._moduleInstancePromise||(i._moduleInstancePromise=i._getModuleInstance())),u=new a(i._moduleInstance)}catch(v){throw i._contextMutex.release(),v}},async pull(B){try{if(u.needsMoreInput()){if(h===null||h.byteLength===0){let{done:L,value:b}=await Q.read();L||(h=b)}let E=Math.min(u.bufSize,h.byteLength);u.supplyInput(h.subarray(0,E)),h=h.subarray(E)}let v=u.getNextOutput();B.enqueue(v.outChunk),u.resetOutputBuffer(),v.finished&&(u.dispose(),i._contextMutex.release(),B.close())}catch(v){throw u&&u.dispose(),i._contextMutex.release(),v}},cancel(){try{return u&&u.dispose(),Q.cancel()}finally{i._contextMutex.release()}}})}}})(),n})())});import{readFileSync as Zr,existsSync as Vr}from"node:fs";import{fileURLToPath as _r}from"node:url";var SA=UA(Se(),1);import{accessSync as Lr,constants as tt,statSync as br}from"node:fs";import{homedir as Yr}from"node:os";import{posix as rt,win32 as kA}from"node:path";import{createHash as Oe,randomUUID as pr}from"node:crypto";import{createReadStream as ze}from"node:fs";import{mkdir as qe,lstat as DA,open as Te,readFile as Pe,writeFile as wr,rename as vr,rm as T,chmod as mr,stat as Ke,unlink as yr,rmdir as Ue}from"node:fs/promises";import{lstatSync as dr}from"node:fs";import{homedir as je}from"node:os";import{posix as xA,win32 as NA}from"node:path";import{spawnSync as Dr}from"node:child_process";import{createRequire as _t}from"module";var $t=_t("/"),z,Ar,er;try{z=$t("worker_threads"),Ar=z.Worker,er=z.isMarkedAsUntransferable}catch{}var D=Uint8Array,O=Uint16Array,tr=Int32Array,Fe=new D([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Me=new D([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),rr=new D([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Je=function(A,e){for(var t=new O(31),r=0;r<31;++r)t[r]=e+=1<<A[r-1];for(var n=new tr(t[30]),r=1;r<30;++r)for(var s=t[r];s<t[r+1];++s)n[s]=s-t[r]<<5|r;return{b:t,r:n}},z=Je(Fe,2),Le=z.b,nr=z.r;Le[28]=258,nr[258]=28;var be=Je(Me,0),ir=be.b,En=be.r,pA=new O(32768);for(l=0;l<32768;++l)J=(l&43690)>>1|(l&21845)<<1,J=(J&52428)>>2|(J&13107)<<2,J=(J&61680)>>4|(J&3855)<<4,pA[l]=((J&65280)>>8|(J&255)<<8)>>1;var J,l,Z=(function(A,e,t){for(var r=A.length,n=0,s=new O(e);n<r;++n)A[n]&&++s[A[n]-1];var o=new O(e);for(n=1;n<e;++n)o[n]=o[n-1]+s[n-1]<<1;var g;if(t){g=new O(1<<e);var c=15-e;for(n=0;n<r;++n)if(A[n])for(var a=n<<4|A[n],I=e-A[n],i=o[A[n]-1]++<<I,C=i|(1<<I)-1;i<=C;++i)g[pA[i]>>c]=a}else for(g=new O(r),n=0;n<r;++n)A[n]&&(g[n]=pA[o[A[n]-1]++]>>15-A[n]);return g}),V=new D(288);for(l=0;l<144;++l)V[l]=8;var l;for(l=144;l<256;++l)V[l]=9;var l;for(l=256;l<280;++l)V[l]=7;var l;for(l=280;l<288;++l)V[l]=8;var l,Ye=new D(32);for(l=0;l<32;++l)Ye[l]=5;var l;var or=Z(V,9,1);var sr=Z(Ye,5,1),QA=function(A){for(var e=A[0],t=1;t<A.length;++t)A[t]>e&&(e=A[t]);return e},S=function(A,e,t){var r=e/8|0;return(A[r]|A[r+1]<<8)>>(e&7)&t},EA=function(A,e){var t=e/8|0;return(A[t]|A[t+1]<<8|A[t+2]<<16)>>(e&7)},ar=function(A){return(A+7)/8|0},vA=function(A,e,t){return(e==null||e<0)&&(e=0),(t==null||t>A.length)&&(t=A.length),new D(A.subarray(e,t))};var gr=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],d=function(A,e,t){var r=new Error(e||gr[A]);if(r.code=A,Error.captureStackTrace&&Error.captureStackTrace(r,d),!t)throw r;return r},Ir=function(A,e,t,r){var n=A.length,s=r?r.length:0;if(!n||e.f&&!e.l)return t||new D(0);var o=!t,g=o||e.i!=2,c=e.i;o&&(t=new D(n*3));var a=function(HA){var RA=t.length;if(HA>RA){var qA=new D(Math.max(RA*2,HA));qA.set(t),t=qA}},I=e.f||0,i=e.p||0,C=e.b||0,f=e.l,u=e.d,h=e.m,Q=e.n,B=n*8;do{if(!f){I=S(A,i,1);var v=S(A,i+1,3);if(i+=3,v)if(v==1)f=or,u=sr,h=9,Q=5;else if(v==2){var p=S(A,i,31)+257,k=S(A,i+10,15)+4,AA=p+S(A,i+5,31)+1;i+=14;for(var y=new D(AA),nA=new D(19),x=0;x<k;++x)nA[rr[x]]=S(A,i+x*3,7);i+=k*3;for(var MA=QA(nA),ht=(1<<MA)-1,lt=Z(nA,MA,1),x=0;x<AA;){var JA=lt[S(A,i,ht)];i+=JA&15;var E=JA>>4;if(E<16)y[x++]=E;else{var R=0,eA=0;for(E==16?(eA=3+S(A,i,3),i+=2,R=y[x-1]):E==17?(eA=3+S(A,i,7),i+=3):E==18&&(eA=11+S(A,i,127),i+=7);eA--;)y[x++]=R}}var LA=y.subarray(0,p),Y=y.subarray(p);h=QA(LA),Q=QA(Y),f=Z(LA,h,1),u=Z(Y,Q,1)}else d(1);else{var E=ar(i)+4,L=A[E-4]|A[E-3]<<8,b=E+L;if(b>n){c&&d(0);break}g&&a(C+L),t.set(A.subarray(E,b),C),e.b=C+=L,e.p=i=b*8,e.f=I;continue}if(i>B){c&&d(0);break}}g&&a(C+131072);for(var Qt=(1<<h)-1,Et=(1<<Q)-1,iA=i;;iA=i){var R=f[EA(A,i)&Qt],q=R>>4;if(i+=R&15,i>B){c&&d(0);break}if(R||d(2),q<256)t[C++]=q;else if(q==256){iA=i,f=null;break}else{var bA=q-254;if(q>264){var x=q-257,X=Fe[x];bA=S(A,i,(1<<X)-1)+Le[x],i+=X}var oA=u[EA(A,i)&Et],sA=oA>>4;oA||d(3),i+=oA&15;var Y=ir[sA];if(sA>3){var X=Me[sA];Y+=EA(A,i)&(1<<X)-1,i+=X}if(i>B){c&&d(0);break}g&&a(C+131072);var YA=C+bA;if(C<Y){var GA=s-Y,Bt=Math.min(Y,YA);for(GA+C<0&&d(3);C<Bt;++C)t[C]=r[GA+C]}for(;C<YA;++C)t[C]=t[C-Y]}}e.l=f,e.p=iA,e.b=C,e.f=I,f&&(I=1,e.m=h,e.d=u,e.n=Q)}while(!I);return C!=t.length&&o?vA(t,0,C):t.subarray(0,C)};var Cr=new D(0);var M=function(A,e){return A[e]|A[e+1]<<8},N=function(A,e){return(A[e]|A[e+1]<<8|A[e+2]<<16|A[e+3]<<24)>>>0},BA=function(A,e){return N(A,e)+N(A,e+4)*4294967296};function cr(A,e){return Ir(A,{i:2},e&&e.out,e&&e.dictionary)}var wA=typeof TextDecoder<"u"&&new TextDecoder,fr=0;try{wA.decode(Cr,{stream:!0}),fr=1}catch{}var ur=function(A){for(var e="",t=0;;){var r=A[t++],n=(r>127)+(r>223)+(r>239);if(t+n>A.length)return{s:e,r:vA(A,t-1)};n?n==3?(r=((r&15)<<18|(A[t++]&63)<<12|(A[t++]&63)<<6|A[t++]&63)-65536,e+=String.fromCharCode(55296|r>>10,56320|r&1023)):n&1?e+=String.fromCharCode((r&31)<<6|A[t++]&63):e+=String.fromCharCode((r&15)<<12|(A[t++]&63)<<6|A[t++]&63):e+=String.fromCharCode(r)}};function hr(A,e){if(e){for(var t="",r=0;r<A.length;r+=16384)t+=String.fromCharCode.apply(null,A.subarray(r,r+16384));return t}else{if(wA)return wA.decode(A);var n=ur(A),s=n.s,t=n.r;return t.length&&d(8),s}}var lr=function(A,e){return e+30+M(A,e+26)+M(A,e+28)},Qr=function(A,e,t){var r=M(A,e+28),n=M(A,e+30),s=hr(A.subarray(e+46,e+46+r),!(M(A,e+8)&2048)),o=e+46+r,g=Er(A,o,n,t,N(A,e+20),N(A,e+24),N(A,e+42)),c=g[0],a=g[1],I=g[2];return[M(A,e+10),c,a,s,o+n+M(A,e+32),I]},Er=function(A,e,t,r,n,s,o){var g=n==4294967295,c=s==4294967295,a=o==4294967295,I=e+t,i=g+c+a;if(r&&i){for(;e+4<I;e+=4+M(A,e+2))if(M(A,e)==1)return[g?BA(A,e+4+8*c):n,c?BA(A,e+4):s,a?BA(A,e+4+8*(c+g)):o,1];r<2&&d(13)}return[n,s,o,0]};function Ge(A,e){for(var t={},r=A.length-22;N(A,r)!=101010256;--r)(!r||A.length-r>65558)&&d(13);var n=M(A,r+8);if(!n)return{};var s=N(A,r+16),o=N(A,r-20)==117853008;if(o){var g=N(A,r-12);o=N(A,g)==101075792,o&&(n=N(A,g+32),s=N(A,g+48))}for(var c=e&&e.filter,a=0;a<n;++a){var I=Qr(A,s,o),i=I[0],C=I[1],f=I[2],u=I[3],h=I[4],Q=I[5],B=lr(A,Q);s=h,(!c||c({name:u,size:C,originalSize:f,compression:i}))&&(i?i==8?t[u]=cr(A.subarray(B,B+C),{out:new D(f)}):d(14,"unknown compression type "+i):t[u]=vA(A,B,B+C))}return t}var We=UA(He(),1);var Re={"darwin-arm64":{version:"9.0.2",url:"https://www.osxexperts.net/ffmpeg902arm.zip",format:"zip",entry:"ffmpeg",archiveBytes:22665869,archiveSha256:"07e00300593799005b060c03a99fe648b1edda0f30c36b0c1adafe8e3247e586",binaryBytes:52160568,binarySha256:"762f16b2913b8d3b8fdb8092df12b691053b035b13ae9b88205513c55cb8e71e"},"darwin-x64":{version:"9.0.2",url:"https://evermeet.cx/ffmpeg/ffmpeg-9.0.2.zip",format:"zip",entry:"ffmpeg",archiveBytes:26198325,archiveSha256:"4acc0be580f9b2788029eb7bd4d645ff87968911b0a62aeeb3940d42d54558d5",binaryBytes:80827688,binarySha256:"a45b462cf91ed89148ae218c4577e30896485d7a6792c3673bcf5f823fa01b63"},"linux-x64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-linux64-gpl-9.0.tar.xz",format:"tar.xz",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-linux64-gpl-9.0/bin/ffmpeg",archiveBytes:153175100,archiveSha256:"73e29a56974ae5a651133a04584c7483b21afe941e17dc91d79814a758b608d3"},"linux-arm64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-linuxarm64-gpl-9.0.tar.xz",format:"tar.xz",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-linuxarm64-gpl-9.0/bin/ffmpeg",archiveBytes:128664064,archiveSha256:"6cad88ae5bcec356cfc5d7979a036cc4007128201928a0cf243df3db483276cc"},"win32-x64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-win64-gpl-9.0.zip",format:"zip",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-win64-gpl-9.0/bin/ffmpeg.exe",archiveBytes:195110184,archiveSha256:"693f3e224bc184b40524a62ca47526cfebaf2504414021b92fe75f677ad868b9"}};var P=new Map,rA=new Map,xr="@kyun.si/codex-hongguo",w=()=>Error("\u64AD\u653E\u7EC4\u4EF6\u81EA\u52A8\u51C6\u5907\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u548C\u7F13\u5B58\u76EE\u5F55\u6743\u9650\u540E\u91CD\u8BD5\u5B89\u88C5\u3002"),Nr=A=>new Promise(e=>setTimeout(e,A));function Xe(A={}){let{env:e=process.env,home:t=je(),platform:r=process.platform,arch:n=process.arch}=A,s=r==="win32"?NA:xA;if(e.HONGGUO_FFMPEG){if(!s.isAbsolute(e.HONGGUO_FFMPEG))throw w();return{...A,env:e,platform:r,target:e.HONGGUO_FFMPEG,override:!0}}let o=(A.artifacts||Re)[r+"-"+n];if(!o)throw Error("\u5F53\u524D\u7CFB\u7EDF\u67B6\u6784\u6682\u4E0D\u652F\u6301\u81EA\u52A8\u51C6\u5907\u64AD\u653E\u7EC4\u4EF6\u3002");let g=Ze({env:e,home:t,platform:r,paths:s}),c=s.join(g,"runtime","ffmpeg",o.archiveSha256.slice(0,16),r+"-"+n);return{...A,env:e,platform:r,artifact:o,directory:c,target:s.join(c,r==="win32"?"ffmpeg.exe":"ffmpeg")}}function Ze({env:A,home:e,platform:t,paths:r}){return A.HONGGUO_RUNTIME_DIR?r.join(A.HONGGUO_RUNTIME_DIR,"codex-hongguo"):t==="darwin"?r.join(e,"Library","Caches","CodexHongguo"):t==="win32"?r.join(A.LOCALAPPDATA||r.join(e,"AppData","Local"),"CodexHongguo","Cache"):r.join(A.XDG_CACHE_HOME||r.join(e,".cache"),"codex-hongguo")}function Ve(A){return Xe(A).target}function yA(A){try{let e=dr(A);return e.isFile()&&!e.isSymbolicLink()?`${e.size}:${e.mtimeMs}:${e.ctimeMs}`:null}catch{return null}}async function _e(A){let e=Oe("sha256");for await(let t of ze(A))e.update(t);return e.digest("hex")}function $e(A,e){return e.probe?e.probe(A):Dr(A,["-version"],{stdio:"ignore",timeout:5e3,windowsHide:!0}).status===0}async function dA(A){let{target:e,artifact:t}=A;if(P.get(e)&&P.get(e)===yA(e))return!0;try{let r=await DA(e);if(!r.isFile()||r.isSymbolicLink())return!1;if(t){let n=JSON.parse(await Pe(e+".json","utf8"));if(n.archiveSha256!==t.archiveSha256||!/^[a-f0-9]{64}$/.test(n.binarySha256)||r.size!==(t.binaryBytes||n.binaryBytes)||await _e(e)!==(t.binarySha256||n.binarySha256))return!1}return $e(e,A)?(P.set(e,yA(e)),!0):!1}catch{return!1}}async function kr(A,e,t){let r=new Set(["github.com","release-assets.githubusercontent.com","objects.githubusercontent.com","evermeet.cx","www.osxexperts.net"]),n=AbortSignal.timeout(3e5),s=new URL(A.url),o;for(let I=0;I<=6;I++){if(s.protocol!=="https:"||s.username||s.password||s.port||!r.has(s.hostname))throw w();if(o=await t(s,{redirect:"manual",signal:n}),![301,302,303,307,308].includes(o.status))break;let i=o.headers.get("location");if(await o.body?.cancel(),!i||I===6)throw w();s=new URL(i,s)}if(!o.ok||!o.body||Number(o.headers.get("content-length"))>A.archiveBytes)throw await o.body?.cancel(),w();let g=await Te(e,"wx",384),c=Oe("sha256"),a=0;try{for await(let I of o.body){if(a+=I.length,a>A.archiveBytes)throw w();c.update(I),await g.writeFile(I)}if(a!==A.archiveBytes||c.digest("hex")!==A.archiveSha256)throw w()}finally{await g.close()}}async function Sr(A,e,t){let r=await Te(t,"wx",384);try{if(A.format==="zip"){let C=Ge(await Pe(e),{filter:f=>f.name===A.entry&&f.originalSize<=(A.binaryBytes||268435456)})[A.entry];if(!C||A.binaryBytes&&C.length!==A.binaryBytes)throw w();await r.writeFile(C);return}let n=new We.default.XzReadableStream(Fr(e)),s=n.getReader(),o=Buffer.alloc(0),g=0,c=0,a=!1,I=0;try{for(;;){let{value:i,done:C}=await s.read();if(C)break;if(I+=i.length,I>1024*1024*1024)throw w();for(o=Buffer.concat([o,i]);o.length;)if(g){let f=Math.min(g,o.length);if(a&&await r.writeFile(o.subarray(0,f)),o=o.subarray(f),g-=f,!g&&a)return}else if(c){let f=Math.min(c,o.length);o=o.subarray(f),c-=f}else{if(o.length<512)break;let f=o.subarray(0,512);o=o.subarray(512);let u=(B,v)=>f.subarray(B,v).toString("utf8").split("\0")[0],h=[u(345,500),u(0,100)].filter(Boolean).join("/"),Q=parseInt(u(124,136).trim()||"0",8);if(!Number.isSafeInteger(Q)||Q<0||Q>512*1024*1024||(a=h===A.entry,a&&(A.binaryBytes&&Q!==A.binaryBytes||Q>256*1024*1024||![0,48].includes(f[156]))))throw w();g=Q,c=(512-Q%512)%512}}throw w()}finally{await s.cancel().catch(()=>{})}}finally{await r.close()}}function Fr(A){let e=ze(A)[Symbol.asyncIterator]();return new ReadableStream({async pull(t){let{value:r,done:n}=await e.next();n?t.close():t.enqueue(r)},async cancel(){await e.return?.()}})}async function At(A={}){let e=Xe(A);if(await dA(e))return e.target;if(e.override)throw w();if(rA.has(e.target))return rA.get(e.target);let t=Jr(e).finally(()=>rA.delete(e.target));return rA.set(e.target,t),t}async function Mr(A,e){for(let t=A;;t=e.dirname(t)){let r=await DA(t);if(!r.isDirectory()||r.isSymbolicLink())return!1;if(e.dirname(t)===t)return!0}}async function et(A={}){let{env:e=process.env,home:t=je(),platform:r=process.platform}=A,n=r==="win32"?NA:xA,s=Ze({env:e,home:t,platform:r,paths:n}),o=n.join(s,"runtime","ffmpeg"),g=n.dirname(o),c=()=>Error("\u63D2\u4EF6\u5DF2\u5378\u8F7D\uFF0C\u4F46\u64AD\u653E\u7EC4\u4EF6\u6E05\u7406\u5931\u8D25\u3002\u8BF7\u5173\u95ED\u64AD\u653E\u5668\u5E76\u68C0\u67E5\u7F13\u5B58\u76EE\u5F55\u6743\u9650\u540E\uFF0C\u91CD\u65B0\u8FD0\u884C uninstall\u3002");if(!n.isAbsolute(s))throw c();try{if(!await Mr(g,n))throw c();let a=await DA(o);a.isDirectory()&&!a.isSymbolicLink()?await T(o,{recursive:!0,force:!0,maxRetries:10,retryDelay:100}):await yr(o);for(let I of P.keys()){let i=n.relative(o,I);i&&!i.startsWith(".."+n.sep)&&!n.isAbsolute(i)&&P.delete(I)}}catch(a){if(a.code==="ENOENT")return{removed:0};throw c()}return await Ue(g).catch(()=>{}),await Ue(s).catch(()=>{}),{removed:1}}async function Jr(A){let{directory:e,target:t,artifact:r}=A,n=e+".lock",s=Date.now()+42e4;await qe(e,{recursive:!0,mode:448});let o=!1;for(;!o;)try{await qe(n,{mode:448}),o=!0}catch(i){if(i.code!=="EEXIST"||Date.now()>s)throw w();if(await dA(A))return t;try{Date.now()-(await Ke(n)).mtimeMs>6e5&&await T(n,{recursive:!0,force:!0})}catch{}await Nr(200)}let g=A.platform==="win32"?NA:xA,c=g.basename(t)+"."+pr(),a=g.join(e,c+".archive"),I=g.join(e,c+".part");try{if(await dA(A))return t;await kr(r,a,A.fetchImpl||fetch),await Sr(r,a,I);let i=await _e(I);if(r.binarySha256&&i!==r.binarySha256||(await mr(I,493),!$e(I,A)))throw w();return A.platform==="win32"&&await T(t,{force:!0}),await vr(I,t),await wr(t+".json",JSON.stringify({owner:xr,schema:1,archiveSha256:r.archiveSha256,binarySha256:i,binaryBytes:(await Ke(t)).size,version:r.version})+`
3
+ `,{mode:384}),P.set(t,yA(t)),t}catch{throw w()}finally{await Promise.all([T(a,{force:!0}),T(I,{force:!0}),T(n,{recursive:!0,force:!0})])}}var nt=SA.default,$=SA.default.sync;function it(A){if(!(!A?.pid||A.exitCode!==null||A.signalCode!==null))if(A.stdin?.destroy(),process.platform==="win32"){let e=kA.join(process.env.SystemRoot||"C:\\Windows","System32","taskkill.exe");$(e,["/pid",String(A.pid),"/t","/f"],{stdio:"ignore",timeout:3e3,windowsHide:!0})}else A.kill()}function j(A,e,{env:t=process.env,home:r=Yr(),platform:n=process.platform,arch:s=process.arch}={}){if(e)return e;if(A==="ffmpeg")return Ve({env:t,home:r,platform:n,arch:s});let{delimiter:o,dirname:g,join:c,isAbsolute:a,extname:I}=n==="win32"?kA:rt,i=Object.keys(t).find(h=>h.toUpperCase()==="PATH")||"PATH",C=[g(process.execPath),...(t[i]||"").split(o).filter(Boolean).map(h=>h.replace(/^"(.*)"$/,"$1"))];n!=="win32"?C.push("/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin",c(r,".volta/bin"),c(r,".local/bin")):C.push(c(t.APPDATA||c(r,"AppData","Roaming"),"npm"),c(r,".volta","bin"));let f=n!=="win32"||I(A)?[""]:[".exe",".com",".cmd",".bat"],u=C.filter(a).flatMap(h=>f.map(Q=>c(h,A+Q)));A==="codex"&&n==="darwin"&&u.push("/Applications/Codex.app/Contents/Resources/codex");for(let h of u)try{if(Lr(h,n==="win32"?tt.F_OK:tt.X_OK),br(h).isFile())return h}catch{}return A}function ot(){let{delimiter:A,dirname:e}=process.platform==="win32"?kA:rt,t=Object.keys(process.env).find(r=>r.toUpperCase()==="PATH")||"PATH";process.env[t]=[...new Set([e(process.execPath),...(process.env[t]||"").split(A).filter(Boolean)])].join(A),process.env.HONGGUO_CODEX=j("codex",process.env.HONGGUO_CODEX)}import{realpathSync as Kr}from"node:fs";import{relative as Ur,resolve as Or,isAbsolute as zr}from"node:path";import{homedir as Gr}from"node:os";import{posix as Hr,win32 as Rr}from"node:path";import{fileURLToPath as qr}from"node:url";var st=qr(new URL("../../",import.meta.url));function FA({env:A=process.env,home:e=Gr(),platform:t=process.platform}={}){let{join:r}=t==="win32"?Rr:Hr;return A.HONGGUO_DATA_DIR?A.HONGGUO_DATA_DIR:t==="darwin"?r(e,"Library","Application Support","CodexHongguo"):t==="win32"?r(A.LOCALAPPDATA||r(e,"AppData","Local"),"CodexHongguo"):r(A.XDG_DATA_HOME||r(e,".local","share"),"codex-hongguo")}var at=["userPromptSubmit","stop","interrupt"],G=()=>({status:"unknown",events:at.map(A=>({event:A,status:"unknown"}))});function gt({command:A=j("codex",process.env.HONGGUO_CODEX),args:e=["app-server"],cwd:t=process.cwd(),timeoutMs:r=8e3,pluginRoot:n=st,installedId:s}={}){let o=c=>{try{return Kr(c)}catch{return Or(c)}},g=o(n);return new Promise(c=>{let a,I=!1,i="",C=0,f=h=>{I||(I=!0,clearTimeout(u),it(a),c(h))},u=setTimeout(()=>f(G()),r);try{a=nt(A,e,{cwd:t,stdio:["pipe","pipe","ignore"],windowsHide:!0}),a.on("error",()=>f(G())),a.on("exit",()=>f(G())),a.stdin.on("error",()=>f(G())),a.stdout.setEncoding("utf8");let h=Q=>a.stdin.write(JSON.stringify(Q)+`
4
+ `);a.stdout.on("data",Q=>{if(I)return;if(C+=Buffer.byteLength(Q),C>2*1024*1024)return f(G());i+=Q;let B;for(;!I&&(B=i.indexOf(`
5
+ `))>=0;){let v=i.slice(0,B);i=i.slice(B+1);let E;try{E=JSON.parse(v)}catch{continue}if(E.error&&[1,2].includes(E.id))return f(G());if(E.id===1&&E.result&&(h({jsonrpc:"2.0",method:"initialized"}),h({jsonrpc:"2.0",id:2,method:"hooks/list",params:{cwds:[t]}})),E.id===2&&Array.isArray(E.result?.data)){let L=E.result.data.flatMap(p=>Array.isArray(p?.hooks)?p.hooks:[]).filter(p=>typeof p?.pluginId=="string"&&p.pluginId.split("@")[0]==="codex-hongguo").filter(p=>{if(typeof p.sourcePath!="string")return!1;if(s)return p.pluginId===s;let k=Ur(g,o(p.sourcePath));return k&&!k.startsWith("..")&&!zr(k)});if(!L.length)return f(G());let b=at.map(p=>{let k=L.filter(y=>y.eventName===p),AA=k.length?k.some(y=>!y.enabled)?"disabled":k.every(y=>["trusted","managed"].includes(y.trustStatus))?"ready":k.some(y=>["untrusted","modified"].includes(y.trustStatus))?"needs_review":"unknown":"missing";return{event:p,status:AA}});f({status:b.every(p=>p.status==="ready")?"ready":"needs_attention",events:b})}}}),h({jsonrpc:"2.0",id:1,method:"initialize",params:{clientInfo:{name:"hongguo-setup",version:"1"},capabilities:{experimentalApi:!0}}})}catch{f(G())}})}import{lstat as It,rm as Tr,unlink as Pr}from"node:fs/promises";import{homedir as jr}from"node:os";import{posix as Wr,win32 as Xr}from"node:path";async function Ct(A={}){let{env:e=process.env,home:t=jr(),platform:r=process.platform}=A,n=r==="win32"?Xr:Wr,s=n.resolve(FA({env:e,home:t,platform:r})),o=n.resolve(FA({env:{...e,HONGGUO_DATA_DIR:void 0},home:t,platform:r})),g=s===o?[s]:["player.sqlite","player.sqlite-wal","player.sqlite-shm","player.sqlite-journal","media","panel-media","device"].map(a=>n.join(s,a)),c=!1;for(let a of g)try{for(let i=n.dirname(a);;i=n.dirname(i)){let C=await It(i);if(!C.isDirectory()||C.isSymbolicLink())throw Error("Substituted data ancestor");if(n.dirname(i)===i)break}let I=await It(a);I.isDirectory()&&!I.isSymbolicLink()?await Tr(a,{recursive:!0,force:!0,maxRetries:10,retryDelay:100}):await Pr(a)}catch(I){I.code!=="ENOENT"&&(c=!0)}if(c)throw Error("\u63D2\u4EF6\u5DF2\u5378\u8F7D\uFF0C\u4F46\u672C\u5730\u6570\u636E\u6E05\u7406\u5931\u8D25\u3002\u8BF7\u5173\u95ED\u64AD\u653E\u5668\u5E76\u68C0\u67E5\u6570\u636E\u76EE\u5F55\u6743\u9650\u540E\uFF0C\u91CD\u65B0\u8FD0\u884C uninstall\u3002")}var W="hongguo-local",H="codex-hongguo@"+W,ut="mreasonyang/codex-hongguo",ct=A=>typeof A=="string"?A.replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,"").replace(/\/$/,""):A;function ft(A,e=process.env){return t=>{let r=$(A,[...t,"--json"],{env:e,encoding:"utf8",timeout:12e4,windowsHide:!0,maxBuffer:4194304});if(r.status!==0)throw Error("Codex \u6B65\u9AA4\u5931\u8D25\uFF1A"+t.slice(0,3).join(" ")+"\u3002\u8BF7\u5728 Codex \u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u68C0\u67E5\u72B6\u6001\u540E\u91CD\u8BD5\u3002");try{return JSON.parse(r.stdout)}catch{throw Error("Codex \u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u7ED3\u679C\uFF0C\u8BF7\u66F4\u65B0 Codex \u540E\u91CD\u8BD5\u3002")}}}function $r(A){if(/^[\w.-]+\/[\w.-]+$/.test(A)||Vr(A))return A;throw Error("--marketplace \u53EA\u63A5\u53D7 owner/repo \u6216\u73B0\u6709\u672C\u5730\u5E02\u573A\u76EE\u5F55\u3002")}function An({run:A,source:e=ut,dryRun:t=!1,log:r=console.log}){if($r(e),t){r("\u5C06\u4F7F\u7528 Codex \u539F\u751F\u5E02\u573A\u5B89\u88C5 "+H+"\uFF1B\u5E02\u573A\u6765\u6E90\uFF1A"+e),r("\u89C2\u770B\u8FDB\u5EA6\u4FDD\u7559\u5728\u539F\u6570\u636E\u76EE\u5F55\u3002\u5B89\u88C5\u5B8C\u6210\u540E\u9700\u5728 Codex \u4E2D\u5BA1\u67E5\u5E76\u4FE1\u4EFB\u4E09\u4E2A Hooks\u3002");return}let n=A(["plugin","marketplace","list"]).marketplaces?.find(g=>g.name===W),s=n?.marketplaceSource?.source,o=!!n&&ct(s)!==ct(e);o&&A(["plugin","marketplace","remove",W]);try{A(["plugin","marketplace","add",e]),!o&&n?.marketplaceSource?.sourceType==="git"&&A(["plugin","marketplace","upgrade",W]),A(["plugin","add",H])}catch(g){if(o&&s){try{A(["plugin","marketplace","remove",W])}catch{}try{A(["plugin","marketplace","add",s]),A(["plugin","add",H])}catch{throw Error("\u5B89\u88C5\u5931\u8D25\uFF0C\u539F\u5E02\u573A\u672A\u80FD\u81EA\u52A8\u6062\u590D\u3002\u8BF7\u4ECE Codex \u63D2\u4EF6\u8BBE\u7F6E\u91CD\u65B0\u6DFB\u52A0\u539F\u6765\u6E90\uFF1B\u89C2\u770B\u8FDB\u5EA6\u4ECD\u4FDD\u7559\u3002")}}throw g}r("\u7EA2\u679C\u77ED\u5267\u5DF2\u5B89\u88C5\u3002\u8BF7\u5728\u65B0\u7684\u672C\u5730\u804A\u5929\u4E2D\u4F7F\u7528\uFF1B\u66F4\u65B0\u65F6\u5148\u5173\u95ED\u65E7\u64AD\u653E\u5668\u3002")}async function ti(A=process.argv.slice(2)){try{let[e="help",...t]=A;if(e==="--version"){console.log(JSON.parse(Zr(new URL("../../package.json",import.meta.url),"utf8")).version);return}if(["help","--help","-h"].includes(e)){console.log(`\u7EA2\u679C\u77ED\u5267
6
6
  codex-hongguo setup [--dry-run] [--marketplace owner/repo|\u76EE\u5F55]
7
7
  codex-hongguo update [--dry-run] [--marketplace owner/repo|\u76EE\u5F55]
8
8
  codex-hongguo uninstall [--dry-run]
9
9
  codex-hongguo doctor
10
- \u9700\u8981 Node.js >=22.16 \u548C Codex CLI\uFF1B\u64AD\u653E\u7EC4\u4EF6\u7531\u63D2\u4EF6\u81EA\u52A8\u51C6\u5907\u3002`);return}if(!["setup","update","uninstall","doctor"].includes(e))throw Error("\u672A\u77E5\u547D\u4EE4\uFF1B\u8FD0\u884C codex-hongguo --help \u67E5\u770B\u7528\u6CD5\u3002");if(process.platform==="win32"&&process.arch!=="x64")throw Error("Windows \u8BD5\u7528\u7248\u9700\u8981 x64 Node.js\u3002");let[r,n]=process.versions.node.split(".").map(Number);if(r<22||r===22&&n<16)throw Error("\u9700\u8981 Node.js >=22.16\u3002");if(ot(),e==="doctor"){if(t.length)throw Error("doctor \u4E0D\u63A5\u53D7\u989D\u5916\u53C2\u6570\u3002");if($(process.execPath,[_r(new URL("../../dist/setup/check.mjs",import.meta.url))],{stdio:"inherit",timeout:15e3}).status!==0)throw Error("\u73AF\u5883\u68C0\u67E5\u672A\u5B8C\u6210\u3002");return}let s=ut,o=!1;for(let a=0;a<t.length;a++)if(t[a]==="--dry-run")o=!0;else if(e!=="uninstall"&&t[a]==="--marketplace"&&t[a+1])s=t[++a];else throw Error("\u65E0\u6CD5\u8BC6\u522B\u547D\u4EE4\u53C2\u6570\uFF1B\u8FD0\u884C codex-hongguo --help \u67E5\u770B\u7528\u6CD5\u3002");let g=j("codex",process.env.HONGGUO_CODEX),C=[["Codex CLI",g]];e!=="uninstall"&&C.push(["npm",j("npm")]);for(let[a,I]of C)if($(I,["--version"],{stdio:"ignore",timeout:3e3}).status!==0)throw Error("\u672A\u627E\u5230\u53EF\u8FD0\u884C\u7684 "+a+"\u3002\u5B89\u88C5\u540E\u91CD\u65B0\u8FD0\u884C "+e+"\uFF1B\u5DF2\u6709\u63D2\u4EF6\u4E0E\u89C2\u770B\u8FDB\u5EA6\u4FDD\u6301\u539F\u6837\u3002");if(e==="uninstall"){if(o)console.log("\u5C06\u5378\u8F7D "+G+"\uFF0C\u5220\u9664\u64AD\u653E\u7EC4\u4EF6\u3001\u89C2\u770B\u8FDB\u5EA6\u3001\u8BBE\u7F6E\u3001\u89C6\u9891\u7F13\u5B58\u548C\u8BBE\u5907\u6863\u6848\u3002");else{let a=ft(g),I=a(["plugin","list","--marketplace",W]).installed;if(!Array.isArray(I))throw Error("\u65E0\u6CD5\u786E\u8BA4\u63D2\u4EF6\u5B89\u88C5\u72B6\u6001\uFF0C\u8BF7\u66F4\u65B0 Codex \u540E\u91CD\u8BD5\u3002");I.some(c=>c.pluginId===G)&&a(["plugin","remove",G]);let i=[];for(let c of[et,Ct])try{await c()}catch(f){i.push(f.message)}if(i.length)throw Error(i.join(`
11
- `));console.log("\u7EA2\u679C\u77ED\u5267\u5DF2\u5378\u8F7D\uFF0C\u64AD\u653E\u7EC4\u4EF6\u3001\u89C2\u770B\u8FDB\u5EA6\u3001\u8BBE\u7F6E\u3001\u89C6\u9891\u7F13\u5B58\u548C\u8BBE\u5907\u6863\u6848\u5DF2\u5220\u9664\u3002\u8BF7\u6253\u5F00\u65B0\u804A\u5929\u3002")}return}if(o||(console.log("\u6B63\u5728\u51C6\u5907\u64AD\u653E\u7EC4\u4EF6\uFF0C\u9996\u6B21\u4F7F\u7528\u9700\u8981\u8054\u7F51\u4E0B\u8F7D\u2026"),await At()),An({run:ft(g),source:s,update:e==="update",dryRun:o}),!o){let a=await gt({command:g,installedId:G}),I={userPromptSubmit:"UserPromptSubmit",stop:"Stop",interrupt:"Interrupt"},i=a.events.filter(c=>c.status!=="ready").map(c=>I[c.event]);a.status==="ready"?console.log("\u4E09\u4E2A\u56DE\u5408 Hooks \u5747\u5DF2\u4FE1\u4EFB\u5E76\u542F\u7528\u3002"):a.status==="unknown"?console.log("\u6682\u672A\u8BFB\u5230\u6388\u6743\u72B6\u6001\u3002\u8BF7\u6253\u5F00 Codex \u8BBE\u7F6E \u2192 Hooks \u2192 \u7EA2\u679C\u77ED\u5267\uFF0C\u6216\u5728\u64AD\u653E\u5668\u7684\u4F7F\u7528\u6307\u5357\u4E2D\u91CD\u65B0\u68C0\u67E5\u3002"):console.log("\u9700\u8981\u5904\u7406\u56DE\u5408 Hooks\u3002\u8BF7\u6253\u5F00 Codex \u8BBE\u7F6E \u2192 Hooks \u2192 \u7EA2\u679C\u77ED\u5267\uFF0C\u5BA1\u67E5\u5E76\u542F\u7528 "+i.join("\u3001")+"\u3002")}}catch(e){console.error(e.message),process.exitCode=1}}export{ft as codexRunner,ut as defaultSource,An as install,ti as main,W as marketplaceName,G as pluginId,$r as validateSource};
10
+ \u9700\u8981 Node.js >=22.16 \u548C Codex CLI\uFF1B\u64AD\u653E\u7EC4\u4EF6\u7531\u63D2\u4EF6\u81EA\u52A8\u51C6\u5907\u3002`);return}if(!["setup","update","uninstall","doctor"].includes(e))throw Error("\u672A\u77E5\u547D\u4EE4\uFF1B\u8FD0\u884C codex-hongguo --help \u67E5\u770B\u7528\u6CD5\u3002");if(process.platform==="win32"&&process.arch!=="x64")throw Error("Windows \u8BD5\u7528\u7248\u9700\u8981 x64 Node.js\u3002");let[r,n]=process.versions.node.split(".").map(Number);if(r<22||r===22&&n<16)throw Error("\u9700\u8981 Node.js >=22.16\u3002");if(ot(),e==="doctor"){if(t.length)throw Error("doctor \u4E0D\u63A5\u53D7\u989D\u5916\u53C2\u6570\u3002");if($(process.execPath,[_r(new URL("../../dist/setup/check.mjs",import.meta.url))],{stdio:"inherit",timeout:15e3}).status!==0)throw Error("\u73AF\u5883\u68C0\u67E5\u672A\u5B8C\u6210\u3002");return}let s=ut,o=!1;for(let a=0;a<t.length;a++)if(t[a]==="--dry-run")o=!0;else if(e!=="uninstall"&&t[a]==="--marketplace"&&t[a+1])s=t[++a];else throw Error("\u65E0\u6CD5\u8BC6\u522B\u547D\u4EE4\u53C2\u6570\uFF1B\u8FD0\u884C codex-hongguo --help \u67E5\u770B\u7528\u6CD5\u3002");let g=j("codex",process.env.HONGGUO_CODEX),c=[["Codex CLI",g]];e!=="uninstall"&&c.push(["npm",j("npm")]);for(let[a,I]of c)if($(I,["--version"],{stdio:"ignore",timeout:3e3}).status!==0)throw Error("\u672A\u627E\u5230\u53EF\u8FD0\u884C\u7684 "+a+"\u3002\u5B89\u88C5\u540E\u91CD\u65B0\u8FD0\u884C "+e+"\uFF1B\u5DF2\u6709\u63D2\u4EF6\u4E0E\u89C2\u770B\u8FDB\u5EA6\u4FDD\u6301\u539F\u6837\u3002");if(e==="uninstall"){if(o)console.log("\u5C06\u5378\u8F7D "+H+"\uFF0C\u5220\u9664\u64AD\u653E\u7EC4\u4EF6\u3001\u89C2\u770B\u8FDB\u5EA6\u3001\u8BBE\u7F6E\u3001\u89C6\u9891\u7F13\u5B58\u548C\u8BBE\u5907\u6863\u6848\u3002");else{let a=ft(g),I=a(["plugin","list","--marketplace",W]).installed;if(!Array.isArray(I))throw Error("\u65E0\u6CD5\u786E\u8BA4\u63D2\u4EF6\u5B89\u88C5\u72B6\u6001\uFF0C\u8BF7\u66F4\u65B0 Codex \u540E\u91CD\u8BD5\u3002");I.some(C=>C.pluginId===H)&&a(["plugin","remove",H]);let i=[];for(let C of[et,Ct])try{await C()}catch(f){i.push(f.message)}if(i.length)throw Error(i.join(`
11
+ `));console.log("\u7EA2\u679C\u77ED\u5267\u5DF2\u5378\u8F7D\uFF0C\u64AD\u653E\u7EC4\u4EF6\u3001\u89C2\u770B\u8FDB\u5EA6\u3001\u8BBE\u7F6E\u3001\u89C6\u9891\u7F13\u5B58\u548C\u8BBE\u5907\u6863\u6848\u5DF2\u5220\u9664\u3002\u8BF7\u6253\u5F00\u65B0\u804A\u5929\u3002")}return}if(o||(console.log("\u6B63\u5728\u51C6\u5907\u64AD\u653E\u7EC4\u4EF6\uFF0C\u9996\u6B21\u4F7F\u7528\u9700\u8981\u8054\u7F51\u4E0B\u8F7D\u2026"),await At()),An({run:ft(g),source:s,dryRun:o}),!o){console.log("\u56DE\u5408\u8054\u52A8\u9700\u8981\u624B\u52A8\u6388\u6743\uFF1A\u6253\u5F00 Codex \u8BBE\u7F6E \u2192 Hooks \u2192 \u7EA2\u679C\u77ED\u5267\uFF0C\u5BA1\u67E5\u3001\u4FE1\u4EFB\u5E76\u542F\u7528 UserPromptSubmit\u3001Stop\u3001Interrupt\u3002");let a=await gt({command:g,installedId:H}),I={userPromptSubmit:"UserPromptSubmit",stop:"Stop",interrupt:"Interrupt"},i=a.events.filter(C=>C.status!=="ready").map(C=>I[C.event]);a.status==="ready"?console.log("\u4E09\u4E2A\u56DE\u5408 Hooks \u5747\u5DF2\u4FE1\u4EFB\u5E76\u542F\u7528\uFF0C\u65E0\u9700\u91CD\u590D\u6388\u6743\u3002"):a.status==="unknown"?console.log("\u6682\u672A\u786E\u8BA4 Hooks \u6388\u6743\u72B6\u6001\u3002\u8BF7\u6309\u4E0A\u65B9\u6B65\u9AA4\u6838\u5BF9\uFF0C\u518D\u4ECE\u64AD\u653E\u5668\u300C\u8BBE\u7F6E \u2192 \u4F7F\u7528\u6307\u5357\u300D\u91CD\u65B0\u68C0\u67E5\u3002"):console.log("\u8FD8\u9700\u5B8C\u6210 "+i.join("\u3001")+" \u7684\u4FE1\u4EFB\u6216\u542F\u7528\u3002\u5B8C\u6210\u540E\u4ECE\u64AD\u653E\u5668\u300C\u8BBE\u7F6E \u2192 \u4F7F\u7528\u6307\u5357\u300D\u91CD\u65B0\u68C0\u67E5\u3002")}}catch(e){console.error(e.message),process.exitCode=1}}export{ft as codexRunner,ut as defaultSource,An as install,ti as main,W as marketplaceName,H as pluginId,$r as validateSource};
12
12
  /*! Bundled license information:
13
13
 
14
14
  xz-decompress/dist/package/xz-decompress.js:
@@ -1,5 +1,5 @@
1
1
  import {createRequire as __cr} from 'node:module';const require=__cr(import.meta.url);
2
- import{DatabaseSync as m}from"node:sqlite";import{mkdirSync as b}from"node:fs";import{join as f}from"node:path";import{homedir as h}from"node:os";import{posix as S,win32 as A}from"node:path";import{fileURLToPath as I}from"node:url";var C=I(new URL("../../",import.meta.url));function N({env:n=process.env,home:t=h(),platform:e=process.platform}={}){let{join:s}=e==="win32"?A:S;return n.HONGGUO_DATA_DIR?n.HONGGUO_DATA_DIR:e==="darwin"?s(t,"Library","Application Support","CodexHongguo"):e==="win32"?s(n.LOCALAPPDATA||s(t,"AppData","Local"),"CodexHongguo"):s(n.XDG_DATA_HOME||s(t,".local","share"),"codex-hongguo")}function R(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function l(n){let t=new Map;for(let{id:e,title:s}of n)if(/^hg-\d{1,32}$/.test(e)&&typeof s=="string"&&s.trim()&&!t.has(e)&&t.set(e,{id:e,title:s}),t.size===48)break;return[...t.values()]}var p=class{constructor(t=N(),e=!1){e||b(t,{recursive:!0,mode:448}),this.persistent=!e,this.root=t,this.db=new m(e?":memory:":f(t,"player.sqlite")),this.db.exec(`PRAGMA busy_timeout=250; PRAGMA journal_mode=WAL;
2
+ import{DatabaseSync as f}from"node:sqlite";import{mkdirSync as b}from"node:fs";import{join as m}from"node:path";import{homedir as O}from"node:os";import{posix as A,win32 as S}from"node:path";import{fileURLToPath as I}from"node:url";var U=I(new URL("../../",import.meta.url));function l({env:n=process.env,home:t=O(),platform:e=process.platform}={}){let{join:r}=e==="win32"?S:A;return n.HONGGUO_DATA_DIR?n.HONGGUO_DATA_DIR:e==="darwin"?r(t,"Library","Application Support","CodexHongguo"):e==="win32"?r(n.LOCALAPPDATA||r(t,"AppData","Local"),"CodexHongguo"):r(n.XDG_DATA_HOME||r(t,".local","share"),"codex-hongguo")}function N(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function R(n){let t=new Map;for(let{id:e,title:r}of n)if(/^hg-\d{1,32}$/.test(e)&&typeof r=="string"&&r.trim()&&!t.has(e)&&t.set(e,{id:e,title:r}),t.size===48)break;return[...t.values()]}var u=class{constructor(t=l(),e=!1){e||b(t,{recursive:!0,mode:448}),this.persistent=!e,this.root=t,this.db=new f(e?":memory:":m(t,"player.sqlite")),this.db.exec(`PRAGMA busy_timeout=250; PRAGMA journal_mode=WAL;
3
3
  CREATE TABLE IF NOT EXISTS turn_state (
4
4
  session_id TEXT NOT NULL, turn_id TEXT NOT NULL, submitted_at INTEGER,
5
5
  stop_kind TEXT, interrupted INTEGER NOT NULL DEFAULT 0, stopped INTEGER NOT NULL DEFAULT 0,
@@ -11,6 +11,10 @@ import{DatabaseSync as m}from"node:sqlite";import{mkdirSync as b}from"node:fs";i
11
11
  session_id TEXT NOT NULL, turn_id TEXT NOT NULL, PRIMARY KEY(session_id,turn_id));
12
12
  CREATE TABLE IF NOT EXISTS recommendation_feed (
13
13
  id INTEGER PRIMARY KEY CHECK(id=1), items TEXT NOT NULL, updated_at INTEGER NOT NULL);
14
+ CREATE TABLE IF NOT EXISTS catalog_cache (
15
+ key TEXT PRIMARY KEY, value TEXT, updated_at INTEGER NOT NULL DEFAULT 0,
16
+ retry_at INTEGER NOT NULL DEFAULT 0, failures INTEGER NOT NULL DEFAULT 0,
17
+ lease_owner TEXT, lease_until INTEGER NOT NULL DEFAULT 0, touched_at INTEGER NOT NULL);
14
18
  CREATE TABLE IF NOT EXISTS turn_picks (
15
19
  session_id TEXT NOT NULL, turn_id TEXT NOT NULL, items TEXT NOT NULL,
16
20
  reserved_at INTEGER, shown INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(session_id,turn_id));
@@ -29,18 +33,22 @@ import{DatabaseSync as m}from"node:sqlite";import{mkdirSync as b}from"node:fs";i
29
33
  series_id TEXT NOT NULL, episode_id TEXT NOT NULL, PRIMARY KEY(series_id,episode_id));`),this.db.prepare("PRAGMA user_version").get().user_version===0&&this.db.exec(`BEGIN IMMEDIATE;
30
34
  DELETE FROM watch_progress WHERE series_id IN ('tide','ridge');
31
35
  PRAGMA user_version=1;
32
- COMMIT;`)}preferences(){this.db.exec("CREATE TABLE IF NOT EXISTS player_preferences(id INTEGER PRIMARY KEY, body TEXT NOT NULL)");let t=this.db.prepare("SELECT body FROM player_preferences WHERE id=1").get(),e={autoPrompt:!0,autoplayNext:!0,autoPauseOnFinish:!0,autoPlayOnStart:!0,searchTerms:["\u603B\u88C1","\u91CD\u751F","\u9006\u88AD"]};return t?{...e,...JSON.parse(t.body)}:e}setupDismissed(){return this.db.prepare("SELECT dismissed FROM player_onboarding WHERE id=1").get()?.dismissed===1}setSetupDismissed(t){return this.db.prepare("INSERT OR REPLACE INTO player_onboarding VALUES(1,?)").run(Number(t)),{dismissed:t}}setPreferences(t){return this.transaction(()=>{let e=this.preferences(),s={...e,...t};return this.db.prepare("INSERT OR REPLACE INTO player_preferences VALUES(1,?)").run(JSON.stringify(s)),JSON.stringify(e.searchTerms)!==JSON.stringify(s.searchTerms)&&this.db.exec("DELETE FROM recommendation_feed"),s})}event({session_id:t,turn_id:e,hook_event_name:s},i=Date.now()){if(!R(t)||!R(e)||!["UserPromptSubmit","Stop","Interrupt"].includes(s))return;let r=+(s==="Stop"),d=+(s==="Interrupt");return this.db.prepare(`INSERT INTO turn_state(session_id,turn_id,submitted_at,stop_kind,stopped,interrupted,observed_at)
36
+ COMMIT;`)}preferences(){this.db.exec("CREATE TABLE IF NOT EXISTS player_preferences(id INTEGER PRIMARY KEY, body TEXT NOT NULL)");let t=this.db.prepare("SELECT body FROM player_preferences WHERE id=1").get(),e={autoPrompt:!0,autoplayNext:!0,autoPauseOnFinish:!0,autoPlayOnStart:!0,searchTerms:["\u603B\u88C1","\u91CD\u751F","\u9006\u88AD"]};return t?{...e,...JSON.parse(t.body)}:e}setupDismissed(){return this.db.prepare("SELECT dismissed FROM player_onboarding WHERE id=1").get()?.dismissed===1}setSetupDismissed(t){return this.db.prepare("INSERT OR REPLACE INTO player_onboarding VALUES(1,?)").run(Number(t)),{dismissed:t}}setPreferences(t){return this.transaction(()=>{let e=this.preferences(),r={...e,...t};return this.db.prepare("INSERT OR REPLACE INTO player_preferences VALUES(1,?)").run(JSON.stringify(r)),JSON.stringify(e.searchTerms)!==JSON.stringify(r.searchTerms)&&(this.db.exec("DELETE FROM recommendation_feed"),this.db.exec("DELETE FROM catalog_cache WHERE key LIKE 'feed:%'")),r})}event({session_id:t,turn_id:e,hook_event_name:r},s=Date.now()){if(!N(t)||!N(e)||!["UserPromptSubmit","Stop","Interrupt"].includes(r))return;let i=+(r==="Stop"),a=+(r==="Interrupt");return this.db.prepare(`INSERT INTO turn_state(session_id,turn_id,submitted_at,stop_kind,stopped,interrupted,observed_at)
33
37
  VALUES(?,?,?,?,?,?,?) ON CONFLICT(session_id,turn_id) DO UPDATE SET
34
38
  submitted_at=COALESCE(submitted_at,CASE WHEN excluded.submitted_at IS NOT NULL THEN min(observed_at,excluded.submitted_at) END),
35
39
  stop_kind=COALESCE(excluded.stop_kind,stop_kind), stopped=max(stopped,excluded.stopped),
36
40
  interrupted=max(interrupted,excluded.interrupted), observed_at=excluded.observed_at, revision=revision+1
37
41
  WHERE (submitted_at IS NULL AND excluded.submitted_at IS NOT NULL) OR
38
- stopped<excluded.stopped OR interrupted<excluded.interrupted`).run(t,e,r||d?null:i,r||d?s:null,r,d,i).changes>0}activeTurn(t,e){let s=this.state(t);return this.persistent&&!!e&&s.turnId===e&&s.state==="submitted"}offerable(t,e){return this.activeTurn(t,e)&&this.preferences().autoPrompt&&!this.picksDismissed(t,e)&&!this.db.prepare("SELECT 1 FROM visible_player WHERE session_id=? AND seen_at>? LIMIT 1").get(t,Date.now()-6500)}picksDismissed(t,e){return!!this.db.prepare("SELECT 1 FROM waiting_dismissal WHERE session_id=? AND turn_id=?").get(t,e)}dismissPicks(t,e){return this.db.prepare("INSERT OR IGNORE INTO waiting_dismissal VALUES(?,?)").run(t,e),{dismissed:!0}}transaction(t){this.db.exec("BEGIN IMMEDIATE");try{let e=t();return this.db.exec("COMMIT"),e}catch(e){throw this.db.exec("ROLLBACK"),e}}claimCard(t,e){return this.transaction(()=>this.offerable(t,e)&&this.db.prepare("INSERT OR IGNORE INTO waiting_card VALUES(?,?)").run(t,e).changes===1)}playerVisible(t,e,s){if(!t)return;let i=Date.now();s?(this.db.prepare("DELETE FROM visible_player WHERE seen_at<=?").run(i-6500),this.db.prepare("INSERT OR REPLACE INTO visible_player VALUES(?,?,?)").run(t,e,i)):this.db.prepare("DELETE FROM visible_player WHERE session_id=? AND instance=?").run(t,e)}touchPlayer(t,e){t&&e&&this.db.prepare("UPDATE visible_player SET seen_at=? WHERE session_id=? AND instance=? AND seen_at<?").run(Date.now(),t,e,Date.now()-1800)}waitingFeed(t=!1){let e=this.db.prepare("SELECT items, updated_at FROM recommendation_feed WHERE id=1").get();return e&&!t&&e.updated_at<=Date.now()-15*6e4?[]:e?JSON.parse(e.items):[]}saveWaitingFeed(t){let e=l(t);return e.length&&this.db.prepare("INSERT OR REPLACE INTO recommendation_feed VALUES(1,?,?)").run(JSON.stringify(e),Date.now()),e}turnPicks(t,e){let s=this.db.prepare("SELECT items FROM turn_picks WHERE session_id=? AND turn_id=?").get(t,e);return s?JSON.parse(s.items):[]}allocatePicks(t,e,s,i,r,d){return this.transaction(()=>{if(!d())return[];let o=this.turnPicks(t,e);if(o.length)return o;let T=new Set,O=this.db.prepare("SELECT session_id,turn_id,items FROM turn_picks WHERE shown=0 AND reserved_at>?");for(let a of O.all(Date.now()-15e3))if(this.activeTurn(a.session_id,a.turn_id))for(let E of JSON.parse(a.items))E.episodeId||T.add(E.id);let _=this.db.prepare(`SELECT c.value->>'id' AS id, c.value->>'title' AS title
42
+ stopped<excluded.stopped OR interrupted<excluded.interrupted`).run(t,e,i||a?null:s,i||a?r:null,i,a,s).changes>0}activeTurn(t,e){let r=this.state(t);return this.persistent&&!!e&&r.turnId===e&&r.state==="submitted"}offerable(t,e){return this.activeTurn(t,e)&&this.preferences().autoPrompt&&!this.picksDismissed(t,e)&&!this.db.prepare("SELECT 1 FROM visible_player WHERE session_id=? AND seen_at>? LIMIT 1").get(t,Date.now()-6500)}picksDismissed(t,e){return!!this.db.prepare("SELECT 1 FROM waiting_dismissal WHERE session_id=? AND turn_id=?").get(t,e)}dismissPicks(t,e){return this.db.prepare("INSERT OR IGNORE INTO waiting_dismissal VALUES(?,?)").run(t,e),{dismissed:!0}}transaction(t){this.db.exec("BEGIN IMMEDIATE");try{let e=t();return this.db.exec("COMMIT"),e}catch(e){throw this.db.exec("ROLLBACK"),e}}claimCard(t,e){return this.transaction(()=>this.offerable(t,e)&&this.db.prepare("INSERT OR IGNORE INTO waiting_card VALUES(?,?)").run(t,e).changes===1)}playerVisible(t,e,r){if(!t)return;let s=Date.now();r?(this.db.prepare("DELETE FROM visible_player WHERE seen_at<=?").run(s-6500),this.db.prepare("INSERT OR REPLACE INTO visible_player VALUES(?,?,?)").run(t,e,s)):this.db.prepare("DELETE FROM visible_player WHERE session_id=? AND instance=?").run(t,e)}touchPlayer(t,e){t&&e&&this.db.prepare("UPDATE visible_player SET seen_at=? WHERE session_id=? AND instance=? AND seen_at<?").run(Date.now(),t,e,Date.now()-1800)}waitingFeed(t=!1){let e=this.db.prepare("SELECT items, updated_at FROM recommendation_feed WHERE id=1").get();return e&&!t&&e.updated_at<=Date.now()-15*6e4?[]:e?JSON.parse(e.items):[]}catalogCache(t){let e=this.db.prepare("SELECT * FROM catalog_cache WHERE key=?").get(t);if(!e)return null;let r;try{e.value!==null&&(r=JSON.parse(e.value))}catch{}return{value:r,updatedAt:e.updated_at,retryAt:e.retry_at,failures:e.failures,owner:e.lease_owner,leaseUntil:e.lease_until}}claimCatalogCache(t,e,r,s,i){return this.transaction(()=>{this.db.prepare("INSERT OR IGNORE INTO catalog_cache(key,touched_at) VALUES(?,?)").run(t,r);let a=this.db.prepare(`UPDATE catalog_cache SET lease_owner=?,lease_until=?,touched_at=?
43
+ WHERE key=? AND lease_until<=? AND retry_at<=?
44
+ AND (value IS NULL OR json_valid(value)=0 OR updated_at<=? OR updated_at>?)`).run(e,r+i,r,t,r,r,r-s,r).changes===1;return a&&this.pruneCatalogCache(t,r),a})}renewCatalogCache(t,e,r,s){return this.db.prepare("UPDATE catalog_cache SET lease_until=? WHERE key=? AND lease_owner=? AND lease_until>?").run(r+s,t,e,r).changes===1}completeCatalogCache(t,e,r,s,i=!1){return this.transaction(()=>{let a=this.db.prepare(`UPDATE catalog_cache SET value=?,updated_at=?,retry_at=0,failures=0,
45
+ lease_owner=NULL,lease_until=0,touched_at=? WHERE key=? AND lease_owner=? AND lease_until>?`).run(JSON.stringify(r),s,s,t,e,s).changes===1;return a&&i&&this.saveWaitingFeed(r.titles,s),a&&this.pruneCatalogCache(t,s),a})}failCatalogCache(t,e,r){return this.transaction(()=>{let s=this.db.prepare("SELECT failures FROM catalog_cache WHERE key=? AND lease_owner=? AND lease_until>?").get(t,e,r);if(!s)return!1;let i=s.failures+1,a=Math.min(15*6e4,3e4*2**Math.min(i-1,5));return this.db.prepare("UPDATE catalog_cache SET failures=?,retry_at=?,lease_owner=NULL,lease_until=0,touched_at=? WHERE key=?").run(i,r+a,r,t),!0})}pruneCatalogCache(t,e){this.db.prepare(`DELETE FROM catalog_cache WHERE key IN (
46
+ SELECT key FROM catalog_cache WHERE key<>? AND lease_until<=? ORDER BY touched_at DESC,key LIMIT -1 OFFSET 127)`).run(t,e)}saveWaitingFeed(t,e=Date.now()){let r=R(t);return r.length&&this.db.prepare("INSERT OR REPLACE INTO recommendation_feed VALUES(1,?,?)").run(JSON.stringify(r),e),r}turnPicks(t,e){let r=this.db.prepare("SELECT items FROM turn_picks WHERE session_id=? AND turn_id=?").get(t,e);return r?JSON.parse(r.items):[]}allocatePicks(t,e,r,s,i,a){return this.transaction(()=>{if(!a())return[];let d=this.turnPicks(t,e);if(d.length)return d;let p=new Set,L=this.db.prepare("SELECT session_id,turn_id,items FROM turn_picks WHERE shown=0 AND reserved_at>?");for(let E of L.all(Date.now()-15e3))if(this.activeTurn(E.session_id,E.turn_id))for(let o of JSON.parse(E.items))o.episodeId||p.add(o.id);let _=this.db.prepare(`SELECT c.value->>'id' AS id, c.value->>'title' AS title
39
47
  FROM json_each(?) c LEFT JOIN pick_exposure e ON e.series_id=c.value->>'id'
40
48
  WHERE NOT EXISTS (SELECT 1 FROM watch_progress w WHERE w.series_id=c.value->>'id' AND
41
49
  (w.position_ms>0 OR (w.series_id,w.episode_id) IN (SELECT series_id,episode_id FROM watch_restart)))
42
- ORDER BY e.last_shown, c.key`).all(JSON.stringify(l(i))).map(({id:a,title:E})=>({id:a,title:E}));_.sort((a,E)=>Number(T.has(a.id))-Number(T.has(E.id)));let c=s?[s,..._.filter(a=>a.id!==s.id).slice(0,2)]:_.slice(0,3);return c.length&&this.db.prepare("INSERT INTO turn_picks(session_id,turn_id,items,reserved_at) VALUES(?,?,?,?)").run(t,e,JSON.stringify(c),r?Date.now():null),c})}markPicksShown(t,e,s){return this.transaction(()=>{let i=s()&&this.db.prepare("UPDATE turn_picks SET shown=1 WHERE session_id=? AND turn_id=? AND shown=0 RETURNING items").get(t,e);if(i){let r=this.db.prepare("SELECT coalesce(max(last_shown),0)+1 AS n FROM pick_exposure").get().n,d=this.db.prepare("INSERT OR REPLACE INTO pick_exposure(series_id,last_shown) VALUES(?,?)");for(let o of JSON.parse(i.items))o.episodeId||d.run(o.id,r)}return{recorded:!!i}})}state(t,e){let s=t&&(e?this.db.prepare("SELECT * FROM turn_state WHERE session_id=? AND turn_id=?").get(t,e):this.db.prepare("SELECT * FROM turn_state WHERE session_id=? ORDER BY (submitted_at IS NOT NULL) DESC,coalesce(submitted_at,observed_at) DESC,rowid DESC LIMIT 1").get(t));if(!s)return{sessionId:null,turnId:null,state:"unknown",revision:0,observedAt:null};let i=s.interrupted?"interrupted":s.stopped?"stopped":"submitted";return{sessionId:s.session_id,turnId:s.turn_id,state:i,revision:s.revision,observedAt:s.observed_at}}candidates(){return this.db.prepare("SELECT session_id, max(observed_at) AS at FROM turn_state GROUP BY session_id ORDER BY at DESC LIMIT 8").all()}save({seriesId:t,episodeId:e,title:s,label:i,positionMs:r,durationMs:d,reset:o=!1}){return r<=0&&!o?{saved:!1}:this.transaction(()=>(r===0?this.db.prepare("INSERT OR IGNORE INTO watch_restart VALUES(?,?)").run(t,e):this.db.prepare("DELETE FROM watch_restart WHERE series_id=? AND episode_id=?").run(t,e),this.db.prepare(`INSERT INTO watch_progress VALUES(?,?,?,?,?,?,max(?,coalesce((SELECT max(updated_at)+1 FROM watch_progress),0))) ON CONFLICT(series_id,episode_id) DO UPDATE SET
43
- title=excluded.title,label=excluded.label,position_ms=excluded.position_ms,duration_ms=excluded.duration_ms,updated_at=excluded.updated_at`).run(t,e,s,i,Math.min(r,d),d,Date.now()),{saved:!0}))}history(t,e,s=30){let i="series_id AS seriesId,episode_id AS episodeId,title,label,position_ms AS positionMs,duration_ms AS durationMs,updated_at AS updatedAt",r="(position_ms>0 OR (series_id,episode_id) IN (SELECT series_id,episode_id FROM watch_restart))";return t&&e?this.db.prepare("SELECT "+i+" FROM watch_progress WHERE series_id=? AND episode_id=? AND "+r).all(t,e):t?this.db.prepare("SELECT "+i+" FROM watch_progress WHERE series_id=? AND "+r+" ORDER BY updated_at DESC,rowid DESC LIMIT 1").all(t):this.db.prepare("SELECT "+i+` FROM (SELECT *, row_number() OVER(PARTITION BY series_id ORDER BY updated_at DESC,rowid DESC) AS rank
44
- FROM watch_progress WHERE ${r} AND series_id GLOB 'hg-*' AND episode_id GLOB 'hg-*')
45
- WHERE rank=1 ORDER BY updated_at DESC LIMIT ?`).all(s)}removeHistory(t){return this.transaction(()=>(this.db.prepare("DELETE FROM watch_progress WHERE series_id=?").run(t),this.db.prepare("DELETE FROM watch_restart WHERE series_id=?").run(t),{removed:!0}))}writable(){if(!this.persistent)return!1;try{return this.db.exec("UPDATE watch_progress SET updated_at=updated_at WHERE 0"),!0}catch{return!1}}close(){this.db.close()}};process.umask(63);var u,L={};try{let n=0,t=[];for await(let e of process.stdin){if(n+=e.length,n>16*1024*1024)break;t.push(e)}if(n<=16*1024*1024){let{session_id:e,turn_id:s,hook_event_name:i}=JSON.parse(Buffer.concat(t).toString("utf8"));u=new p,u.event({session_id:e,turn_id:s,hook_event_name:i})&&i==="UserPromptSubmit"&&u.offerable(e,s)&&(L={hookSpecificOutput:{hookEventName:"UserPromptSubmit",additionalContext:'The user has enabled Hongguo waiting suggestions. At the start of this turn, call the Hongguo plugin tool show_waiting_picks once with turnId "'+s+'". If tools are deferred, look it up by name. Continue the user\u2019s task immediately. The optional widget loads independently. Do not ask for a choice or mention the widget in your reply.'}})}}catch{}finally{u?.close(),process.stdout.write(JSON.stringify(L)+`
50
+ ORDER BY e.last_shown, c.key`).all(JSON.stringify(R(s))).map(({id:E,title:o})=>({id:E,title:o}));_.sort((E,o)=>Number(p.has(E.id))-Number(p.has(o.id)));let c=r?[r,..._.filter(E=>E.id!==r.id).slice(0,2)]:_.slice(0,3);return c.length&&this.db.prepare("INSERT INTO turn_picks(session_id,turn_id,items,reserved_at) VALUES(?,?,?,?)").run(t,e,JSON.stringify(c),i?Date.now():null),c})}markPicksShown(t,e,r){return this.transaction(()=>{let s=r()&&this.db.prepare("UPDATE turn_picks SET shown=1 WHERE session_id=? AND turn_id=? AND shown=0 RETURNING items").get(t,e);if(s){let i=this.db.prepare("SELECT coalesce(max(last_shown),0)+1 AS n FROM pick_exposure").get().n,a=this.db.prepare("INSERT OR REPLACE INTO pick_exposure(series_id,last_shown) VALUES(?,?)");for(let d of JSON.parse(s.items))d.episodeId||a.run(d.id,i)}return{recorded:!!s}})}state(t,e){let r=t&&(e?this.db.prepare("SELECT * FROM turn_state WHERE session_id=? AND turn_id=?").get(t,e):this.db.prepare("SELECT * FROM turn_state WHERE session_id=? ORDER BY (submitted_at IS NOT NULL) DESC,coalesce(submitted_at,observed_at) DESC,rowid DESC LIMIT 1").get(t));if(!r)return{sessionId:null,turnId:null,state:"unknown",revision:0,observedAt:null};let s=r.interrupted?"interrupted":r.stopped?"stopped":"submitted";return{sessionId:r.session_id,turnId:r.turn_id,state:s,revision:r.revision,observedAt:r.observed_at}}candidates(){return this.db.prepare("SELECT session_id, max(observed_at) AS at FROM turn_state GROUP BY session_id ORDER BY at DESC LIMIT 8").all()}save({seriesId:t,episodeId:e,title:r,label:s,positionMs:i,durationMs:a,reset:d=!1}){return i<=0&&!d?{saved:!1}:this.transaction(()=>(i===0?this.db.prepare("INSERT OR IGNORE INTO watch_restart VALUES(?,?)").run(t,e):this.db.prepare("DELETE FROM watch_restart WHERE series_id=? AND episode_id=?").run(t,e),this.db.prepare(`INSERT INTO watch_progress VALUES(?,?,?,?,?,?,max(?,coalesce((SELECT max(updated_at)+1 FROM watch_progress),0))) ON CONFLICT(series_id,episode_id) DO UPDATE SET
51
+ title=excluded.title,label=excluded.label,position_ms=excluded.position_ms,duration_ms=excluded.duration_ms,updated_at=excluded.updated_at`).run(t,e,r,s,Math.min(i,a),a,Date.now()),{saved:!0}))}history(t,e,r=30){let s="series_id AS seriesId,episode_id AS episodeId,title,label,position_ms AS positionMs,duration_ms AS durationMs,updated_at AS updatedAt",i="(position_ms>0 OR (series_id,episode_id) IN (SELECT series_id,episode_id FROM watch_restart))";return t&&e?this.db.prepare("SELECT "+s+" FROM watch_progress WHERE series_id=? AND episode_id=? AND "+i).all(t,e):t?this.db.prepare("SELECT "+s+" FROM watch_progress WHERE series_id=? AND "+i+" ORDER BY updated_at DESC,rowid DESC LIMIT 1").all(t):this.db.prepare("SELECT "+s+` FROM (SELECT *, row_number() OVER(PARTITION BY series_id ORDER BY updated_at DESC,rowid DESC) AS rank
52
+ FROM watch_progress WHERE ${i} AND series_id GLOB 'hg-*' AND episode_id GLOB 'hg-*')
53
+ WHERE rank=1 ORDER BY updated_at DESC LIMIT ?`).all(r)}removeHistory(t){return this.transaction(()=>(this.db.prepare("DELETE FROM watch_progress WHERE series_id=?").run(t),this.db.prepare("DELETE FROM watch_restart WHERE series_id=?").run(t),{removed:!0}))}writable(){if(!this.persistent)return!1;try{return this.db.exec("UPDATE watch_progress SET updated_at=updated_at WHERE 0"),!0}catch{return!1}}close(){this.db.close()}};process.umask(63);var T,h={};try{let n=0,t=[];for await(let e of process.stdin){if(n+=e.length,n>16*1024*1024)break;t.push(e)}if(n<=16*1024*1024){let{session_id:e,turn_id:r,hook_event_name:s}=JSON.parse(Buffer.concat(t).toString("utf8"));T=new u,T.event({session_id:e,turn_id:r,hook_event_name:s})&&s==="UserPromptSubmit"&&T.offerable(e,r)&&(h={hookSpecificOutput:{hookEventName:"UserPromptSubmit",additionalContext:'The user has enabled Hongguo waiting suggestions. At the start of this turn, call the Hongguo plugin tool show_waiting_picks once with turnId "'+r+'". If tools are deferred, look it up by name. Continue the user\u2019s task immediately. The optional widget loads independently. Do not ask for a choice or mention the widget in your reply.'}})}}catch{}finally{T?.close(),process.stdout.write(JSON.stringify(h)+`
46
54
  `)}