@succsoft/succapp 5.0.0 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,58 @@
1
1
  # SuccApp
2
2
 
3
- **SuccApp**是SuccBI配套的一个集成二次开发环境,可以方便的进行扩展开发、脚本二次开发:
3
+ SuccApp 是面向低代码项目交付、二次开发和 AI 辅助开发的配套工具。
4
4
 
5
- 1. 方便快速开发、发布、测试SuccBI的扩展
6
- 2. 方便进行应用脚本开发,包括前端脚本和后端脚本
7
- 3. 一些比较大的二次开发项目希望将所有元数据,包括脚本等等都能进行`git`版本管理
8
- 4. 对元数据文件进行批量查找和替换等操作
5
+ SuccApp helps teams work with low-code metadata as local files.
9
6
 
10
- 更多帮助见[SuccBI产品手册](https://docs.succbi.com/dev/ide/)。
7
+ 它提供 SuccApp CLI 和 SuccApp For VSCode 两个入口,用于管理本地 SuccApp 工作区、连接服务器、同步元数据文件、检查差异、编辑脚本和辅助团队协作。
8
+
9
+ SuccApp 的核心思路是把页面、仪表板、报表、数据模型、程序流、脚本、主题和配置等元数据保存为本地文件。项目成员和 AI Agent 可以在本地修改这些文件,再通过 SuccApp CLI 或 SuccApp For VSCode 查看差异、拉取服务器变化、推送到测试环境,并按团队流程提交 Git 和发布生产。
10
+
11
+ ## SuccApp CLI / 命令行工具
12
+
13
+ SuccApp CLI 面向终端、脚本和 AI Agent,命令名为 `succapp`。它适合初始化工作区、连接服务器、查询状态、查看 diff、拉取和推送元数据、读取文件历史、解析页面地址、查询数据库结构,并用 `--json` 输出结构化结果。
14
+
15
+ Install:
16
+
17
+ ```bash
18
+ npm install -g @succsoft/succapp
19
+ ```
20
+
21
+ Verify:
22
+
23
+ ```bash
24
+ succapp --version
25
+ succapp --help
26
+ ```
27
+
28
+ 常用起步命令:
29
+
30
+ ```bash
31
+ succapp workspace init --server <server-url>
32
+ succapp auth login --pat <server-url>
33
+ succapp workspace setup
34
+ succapp workspace project clone <project>
35
+ succapp workspace status --json
36
+ succapp workspace file diff <path>
37
+ succapp workspace push <path>
38
+ ```
39
+
40
+ 其中 `workspace push` 会写入服务器。推送前应先检查差异;生产服务器必须按团队发布流程确认。
41
+
42
+ ## SuccApp For VSCode / VS Code 工具
43
+
44
+ SuccApp For VSCode 面向人工检查和交互式开发。它提供服务器视图、Changes 视图、文件历史、diff、脚本编辑、远端文件打开和 Git 协作入口,适合项目成员查看 AI 修改结果、处理冲突和执行需要人工确认的同步操作。
45
+
46
+ 在线安装时,在 VS Code 扩展视图搜索 `SuccApp` 并安装。离线环境可以使用与当前版本匹配的 `.vsix` 安装包:
47
+
48
+ ```bash
49
+ code --install-extension succapp-版本号.vsix
50
+ ```
51
+
52
+ ## 文档
53
+
54
+ 更多使用说明见产品手册:
55
+
56
+ - [AI 低代码开发](https://docs.succbi.com/v5/dev/ai-building)
57
+ - [SuccApp CLI](https://docs.succbi.com/v5/dev/ai-building/cli)
58
+ - [SuccApp For VSCode](https://docs.succbi.com/v5/dev/ai-building/vscode)
@@ -25,6 +25,9 @@
25
25
  "err.net.invalidUrl": "Invalid URL: {url}",
26
26
  "err.meta.invalidPath": "Invalid metadata path",
27
27
  "err.meta.invalidPath.desc": "Use a valid absolute metadata path and try again.",
28
+ "err.meta.projectExist": "A project with the same name already exists.",
29
+ "err.meta.projectname.illegal": "Invalid project name. Use letters, numbers, and underscores only, and keep it within 16 characters.",
30
+ "err.meta.projectname.reservedwords": "This project name is reserved by the system.",
28
31
  "err.file.notFound": "Path does not exist: {path}",
29
32
  "err.file.notDirectory": "Path is not a directory: {path}",
30
33
  "err.workspace.sameServerUrl": "New server URL must be different from the current URL.",
@@ -272,7 +275,7 @@
272
275
  "cli.cmd.server.proj.list.desc": "List projects visible on a server.",
273
276
  "cli.cmd.server.proj.create.summary": "Create a server project.",
274
277
  "cli.cmd.server.proj.create.desc": "Create a metadata project on a server.",
275
- "cli.cmd.server.proj.create.description": "Set the project description.",
278
+ "cli.cmd.server.proj.create.descOption": "Set the project description.",
276
279
  "cli.cmd.server.proj.create.created": "Created server project: {0}",
277
280
  "cli.cmd.server.file.title": "Server file",
278
281
  "cli.cmd.server.file.summary": "inspect and operate server metadata files",
@@ -25,6 +25,9 @@
25
25
  "err.net.invalidUrl": "URL 无效:{url}",
26
26
  "err.meta.invalidPath": "元数据路径不合法",
27
27
  "err.meta.invalidPath.desc": "请使用合法的绝对元数据路径后重试。",
28
+ "err.meta.projectExist": "已存在同名项目。",
29
+ "err.meta.projectname.illegal": "项目名不合法。只能使用字母、数字和下划线,长度不能超过 16。",
30
+ "err.meta.projectname.reservedwords": "项目名是系统保留字,不能使用。",
28
31
  "err.file.notFound": "路径不存在:{path}",
29
32
  "err.file.notDirectory": "路径不是目录:{path}",
30
33
  "err.workspace.sameServerUrl": "新服务器地址必须和当前地址不同。",
@@ -272,7 +275,7 @@
272
275
  "cli.cmd.server.proj.list.desc": "列出服务器上的可见项目。",
273
276
  "cli.cmd.server.proj.create.summary": "创建服务器项目。",
274
277
  "cli.cmd.server.proj.create.desc": "在服务器上创建元数据项目。",
275
- "cli.cmd.server.proj.create.description": "设置项目描述。",
278
+ "cli.cmd.server.proj.create.descOption": "设置项目描述。",
276
279
  "cli.cmd.server.proj.create.created": "已创建服务器项目:{0}",
277
280
  "cli.cmd.server.file.title": "服务器文件",
278
281
  "cli.cmd.server.file.summary": "查看和操作服务器元数据文件",
@@ -20,7 +20,7 @@ ${t}
20
20
  `)}function rF(r){return/^\s*"([^"]+)"\s*:/.exec(r)?.[1]}function Qi(r,e){let t=JSON.parse(e);if(V(t))return t;throw new Xo(r,new Error(".meta root must be an object"))}async function Ie(r,e,t){return(await Zi(r,e,t))[nc(e)]}async function ta(r,e,t){let n=rc(r,e.path);await cc(n,!1,o=>{o[nc(e.path)]=Vt(e,t)})}async function XS(r,e,t){let n=new Map;for(let o of e){let i=rc(r,o.path),a=n.get(i);a?a.push(o):n.set(i,[o])}await Promise.all([...n].map(async([o,i])=>{await cc(o,!1,a=>{for(let s of i)a[nc(s.path)]=Vt(s,t)})}))}async function ac(r,e,t){let n=Bt.join(te(r,e),Y);await cc(n,!1,o=>{for(let[i,a]of Object.entries(t))a?o[i]=a:delete o[i]})}async function ro(r){return(await Promise.all(r.map(async t=>(await tr.promises.stat(t)).isDirectory()?1+await QS(t):1))).reduce((t,n)=>t+n,0)}async function QS(r){let e=await tr.promises.readdir(r,{withFileTypes:!0});return(await Promise.all(e.filter(n=>n.name!==Y).map(async n=>n.isDirectory()?1+await QS(Bt.join(r,n.name)):1))).reduce((n,o)=>n+o,0)}async function sc(r){let e=(0,US.createHash)("sha256");return await(0,BS.pipeline)(tr.createReadStream(r,{highWaterMark:64*1024}),new jS.Writable({write(t,n,o){e.update(t),o()}})),e.digest("hex")}function Vt(r,e){let t={};if(hr(t,"id",r.id),hr(t,"revision",r.revision),e?.writeContentInfo){if(r.size!==void 0){if(!Number.isSafeInteger(r.size)||r.size<0)throw new Error(`invalid file content size: ${r.path}`);t.size=r.size}if(r.hash!==void 0){let n=r.hash.trim().toLowerCase();if(!Xx.test(n))throw new Error(`invalid file content hash: ${r.path}`);t.hash=n}}return hr(t,"icon",r.icon),hr(t,"desc",r.desc),r.isFolder&&r.type&&r.type!==Yx&&(t.type=r.type),hr(t,"order",r.order),hr(t,"creator",r.creator),hr(t,"createTime",r.createTime),hr(t,"modifier",r.modifier),hr(t,"modifyTime",r.modifyTime),r.hidden&&(t.hidden=!0),hr(t,"subFileType",r.subFileType),hr(t,"labels",r.labels),WS(t,"option",r.option),WS(t,"customOption",r.customOption),ev(t)}function no(r,e,t=!0){for(let n of $S)if(!(t&&Qx.has(n))&&!nF(r,e,n))return!1;return!0}function nF(r,e,t){let n=r[t],o=e[t];return(n===""||n===!1)&&(n=void 0),(o===""||o===!1)&&(o=void 0),n===o?!0:t==="option"||t==="customOption"?(0,VS.isDeepStrictEqual)(n,o)?!0:(n&&Object.keys(n).length===0&&(n=void 0),o&&Object.keys(o).length===0&&(o=void 0),n===o):!1}function oo(r){if(!r)return{};let e={...r};for(let t of HS)delete e[t];return e}async function cc(r,e,t){let o=(Hr.get(r)??Promise.resolve()).catch(()=>{}).then(async()=>{let i=await GS(r,{strict:e});t(i),await su(r,i)});Hr.set(r,o);try{await o}finally{Hr.get(r)===o&&Hr.delete(r)}}async function ZS(r){let e=Hr.get(r);e&&await e.catch(()=>{})}async function su(r,e){await cn(r,JSON.stringify(oF(e),null,Jx))}function oF(r){let e={};for(let t of Object.keys(r))e[t]=ev(r[t]);return e}function ev(r){let e={};for(let t of $S)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t]);return e}function hr(r,e,t){t==null||t===""||typeof t=="number"&&t===0||(r[e]=t)}function WS(r,e,t){!t||Object.keys(t).length===0||(r[e]=t)}var tr,Bt,US,jS,BS,VS,to,Y,Jx,Yx,qS,Xx,$S,HS,Qx,Hr,nu,Xo,Je=pe(()=>{tr=b(require("fs")),Bt=b(require("path")),US=require("node:crypto"),jS=require("node:stream"),BS=require("node:stream/promises"),VS=require("node:util");$();G();D();To();ne();vt();to=T("common.meta"),Y=".meta",Jx=" ",Yx="fold",qS=/"version"\s*:\s*("(?:\\.|[^"\\])*")/,Xx=/^[0-9a-f]{64}$/,$S=["id","revision","size","hash","icon","desc","type","order","creator","createTime","modifier","modifyTime","hidden","subFileType","labels","option","customOption"],HS=["id","revision","size","hash","type","creator","createTime","modifier","modifyTime","subFileType"],Qx=new Set(HS),Hr=new Map,Xo=class extends Error{constructor(t,n){super(`invalid .meta file: ${t}`);this.filePath=t;this.cause=n;this.name="DotMetaParseError"}}});function cu(r,e){return tv.join(te(r,e),ra)}async function pc(r,e){await lc.promises.mkdir(te(r,e),{recursive:!0}),await lc.promises.writeFile(cu(r,e),"","utf8")}async function dc(r,e){await lc.promises.rm(cu(r,e),{force:!0})}function uc(r,e){return Z(cu(r,e))}var lc,tv,ra,Qo=pe(()=>{lc=b(require("fs")),tv=b(require("path"));$();ra=".succapp-clone-in-progress"});var bn,mc,rv,Mt,Zo=pe(()=>{bn=b(require("fs")),mc=b(require("path"));$();Je();D();G();Qo();Qo();rv=T("sync.mirror-store"),Mt=class{constructor(e){this.root=e}toLocalPath(e){return te(this.root,e)}readMeta(e){return Ie(this.root,e)}readMetaStrict(e){return Ie(this.root,e,{strict:!0})}async writeMeta(e,t){t?.throwIfAborted(),await ta(this.root,e,{writeContentInfo:!0})}async writeMetas(e,t){t?.throwIfAborted(),await XS(this.root,e,{writeContentInfo:!0})}async patchMeta(e,t,n){n?.throwIfAborted(),await ac(this.root,e,t)}async listDirectChildren(e){try{return(await bn.promises.readdir(this.toLocalPath(e),{withFileTypes:!0})).filter(n=>n.name!==Y&&!n.name.startsWith(".")).map(n=>({path:this.joinRemotePath(e,n.name),isFolder:n.isDirectory()}))}catch(t){if(F(t))return rv.debug(`mirror directory does not exist: ${e}`),[];throw t}}async listDirectMetaChildren(e){let t=await Zi(this.root,this.joinRemotePath(e,Y));return Object.keys(t).map(n=>{let o=t[n];return{path:this.joinRemotePath(e,n),isFolder:!!o.type&&o.type!=="file",meta:o}})}async countMetaResources(e){if(!e)return ro([this.root]);let t=await Promise.all(e.map(async i=>{let a=this.toLocalPath(i);return await Z(a)?a:void 0})),n=t.filter(i=>i!==void 0);return t.length-n.length+await ro(n)}async exists(e){return Z(this.toLocalPath(e))}markCloneInProgress(e){return pc(this.root,e)}clearCloneInProgress(e){return dc(this.root,e)}isCloneInProgress(e){return uc(this.root,e)}async isFolder(e){try{return(await bn.promises.stat(this.toLocalPath(e))).isDirectory()}catch(t){if(F(t))return rv.debug(`mirror path is not a folder: ${e}`),!1;throw t}}async removePath(e,t){if(t?.throwIfAborted(),t){await this.removeLocalResource(this.toLocalPath(e),e,t);return}await bn.promises.rm(this.toLocalPath(e),{force:!0,recursive:!0})}async removeLocalResource(e,t,n){let o;try{o=await bn.promises.stat(e)}catch(a){if(F(a)){n?.step(1);return}throw a}if(!o.isDirectory()){await bn.promises.rm(e,{force:!0}),n?.step(1);return}let i=await bn.promises.readdir(e,{withFileTypes:!0});await Promise.all(i.filter(a=>a.name!==Y).map(a=>(n?.throwIfAborted(),this.removeLocalResource(mc.join(e,a.name),mc.posix.join(t,a.name),n)))),await bn.promises.rm(e,{force:!0,recursive:!0}),n?.step(1)}removeMeta(e){return ea(this.root,e)}async listProjectPaths(){return(await this.listDirectChildren("/")).filter(t=>t.isFolder).map(t=>t.path).sort((t,n)=>t.localeCompare(n))}joinRemotePath(e,t){return e==="/"?"/"+t:e+"/"+t}}});var me,ye,wt,iF,pu,aF,rr,na=pe(()=>{me=b(require("fs")),ye=b(require("path"));$();Je();G();D();pn();Qo();Qo();wt=T("sync.workspace-store"),iF=8,pu=20,aF=new Set([".git",Xt,"node_modules"]),rr=class{constructor(e,t){this.workspaceRoot=e;this.mirror=t}toLocalPath(e){return te(this.workspaceRoot,e)}async countFiles(e,t={}){let n=t.limit;if(n!==void 0&&n<=0)return 0;let o=await Promise.all(e.map(async a=>{let s=this.toLocalPath(a),c;try{c=await me.promises.stat(s)}catch(l){if(F(l)||Ga(l))return 0;throw l}return c.isDirectory()?this.countDirectoryFiles(s,n):1})),i=0;for(let a of o)if(i+=a,n!==void 0&&i>=n)return i;return i}async writeMeta(e,t){t?.throwIfAborted(),await ta(this.workspaceRoot,e)}async patchMeta(e,t,n){n?.throwIfAborted(),await ac(this.workspaceRoot,e,t)}async deletePath(e,t){t?.throwIfAborted(),t?await this.removeLocalResource(this.toLocalPath(e),e,t):await me.promises.rm(this.toLocalPath(e),{force:!0,recursive:!0});let n=ye.dirname(this.toLocalPath(e));await Z(n)&&await ea(this.workspaceRoot,e),t?.step(1)}async removeEmptyOrphanDirectory(e){let t=this.toLocalPath(e),n;try{n=await me.promises.stat(t)}catch(s){if(F(s))return wt.debug(`orphan cleanup skip missing: remotePath=${e}`),!1;throw s}if(!n.isDirectory())return wt.debug(`orphan cleanup skip non-directory: remotePath=${e}`),!1;let i=(await me.promises.readdir(t)).filter(s=>s!==Y);if(i.length>0)return wt.debug(`orphan cleanup skip non-empty: remotePath=${e} nonMetaChildren=${i.length} samples=${i.slice(0,5).join("|")}`),!1;await me.promises.rm(t,{force:!0,recursive:!0});let a=ye.dirname(t);return await Z(a)&&await ea(this.workspaceRoot,e),wt.debug(`orphan cleanup removed: remotePath=${e}`),!0}async countResources(e){return(await Promise.all(e.map(async n=>{let o=this.toLocalPath(n),i;try{i=await Z(o)?await ro([o]):1}catch(a){if(!Ga(a))throw a;i=1}return i+1}))).reduce((n,o)=>n+o,0)}async countCheckoutResources(e){let t=this.mirror.toLocalPath(e),n=await this.statCheckoutSource(t);if(!n)return 1;if(!n.isDirectory())return 2;let[o,i,a]=await Promise.all([this.countExistingResources(e),ro([t]),this.countDirectories(t)]);return Math.max(o+i+a+1,1)}async statCheckoutSource(e){try{return await me.promises.stat(e)}catch(t){if(F(t))return;throw t}}async copyMirrorContent(e,t){t?.throwIfAborted();let n=this.toLocalPath(e);await me.promises.mkdir(ye.dirname(n),{recursive:!0}),await me.promises.copyFile(this.mirror.toLocalPath(e),n)}async checkoutFromMirror(e,t){t?.throwIfAborted();let n=Date.now(),o=this.mirror.toLocalPath(e),i=this.toLocalPath(e),s=(await me.promises.stat(o)).isDirectory();if(wt.debug(`checkout from mirror start: remotePath=${e} isFolder=${s} source=${o} target=${i}`),await this.copyMirrorMetaInfo(e,s),t?.step(1),s){await this.prepareCheckoutDirectory(e,t),await this.checkoutMirrorDirectory(e,t),wt.debug(`checkout from mirror done: remotePath=${e} elapsed=${Date.now()-n}ms`);return}await this.copyMirrorContent(e),t?.step(1),wt.debug(`checkout from mirror done: remotePath=${e} elapsed=${Date.now()-n}ms`)}async prepareCheckoutDirectory(e,t){t?.throwIfAborted();let n=this.toLocalPath(e),o=await Z(n);t&&o?await this.removeLocalResource(n,e,t):await me.promises.rm(n,{force:!0,recursive:!0}),wt.debug(`checkout prepared workspace target: remotePath=${e} targetExisted=${o}`)}async checkoutMirrorDirectory(e,t){let n=this.toLocalPath(e),o=new ze({maxConcurrency:iF,signal:t?.getAbortSignal()});try{await this.copyMirrorDirectory(e,t,o),await o.waitAll()}catch(a){throw o.cancel(a),await o.waitAll(),a}wt.debug(`checkout copied mirror tree: remotePath=${e}`),t?.step(1),await this.ensureFolderDotMetas(n,t,e);let i=await this.listResidualEntries(n);i.length>0&&wt.info(`checkout from mirror left workspace-only entries: remotePath=${e} count=${i.length} samples=${i.slice(0,pu).join("|")}`)}isCloneInProgress(e){return uc(this.workspaceRoot,e)}async listResidualEntries(e){let t=ye.join(this.mirror.toLocalPath("/"),ye.relative(this.workspaceRoot,e)),n=[];return await this.collectResidualEntries(e,t,"",n),n}async collectResidualEntries(e,t,n,o){if(o.length>=pu)return;let i;try{i=await me.promises.readdir(e,{withFileTypes:!0})}catch{return}let a;try{a=new Set(await me.promises.readdir(t))}catch{a=new Set}for(let s of i){if(s.name===Y||s.name===ra||o.length>=pu)continue;let c=n?`${n}/${s.name}`:s.name;if(!a.has(s.name)){o.push(c);continue}s.isDirectory()&&await this.collectResidualEntries(ye.join(e,s.name),ye.join(t,s.name),c,o)}}async copyMirrorDirectory(e,t,n){let o=this.mirror.toLocalPath(e),i=this.toLocalPath(e);await me.promises.mkdir(i,{recursive:!0});let a=await me.promises.readdir(o,{withFileTypes:!0});wt.debug(`copy mirror dir: remotePath=${e} children=${a.length}`),await Promise.all(a.map(async s=>{if(t?.throwIfAborted(),s.name===ra)return;let c=ye.join(o,s.name),l=ye.join(i,s.name);if(s.isDirectory()){await this.copyMirrorDirectory(ye.posix.join(e,s.name),t,n),t?.step(1);return}await n.addTask(async()=>{t?.throwIfAborted(),await me.promises.mkdir(ye.dirname(l),{recursive:!0}),await me.promises.copyFile(c,l),s.name!==Y&&t?.step(1)})}))}async countExistingResources(e){let t=this.toLocalPath(e);return await Z(t)?ro([t]):0}async countDirectoryFiles(e,t){let n;try{n=await me.promises.readdir(e,{withFileTypes:!0})}catch(c){if(F(c)||Ga(c))return 0;throw c}let o=0,i=[];for(let c of n)c.name!==Y&&(c.isDirectory()?aF.has(c.name)||i.push(c):o++);if(t!==void 0&&o>=t)return o;let a=await Promise.all(i.map(c=>this.countDirectoryFiles(ye.join(e,c.name),t))),s=o;for(let c of a)if(s+=c,t!==void 0&&s>=t)return s;return s}toParentDotMetaPath(e){return this.toFolderDotMetaPath(ye.posix.dirname(e))}toFolderDotMetaPath(e){return e==="/"?`/${Y}`:`${e}/${Y}`}async countDirectories(e){let t=await me.promises.readdir(e,{withFileTypes:!0});return 1+(await Promise.all(t.filter(o=>o.isDirectory()).map(o=>this.countDirectories(ye.join(e,o.name))))).reduce((o,i)=>o+i,0)}async removeLocalResource(e,t,n){let o;try{o=await me.promises.stat(e)}catch(a){if(F(a)){n?.step(1);return}throw a}if(!o.isDirectory()){await me.promises.rm(e,{force:!0}),n?.step(1);return}let i=await me.promises.readdir(e,{withFileTypes:!0});wt.debug(`remove local dir: remotePath=${t} children=${i.length}`+(i.length>0?` names=${i.slice(0,10).map(a=>a.name).join("|")}`:"")),await Promise.all(i.filter(a=>a.name!==Y).map(a=>(n?.throwIfAborted(),this.removeLocalResource(ye.join(e,a.name),ye.posix.join(t,a.name),n)))),await me.promises.rm(e,{force:!0,recursive:!0}),n?.step(1)}async copyMirrorMetaInfo(e,t,n){n?.throwIfAborted();let o=await Ie(this.mirror.root,e);o&&await ta(this.workspaceRoot,{...o,id:o.id??"",path:e,parentDir:ye.posix.dirname(e),name:ye.posix.basename(e),isFolder:t})}async listProjectPaths(){try{let e=await me.promises.readdir(this.workspaceRoot,{withFileTypes:!0});return(await Promise.all(e.filter(n=>n.isDirectory()&&!n.name.startsWith(".")).map(async n=>await this.hasProjectMetaFile(n.name)?"/"+n.name:void 0))).filter(n=>n!==void 0)}catch(e){if(F(e))return wt.debug(`workspace root has no local projects yet: ${this.workspaceRoot}`),[];throw e}}async ensureFolderDotMetas(e,t,n){let o=await me.promises.readdir(e,{withFileTypes:!0}),i=ye.join(e,Y);try{await me.promises.access(i)}catch(a){if(!F(a))throw a;wt.debug(`create missing folder .meta: ${i}`),await me.promises.writeFile(i,"{}","utf-8")}t?.step(1),await Promise.all(o.filter(a=>a.isDirectory()).map(a=>this.ensureFolderDotMetas(ye.join(e,a.name),t,n?ye.posix.join(n,a.name):void 0)))}async hasProjectMetaFile(e){try{let t=ye.join(this.workspaceRoot,e,Y);return(await me.promises.stat(t)).isFile()}catch(t){if(F(t))return wt.debug(`project .meta does not exist: ${e}`),!1;throw t}}}});var Tn,qe,sF,ei,du=pe(()=>{Tn=b(require("fs")),qe=b(require("path"));G();$();Je();sF=T("sync.file-mutation-baseline"),ei=class{constructor(e){this.options=e}workspaceMetaPatches=new Map;mirrorMetaPatches=new Map;physicalDeletes=new Set;mirrorPhysicalDeletes=new Set;mirrorFolderCreates=new Set;mirrorSubtreeSyncs=new Set;mirrorContentSyncs=new Set;authoritativeMetaPaths=new Set;deletedPaths=new Set;folderPathMutations=[];async apply(e,t){t?.throwIfAborted(),this.resetEffects(),await this.collectEffects(e),t?.throwIfAborted(),await this.applyPhysicalDeletes(),t?.throwIfAborted(),await this.applyMirrorFolderCreates(),t?.throwIfAborted(),await this.applyWorkspaceMetaPatches(t),t?.throwIfAborted(),await this.syncMirrorSubtrees(),t?.throwIfAborted(),await this.applyMirrorMetaPatches(t),t?.throwIfAborted(),await this.syncMirrorContents()}resetEffects(){this.workspaceMetaPatches=new Map,this.mirrorMetaPatches=new Map,this.physicalDeletes=new Set,this.mirrorPhysicalDeletes=new Set,this.mirrorFolderCreates=new Set,this.mirrorSubtreeSyncs=new Set,this.mirrorContentSyncs=new Set,this.authoritativeMetaPaths=new Set,this.deletedPaths=new Set,this.folderPathMutations=[]}async collectEffects(e){for(let t of e){if(!t.success)continue;let n=this.isNoWritableChangeResponse(t);await this.collectResponseEffects(t),n||await this.collectParentWatermarkEffects(t)}}async collectResponseEffects(e){if(e.pathMutation&&e.pathMutation!=="none"&&e.oldPath&&e.metaInfo){await this.collectPathMutationEffects(e);return}if(e.contentMutation==="deleted"){this.collectDeleteEffects(e);return}await this.collectContentOrMetaEffects(e)}async collectPathMutationEffects(e){let t=e.metaInfo,n=e.oldPath;if(this.mirrorPhysicalDeletes.add(n),this.addMetaPatch(this.workspaceMetaPatches,qe.posix.dirname(n),qe.posix.basename(n),void 0),this.addMetaPatch(this.mirrorMetaPatches,qe.posix.dirname(n),qe.posix.basename(n),void 0),this.addAuthoritativeMetaPatch(t),t.isFolder){this.folderPathMutations.push({oldPath:n,newPath:t.path}),this.collectMappedDeleteEffectsForFolderMove(n,t.path),this.mirrorSubtreeSyncs.add(t.path);for(let o of await this.getAuthoritativeDescendants(t.path))this.addAuthoritativeMetaPatch(o);return}this.mirrorContentSyncs.add(t.path)}collectDeleteEffects(e){let t=e.metaInfo?.path??e.path;this.deletedPaths.add(t),this.physicalDeletes.add(t);let n=qe.posix.dirname(t),o=qe.posix.basename(t);this.addMetaPatch(this.workspaceMetaPatches,n,o,void 0),this.addMetaPatch(this.mirrorMetaPatches,n,o,void 0);for(let i of this.folderPathMutations)this.collectMappedDeleteEffectsForFolderMove(i.oldPath,i.newPath)}collectMappedDeleteEffectsForFolderMove(e,t){for(let n of[...this.deletedPaths])this.collectMappedDeleteEffect(n,e,t)}collectMappedDeleteEffect(e,t,n){if(e===t||!Q(e,t))return;let o=n+e.slice(t.length);this.addMetaPatch(this.workspaceMetaPatches,qe.posix.dirname(o),qe.posix.basename(o),void 0),this.addMetaPatch(this.mirrorMetaPatches,qe.posix.dirname(o),qe.posix.basename(o),void 0),this.deletedPaths.add(o)}async collectContentOrMetaEffects(e){let t=e.metaInfo;if(t){if(this.isNoWritableChangeResponse(e)){await this.collectNoWritableChangeEffects(t);return}this.addAuthoritativeMetaPatch(t),t.isFolder?this.mirrorFolderCreates.add(t.path):(e.contentMutation==="created"||e.contentMutation==="modified")&&this.mirrorContentSyncs.add(t.path)}}async collectNoWritableChangeEffects(e){await this.addBaselineOnlyMetaPatch(this.workspaceMetaPatches,this.options.workspace.workspaceRoot,e),await this.addBaselineOnlyMetaPatch(this.mirrorMetaPatches,this.options.mirror.root,e),this.authoritativeMetaPaths.add(e.path)}async collectParentWatermarkEffects(e){if(typeof e.modifyTime!="number")return;let t=e.metaInfo?.path??e.path,n=e.oldPath?[e.oldPath,t]:[t];for(let o of this.getUniqueParentPaths(n))this.authoritativeMetaPaths.has(o)||await this.addParentWatermarkPatch(o,e.modifyTime)}async addParentWatermarkPatch(e,t){let n=qe.posix.dirname(e),o=qe.posix.basename(e);await this.addStoreParentWatermarkPatch(this.workspaceMetaPatches,this.options.workspace.workspaceRoot,e,n,o,t),await this.addStoreParentWatermarkPatch(this.mirrorMetaPatches,this.options.mirror.root,e,n,o,t)}async addStoreParentWatermarkPatch(e,t,n,o,i,a){let s=e.get(o);if(s&&Object.prototype.hasOwnProperty.call(s,i)){let m=s[i];m&&(s[i]={...m,modifyTime:a});return}let c=await Ie(t,n),l=this.toServerMetaFromExisting(n,c,a);if(!l)return;let p=e.get(o);p||(p={},e.set(o,p)),p[i]=Vt(l)}async applyPhysicalDeletes(){for(let e of this.physicalDeletes)await Tn.promises.rm(this.options.workspace.toLocalPath(e),{force:!0,recursive:!0}),await this.options.mirror.removePath(e);for(let e of this.mirrorPhysicalDeletes)await this.options.mirror.removePath(e)}async applyMirrorFolderCreates(){for(let e of this.mirrorFolderCreates)await Tn.promises.mkdir(this.options.mirror.toLocalPath(e),{recursive:!0})}async applyWorkspaceMetaPatches(e){for(let[t,n]of this.workspaceMetaPatches)this.isInsidePhysicalDelete(t)||await this.options.workspace.patchMeta(t,n,e)}async syncMirrorSubtrees(){for(let e of this.mirrorSubtreeSyncs)this.isInsidePhysicalDelete(e)||await this.syncWorkspaceSubtreeToMirror(e)}async applyMirrorMetaPatches(e){for(let[t,n]of this.mirrorMetaPatches)this.isInsidePhysicalDelete(t)||await this.options.mirror.patchMeta(t,n,e)}async syncMirrorContents(){for(let e of this.mirrorContentSyncs){let t=this.options.workspace.toLocalPath(e),n=this.options.mirror.toLocalPath(e);await Tn.promises.mkdir(qe.dirname(n),{recursive:!0}),await Tn.promises.copyFile(t,n)}}addAuthoritativeMetaPatch(e){let t=qe.posix.dirname(e.path),n=qe.posix.basename(e.path);this.addMetaPatch(this.workspaceMetaPatches,t,n,Vt(e)),this.addMetaPatch(this.mirrorMetaPatches,t,n,Vt(e)),this.authoritativeMetaPaths.add(e.path)}async addBaselineOnlyMetaPatch(e,t,n){this.addMetaPatch(e,n.parentDir,n.name,this.toBaselineOnlyMetaInfo(n,await Ie(t,n.path)))}toBaselineOnlyMetaInfo(e,t){return t?{...t,...e.id!==void 0?{id:e.id}:{},...e.revision!==void 0?{revision:e.revision}:{},...e.modifyTime!==void 0?{modifyTime:e.modifyTime}:{}}:Vt(e)}isNoWritableChangeResponse(e){return e.contentMutation==="none"&&(e.pathMutation===void 0||e.pathMutation==="none")&&e.metaInfoChanged===!1}async getAuthoritativeDescendants(e){try{return await(await this.options.getApiClient()).getFileDescendant(e)}catch(t){return sF.warn(`failed to fetch authoritative descendants after folder mutation: ${e}`,t),[]}}async syncWorkspaceSubtreeToMirror(e){let t=this.options.workspace.toLocalPath(e),n=this.options.mirror.toLocalPath(e);await Tn.promises.rm(n,{force:!0,recursive:!0}),await Tn.promises.mkdir(qe.dirname(n),{recursive:!0}),await Tn.promises.cp(t,n,{force:!0,recursive:!0})}addMetaPatch(e,t,n,o){let i=e.get(t);i||(i={},e.set(t,i)),i[n]=o}isInsidePhysicalDelete(e){return[...this.physicalDeletes,...this.mirrorPhysicalDeletes].some(t=>Q(e,t))}getUniqueParentPaths(e){let t=new Set;for(let n of e)for(let o of this.getParentPaths(n))t.add(o);return[...t]}getParentPaths(e){let t=e.replace(/^\/+|\/+$/g,"").split("/").filter(Boolean),n=[];for(let o=0;o<t.length-1;o++)n.push("/"+t.slice(0,o+1).join("/"));return n}toServerMetaFromExisting(e,t,n){if(t)return{...t,id:t.id??e,path:e,parentDir:qe.posix.dirname(e),name:qe.posix.basename(e),isFolder:!0,type:t.type??"fold",modifyTime:n}}}});var io,ti,uu=pe(()=>{io=b(require("path"));D();J();$();ti=class{constructor(e){this.options=e}async resolve(e,t){let n=io.resolve(this.options.workspaceRoot),o=io.resolve(e);if(o===n||o.startsWith(n+io.sep))return this.requireMetaPath(e);if(io.isAbsolute(e)){let i=Pe(e);if(await this.isKnownRemoteProjectPath(i,t))return i;throw new Ot("err.sync.pathOutOfScope",{remotePath:e,reason:"notInSyncScope"},{style:"warn"})}return Pe(e)}requireMetaPath(e){let t=kr(this.options.workspaceRoot,e);if(!t)throw new Error(`file is not in sync scope: ${e}`);return Pe(t)}async isKnownRemoteProjectPath(e,t){let n=We(e);if(!n)return!1;let o=n.replace(/^\//,"");if(t==="server-backed")return(await this.options.getServerProjects()).some(c=>c.name===o);let[i,a]=await Promise.all([this.options.workspace.listProjectPaths(),this.options.mirror.listProjectPaths()]);return i.includes(n)||a.includes(n)}}});function nv(r){let e=r.split(".").map(t=>{let n=t.match(/^\d+/);return n?Number(n[0]):Number.NaN});return e.some(Number.isNaN)?void 0:e}function oa(r){return(typeof r=="string"?r.trim():"")||void 0}function hc(r,e){if(!r||!e)return;let t=nv(r),n=nv(e);if(!t||!n)return;let o=Math.max(t.length,n.length);for(let i=0;i<o;i++){let a=t[i]??0,s=n[i]??0;if(a!==s)return a>s?1:-1}return 0}function fc(r,e){if(!r)return!0;let t=hc(r,e);return t===void 0?r!==e:t<0}function gc(r,e){let t=hc(r,e);return t!==void 0&&t>0}var ia=pe(()=>{});var mu,ri,hu=pe(()=>{mu=b(require("fs"));D();Je();ia();ri=class{client;constructor(e){this.client=e.client}async upgradeContent(e){let t=this.createContentBaseResult(e),n=e.versionInfo;if(!n?.upgradeSupported)return{...t,reason:"unsupported"};let o=n.contentVersion;if(!o)return{...t,reason:"unsupported"};let i;try{i=e.currentVersion??au(e.content)}catch(l){return{...t,reason:"invalidContent",errorInfo:l}}let a={...t,currentVersion:i,targetVersion:o};if(gc(i,o))return{...a,reason:"newerVersion"};if(!fc(i,o))return{...a,reason:"upToDate"};let s={...a,upgradeRequired:!0};if(e.checkOnly)return s;let c;try{c=await this.client.upgradeFileContent({path:e.path,content:e.content})}catch(l){return{...s,reason:"upgradeFailed",errorInfo:l}}return!c.changed||c.content===e.content?{...s,reason:"upToDate"}:{...s,content:c.content,changed:!0}}async upgradeFile(e){let t;if(e.content!==void 0)t=e.content;else try{t=await mu.promises.readFile(e.localPath,"utf-8")}catch(o){return{path:e.path,localPath:e.localPath,targetVersion:e.versionInfo?.contentVersion,content:"",changed:!1,upgradeRequired:!1,reason:F(o)?"fileNotFound":"readFailed",errorInfo:o}}let n=await this.upgradeContent({path:e.path,content:t,versionInfo:e.versionInfo,currentVersion:e.currentVersion,checkOnly:e.checkOnly});if(!n.changed||e.checkOnly)return{...n,localPath:e.localPath};try{return await mu.promises.writeFile(e.localPath,n.content,"utf-8"),{...n,localPath:e.localPath}}catch(o){return{...n,localPath:e.localPath,changed:!1,reason:"writeFailed",errorInfo:o}}}createContentBaseResult(e){return{path:e.path,targetVersion:e.versionInfo?.contentVersion,content:e.content,changed:!1,upgradeRequired:!1}}}});var iv={};Gl(iv,{SyncCommandUpgradeMetadata:()=>aa});var fu,xn,ov,cF,Kr,aa,gu=pe(()=>{fu=b(require("fs")),xn=b(require("path"));D();G();Je();pn();$();it();hu();ov=8,cF=new Set([".git",".succapp","node_modules"]),Kr=T("sync.upgrade-metadata"),aa=class extends Ae{upgrader=new ri({client:{upgradeFileContent:async e=>(await this.getApiClient()).upgradeFileContent(e)}});scannedContent=new Map;async execute(){let e=await this.resolveInputTargetPaths();if(e.length===0)return this.createResult();await this.getApiClient();let t=this.formatTargetScope(e);this.options.checkOnly?(Kr.info("metadata version check start: {0}",t),Kr.info("scan metadata version files")):(Kr.info("metadata upgrade start: {0}",t),Kr.info("scan metadata upgrade files"));let n=await this.scanCandidates(e);if(this.options.checkOnly)return n;await this.options.onChecked?.(n);let o=this.createUpgradeResult(n);return await this.upgradeCandidates(o),this.sortResult(o),Kr.info("metadata upgrade done: changed={0} candidates={1} skipped={2} failures={3} checked={4}",o.changed.length,o.candidates.length,o.skipped.length,o.failures.length,o.checked),o}formatTargetScope(e){return e.length===1?e[0]:`targets=${e.length}`}async resolveInputTargetPaths(){if(!this.options.paths||this.options.paths.length===0)return this.resolveDefaultTargetPaths();let e=new Set;for(let t of this.options.paths){this.task.throwIfAborted();let n=await this.resolveInputMetaPath(t);n&&e.add(n)}return ft(e)}async resolveDefaultTargetPaths(){let e=await this.createWorkspaceStore().listProjectPaths();return ft(new Set(e))}async resolveInputMetaPath(e){if(e==="/")return"/";let t=kr(this.context.root,e);if(t)return t;if(!(xn.isAbsolute(e)&&await Z(e))&&e.startsWith("/"))return Pe(e)}async scanCandidates(e){let t=new ze(ov),n=this.createResult(),o=[],i=0,a=s=>{i++,o.push(async()=>this.checkFile(s,n))};return await Promise.all(e.map(s=>this.scanInputPath(s,a))),this.task.start(Math.max(i,1)),await Promise.all(o.map(s=>t.addTask(async()=>{try{this.task.throwIfAborted(),await s()}finally{this.task.step()}}))),await t.waitAll(),this.task.finish(),this.sortResult(n),Kr.info("metadata version check done: candidates={0} skipped={1} failures={2} checked={3}",n.candidates.length,n.skipped.length,n.failures.length,n.checked),n}async upgradeCandidates(e){let t=e.candidates.length;if(t===0)return;Kr.info("metadata upgrade apply start: candidates={0}",t);let n=new ze(ov),o=0;await Promise.all(e.candidates.map(i=>n.addTask(async()=>{this.task.throwIfAborted();let a=await this.upgradeCandidate(i,e);o++,await this.options.onFileUpgraded?.({...a,index:o,total:t})}))),await n.waitAll()}async scanInputPath(e,t){let n=Pe(e),o=te(this.context.root,n);try{if((await fu.promises.stat(o)).isDirectory()){(this.options.recursive??!0)&&await this.scanDirectory(n,o,t);return}if(xn.basename(o)===Y)return;t({path:n,localPath:o})}catch(i){if(F(i)){t({path:n,localPath:o});return}throw i}}async scanDirectory(e,t,n){let o=(await fu.promises.readdir(t,{withFileTypes:!0})).sort((a,s)=>a.name.localeCompare(s.name)),i=[];for(let a of o){if(this.task.throwIfAborted(),a.name===Y)continue;let s=xn.join(t,a.name),c=Pe(xn.posix.join(e,a.name));if(a.isDirectory()){cF.has(a.name)||i.push(this.scanDirectory(c,s,n));continue}n({path:c,localPath:s})}await Promise.all(i)}createResult(){return{checked:0,candidates:[],changed:[],skipped:[],failures:[]}}createUpgradeResult(e){return{checked:e.checked,candidates:[...e.candidates],changed:[],skipped:[...e.skipped],failures:[...e.failures]}}sortResult(e){let t=(n,o)=>n.remotePath.localeCompare(o.remotePath);e.candidates.sort(t),e.changed.sort(t),e.skipped.sort(t),e.failures.sort(t)}async checkFile(e,t){let n=this.getMetadataVersionInfoByPath(e.path);if(!n?.upgradeSupported)return;t.checked++;let o=await this.upgrader.upgradeFile({path:e.path,localPath:e.localPath,versionInfo:n,checkOnly:!0}),i=this.createItemResult(o);if(o.upgradeRequired&&(t.candidates.push(i),this.scannedContent.set(e.localPath,{content:o.content,currentVersion:o.currentVersion})),!o.reason){o.upgradeRequired&&this.debugMetadataFile(i,"candidate","check");return}if(this.isSkippedReason(o.reason)){t.skipped.push({...i,reason:o.reason}),this.debugMetadataFile(i,o.reason,"check");return}this.logUpgradeFailure(e.path,o.errorInfo),t.failures.push({...i,reason:o.reason,errorInfo:o.errorInfo})}async upgradeCandidate(e,t){let n=this.getMetadataVersionInfoByPath(e.remotePath),o=this.scannedContent.get(e.localPath),i=await this.upgrader.upgradeFile({path:e.remotePath,localPath:e.localPath,versionInfo:n,content:o?.content,currentVersion:o?.currentVersion}),a=this.createItemResult(i);if(i.changed){let c={...a,changed:!0};return t.changed.push(c),this.debugMetadataFile(a,"changed","upgrade"),{item:c,status:"upgraded"}}if(i.reason&&this.isSkippedReason(i.reason)){let c={...a,reason:i.reason};return t.skipped.push(c),this.debugMetadataFile(a,i.reason,"upgrade"),{item:c,status:"skipped"}}if(!i.reason){let c={...a,reason:"upToDate"};return t.skipped.push(c),this.debugMetadataFile(a,"upToDate","upgrade"),{item:c,status:"skipped"}}this.logUpgradeFailure(e.remotePath,i.errorInfo);let s={...a,reason:i.reason,errorInfo:i.errorInfo};return t.failures.push(s),{item:s,status:"failed"}}logUpgradeFailure(e,t){Kr.error("metadata upgrade failed: {0}",e,t)}debugMetadataFile(e,t,n){Kr.debug("{0}: {1} current={2} target={3} result={4}",n==="check"?"metadata version check file":"metadata upgrade file",e.remotePath,e.currentVersion??"",e.targetVersion??"",t)}getMetadataVersionInfoByPath(e){return this.context.getMetadataVersionInfoByPath?.(e)}createItemResult(e){return{remotePath:e.path,localPath:e.localPath,currentVersion:e.currentVersion,targetVersion:e.targetVersion}}isSkippedReason(e){return e==="upToDate"||e==="newerVersion"}}});async function Cc(r,e,t){if(t.length===0)return[];let n=(gu(),dh(iv)),{SyncCommandUpgradeMetadata:o}=n;return(await new o(r,{paths:t,checkOnly:!0,task:e}).execute()).candidates}async function lv(r){return fg(r)?uF(r):!1}async function uF(r){let e=sv.createReadStream(r,{encoding:"utf-8"}),t=cv.createInterface({input:e,crlfDelay:1/0}),n="start",o=0;try{for await(let i of t){let a=lF.exec(i);if(a){n="separator",o=a[1].length;continue}if(n==="start")continue;let s=pF.exec(i);if(n==="separator"&&s?.[1].length===o){n="end";continue}let c=dF.exec(i);if(n==="end"&&c?.[1].length===o)return!0}return!1}finally{t.close(),e.destroy()}}function ca(r){let e=new Set([r.remotePath]);return r.oldRemotePath&&e.add(r.oldRemotePath),[...e]}function Sc(r){let e=new Set;for(let t of r)for(let n of ca(t))e.add(n);return[...e]}function pv(r){return ft(new Set(Sc(r)))}function dv(r){let e=new Set;for(let t of r)for(let n of ca(t))mF(e,n);return[...e].sort()}function mF(r,e){let t=sa.posix.dirname(e);for(;;){if(r.add(hF(t)),t==="/")return;t=sa.posix.dirname(t)}}function hF(r){return r==="/"?"/"+Y:r+"/"+Y}function at(r){return r.type==="added"||r.type==="modified"||r.type==="deleted"||r.type==="renamed"||r.type==="conflict"}function fr(r){return r.type==="remoteAdded"||r.type==="remoteModified"||r.type==="remoteDeleted"||r.type==="remoteRenamed"||r.type==="conflict"}function yu(r){return r.type!=="remoteRenamed"||!r.isFolder||!r.oldRemotePath?!1:We(r.remotePath)===r.remotePath&&We(r.oldRemotePath)===r.oldRemotePath}function Cu(r){return r.type!=="remoteRenamed"||!r.oldRemotePath?!1:We(r.remotePath)!==We(r.oldRemotePath)}function la(r){let e=r.filter(n=>fr(n)),t=new Set(Sc(e.filter(n=>n.type!=="conflict")));return t.size===0?e:e.filter(n=>n.type!=="conflict"||!ca(n).some(o=>t.has(o)))}function yc(r){return!!r.isFolder&&(r.type==="added"||r.type==="deleted"||r.type==="renamed"||r.type==="remoteAdded"||r.type==="remoteDeleted"||r.type==="remoteRenamed")}function vc(r,e){return e.some(t=>Q(r.remotePath,t)||!!r.oldRemotePath&&Q(r.oldRemotePath,t))}function uv(r,e){return e.some(t=>r.remotePath===t||r.oldRemotePath===t)}function kc(r){return[r.type,r.remotePath,r.oldRemotePath??""].join("\0")}function mv(r,e){let t=[];for(let n of e)r.some(o=>fF(o,n))&&t.push({path:n.path,remotePath:n.remotePath,...n.fileId!==void 0?{fileId:n.fileId}:{},oldPath:n.oldPath,oldRemotePath:n.oldRemotePath,type:"conflict",isFolder:n.isFolder,contentChanged:n.contentChanged,metaChanged:n.metaChanged});return t}function fF(r,e){return Fo(r.remotePath,r.oldRemotePath,e.remotePath,e.oldRemotePath)?gF(r,e):!1}function gF(r,e){return av(r)&&av(e)||!!r.metaChanged&&!!e.metaChanged||yc(r)||yc(e)}function av(r){return r.contentChanged===!0||r.type==="added"||r.type==="deleted"||r.type==="renamed"||r.type==="remoteAdded"||r.type==="remoteDeleted"||r.type==="remoteRenamed"?!0:r.contentChanged===void 0&&r.metaChanged===void 0&&(r.type==="modified"||r.type==="remoteModified")}var sv,sa,cv,lF,pF,dF,gr=pe(()=>{sv=b(require("fs")),sa=b(require("path")),cv=b(require("readline"));Je();To();$();qt();lF=/^(<{7,})(?:\s.*)?$/,pF=/^(={7,})$/,dF=/^(>{7,})(?:\s.*)?$/});function hv(r){let e=r.map(o=>o.remotePath),t=e.slice(0,yF),n=e.length-t.length;return n<=0?t.join(", "):`${t.join(", ")} (+${n})`}var Su,pa,yF,ni,oi,Dt,Ae,it=pe(()=>{Su=b(require("path"));$();Zo();na();du();uu();gr();qt();Ar();D();J();G();pa=T("sync.command"),yF=3,ni=class{runs=0;durationMs=0;api={total:0,byApi:{},byPath:{},droppedPathKeys:0,recentCallsDropped:0};startRun(){return this.runs++,Date.now()}finishRun(e){this.durationMs+=Date.now()-e}captureApiDiagnostics(e){this.api=e}describeForLog(){return`
21
21
  `+JSON.stringify(this.createSnapshot(),null,2).replace(/^\{\n/,"").replace(/\n\}$/,"")}},oi=class{constructor(e,t){this.context=e;this.options=t;this.serverUrl=e.activeServerUrl,this.mirrorRoot=e.getMirrorRoot(this.serverUrl)}serverUrl;mirrorRoot;apiClientPromise;get task(){return this.options.task??ht.INSTANCE}get workspaceRoot(){return this.context.root}createMirrorStore(){return new Mt(this.mirrorRoot)}createWorkspaceStore(e=this.createMirrorStore()){return new rr(this.workspaceRoot,e)}createPathResolver(e=this.createMirrorStore()){return new ti({workspaceRoot:this.workspaceRoot,mirror:e,workspace:this.createWorkspaceStore(e),getServerProjects:async()=>(await this.getApiClient()).getProjects()})}getApiClient(){return this.apiClientPromise||(this.apiClientPromise=this.context.requireServerClient(this.serverUrl)),this.apiClientPromise}getLocalSyncChanges(){return this.context.getSyncChanges().filter(e=>at(e))}getRemoteSyncChanges(){return this.excludeBlockedProjectRootRenameSubtree(this.context.getSyncChanges().filter(e=>fr(e)))}excludeBlockedProjectRootRenameSubtree(e){let t=new Set;for(let i of e)yu(i)&&(t.add(i.remotePath),i.oldRemotePath&&t.add(i.oldRemotePath));if(t.size===0)return e;let n=[...t],o=e.filter(i=>!n.some(a=>Q(i.remotePath,a)||!!i.oldRemotePath&&Q(i.oldRemotePath,a)));return pa.warn(`skip remote project rename changes that cannot be auto applied: ${[...t].join(", ")}`),o}assertNoProjectRootRenameChanges(e,t){if(!e)return;let n=e.filter(o=>yu(o));if(n.length!==0)throw new St("err.sync.projectRootRenameUnsupported",{actionName:t,paths:hv(n),changes:n})}clearSyncStatusTargets(e){this.context.clearSyncStatusTargets(e)}hasKnownChanges(e){return e!==void 0}assertNoRemoteProjectUnavailableChanges(e,t){if(!e)return;let n=e.filter(o=>o.type==="remoteProjectUnavailable");if(n.length!==0)throw new St("err.sync.projectUnavailable",{actionName:t,paths:hv(n),changes:n})}getKnownChangeTargetRemotePaths(e){return Sc([...e])}getKnownChangeTargets(e){return new Set(pv([...e]))}async resolveTargetRemotePaths(e,t="server-backed"){if(!e)return;let n=this.createPathResolver();return new Set(await Promise.all(e.map(o=>n.resolve(o,t))))}filterChangesByTargets(e,t){return t?e.filter(n=>{for(let o of t)if(Q(n.remotePath,o)||n.oldRemotePath&&Q(n.oldRemotePath,o))return!0;return!1}):e}expandTargetsForRenameChanges(e,t){if(!e)return;let n,o=i=>{e.has(i)||(n||(n=new Set(e)),n.add(i))};for(let i of t)i.type!=="renamed"&&i.type!=="remoteRenamed"||(o(i.remotePath),i.oldRemotePath&&o(i.oldRemotePath));return n??e}async resolveRemotePath(e,t="server-backed"){return this.createPathResolver().resolve(e,t)}reportDiagnostic(e){pa.warn(this.createDiagnosticLogMessage(e))}createDiagnosticLogMessage(e){let t=[`sync diagnostic: ${qn(e.errorInfo)||e.message}`,`workspaceRoot=${this.workspaceRoot}`,`serverUrl=${this.serverUrl}`];return e.path&&t.push(`path=${e.path}`),e.errorInfo!==void 0&&t.push(`errorInfo=${this.stringifyDiagnosticValue(e.errorInfo)}`),t.join(`
22
22
  `)}stringifyDiagnosticValue(e){if(e instanceof Error)return`${e.message}${e.stack?`
23
- `+e.stack:""}`;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}},Dt=class extends oi{},Ae=class extends oi{async applyFileMutationResponses(e){let t=this.createMirrorStore(),n=this.createWorkspaceStore(t);await new ei({workspace:n,mirror:t,getApiClient:()=>this.getApiClient()}).apply(e,this.task)}async cleanupEmptyOrphanParents(e,t,n){if(e.length===0)return;let o=new Set;pa.debug(`orphan cleanup start: deletedPaths=${e.length}`);for(let i of e)await this.cleanupAncestorsIfEmpty(Su.posix.dirname(i),o,t,n);pa.debug(`orphan cleanup done: visitedAncestors=${o.size}`)}async cleanupAncestorsIfEmpty(e,t,n,o){let i=e;for(;i!=="/"&&i!=="."&&!t.has(i);){if(t.add(i),await n.exists(i)){pa.debug(`orphan cleanup stop at tracked: remotePath=${i}`);return}if(!await o.removeEmptyOrphanDirectory(i))return;i=Su.posix.dirname(i)}}}});var Gv=z((nz,Kv)=>{var XF=function(){var r=256,e=t();function t(){for(var o=new Array(r),i=0;i<o.length;i++)o[i]=new Array(r);for(var i=0;i<r;i++)for(var a=0;a<r;a++){for(var s=i,c=a,l=0,p=0;p<4;p++){var m=Math.abs(s%4-c%4);m==3?l+=m*2:l+=m,p<3&&(s=Math.floor(s/4),c=Math.floor(c/4))}o[i][a]=l}return o}var n=function(o,i){return e[o][i]};return n}();Kv.exports=XF});var Ju=z((oz,Jv)=>{var QF=Gv(),ZF=function(r){var e=function(t){for(var n=0,o=0;o<r.length;o++)n+=QF(r[o],t.getValue(o));return n};this.calculateDifference=function(t){return e(t)},this.getValue=function(t){return r[t]}};Jv.exports=ZF});var Yu=z((iz,Yv)=>{var eM=function(r){var e=function(t,n){var o=t.length;if(o!=n.length)return!1;for(;o--;)if(t[o]!==n[o])return!1;return!0};this.calculateDifference=function(t){return e(r,t.getValue())?0:1},this.getValue=function(){return r}};Yv.exports=eM});var Xu=z((az,Xv)=>{Xv.exports=function(r){var e=(r&240)>>4&15;return e|=(r&15)<<4&240,e}});var Zv=z((sz,Qv)=>{var Qu=Xu(),tM=function(){return function(r){var e=1,t=32,n=function(l){for(var p="",m=0;m<l.length;m++)l[m]<16&&(p+="0"),p+=l[m].toString(16).toUpperCase();return p},o=function(l){for(var p=new Array(e),m=0;m<e;m++)p[m]=Qu(l.getValue()[m]);return n(p)},i=function(l){return n([Qu(l.getValue())])},a=function(l){return n([Qu(l.getValue())])},s=function(l){for(var p=new Array(t),m=0;m<t;m++)p[m]=l.getValue(t-1-m);return n(p)},c="";return c+=o(r.getChecksum()),c+=i(r.getLValue()),c+=a(r.getQ()),c+=s(r.getBody()),c}}();Qv.exports=tM});var Zu=z((cz,ek)=>{var rM=Zv(),nM=function(r,e,t,n){this.getLValue=function(){return e},this.getQ=function(){return t},this.getChecksum=function(){return r},this.getBody=function(){return n},this.calculateDifference=function(o,i){var a=0;return i&&(a+=e.calculateDifference(o.getLValue())),a+=t.calculateDifference(o.getQ()),a+=r.calculateDifference(o.getChecksum()),a+=n.calculateDifference(o.getBody()),a},this.toString=function(){return rM(this)}};ek.exports=nM});var em=z((lz,tk)=>{tk.exports=function(r,e,t){var n=Math.abs(e-r),o=t-n;return Math.min(n,o)}});var tm=z((pz,rk)=>{var oM=em(),iM=function(r){var e=256;this.calculateDifference=function(t){var n=oM(r,t.getValue(),e);return n===0?0:n===1?1:n*12},this.getValue=function(){return r}};rk.exports=iM});var rm=z((dz,ok)=>{var nk=em(),aM=function(r){this.getQLo=function(){return r&15},this.getQHi=function(){return(r&240)>>4},this.calculateDifference=function(e){var t=16,n=0,o=nk(this.getQLo(),e.getQLo(),t);o<=1?n+=o:n+=(o-1)*12;var i=nk(this.getQHi(),e.getQHi(),t);return i<=1?n+=i:n+=(i-1)*12,n},this.getValue=function(){return r}};ok.exports=aM});var ak=z((uz,ik)=>{var sM=Ju(),cM=Yu(),lM=Zu(),pM=tm(),dM=rm(),uM=function(){var r=256,e=.09531018,t=.26236426,n=.4054651,o,i,a,s,c={LOW:656,MID:3199},l=function(y){return this.checksum=new cM(y),this},p=function(y){return this.lValue=new pM(f(y)),this},m=function(y){var C=function(v,P){var u=function(S,k){return(0|S&15)&15|(k&15)<<4};return new dM(u(v,P))};return this.q=new C(y.getQ1Ratio(),y.getQ2Ratio()),this},g=function(y){return this.body=new sM(y),this},d=function(){return new lM(this.checksum,this.lValue,this.q,this.body)},f=function(y){return y<=c.LOW?Math.floor(Math.log(y)/n)%r:y<=c.MID?Math.floor(Math.log(y)/t-8.72777)%r:Math.floor(Math.log(y)/e-62.5472)%r};return{withChecksum:l,withLength:p,withQuartiles:m,withBody:g,build:d}};ik.exports=uM});var ck=z((mz,sk)=>{var mM=ak(),hM=function(r,e,t,n){var o=512,i=32,a=function(p){return e[p]>0},s=function(){for(var p=0,m=0;m<i*4;m++)a(m)&&p++;return p>i*2},c=function(){return t>=o},l=function(){for(var p=new Array(i),m=0;m<i;m++){for(var g=0,d=0;d<4;d++){var f=e[4*m+d];n.getThird()<f?g+=3<<d*2:n.getSecond()<f?g+=2<<d*2:n.getFirst()<f&&(g+=1<<d*2)}p[m]=g}return p};this.isProcessedDataTooSimple=function(){return!c()||!s()},this.buildDigest=function(){return new mM().withChecksum(r).withLength(t).withQuartiles(n).withBody(l()).build()}};sk.exports=hM});var pk=z((hz,lk)=>{var fM=function(){var r=[1,87,49,12,176,178,102,166,121,193,6,84,249,230,44,163,14,197,213,181,161,85,218,80,64,239,24,226,236,142,38,200,110,177,104,103,141,253,255,50,77,101,81,18,45,96,31,222,25,107,190,70,86,237,240,34,72,242,20,214,244,227,149,235,97,234,57,22,60,250,82,175,208,5,127,199,111,62,135,248,174,169,211,58,66,154,106,195,245,171,17,187,182,179,0,243,132,56,148,75,128,133,158,100,130,126,91,13,153,246,216,219,119,68,223,78,83,88,201,99,122,11,92,32,136,114,52,10,138,30,48,183,156,35,61,26,143,74,251,94,129,162,63,152,170,7,115,167,241,206,3,150,55,59,151,220,90,53,23,131,125,173,15,238,79,95,89,16,105,137,225,224,217,160,37,123,118,73,2,157,46,116,9,145,134,228,207,212,202,215,69,229,27,188,67,124,168,252,42,4,29,108,21,247,19,205,39,203,233,40,186,147,198,192,155,33,164,191,98,204,165,180,117,76,140,36,210,172,41,54,159,8,185,232,113,196,231,47,146,120,51,65,28,144,254,221,93,189,194,139,112,43,71,109,184,209],e=function(t){var n=0;return t.forEach(function(o){n=r[n^o]}),n};return e}();lk.exports=fM});var mk=z((fz,uk)=>{var gM=pk(),dk=function(r,e,t,n){this.c1=r,this.c2=e,this.c3=t,this.salt=n};dk.prototype.getHash=function(){return gM([this.salt,this.c1,this.c2,this.c3])};uk.exports=dk});var fk=z((gz,hk)=>{var yM=mk(),CM=function(){var r=5,e=1,t=new Array(r),n=0,o=function(s){return t[s]},i=function(s,c,l,p){return new yM(s,c,l,p).getHash()},a=function(){return n>=r};this.put=function(s){t[this.getPivot()]=s&255,n++},this.getPivot=function(){return n%r},this.getTripletHashes=function(s){if(!a())return[];var c=s,l=(c+1)%r,p=(c+2)%r,m=(c+3)%r,g=(c+4)%r;return[i(t[c],t[g],t[m],2),i(t[c],t[g],t[p],3),i(t[c],t[m],t[p],5),i(t[c],t[m],t[l],7),i(t[c],t[g],t[l],11),i(t[c],t[p],t[l],13)]},this.getChecksum=function(s,c){if(!a())return null;for(var l=(s+4)%r,p=new Array(e),m=0;m<e;m++){var g=o(s),d=o(l),f=0,y=0;c&&(f=c[m]),m!==0&&(y=p[m-1]),p[m]=i(g,d,f,y)}return p}};hk.exports=CM});var yk=z((yz,gk)=>{var SM=function(r){if(r.length<e)throw new Error;var e=128,t=16,n=r.slice(0,e).sort(function(o,i){return o-i});this.getQ1Ratio=function(){return Math.floor(this.getFirst()*100/this.getThird())%t},this.getQ2Ratio=function(){return Math.floor(this.getSecond()*100/this.getThird())%t},this.getFirst=function(){return n[e/4-1]},this.getSecond=function(){return n[e/2-1]},this.getThird=function(){return n[e-e/4-1]}};gk.exports=SM});var Sk=z((Cz,Ck)=>{var vM=ck(),kM=fk(),wM=yk(),PM=function(){var r=256,e=function(n,o,i){var a=new wM(o);return new vM(i,o,n,a)},t=function(n){for(var o=n?n.length:0,i=Array.apply(null,Array(r)).map(Number.prototype.valueOf,0),a,s=new kM,c=this,l=function(d){i[d]?i[d]++:i[d]=1},p=0;p<o;p++){var m=n.charCodeAt(p),g=s.getPivot();s.put(m),a=s.getChecksum(g,a),s.getTripletHashes(g).forEach(l)}return e(o,i,a)};return t}();Ck.exports=PM});var kk=z((Sz,vk)=>{var nl=function(r){this.name="InsufficientComplexityError",this.message=r,this.stack=new Error().stack};nl.prototype=Object.create(Error.prototype);nl.prototype.constructor=nl;vk.exports=nl});var Pk=z((vz,wk)=>{var RM=Sk(),EM=kk();wk.exports=function(r){var e=RM(r);if(e.isProcessedDataTooSimple())throw new EM("Input data hasn't enough complexity");return e.buildDigest().toString()}});var Ek=z((kz,Rk)=>{var bM=Ju(),TM=Yu(),xM=Zu(),FM=tm(),MM=rm(),nm=Xu(),DM=function(){var r=32,e,t,n,o,i=function(d){var f=s(d),y=0;return c(f[y++]),l(f[y++]),p(f[y++]),m(g(f,y)),this},a=function(){return new xM(e,t,n,o)},s=function(d){for(var f=new Array(d.length/2),y=0;y<d.length;y+=2)f[y/2]=parseInt(d.substring(y,y+2),16);return f},c=function(d){e=new TM([nm(d)])},l=function(d){t=new FM([nm(d)])},p=function(d){n=new MM([nm(d)])},m=function(d){for(var f=new Array(d.length),y=0;y<d.length;y++)f[y]=d[d.length-1-y];o=new bM(f)},g=function(d,f){return d.slice(f,d.length)};return{withHash:i,build:a}};Rk.exports=DM});var hw=z((bG,Pl)=>{function cw(r){return Array.isArray(r)?r:[r]}var JD=void 0,mm="",aw=" ",um="\\",YD=/^\s+$/,XD=/(?:[^\\]|^)\\$/,QD=/^\\!/,ZD=/^\\#/,eI=/\r?\n/g,tI=/^\.{0,2}\/|^\.{1,2}$/,rI=/\/$/,ui="/",lw="node-ignore";typeof Symbol<"u"&&(lw=Symbol.for("node-ignore"));var pw=lw,mi=(r,e,t)=>(Object.defineProperty(r,e,{value:t}),t),nI=/([0-z])-([0-z])/g,dw=()=>!1,oI=r=>r.replace(nI,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:mm),iI=r=>{let{length:e}=r;return r.slice(0,e-e%2)},aI=[[/^\uFEFF/,()=>mm],[/((?:\\\\)*?)(\\?\s+)$/,(r,e,t)=>e+(t.indexOf("\\")===0?aw:mm)],[/(\\+?)\s/g,(r,e)=>{let{length:t}=e;return e.slice(0,t-t%2)+aw}],[/[\\$.|*+(){^]/g,r=>`\\${r}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(r,e,t)=>e+6<t.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(r,e,t)=>{let n=t.replace(/\\\*/g,"[^\\/]*");return e+n}],[/\\\\\\(?=[$.|*+(){^])/g,()=>um],[/\\\\/g,()=>um],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(r,e,t,n,o)=>e===um?`\\[${t}${iI(n)}${o}`:o==="]"&&n.length%2===0?`[${oI(t)}${n}]`:"[]"],[/(?:[^*])$/,r=>/\/$/.test(r)?`${r}$`:`${r}(?=$|\\/$)`]],sI=/(^|\\\/)?\\\*$/,Ia="regex",kl="checkRegex",sw="_",cI={[Ia](r,e){return`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`},[kl](r,e){return`${e?`${e}[^/]*`:"[^/]*"}(?=$|\\/$)`}},lI=r=>aI.reduce((e,[t,n])=>e.replace(t,n.bind(r)),r),wl=r=>typeof r=="string",pI=r=>r&&wl(r)&&!YD.test(r)&&!XD.test(r)&&r.indexOf("#")!==0,dI=r=>r.split(eI).filter(Boolean),hm=class{constructor(e,t,n,o,i,a){this.pattern=e,this.mark=t,this.negative=i,mi(this,"body",n),mi(this,"ignoreCase",o),mi(this,"regexPrefix",a)}get regex(){let e=sw+Ia;return this[e]?this[e]:this._make(Ia,e)}get checkRegex(){let e=sw+kl;return this[e]?this[e]:this._make(kl,e)}_make(e,t){let n=this.regexPrefix.replace(sI,cI[e]),o=this.ignoreCase?new RegExp(n,"i"):new RegExp(n);return mi(this,t,o)}},uI=({pattern:r,mark:e},t)=>{let n=!1,o=r;o.indexOf("!")===0&&(n=!0,o=o.substr(1)),o=o.replace(QD,"!").replace(ZD,"#");let i=lI(o);return new hm(r,e,o,t,n,i)},fm=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[pw]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(wl(e)&&(e={pattern:e}),pI(e.pattern)){let t=uI(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,cw(wl(e)?dI(e):e).forEach(this._add,this),this._added}test(e,t,n){let o=!1,i=!1,a;this._rules.forEach(c=>{let{negative:l}=c;i===l&&o!==i||l&&!o&&!i&&!t||!c[n].test(e)||(o=!l,i=l,a=l?JD:c)});let s={ignored:o,unignored:i};return a&&(s.rule=a),s}},mI=(r,e)=>{throw new e(r)},Zr=(r,e,t)=>wl(r)?r?Zr.isNotRelative(r)?t(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:t("path must not be empty",TypeError):t(`path must be a string, but got \`${e}\``,TypeError),uw=r=>tI.test(r);Zr.isNotRelative=uw;Zr.convert=r=>r;var gm=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){mi(this,pw,!0),this._rules=new fm(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,o){let i=e&&Zr.convert(e);return Zr(i,e,this._strictPathCheck?mI:dw),this._t(i,t,n,o)}checkIgnore(e){if(!rI.test(e))return this.test(e);let t=e.split(ui).filter(Boolean);if(t.pop(),t.length){let n=this._t(t.join(ui)+ui,this._testCache,!0,t);if(n.ignored)return n}return this._rules.test(e,!1,kl)}_t(e,t,n,o){if(e in t)return t[e];if(o||(o=e.split(ui).filter(Boolean)),o.pop(),!o.length)return t[e]=this._rules.test(e,n,Ia);let i=this._t(o.join(ui)+ui,t,n,o);return t[e]=i.ignored?i:this._rules.test(e,n,Ia)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return cw(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},ym=r=>new gm(r),hI=r=>Zr(r&&Zr.convert(r),r,dw),mw=()=>{let r=t=>/^\\\\\?\\/.test(t)||/["<>|\u0000-\u001F]+/u.test(t)?t:t.replace(/\\/g,"/");Zr.convert=r;let e=/^[a-z]:\//i;Zr.isNotRelative=t=>e.test(t)||uw(t)};typeof process<"u"&&process.platform==="win32"&&mw();Pl.exports=ym;ym.default=ym;Pl.exports.isPathValid=hI;mi(Pl.exports,Symbol.for("setupWindows"),mw)});var iO={};Gl(iO,{runCli:()=>rR});module.exports=dh(iO);var tR=b(require("path"));var $e=class{constructor(e,t,n){this.id=e;this.payload=t;this.source=n}};var gi=class{listeners=new Map;on(e,t){let n=this.listeners.get(e);n||(n=new Set,this.listeners.set(e,n));let o=t,i=c=>o(c),a=n.size>0;n.add(i),!a&&n.size>0&&this.fireListenerChanged(e,!0);let s=!1;return{dispose:()=>{if(s)return;s=!0;let c=this.listeners.get(e);!c||!c.delete(i)||c.size===0&&(this.listeners.delete(e),this.fireListenerChanged(e,!1))}}}fire(e){let t=this.listeners.get(e.id);if(t)for(let n of[...t])n(e)}fireAsync(e){return Promise.resolve().then(()=>this.fire(e))}dispose(){this.listeners.clear()}fireListenerChanged(e,t){e!=="event.listener.changed"&&this.fire(new $e("event.listener.changed",{id:e,hasListeners:t},this))}};qt();var yi=(n=>(n.IDE="ide",n.CLI="cli",n.AUTO_SYNC="auto-sync",n))(yi||{}),Wa="5.0.0",cR=`succapp@${Wa}`;function Jl(r){return{source:r,agentVersion:cR}}var lR=Jl("ide"),uh=lR;function mh(r){uh=r}function po(){return uh}q();G();var Wn=b(require("fs")),ep=b(require("os")),$t=b(require("path")),Th=require("crypto");var vi=["trace","debug","info","warn","error"];var Sh={trace:0,debug:1,info:2,warn:3,error:4},vh=["TRACE","DEBUG","INFO","WARN","ERROR"],kR=new Set(vi);function wR(r){return typeof r=="string"&&kR.has(r)}function ho(r){let e=r?.trim().toLowerCase();return wR(e)?e:void 0}var PR=30,RR=2e3,ER=24*60*60*1e3,bR=/^succapp-\d{4}-\d{2}-\d{2}\.log$/,TR=/^succapp-\d{8}T\d{6}\.\d{3}Z-p\d+-[0-9a-f]+\.log$/,$a=class{disabled=!1;levelOrdinal;stream;logFile;constructor(e={}){this.levelOrdinal=Sh[e.level??"info"],this.logFile=e.logFile,this.stream=e.logFile?this.createStream(e.logFile):void 0,e.startupInfo&&this.writeRaw(2,"cli log started",e.startupInfo)}async close(){let e=this.stream;!e||e.destroyed||await new Promise(t=>{let n=()=>{this.disabled=!0,t()};e.once("error",n),e.end(t)})}isTraceEnabled(){return this.isEnabled(0)}isDebugEnabled(){return this.isEnabled(1)}isInfoEnabled(){return this.isEnabled(2)}isWarnEnabled(){return this.isEnabled(3)}isErrorEnabled(){return this.isEnabled(4)}trace(e,...t){this.write(0,e,...t)}debug(e,...t){this.write(1,e,...t)}info(e,...t){this.write(2,e,...t)}warn(e,...t){this.write(3,e,...t)}error(e,...t){this.write(4,e,...t)}isEnabled(e){return!this.disabled&&this.stream!==void 0&&e>=this.levelOrdinal}write(e,t,...n){this.isEnabled(e)&&this.writeRaw(e,t,...n)}writeRaw(e,t,...n){if(this.disabled||this.stream===void 0)return;let o=[new Date().toISOString(),vh[e],bh(t),...n.map(bh)].join(" ");this.stream.write(`${o}
23
+ `+e.stack:""}`;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}},Dt=class extends oi{},Ae=class extends oi{async applyFileMutationResponses(e){let t=this.createMirrorStore(),n=this.createWorkspaceStore(t);await new ei({workspace:n,mirror:t,getApiClient:()=>this.getApiClient()}).apply(e,this.task)}async cleanupEmptyOrphanParents(e,t,n){if(e.length===0)return;let o=new Set;pa.debug(`orphan cleanup start: deletedPaths=${e.length}`);for(let i of e)await this.cleanupAncestorsIfEmpty(Su.posix.dirname(i),o,t,n);pa.debug(`orphan cleanup done: visitedAncestors=${o.size}`)}async cleanupAncestorsIfEmpty(e,t,n,o){let i=e;for(;i!=="/"&&i!=="."&&!t.has(i);){if(t.add(i),await n.exists(i)){pa.debug(`orphan cleanup stop at tracked: remotePath=${i}`);return}if(!await o.removeEmptyOrphanDirectory(i))return;i=Su.posix.dirname(i)}}}});var Gv=z((nz,Kv)=>{var XF=function(){var r=256,e=t();function t(){for(var o=new Array(r),i=0;i<o.length;i++)o[i]=new Array(r);for(var i=0;i<r;i++)for(var a=0;a<r;a++){for(var s=i,c=a,l=0,p=0;p<4;p++){var m=Math.abs(s%4-c%4);m==3?l+=m*2:l+=m,p<3&&(s=Math.floor(s/4),c=Math.floor(c/4))}o[i][a]=l}return o}var n=function(o,i){return e[o][i]};return n}();Kv.exports=XF});var Ju=z((oz,Jv)=>{var QF=Gv(),ZF=function(r){var e=function(t){for(var n=0,o=0;o<r.length;o++)n+=QF(r[o],t.getValue(o));return n};this.calculateDifference=function(t){return e(t)},this.getValue=function(t){return r[t]}};Jv.exports=ZF});var Yu=z((iz,Yv)=>{var eM=function(r){var e=function(t,n){var o=t.length;if(o!=n.length)return!1;for(;o--;)if(t[o]!==n[o])return!1;return!0};this.calculateDifference=function(t){return e(r,t.getValue())?0:1},this.getValue=function(){return r}};Yv.exports=eM});var Xu=z((az,Xv)=>{Xv.exports=function(r){var e=(r&240)>>4&15;return e|=(r&15)<<4&240,e}});var Zv=z((sz,Qv)=>{var Qu=Xu(),tM=function(){return function(r){var e=1,t=32,n=function(l){for(var p="",m=0;m<l.length;m++)l[m]<16&&(p+="0"),p+=l[m].toString(16).toUpperCase();return p},o=function(l){for(var p=new Array(e),m=0;m<e;m++)p[m]=Qu(l.getValue()[m]);return n(p)},i=function(l){return n([Qu(l.getValue())])},a=function(l){return n([Qu(l.getValue())])},s=function(l){for(var p=new Array(t),m=0;m<t;m++)p[m]=l.getValue(t-1-m);return n(p)},c="";return c+=o(r.getChecksum()),c+=i(r.getLValue()),c+=a(r.getQ()),c+=s(r.getBody()),c}}();Qv.exports=tM});var Zu=z((cz,ek)=>{var rM=Zv(),nM=function(r,e,t,n){this.getLValue=function(){return e},this.getQ=function(){return t},this.getChecksum=function(){return r},this.getBody=function(){return n},this.calculateDifference=function(o,i){var a=0;return i&&(a+=e.calculateDifference(o.getLValue())),a+=t.calculateDifference(o.getQ()),a+=r.calculateDifference(o.getChecksum()),a+=n.calculateDifference(o.getBody()),a},this.toString=function(){return rM(this)}};ek.exports=nM});var em=z((lz,tk)=>{tk.exports=function(r,e,t){var n=Math.abs(e-r),o=t-n;return Math.min(n,o)}});var tm=z((pz,rk)=>{var oM=em(),iM=function(r){var e=256;this.calculateDifference=function(t){var n=oM(r,t.getValue(),e);return n===0?0:n===1?1:n*12},this.getValue=function(){return r}};rk.exports=iM});var rm=z((dz,ok)=>{var nk=em(),aM=function(r){this.getQLo=function(){return r&15},this.getQHi=function(){return(r&240)>>4},this.calculateDifference=function(e){var t=16,n=0,o=nk(this.getQLo(),e.getQLo(),t);o<=1?n+=o:n+=(o-1)*12;var i=nk(this.getQHi(),e.getQHi(),t);return i<=1?n+=i:n+=(i-1)*12,n},this.getValue=function(){return r}};ok.exports=aM});var ak=z((uz,ik)=>{var sM=Ju(),cM=Yu(),lM=Zu(),pM=tm(),dM=rm(),uM=function(){var r=256,e=.09531018,t=.26236426,n=.4054651,o,i,a,s,c={LOW:656,MID:3199},l=function(y){return this.checksum=new cM(y),this},p=function(y){return this.lValue=new pM(f(y)),this},m=function(y){var C=function(v,P){var u=function(S,k){return(0|S&15)&15|(k&15)<<4};return new dM(u(v,P))};return this.q=new C(y.getQ1Ratio(),y.getQ2Ratio()),this},g=function(y){return this.body=new sM(y),this},d=function(){return new lM(this.checksum,this.lValue,this.q,this.body)},f=function(y){return y<=c.LOW?Math.floor(Math.log(y)/n)%r:y<=c.MID?Math.floor(Math.log(y)/t-8.72777)%r:Math.floor(Math.log(y)/e-62.5472)%r};return{withChecksum:l,withLength:p,withQuartiles:m,withBody:g,build:d}};ik.exports=uM});var ck=z((mz,sk)=>{var mM=ak(),hM=function(r,e,t,n){var o=512,i=32,a=function(p){return e[p]>0},s=function(){for(var p=0,m=0;m<i*4;m++)a(m)&&p++;return p>i*2},c=function(){return t>=o},l=function(){for(var p=new Array(i),m=0;m<i;m++){for(var g=0,d=0;d<4;d++){var f=e[4*m+d];n.getThird()<f?g+=3<<d*2:n.getSecond()<f?g+=2<<d*2:n.getFirst()<f&&(g+=1<<d*2)}p[m]=g}return p};this.isProcessedDataTooSimple=function(){return!c()||!s()},this.buildDigest=function(){return new mM().withChecksum(r).withLength(t).withQuartiles(n).withBody(l()).build()}};sk.exports=hM});var pk=z((hz,lk)=>{var fM=function(){var r=[1,87,49,12,176,178,102,166,121,193,6,84,249,230,44,163,14,197,213,181,161,85,218,80,64,239,24,226,236,142,38,200,110,177,104,103,141,253,255,50,77,101,81,18,45,96,31,222,25,107,190,70,86,237,240,34,72,242,20,214,244,227,149,235,97,234,57,22,60,250,82,175,208,5,127,199,111,62,135,248,174,169,211,58,66,154,106,195,245,171,17,187,182,179,0,243,132,56,148,75,128,133,158,100,130,126,91,13,153,246,216,219,119,68,223,78,83,88,201,99,122,11,92,32,136,114,52,10,138,30,48,183,156,35,61,26,143,74,251,94,129,162,63,152,170,7,115,167,241,206,3,150,55,59,151,220,90,53,23,131,125,173,15,238,79,95,89,16,105,137,225,224,217,160,37,123,118,73,2,157,46,116,9,145,134,228,207,212,202,215,69,229,27,188,67,124,168,252,42,4,29,108,21,247,19,205,39,203,233,40,186,147,198,192,155,33,164,191,98,204,165,180,117,76,140,36,210,172,41,54,159,8,185,232,113,196,231,47,146,120,51,65,28,144,254,221,93,189,194,139,112,43,71,109,184,209],e=function(t){var n=0;return t.forEach(function(o){n=r[n^o]}),n};return e}();lk.exports=fM});var mk=z((fz,uk)=>{var gM=pk(),dk=function(r,e,t,n){this.c1=r,this.c2=e,this.c3=t,this.salt=n};dk.prototype.getHash=function(){return gM([this.salt,this.c1,this.c2,this.c3])};uk.exports=dk});var fk=z((gz,hk)=>{var yM=mk(),CM=function(){var r=5,e=1,t=new Array(r),n=0,o=function(s){return t[s]},i=function(s,c,l,p){return new yM(s,c,l,p).getHash()},a=function(){return n>=r};this.put=function(s){t[this.getPivot()]=s&255,n++},this.getPivot=function(){return n%r},this.getTripletHashes=function(s){if(!a())return[];var c=s,l=(c+1)%r,p=(c+2)%r,m=(c+3)%r,g=(c+4)%r;return[i(t[c],t[g],t[m],2),i(t[c],t[g],t[p],3),i(t[c],t[m],t[p],5),i(t[c],t[m],t[l],7),i(t[c],t[g],t[l],11),i(t[c],t[p],t[l],13)]},this.getChecksum=function(s,c){if(!a())return null;for(var l=(s+4)%r,p=new Array(e),m=0;m<e;m++){var g=o(s),d=o(l),f=0,y=0;c&&(f=c[m]),m!==0&&(y=p[m-1]),p[m]=i(g,d,f,y)}return p}};hk.exports=CM});var yk=z((yz,gk)=>{var SM=function(r){if(r.length<e)throw new Error;var e=128,t=16,n=r.slice(0,e).sort(function(o,i){return o-i});this.getQ1Ratio=function(){return Math.floor(this.getFirst()*100/this.getThird())%t},this.getQ2Ratio=function(){return Math.floor(this.getSecond()*100/this.getThird())%t},this.getFirst=function(){return n[e/4-1]},this.getSecond=function(){return n[e/2-1]},this.getThird=function(){return n[e-e/4-1]}};gk.exports=SM});var Sk=z((Cz,Ck)=>{var vM=ck(),kM=fk(),wM=yk(),PM=function(){var r=256,e=function(n,o,i){var a=new wM(o);return new vM(i,o,n,a)},t=function(n){for(var o=n?n.length:0,i=Array.apply(null,Array(r)).map(Number.prototype.valueOf,0),a,s=new kM,c=this,l=function(d){i[d]?i[d]++:i[d]=1},p=0;p<o;p++){var m=n.charCodeAt(p),g=s.getPivot();s.put(m),a=s.getChecksum(g,a),s.getTripletHashes(g).forEach(l)}return e(o,i,a)};return t}();Ck.exports=PM});var kk=z((Sz,vk)=>{var nl=function(r){this.name="InsufficientComplexityError",this.message=r,this.stack=new Error().stack};nl.prototype=Object.create(Error.prototype);nl.prototype.constructor=nl;vk.exports=nl});var Pk=z((vz,wk)=>{var RM=Sk(),EM=kk();wk.exports=function(r){var e=RM(r);if(e.isProcessedDataTooSimple())throw new EM("Input data hasn't enough complexity");return e.buildDigest().toString()}});var Ek=z((kz,Rk)=>{var bM=Ju(),TM=Yu(),xM=Zu(),FM=tm(),MM=rm(),nm=Xu(),DM=function(){var r=32,e,t,n,o,i=function(d){var f=s(d),y=0;return c(f[y++]),l(f[y++]),p(f[y++]),m(g(f,y)),this},a=function(){return new xM(e,t,n,o)},s=function(d){for(var f=new Array(d.length/2),y=0;y<d.length;y+=2)f[y/2]=parseInt(d.substring(y,y+2),16);return f},c=function(d){e=new TM([nm(d)])},l=function(d){t=new FM([nm(d)])},p=function(d){n=new MM([nm(d)])},m=function(d){for(var f=new Array(d.length),y=0;y<d.length;y++)f[y]=d[d.length-1-y];o=new bM(f)},g=function(d,f){return d.slice(f,d.length)};return{withHash:i,build:a}};Rk.exports=DM});var hw=z((bG,Pl)=>{function cw(r){return Array.isArray(r)?r:[r]}var JD=void 0,mm="",aw=" ",um="\\",YD=/^\s+$/,XD=/(?:[^\\]|^)\\$/,QD=/^\\!/,ZD=/^\\#/,eI=/\r?\n/g,tI=/^\.{0,2}\/|^\.{1,2}$/,rI=/\/$/,ui="/",lw="node-ignore";typeof Symbol<"u"&&(lw=Symbol.for("node-ignore"));var pw=lw,mi=(r,e,t)=>(Object.defineProperty(r,e,{value:t}),t),nI=/([0-z])-([0-z])/g,dw=()=>!1,oI=r=>r.replace(nI,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:mm),iI=r=>{let{length:e}=r;return r.slice(0,e-e%2)},aI=[[/^\uFEFF/,()=>mm],[/((?:\\\\)*?)(\\?\s+)$/,(r,e,t)=>e+(t.indexOf("\\")===0?aw:mm)],[/(\\+?)\s/g,(r,e)=>{let{length:t}=e;return e.slice(0,t-t%2)+aw}],[/[\\$.|*+(){^]/g,r=>`\\${r}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(r,e,t)=>e+6<t.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(r,e,t)=>{let n=t.replace(/\\\*/g,"[^\\/]*");return e+n}],[/\\\\\\(?=[$.|*+(){^])/g,()=>um],[/\\\\/g,()=>um],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(r,e,t,n,o)=>e===um?`\\[${t}${iI(n)}${o}`:o==="]"&&n.length%2===0?`[${oI(t)}${n}]`:"[]"],[/(?:[^*])$/,r=>/\/$/.test(r)?`${r}$`:`${r}(?=$|\\/$)`]],sI=/(^|\\\/)?\\\*$/,Ia="regex",kl="checkRegex",sw="_",cI={[Ia](r,e){return`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`},[kl](r,e){return`${e?`${e}[^/]*`:"[^/]*"}(?=$|\\/$)`}},lI=r=>aI.reduce((e,[t,n])=>e.replace(t,n.bind(r)),r),wl=r=>typeof r=="string",pI=r=>r&&wl(r)&&!YD.test(r)&&!XD.test(r)&&r.indexOf("#")!==0,dI=r=>r.split(eI).filter(Boolean),hm=class{constructor(e,t,n,o,i,a){this.pattern=e,this.mark=t,this.negative=i,mi(this,"body",n),mi(this,"ignoreCase",o),mi(this,"regexPrefix",a)}get regex(){let e=sw+Ia;return this[e]?this[e]:this._make(Ia,e)}get checkRegex(){let e=sw+kl;return this[e]?this[e]:this._make(kl,e)}_make(e,t){let n=this.regexPrefix.replace(sI,cI[e]),o=this.ignoreCase?new RegExp(n,"i"):new RegExp(n);return mi(this,t,o)}},uI=({pattern:r,mark:e},t)=>{let n=!1,o=r;o.indexOf("!")===0&&(n=!0,o=o.substr(1)),o=o.replace(QD,"!").replace(ZD,"#");let i=lI(o);return new hm(r,e,o,t,n,i)},fm=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[pw]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(wl(e)&&(e={pattern:e}),pI(e.pattern)){let t=uI(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,cw(wl(e)?dI(e):e).forEach(this._add,this),this._added}test(e,t,n){let o=!1,i=!1,a;this._rules.forEach(c=>{let{negative:l}=c;i===l&&o!==i||l&&!o&&!i&&!t||!c[n].test(e)||(o=!l,i=l,a=l?JD:c)});let s={ignored:o,unignored:i};return a&&(s.rule=a),s}},mI=(r,e)=>{throw new e(r)},Zr=(r,e,t)=>wl(r)?r?Zr.isNotRelative(r)?t(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:t("path must not be empty",TypeError):t(`path must be a string, but got \`${e}\``,TypeError),uw=r=>tI.test(r);Zr.isNotRelative=uw;Zr.convert=r=>r;var gm=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){mi(this,pw,!0),this._rules=new fm(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,o){let i=e&&Zr.convert(e);return Zr(i,e,this._strictPathCheck?mI:dw),this._t(i,t,n,o)}checkIgnore(e){if(!rI.test(e))return this.test(e);let t=e.split(ui).filter(Boolean);if(t.pop(),t.length){let n=this._t(t.join(ui)+ui,this._testCache,!0,t);if(n.ignored)return n}return this._rules.test(e,!1,kl)}_t(e,t,n,o){if(e in t)return t[e];if(o||(o=e.split(ui).filter(Boolean)),o.pop(),!o.length)return t[e]=this._rules.test(e,n,Ia);let i=this._t(o.join(ui)+ui,t,n,o);return t[e]=i.ignored?i:this._rules.test(e,n,Ia)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return cw(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},ym=r=>new gm(r),hI=r=>Zr(r&&Zr.convert(r),r,dw),mw=()=>{let r=t=>/^\\\\\?\\/.test(t)||/["<>|\u0000-\u001F]+/u.test(t)?t:t.replace(/\\/g,"/");Zr.convert=r;let e=/^[a-z]:\//i;Zr.isNotRelative=t=>e.test(t)||uw(t)};typeof process<"u"&&process.platform==="win32"&&mw();Pl.exports=ym;ym.default=ym;Pl.exports.isPathValid=hI;mi(Pl.exports,Symbol.for("setupWindows"),mw)});var iO={};Gl(iO,{runCli:()=>rR});module.exports=dh(iO);var tR=b(require("path"));var $e=class{constructor(e,t,n){this.id=e;this.payload=t;this.source=n}};var gi=class{listeners=new Map;on(e,t){let n=this.listeners.get(e);n||(n=new Set,this.listeners.set(e,n));let o=t,i=c=>o(c),a=n.size>0;n.add(i),!a&&n.size>0&&this.fireListenerChanged(e,!0);let s=!1;return{dispose:()=>{if(s)return;s=!0;let c=this.listeners.get(e);!c||!c.delete(i)||c.size===0&&(this.listeners.delete(e),this.fireListenerChanged(e,!1))}}}fire(e){let t=this.listeners.get(e.id);if(t)for(let n of[...t])n(e)}fireAsync(e){return Promise.resolve().then(()=>this.fire(e))}dispose(){this.listeners.clear()}fireListenerChanged(e,t){e!=="event.listener.changed"&&this.fire(new $e("event.listener.changed",{id:e,hasListeners:t},this))}};qt();var yi=(n=>(n.IDE="ide",n.CLI="cli",n.AUTO_SYNC="auto-sync",n))(yi||{}),Wa="5.0.1",cR=`succapp@${Wa}`;function Jl(r){return{source:r,agentVersion:cR}}var lR=Jl("ide"),uh=lR;function mh(r){uh=r}function po(){return uh}q();G();var Wn=b(require("fs")),ep=b(require("os")),$t=b(require("path")),Th=require("crypto");var vi=["trace","debug","info","warn","error"];var Sh={trace:0,debug:1,info:2,warn:3,error:4},vh=["TRACE","DEBUG","INFO","WARN","ERROR"],kR=new Set(vi);function wR(r){return typeof r=="string"&&kR.has(r)}function ho(r){let e=r?.trim().toLowerCase();return wR(e)?e:void 0}var PR=30,RR=2e3,ER=24*60*60*1e3,bR=/^succapp-\d{4}-\d{2}-\d{2}\.log$/,TR=/^succapp-\d{8}T\d{6}\.\d{3}Z-p\d+-[0-9a-f]+\.log$/,$a=class{disabled=!1;levelOrdinal;stream;logFile;constructor(e={}){this.levelOrdinal=Sh[e.level??"info"],this.logFile=e.logFile,this.stream=e.logFile?this.createStream(e.logFile):void 0,e.startupInfo&&this.writeRaw(2,"cli log started",e.startupInfo)}async close(){let e=this.stream;!e||e.destroyed||await new Promise(t=>{let n=()=>{this.disabled=!0,t()};e.once("error",n),e.end(t)})}isTraceEnabled(){return this.isEnabled(0)}isDebugEnabled(){return this.isEnabled(1)}isInfoEnabled(){return this.isEnabled(2)}isWarnEnabled(){return this.isEnabled(3)}isErrorEnabled(){return this.isEnabled(4)}trace(e,...t){this.write(0,e,...t)}debug(e,...t){this.write(1,e,...t)}info(e,...t){this.write(2,e,...t)}warn(e,...t){this.write(3,e,...t)}error(e,...t){this.write(4,e,...t)}isEnabled(e){return!this.disabled&&this.stream!==void 0&&e>=this.levelOrdinal}write(e,t,...n){this.isEnabled(e)&&this.writeRaw(e,t,...n)}writeRaw(e,t,...n){if(this.disabled||this.stream===void 0)return;let o=[new Date().toISOString(),vh[e],bh(t),...n.map(bh)].join(" ");this.stream.write(`${o}
24
24
  `)}createStream(e){try{let t=Wn.createWriteStream(e,{flags:"a"});return t.on("error",()=>{this.disabled=!0}),t}catch{this.disabled=!0;return}}};async function xh(r={}){let e=r.level??"info",t=r.logDir??$t.join(MR(r.env),"logs"),n=new Date,o=(0,Th.randomBytes)(3).toString("hex");try{await Wn.promises.mkdir(t,{recursive:!0});let i=$t.join(t,DR(n,process.pid,o)),a=new $a({level:e,logFile:i,startupInfo:{runId:o,pid:process.pid,cwd:r.cwd,level:e}});return xR(t,{activeLogFile:i,retentionDays:r.retentionDays,maxFiles:r.maxFiles}).catch(s=>{a.warn("cli log cleanup failed",s)}),a}catch{return new $a({level:e})}}async function xR(r,e={}){let t=await FR(r),n=e.activeLogFile?$t.resolve(e.activeLogFile):void 0,o=OR(e.retentionDays),i=_R(e.maxFiles),a=Date.now()-o*ER,s=new Set;for(let l of t)$t.resolve(l.filePath)!==n&&l.mtimeMs<a&&await Eh(l.filePath)&&s.add(l.filePath);let c=t.filter(l=>!s.has(l.filePath)).sort((l,p)=>l.mtimeMs-p.mtimeMs);for(;c.length>i;){let l=c.shift();if(!l)break;if($t.resolve(l.filePath)===n){c.push(l);continue}await Eh(l.filePath)&&s.add(l.filePath)}return{deletedFiles:s.size}}async function FR(r){let e;try{e=await Wn.promises.readdir(r,{withFileTypes:!0})}catch(o){if(tp(o,"ENOENT"))return[];throw o}let t=e.filter(o=>o.isFile()).map(o=>({filePath:$t.join(r,o.name),kind:AR(o.name)})).filter(o=>o.kind!==void 0);return(await Promise.all(t.map(async o=>{let i=await IR(o.filePath);if(i)return{filePath:o.filePath,mtimeMs:i.mtimeMs,size:i.size,kind:o.kind}}))).filter(o=>o!==void 0).sort((o,i)=>o.filePath.localeCompare(i.filePath))}function MR(r=process.env){return process.platform==="win32"?$t.join(r.LOCALAPPDATA||$t.join(ep.homedir(),"AppData","Local"),"succapp"):$t.join(r.XDG_CACHE_HOME||$t.join(ep.homedir(),".cache"),"succapp")}function DR(r,e,t){return`succapp-${r.toISOString().replace(/[-:]/g,"")}-p${e}-${t}.log`}async function IR(r){try{return await Wn.promises.stat(r)}catch(e){if(tp(e,"ENOENT"))return;throw e}}async function Eh(r){try{return await Wn.promises.unlink(r),!0}catch(e){if(tp(e,"ENOENT"))return!1;throw e}}function AR(r){if(bR.test(r))return"legacy";if(TR.test(r))return"run"}function OR(r){return r===void 0||!Number.isFinite(r)||r<0?PR:Math.floor(r)}function _R(r){return r===void 0||!Number.isFinite(r)||r<1?RR:Math.floor(r)}function tp(r,e){return typeof r=="object"&&r!==null&&"code"in r&&r.code===e}function bh(r){if(r instanceof Error)return LR(r);if(typeof r=="string")return r;try{return JSON.stringify(r)??String(r)}catch{return String(r)}}function LR(r){return r.stack?r.stack:r.name&&r.message?`${r.name}: ${r.message}`:r.message||String(r)}var Vh=b(require("fs")),Ti=b(require("path"));q();Ce();D();G();ne();var ZR=T("cli.localizer"),Ya=class r{constructor(e,t,n){this.defaultBundle=e;this.localeBundle=t;this.unresolvedLocale=n}static async create(e={}){let t=e.bundleDir??rE(),n=await Bh(Ti.join(t,"bundle.l10n.json"))??{},o=eE(e.locale);if(!o)return new r(n,{});let i=Ti.join(t,`bundle.l10n.${o}.json`),a=await Bh(i);return a||ZR.debug("CLI l10n bundle not found, falling back to default bundle",i,e.bundleDir?"configured bundleDir":"default bundleDir"),new r(n,a??{},a?void 0:e.locale)}t(e,...t){let n=this.localeBundle[e]??this.defaultBundle[e]??e;return qa(t)?nn(n,t[0]):nn(n,...t)}};async function Bh(r){try{let e=await Vh.promises.readFile(r,"utf8"),t=JSON.parse(e);U(V(t),`l10n bundle root is not an object: ${r}`);let n={};for(let[o,i]of Object.entries(t))typeof i=="string"&&(n[o]=i);return n}catch(e){if(F(e))return;throw e}}function eE(r){let e=tE(r);if(!(!e||e==="en"||e.startsWith("en-")))return e==="zh"?"zh-cn":e}function tE(r){if(!r)return;let e=r.split(".")[0].trim();if(!(!e||e==="C"||e==="POSIX"))return e.replace(/_/g,"-").toLowerCase()}function rE(){return Ti.resolve(__dirname,"..","..","..","..","l10n")}q();Ar();var cp=100,$h=100,Qa=class extends go{constructor(t,n){super(void 0,0,n);this.output=t}lastProgressKey;doStart(t){this.lastProgressKey=void 0,this.emitProgress(0,t)}doProgress(t,n){this.emitProgress(t,this.getProgressTotal())}emitProgress(t,n){let o=oE(t,n,this.message),i=`${o.message??""}:${o.current}:${o.total??""}:${o.percent??""}`;i!==this.lastProgressKey&&(this.lastProgressKey=i,this.output.progress(o,()=>iE(o)))}};function oE(r,e,t){let n=sp(r);if(e===void 0||e<=0)return t?{message:t,current:n}:{current:n};let o=sp(e),i={current:n,total:o,percent:sp(Math.min(n/o,1)*cp)};return t?{message:t,...i}:i}function iE(r){if(r.total!==void 0&&r.percent!==void 0){if(r.percent>=cp)return"";let e=Math.min(Math.max(Math.round(r.percent),0),cp-1);return r.message?h("cli.out.task.progressMessagePercent",r.message,e):h("cli.out.task.progressPercent",e)}return r.message?h("cli.out.task.progressMessageText",r.message,r.current):h("cli.out.task.progressText",r.current)}function sp(r){return Math.round(r*$h)/$h}D();q();ne();function Kh(r){return bi(r)?cE(r.category):1}function sE(r){return r instanceof Error?r.message||r.name:qn(r)||h("common.err.unexpected")}function Za(r,e){return bi(r)?lE(r,e):{code:"error",name:r instanceof Error&&r.name||"Error",message:sE(r),internal:!0,stack:r instanceof Error?r.stack:void 0,cause:op(r)}}function cE(r){switch(r){case"usage":return 2;case"lockBusy":return 3;case"lockCompromised":return 4;case"networkAuth":return 5;case"conflict":return 6;case"cancel":return 130;default:return 1}}function lE(r,e){let t=e?Jh(r.properties,e):r.properties;return{code:r.errorCode,name:r.name,message:pE(r,t),hint:dE(r,t),details:uE(r,t,e),internal:!1,category:r.category,style:r.style,errorType:r.errorType==null?void 0:String(r.errorType),errorDialogStyle:r.errorDialogStyle,hintMessage:r.hintMessage,locationPath:r.locationPath,properties:r.properties}}function pE(r,e){return Gh(r.errorCode,e)??Wh(r)}function Gh(r,e){let t=dp(e),n=pp(r,e),o=Ct(n,t);if(o){if(n!==r)return o;let s=Ct(`${r}.desc`,t);return s?`${o}
25
25
  ${s}`:o}let i=n===r?void 0:Ct(r,t);if(!i)return;let a=Ct(`${r}.desc`,t);return a?`${i}
26
26
  ${a}`:i}function dE(r,e){let t=Uh(r);if(t)return t;let n=dp(e),o=pp(r.errorCode,e);if(o!==r.errorCode){let i=Ct(`${o}.hint`,n);if(i)return i}if(cr(n.sources)){let i=Ct(`${r.errorCode}.hintWithSources`,n);if(i)return i}return Ct(`${r.errorCode}.hint`,n)}function pp(r,e){let t=cr(e.reason);return t?`${r}.${t}`:r}function uE(r,e,t){let n=[...CE(e.issues,t),...gE(r.errorCode,e),...SE(e.sqlInfos)];return n.length>0?n:void 0}function Jh(r,e){let t=mE(e);return t.size===0?r:{...r,input:lp(r.input,t),option:lp(r.option,t),flag:lp(r.flag,t),sources:Hh(r.sources,t),inputs:Hh(r.inputs,t)}}function mE(r){let e=new Map;for(let n of r.commandSpec.flags)n.alias&&e.set(n.alias,n);let t=new Map;for(let n of r.commandArgv){if(n==="--")break;if(n.startsWith("--")||!n.startsWith("-")||n.length<=1)continue;let o=n.slice(1);for(let i=0;i<o.length;i++){let a=o[i],s=e.get(a);if(s&&(t.set(s.name,`-${a}`),s.takesValue))break}}return t}function lp(r,e){return typeof r=="string"?Yh(r,e):r}function Hh(r,e){return Array.isArray(r)?r.map(t=>typeof t=="string"?Yh(t,e):t):r}function Yh(r,e){let t=/^--([A-Za-z0-9-]+)(.*)$/.exec(r);if(!t)return r;let n=e.get(t[1]);if(!n)return r;let o=t[2];return o.startsWith("=")?`${n} ${o.slice(1)}`:`${n}${o}`}function hE(r){let e=up(r.sourceIds);return e.length===0?[]:e.flatMap(t=>{let n=fE(t,r);return n?[n]:[]})}function fE(r,e){let t=cr(e.commandName),n=cr(e.envName)??"SUCCAPP_SERVER";switch(r){case"serverPositional":return t?h("cli.err.context.exampleCommandUrl",{commandName:t}):h("cli.err.context.exampleUrl");case"serverOption":return t?h("cli.err.context.exampleCommandServer",{commandName:t}):h("cli.err.context.exampleServerOpt");case"workspaceRemoteAdd":return h("cli.err.context.workspaceRemoteAdd");case"environmentServer":return t?h("cli.err.context.exampleEnvUrl",{envName:n,commandName:t}):h("cli.err.context.text",{envName:n});default:return}}function gE(r,e){let t=up(e.details),n=dp(e),o=pp(r,e);if(o!==r){let a=Ct(`${o}.desc`,n);a&&t.push(a)}let i=cr(e.detailKey);if(i){let a=Ct(`${r}.detail.${i}`,n);a&&t.push(a)}return t}function dp(r){let e={};for(let[n,o]of Object.entries(r)){if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){e[n]=n==="value"?zh(o):o;continue}let i=up(o);i.length>0&&(e[n]=i.join(", "))}e.input=yE(r),Object.hasOwn(r,"value")&&(e.value=zh(r.value));let t=hE(r);return t.length>0&&(e.sources=t.join(", ")),e}function yE(r){let e=cr(r.input);if(e)return e;let t=cr(r.option)??cr(r.flag);if(t)return t;let n=cr(r.argument);if(n)return n;let o=cr(r.inputId);return o?Ct(`cli.input.${o}`)??o:h("cli.input.value")}function zh(r){return r==null||r===""?h("cli.out.value.none"):String(r)}function CE(r,e){return Array.isArray(r)?r.flatMap(t=>{if(!V(t))return[];let n=cr(t.errorCode);if(!n||!V(t.properties))return[];let o=e?Jh(t.properties,e):t.properties,i=Gh(n,o);return i?[i]:[]}):[]}function up(r){return Array.isArray(r)?r.flatMap(e=>typeof e=="string"&&e?[e]:[]):[]}function cr(r){return typeof r=="string"&&r?r:void 0}function SE(r){return Array.isArray(r)?r.flatMap((e,t)=>vE(e,t)):[]}function vE(r,e){if(!V(r))return[];let t=typeof r.sqlType=="string"?r.sqlType:h("cli.out.value.unknown"),n=typeof r.tableName=="string"?` ${r.tableName}`:"",o=kE(r);return[`#${e} ${t}${n}${o}`]}function kE(r){let e=[];return r.schemaMutation===!0&&e.push(h("cli.cmd.db.exec.schemaMutation")),r.dataMutation===!0&&r.manipulateAllRows===!0&&e.push(h("cli.cmd.db.exec.fullTableData")),e.length?` (${e.join(", ")})`:""}Ce();Ce();D();J();ne();D();var wE=/\/+$/,PE=/^https?:\/\//i,RE="127.0.0.1",EE="localhost";function mp(r){let e;try{e=new URL(r.trim())}catch(t){throw new Ka(r,t)}return e.hostname===RE&&(e.hostname=EE),e.pathname.length>1&&(e.pathname=e.pathname.replace(/\/+$/,"")),e}function Se(r){return mp(r).href.replace(wE,"")}function Qe(r,e){let t=mp(r),n=mp(e);return t.hostname===n.hostname&&t.port===n.port&&t.pathname===n.pathname}function xi(r){return r!==void 0&&PE.test(r)}var Jf=b(require("os")),Nr=b(require("path"));vt();var $f=b(require("fs"));function Ai(r,e=!1){let t=r.length,n=0,o="",i=0,a=16,s=0,c=0,l=0,p=0,m=0;function g(u,S){let k=0,R=0;for(;k<u||!S;){let w=r.charCodeAt(n);if(w>=48&&w<=57)R=R*16+w-48;else if(w>=65&&w<=70)R=R*16+w-65+10;else if(w>=97&&w<=102)R=R*16+w-97+10;else break;n++,k++}return k<u&&(R=-1),R}function d(u){n=u,o="",i=0,a=16,m=0}function f(){let u=n;if(r.charCodeAt(n)===48)n++;else for(n++;n<r.length&&wo(r.charCodeAt(n));)n++;if(n<r.length&&r.charCodeAt(n)===46)if(n++,n<r.length&&wo(r.charCodeAt(n)))for(n++;n<r.length&&wo(r.charCodeAt(n));)n++;else return m=3,r.substring(u,n);let S=n;if(n<r.length&&(r.charCodeAt(n)===69||r.charCodeAt(n)===101))if(n++,(n<r.length&&r.charCodeAt(n)===43||r.charCodeAt(n)===45)&&n++,n<r.length&&wo(r.charCodeAt(n))){for(n++;n<r.length&&wo(r.charCodeAt(n));)n++;S=n}else m=3;return r.substring(u,S)}function y(){let u="",S=n;for(;;){if(n>=t){u+=r.substring(S,n),m=2;break}let k=r.charCodeAt(n);if(k===34){u+=r.substring(S,n),n++;break}if(k===92){if(u+=r.substring(S,n),n++,n>=t){m=2;break}switch(r.charCodeAt(n++)){case 34:u+='"';break;case 92:u+="\\";break;case 47:u+="/";break;case 98:u+="\b";break;case 102:u+="\f";break;case 110:u+=`
@@ -57,7 +57,7 @@ Content-Type: application/octet-stream\r
57
57
  `))}calculateColumnWidths(){return this.model.columns.map((e,t)=>{let n=this.model.rows.map(o=>Sr(this.getCellText(o,t)));return Math.max(Sr(e),...n)})}renderRow(e){return this.getColumnWidths().map((t,n)=>this.padCell(this.getCellText(e,n),t)).join(this.getColumnSeparator()).trimEnd()}padCell(e,t){return Eo(e,t)}getCellText(e,t){return e[t]??""}getColumnSeparator(){return" ".repeat(this.columnGap)}getColumnWidths(){return this.columnWidths===void 0&&(this.columnWidths=this.calculateColumnWidths()),this.columnWidths}};function ke(r,e){return new Cd(r,e).render()}function KT(r){return r===void 0||!Number.isFinite(r)?zT:Math.max(0,Math.floor(r))}Un();q();ne();function Ny(r){return{changes:r.changes.length,local:r.localChanges.length,remote:r.remoteChanges.length,conflicts:r.conflicts.length}}function vn(r){return A({type:r.type,path:r.path,remotePath:r.remotePath,oldPath:r.oldPath,oldRemotePath:r.oldRemotePath,fileId:r.fileId,isFolder:r.isFolder,contentChanged:r.contentChanged,metaChanged:r.metaChanged,modifier:r.modifier,modifierName:r.modifierName,modifyTime:r.modifyTime})}function Fs(r){return A({name:r.name,id:r.id,desc:r.desc})}function Wy(r){return{url:r.url,active:r.active}}function Uy(r){return A({productType:r.productType,version:r.version,devToolApiVersion:r.devToolApiVersion,capabilities:r.capabilities,metadataVersions:r.metadataVersions})}function qr(r){return A({remotePath:r.remotePath,localPath:r.localPath,currentVersion:r.currentVersion,targetVersion:r.targetVersion,changed:r.changed,reason:r.reason,...zy(r.errorInfo)})}function Ms(r){return A({path:r.path,...zy(r.errorInfo)})}function Ds(r){return A({path:r.path,currentVersion:r.currentVersion,targetVersion:r.targetVersion,metaType:r.metaType,kind:r.kind})}function Is(r){switch(r){case"older":return h("cli.out.value.older");case"newer":return h("cli.out.value.newer");default:return r}}function jy(r,e){let t=new Set(r),n=new Set(e);return Array.from(new Set([...r,...e])).sort((o,i)=>o.localeCompare(i)).map(o=>({name:o,workspace:t.has(o),baseline:n.has(o)}))}function By(r,e){let t=GT(r);return e.length===0?`${t}
58
58
  ${h("cli.out.common.changes")}`:`${t}
59
59
  ${Zn(e)}`}function Zn(r){return ke({columns:[h("cli.out.header.type"),h("cli.out.header.path"),h("cli.out.header.remote")],rows:r.map(e=>[e.type,e.path,e.remotePath])})}function GT(r){return h("cli.out.common.changesLocalRemote",r.changes,r.local,r.remote,r.conflicts)}function Vy(r){return{columns:[h("cli.out.header.project"),h("cli.out.common.workspace"),h("cli.out.common.baseline")],rows:r.map(e=>[e.name,h(e.workspace?"cli.out.value.yes":"cli.out.value.no"),h(e.baseline?"cli.out.value.yes":"cli.out.value.no")])}}function qy(r){return{columns:[h("cli.out.header.project"),h("cli.out.common.id"),h("cli.out.header.description")],rows:r.map(e=>[e.name,e.id??"",e.desc??""])}}function As(r){return ke({columns:[h("cli.out.header.remote"),h("cli.out.common.version"),h("cli.out.common.targetVersion")],rows:r.map(e=>[e.remotePath,e.currentVersion??"",e.targetVersion??""])})}function $y(r){return r.length===0?h("cli.out.common.noServers"):{columns:[h("cli.out.common.server"),h("cli.out.common.active")],rows:r.map(e=>[e.url,h(e.active?"cli.out.value.yes":"cli.out.value.no")])}}function Hy(r,e){return{columns:[h("cli.out.header.field"),h("cli.out.header.value")],rows:[[h("cli.out.common.server"),r],[h("cli.out.common.product"),e.productType],[h("cli.out.header.version"),e.version],[h("cli.out.common.api"),e.devToolApiVersion??""],[h("cli.out.common.capabilities"),e.capabilities?.join(", ")??""]]}}function zy(r){if(r===void 0)return{};let e=JT(r);return e||(r instanceof Error?A({errorName:r.name||"Error",errorMessage:r.message}):typeof r=="object"&&r!==null?A({errorName:jt(r,"name"),errorCode:jt(r,"code")??jt(r,"errorCode"),errorMessage:jt(r,"message")??jt(r,"reason")}):{errorMessage:String(r)})}function kn(r){if(r===void 0)return"";let e=YT(r);if(e)return e;if(r instanceof Error)return r.message||r.name;if(typeof r=="object"&&r!==null){let t=jt(r,"code")??jt(r,"errorCode"),n=jt(r,"message")??jt(r,"reason");return[t,n].filter(o=>o&&o.length>0).join(": ")}return String(r)}function JT(r){let e=pt(r),t=sr(r),n=bt(r);if(!(e===void 0&&t===void 0&&n===void 0))return A({errorName:XT(r),errorCode:e,errorType:t==null?void 0:String(t),errorMessage:Ky(r),errorProperties:n})}function YT(r){let e=pt(r),t=Ky(r);return[e,t].filter(n=>n&&n.length>0).join(": ")}function XT(r){if(r instanceof Error)return r.name||"Error";if(!(typeof r!="object"||r===null))return jt(r,"name")??jt(r,"className")}function Ky(r){if(r instanceof Error)return r.message;if(!(typeof r!="object"||r===null))return jt(r,"message")??jt(r,"reason")}function jt(r,e){if(!Object.hasOwn(r,e))return;let t=r[e];return typeof t=="string"?t:void 0}var Sd=class extends de{toOptions(e){return{url:e.positional[0]}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).getServerInfo();return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,info:Uy(i)},()=>Hy(n,i)),0}},Gy={path:["server","info"],domain:"server",spec:{name:"server info",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server info","succapp --server=https://bi.example.com server info","succapp server info http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Sd};q();var vd=class extends de{constructor(t=gs){super();this.ping=t}toOptions(t){return{url:t.positional[0]}}async executeCommand(t,n){let o=await this.resolveServerUrl(t,n.url);return await this.ping(o),t.output.result({server:o,reachable:!0},()=>h("cli.cmd.server.serverReachable",o)),0}},Jy={path:["server","ping"],domain:"server",spec:{name:"server ping",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server ping","succapp --server=https://bi.example.com server ping","succapp server ping http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new vd};q();var kd=class extends de{toOptions(e){return{url:e.positional[0]}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url);return await(await this.createServerApiClient(e,n)).refreshCache(),e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,refreshed:!0},()=>h("cli.cmd.server.cache.refresh.refreshed",n)),0}},Yy={path:["server","cache","refresh"],domain:"server",spec:{name:"server cache refresh",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server cache refresh","succapp --server=https://bi.example.com server cache refresh","succapp server cache refresh http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new kd};q();ne();var Xy=b(require("fs")),Ke=b(require("path"));D();$();var $r=Ke.posix.join("sysdata","extensions");function Qy(r){if(r.extensionName){let e=r.extensionName.trim();return ZT(e)?{extensionRoot:Os(r.workspaceRoot,e),extensionName:e}:void 0}if(r.path)return ex(r.workspaceRoot,r.path)}function Os(r,e){return Ke.join(r,$r,e)}async function wd(r){return Z(Ke.join(r,$r))}async function QT(r){let e=Ke.join(r,$r),t;try{t=await Xy.promises.readdir(e,{withFileTypes:!0})}catch(n){if(F(n))return[];throw n}return t.filter(n=>n.isDirectory()).map(n=>n.name).sort()}async function Zy(r){return QT(r)}function ZT(r){return r.length>0&&r!=="."&&r!==".."&&!r.includes("/")&&!r.includes("\\")}function ex(r,e){let t=Ke.isAbsolute(e)?Ke.normalize(e):Ke.resolve(r,e),n=Ke.join(r,$r),o=n+Ke.sep;if(t!==n&&!t.startsWith(o))return;let a=Ke.relative(n,t).split(Ke.sep)[0];if(!(!a||a===".."||a==="."))return{extensionRoot:Ke.join(n,a),extensionName:a}}function eC(r){return A({extensionPoint:r.extensionPoint,templateName:r.templateName,name:r.summary.name,desc:r.summary.desc,version:r.summary.version})}function tC(r,e){return{extensionName:r,extensionRoot:e.extensionRoot,packageJsonPath:e.packageJsonPath,extensionPoint:e.extensionPoint,templateName:e.templateName,template:tx(e.templateSummary)}}function rC(r){let e=r.metadataVersionSuggestions??[];return{summary:{pushed:r.pushed.length,rejected:r.rejected.length,failures:r.failures.length,metadataVersionSuggestions:e.length},pushed:r.pushed,rejected:r.rejected.map(vn),failures:r.failures.map(Ms),metadataVersionSuggestions:e.map(Ds)}}function nC(r){return r.length===0?h("cli.out.workspace.ext.extTemplates"):{columns:[h("cli.out.workspace.ext.extPoint"),h("cli.out.workspace.ext.template"),h("cli.out.header.version"),h("cli.out.header.description")],rows:r.map(e=>[e.extensionPoint,e.templateName,e.summary.version??"",e.summary.desc??""])}}function oC(r){return r.length===0?h("cli.out.workspace.ext.ext",$r):{columns:[h("cli.out.header.extension")],rows:r.map(e=>[e])}}function iC(r,e){return h("cli.out.workspace.ext.createdExt",r,e.extensionRoot)}function aC(r,e){if(e.pushed.length===0&&e.rejected.length===0&&e.failures.length===0)return h("cli.out.workspace.ext.noLocalChanges",r);let t=[h("cli.out.workspace.ext.pushExtPushed",r,e.pushed.length,e.rejected.length,e.failures.length)];e.pushed.length>0&&(t.push(h("cli.out.workspace.ext.pushedFiles",e.pushed.length)),t.push(rx(e.pushed))),e.rejected.length>0&&(t.push(h("cli.out.workspace.ext.pushBlockedRemote",e.rejected.length)),t.push(Zn(e.rejected))),e.failures.length>0&&(t.push(h("cli.out.workspace.ext.failed",e.failures.length)),t.push(nx(e.failures)));let n=e.metadataVersionSuggestions??[];return n.length>0&&(t.push(h("cli.out.workspace.ext.metaVersions",n.length)),t.push(ox(n))),t.join(`
60
- `)}function tx(r){return A({name:r.name,desc:r.desc,version:r.version})}function rx(r){return ke({columns:[h("cli.out.header.path")],rows:r.map(e=>[e])})}function nx(r){return ke({columns:[h("cli.out.header.path"),h("cli.out.header.error")],rows:r.map(e=>[e.path,kn(e.errorInfo)])})}function ox(r){return ke({columns:[h("cli.out.header.path"),h("cli.out.workspace.ext.version"),h("cli.out.workspace.ext.targetVersion"),h("cli.out.workspace.ext.kind")],rows:r.map(e=>[e.path,e.currentVersion??"",e.targetVersion,Is(e.kind)])})}ne();var Us=b(require("fs")),ur=b(require("path"));G();D();J();$();var sC=b(require("path"));vt();G();var ix=T("workspace.extension-dev.package");async function cC(r,e){let t=sC.join(r,"package.json"),n=await Le(t);if(!n.trim())return ix.warn(`extension package.json is missing or empty: ${t}`),!1;let o=Nt(n,["name"],e);return o===n?!1:(await He(t,o),!0)}var Ex=BC(),bx=/^[a-z0-9]+(?:-[a-z0-9]+){2,}$/,Tx=T("workspace.extension-dev.create"),js=class{workspace;cachedClient;cachedOptions;constructor(e){this.workspace=e}async prepare(){if(!await wd(this.workspace.root))throw new St("err.extension.sysdataNotCloned",{extensionsDir:ur.join(this.workspace.root,$r)});let t=await(await this.requireClient()).getExtensionTemplates(),n=xd(t);if(n.length===0)throw new St("err.extension.templateUnavailable");return this.cachedOptions=n,n}groupOptionsByExtensionPoint(){let e=this.cachedOptions??[],t=new Map;for(let n of e){let o=t.get(n.extensionPoint)??[];o.push(n),t.set(n.extensionPoint,o)}return t}async validate(e){let t=e.extensionName.trim();if(!t)return{ok:!1,error:"empty"};if(!bx.test(t))return{ok:!1,error:"invalidFormat"};let o=t.split("-")[1];return o!==e.extensionPoint?{ok:!1,error:"extensionPointMismatch",actualExtensionPoint:o}:await Z(Os(this.workspace.root,t))?{ok:!1,error:"targetExists"}:{ok:!0}}async execute(e){let{extensionPoint:t,templateName:n,extensionName:o}=e;if(!await wd(this.workspace.root))throw new St("err.extension.sysdataNotCloned",{extensionsDir:ur.join(this.workspace.root,$r)});let i=await this.requireOption(t,n),a=Os(this.workspace.root,o);if(await Z(a))throw new Error(`target extension directory already exists: ${a}`);let c=await(await this.requireClient()).downloadExtensionTemplate(t,n);return await xx(c,a),await cC(a,o),await this.workspace.refreshSyncStatus(),{extensionRoot:a,packageJsonPath:ur.join(a,"package.json"),extensionPoint:t,templateName:n,templateSummary:i.summary}}async requireClient(){return this.cachedClient||(this.cachedClient=await this.workspace.requireClient()),this.cachedClient}async requireOption(e,t){let o=(this.cachedOptions??await this.prepare()).find(i=>i.extensionPoint===e&&i.templateName===t);if(!o)throw new Error(`extension template not found: ${e}/${t}`);return o}};function xd(r){let e=[],t=r.templates??{};for(let[n,o]of Object.entries(t))if(o)for(let[i,a]of Object.entries(o))e.push({extensionPoint:n,templateName:i,summary:a});return e}async function xx(r,e){let n=new Ex(r).getEntries();if(n.length===0)throw new Error("extension template zip is empty");await Us.promises.mkdir(e,{recursive:!0});try{let o=ur.resolve(e),i=o+ur.sep,a=[],s=new Set;for(let c of n){let l=c.entryName.replace(/\\/g,"/"),p=dn(l.endsWith("/")?l.slice(0,-1):l,"extension template entry"),m=ur.resolve(o,p);if(m!==o&&!m.startsWith(i))throw new Error(`extension template entry escapes target directory: ${l}`);if(l.endsWith("/")||c.isDirectory){s.add(m);continue}s.add(ur.dirname(m)),a.push({destination:m,entry:c})}await Promise.all(Array.from(s).map(c=>Us.promises.mkdir(c,{recursive:!0}))),await Promise.all(a.map(({destination:c,entry:l})=>Us.promises.writeFile(c,l.getData())))}catch(o){try{await Qt(e)}catch(i){Tx.debug(`cleanup partial extension directory failed: ${e}`,i)}throw o}}var Fd=class extends de{toOptions(e){return{extensionPoint:e.value("extension-point")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e),o=await this.createServerApiClient(e,n),i=Fx(xd(await o.getExtensionTemplates()),t.extensionPoint);return e.output.result(A({workspace:e.workspace?.root,server:n,extensionPoint:t.extensionPoint,templates:i.map(eC)}),()=>nC(i)),0}},VC={path:["server","extension","template","list"],domain:"server",spec:{name:"server extension template list",flags:[{name:"extension-point",takesValue:!0,valueHint:"point"}],positionals:[],usageArgs:"[<options>]",examples:["succapp server extension template list","succapp --server=https://bi.example.com server extension template list --extension-point=component"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Fd};function Fx(r,e){return e?r.filter(t=>t.extensionPoint===e):[...r]}J();Un();function qC(r,e={}){return Bs(r,e)!==void 0}function Hi(r,e={}){let t=Bs(r,e);if(!t||!r||typeof r!="object")return r;let n={...bt(r),suggestedAction:t,retryable:!1},o=pt(r);return t==="fixMeta"&&typeof n.backendErrorCode!="string"&&typeof o=="string"&&(n.backendErrorCode=o),(typeof n.path!="string"||n.path.length===0)&&(n.path=e.targetPath??e.path),r.properties=n,sr(r)==null&&(r.errorType=Mx(r)),r}function Bs(r,e={}){let t=bt(r)?.suggestedAction;if(Dx(t))return t;let n=pt(r);if(n==="err.meta.fileExists"||n==="err.meta.file.notfound"||n==="err.meta.saveConcurrent")return"pull";if(n==="err.meta.filefolder.notfound")return"fixMeta";if(n==="err.meta.fileExistsIgnoreCase")return"rename";if(n==="err.meta.delete.project")return"refresh";if(n==="err.permission.denied")return e.action==="delete"&&Ix(e.path)?"refresh":"contactAdmin"}function Mx(r){let e=pt(r);return e==="err.permission.denied"||e==="err.meta.delete.project"?"error":"warn"}function Dx(r){return r==="pull"||r==="rename"||r==="refresh"||r==="fixMeta"||r==="contactAdmin"}function Ix(r){return typeof r=="string"&&/^\/[^/]+$/.test(r)}D();J();Un();q();ne();$();var Vs=b(require("fs")),Ve=class extends de{async resolveServerFileTarget(e,t){return{serverUrl:await this.resolveServerUrl(e,t.url),remotePath:_g(t.path)}}createServerFileClient(e,t){return this.createServerApiClient(e,t.serverUrl)}};function et(r,e={}){let[t,n]=r.positional,o=e.defaultPath;return t===void 0?(o===void 0&&$C(),{path:o}):n===void 0?xi(t)?(o===void 0&&$C(),{url:t,path:o}):{path:t}:{url:t,path:n}}function $C(){throw new E("err.cli.missingInput",{inputId:"serverFilePath",sources:["<path>"]})}function Pn(r,e="--revision"){if(r===void 0)return;let t=Yt(r);if(t===void 0)throw new E("err.cli.invalidNonNegativeInteger",{input:e,option:e,value:r});return t}function qs(r){let e=nt(r.value("file")),t=r.has("stdin");if(e&&t)throw new E("err.cli.conflictingInputs",{inputs:["--file=<local-file>","--stdin"]});if(!e&&!t)throw new E("err.cli.missingInput",{inputId:"contentSource",sources:["--file=<local-file>","--stdin"]});return e?{kind:"file",file:e}:{kind:"stdin"}}async function $s(r,e,t){if(e.kind==="stdin")return{source:"stdin",content:await t()};let n=Wt(r.cwd,e.file);if(!(await Jg(n)).isFile())throw new E("err.cli.invalidRegularFile",{inputId:"inputFile",source:n,path:n});return{source:"file",localFile:n,content:Vs.createReadStream(n)}}function HC(r){let e=nt(r.value("output"));if(!e)throw new E("err.cli.missingInput",{inputId:"outputFile",sources:["--output=<file>"]});return e}async function zC(r,e){try{await Vs.promises.stat(r)}catch(t){if(F(t))return;throw t}if(!e)throw new E("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:"--force",path:r})}function Hs(r,e,t){if(r!==void 0&&e)throw new E("err.cli.conflictingInputs",{inputs:["--expected-revision","--force"],context:{command:t}});if(r===void 0&&!e)throw new E("err.cli.missingInput",{inputId:"revisionOrForce",sources:["--expected-revision=<revision>","--force"],context:{command:t}})}function Ki(r){return A({id:r.id,projectName:r.projectName,path:r.path,parentDir:r.parentDir,name:r.name,isFolder:r.isFolder,type:r.type,size:r.size,hash:r.hash,revision:r.revision,modifyTime:r.modifyTime,modifier:r.modifier,desc:r.desc,labels:r.labels,hidden:r.hidden,order:r.order})}function Ax(r){return A({path:r.path,oldPath:r.oldPath,modifyTime:r.modifyTime,contentMutation:r.contentMutation,pathMutation:r.pathMutation,metaInfoChanged:r.metaInfoChanged,metaInfo:r.metaInfo?Ki(r.metaInfo):void 0,warnings:r.warnings})}function zo(r,e,t,n){return A({workspace:r.workspace?.root,server:e,path:t.path,source:n?.source,localFile:n?.localFile,result:Ax(t)})}async function Ko(r,e,t){try{let n=await t();return Ox(r,n),n}catch(n){let o=_x(n,r,e);if(!o)throw n;KC(r,e,o)}}function Ox(r,e){e.success||KC(r,e.path,Hi(e.errorInfo,{action:r,path:e.path}))}function KC(r,e,t){let n=kn(t)||h("cli.cmd.server.file.unknownServerFile"),o={action:r,remotePath:e,reason:n,errorInfo:t};throw Lx(t)?new Ot("err.base.operationFailed",o,{cause:t}):new St("err.base.operationFailed",o,{cause:t})}function _x(r,e,t){if(!(!(r instanceof zt)||!r.remoteError))return Hi(on(r.remoteError),{action:e,path:t})}function Lx(r){let e=Bs(r);return e==="pull"||e==="rename"}function GC(r){return r.length===0?h("cli.cmd.server.file.files"):ke({columns:[h("cli.out.header.type"),h("cli.cmd.server.file.name"),h("cli.out.header.path"),h("cli.out.header.revision"),h("cli.cmd.server.file.size")],rows:r.map(e=>[e.isFolder?h("cli.cmd.server.file.folder"):h("cli.cmd.server.file.file"),e.name,e.path,zi(e.revision),zi(e.size)])})}function JC(r){return ke({columns:[h("cli.out.header.field"),h("cli.out.header.value")],rows:[[h("cli.out.header.path"),r.path],[h("cli.out.header.type"),r.isFolder?h("cli.cmd.server.file.folder"):h("cli.cmd.server.file.file")],[h("cli.cmd.server.file.id"),r.id],[h("cli.out.header.revision"),zi(r.revision)],[h("cli.cmd.server.file.size"),zi(r.size)],[h("cli.cmd.server.file.modifyTime"),zi(r.modifyTime)],[h("cli.out.header.description"),r.desc??""]]})}function Go(r,e){return h("cli.cmd.server.file.success",r,e.path)}function zi(r){return r===void 0?"":String(r)}var Md=class extends Ve{constructor(t=mn){super();this.readStdin=t}toOptions(t){return{...et(t),source:qs(t)}}async executeCommand(t,n){let o=await this.resolveServerFileTarget(t,n),i=await this.createServerFileClient(t,o),a=await $s(t,n.source,this.readStdin),s=await Ko("Create",o.remotePath,()=>i.saveFile(o.remotePath,a.content,{expectedRevision:null}));return t.output.result(zo(t,o.serverUrl,s,a),()=>Go("Create",s)),0}},YC={path:["server","file","create"],domain:"server",spec:{name:"server file create",flags:[{name:"file",takesValue:!0,valueHint:"local-file"},{name:"stdin",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file create /DEMO/apps/new.view --file=./new.view",'printf "{}" | succapp server file create /DEMO/apps/new.view --stdin',"succapp server file create https://bi.example.com /DEMO/apps/new.view --file=./new.view"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Md};q();D();J();ne();$();var XC=b(require("fs")),QC=require("stream/promises"),Dd=class extends Ve{toOptions(e){return{...et(e),revision:Pn(e.value("revision")),upgradeContent:e.has("upgrade-content"),output:HC(e),force:e.has("force")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),o=Wt(e.cwd,t.output);await zC(o,t.force);let a=await(await this.createServerFileClient(e,n)).getFileContentStream(n.remotePath,{revision:t.revision,upgradeContent:t.upgradeContent});try{await(0,QC.pipeline)(a.stream,XC.createWriteStream(o,{flags:t.force?"w":"wx"}))}catch(s){throw!t.force&&Nx(s)?new E("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:"--force",path:o},{cause:s}):s}return e.output.result(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,output:o,revision:a.revision,modifyTime:a.modifyTime}),()=>h("cli.cmd.server.file.download.downloaded",n.remotePath,o)),0}},ZC={path:["server","file","download"],domain:"server",spec:{name:"server file download",flags:[{name:"revision",takesValue:!0,valueHint:"n"},{name:"upgrade-content",takesValue:!1},{name:"output",takesValue:!0,valueHint:"local-file"},{name:"force",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file download /DEMO/apps/a.view --output=./a.view","succapp server file download --revision=12 /DEMO/apps/a.view --output=./a.view","succapp server file download /DEMO/apps/a.view --output=./a.view --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Dd};function Nx(r){return typeof r=="object"&&r!==null&&"code"in r&&r.code==="EEXIST"}J();D();q();ne();function zs(r){let e=Yt(r);if(r===void 0||e!==void 0&&e>0)return e;throw new E("err.cli.invalidPositiveInteger",{input:"--limit",option:"--limit",value:r})}function Ks(r){return r.length===0?h("cli.out.workspace.file.hist.empty"):ke({columns:[h("cli.out.header.revision"),h("cli.out.header.action"),h("cli.out.header.modified"),h("cli.out.header.modifier"),h("cli.out.header.path"),h("cli.out.header.message")],rows:r.map(e=>[Wx(e.revision),e.action??"",Ux(e.modifyTime),e.modifierName??e.modifier??"",e.path,e.message??""])})}function Gs(r){return A({id:r.id,fileId:r.fileId,path:r.path,revision:r.revision,action:r.action,modifyTime:r.modifyTime,modifier:r.modifier,modifierName:r.modifierName,message:r.message,detail:r.detail})}function Wx(r){return r===void 0?"":String(r)}function Ux(r){return r===void 0?"":new Date(r).toISOString()}ne();var Id=class extends Ve{toOptions(e){return{...et(e),limit:zs(e.value("limit"))}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFileHistory(n.remotePath,{limit:t.limit});return e.output.result(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,summary:{histories:i.length},histories:i.map(Gs)}),()=>Ks(i)),0}},eS={path:["server","file","history"],domain:"server",spec:{name:"server file history",flags:[{name:"limit",takesValue:!0,valueHint:"n"}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file history /DEMO/views/sales.view","succapp server file history https://bi.example.com /DEMO/views/sales.view","succapp server file history --limit=20 /DEMO/views/sales.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Id};ne();var Ad=class extends Ve{toOptions(e){return et(e)}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFile(n.remotePath);return e.output.result(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,file:Ki(i)}),()=>JC(i)),0}},tS={path:["server","file","info"],domain:"server",spec:{name:"server file info",flags:[],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file info /DEMO/apps/a.view","succapp server file info https://bi.example.com /DEMO/apps/a.view","succapp server file info /DEMO/apps/a.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Ad};ne();var Od=class extends Ve{toOptions(e){return et(e,{defaultPath:"/"})}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).listFiles(n.remotePath);return e.output.result(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,summary:{files:i.length},files:i.map(Ki)}),()=>GC(i)),0}},rS={path:["server","file","list"],domain:"server",spec:{name:"server file list",flags:[],positionals:[{name:"url",role:"server-url"},{name:"path"}],usageArgs:"[<options>] [<url>] [<path>]",examples:["succapp --server=https://bi.example.com server file list /DEMO","succapp server file list https://bi.example.com /DEMO/apps","succapp server file list --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Od};var nS=require("node:child_process"),oS=require("node:util"),jx=(0,oS.promisify)(nS.execFile);async function Js(r,e){let t=Bx(r);await jx(t.command,t.args,{signal:e})}function Bx(r){return process.platform==="darwin"?{command:"open",args:[r]}:process.platform==="win32"?{command:"rundll32",args:["url.dll,FileProtocolHandler",r]}:{command:"xdg-open",args:[r]}}q();ne();var _d=class extends Ve{constructor(t=Js){super();this.opener=t}toOptions(t){return{...et(t),edit:t.has("edit")}}async executeCommand(t,n){let o=await this.resolveServerFileTarget(t,n),i=n.edit===!0,a=Ao(o.serverUrl,{path:o.remotePath,...i?{":edit":"true"}:{}});return await this.opener(a,t.abortSignal),t.output.result(A({workspace:t.workspace?.root,server:o.serverUrl,path:o.remotePath,edit:i,url:a}),()=>Vx(a,i)),0}},iS={path:["server","file","open"],domain:"server",spec:{name:"server file open",flags:[{name:"edit",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file open /DEMO/views/sales.view","succapp server file open https://bi.example.com /DEMO/views/sales.view","succapp server file open --edit /DEMO/views/sales.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new _d};function Vx(r,e){return h(e?"cli.cmd.server.file.open.openedEdit":"cli.cmd.server.file.open.openedView",r)}var Ld=class extends Ve{toOptions(e){return{...et(e),expectedRevision:Pn(e.value("expected-revision"),"--expected-revision"),force:e.has("force")}}async executeCommand(e,t){Hs(t.expectedRevision,t.force,"server file remove");let n=await this.resolveServerFileTarget(e,t),o=await this.createServerFileClient(e,n),i=await Ko("Delete",n.remotePath,()=>o.deleteFile(n.remotePath,t.force?void 0:{expectedRevision:t.expectedRevision}));return e.output.result(zo(e,n.serverUrl,i),()=>Go("Delete",i)),0}},aS={path:["server","file","remove"],domain:"server",spec:{name:"server file remove",flags:[{name:"expected-revision",takesValue:!0,valueHint:"n"},{name:"force",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file remove /DEMO/apps/a.view --expected-revision=12","succapp server file remove https://bi.example.com /DEMO/apps/a.view --expected-revision=12","succapp server file remove /DEMO/apps/a.view --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Ld};ne();var Nd=class extends Ve{toOptions(e){return{...et(e),revision:Pn(e.value("revision")),upgradeContent:e.has("upgrade-content")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFileContent(n.remotePath,{revision:t.revision,upgradeContent:t.upgradeContent});return e.output.content(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,revision:i.revision,modifyTime:i.modifyTime,size:i.buffer.length}),i.buffer),0}},sS={path:["server","file","show"],domain:"server",spec:{name:"server file show",flags:[{name:"revision",takesValue:!0,valueHint:"n"},{name:"upgrade-content",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file show /DEMO/apps/a.view","succapp server file show --revision=12 /DEMO/apps/a.view","succapp server file show /DEMO/apps/a.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Nd};var Wd=class extends Ve{constructor(t=mn){super();this.readStdin=t}toOptions(t){return{...et(t),source:qs(t),expectedRevision:Pn(t.value("expected-revision"),"--expected-revision"),force:t.has("force")}}async executeCommand(t,n){Hs(n.expectedRevision,n.force,"server file update");let o=await this.resolveServerFileTarget(t,n),i=await this.createServerFileClient(t,o),a=await $s(t,n.source,this.readStdin),s=await Ko("Put",o.remotePath,()=>i.saveFile(o.remotePath,a.content,n.force?void 0:{expectedRevision:n.expectedRevision}));return t.output.result(zo(t,o.serverUrl,s,a),()=>Go("Put",s)),0}},cS={path:["server","file","update"],domain:"server",spec:{name:"server file update",flags:[{name:"file",takesValue:!0,valueHint:"local-file"},{name:"stdin",takesValue:!1},{name:"expected-revision",takesValue:!0,valueHint:"n"},{name:"force",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file update /DEMO/apps/a.view --file=./a.view --expected-revision=12",'printf "{}" | succapp server file update /DEMO/apps/a.view --stdin --expected-revision=12',"succapp server file update /DEMO/apps/a.view --file=./a.view --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Wd};var Ud=class extends de{toOptions(e){return{url:e.positional[0]}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).getProjects();return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,projects:i.map(Fs)},()=>qy(i)),0}},lS={path:["server","project","list"],domain:"server",spec:{name:"server project list",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server project list","succapp --server=https://bi.example.com server project list","succapp server project list http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Ud};J();D();q();var jd=class extends de{toOptions(e){return{...qx(e),description:nt(e.value("description"))}}validateOptions(e,t){!e.workspace&&!t.url&&!e.config.server&&uS()}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).createProject({name:t.projectName,desc:t.description});return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,project:Fs(i)},()=>$x(i)),0}},dS={path:["server","project","create"],domain:"server",spec:{name:"server project create",flags:[{name:"description",takesValue:!0,valueHint:"text"}],positionals:[{name:"url",role:"server-url"},{name:"project"}],usageArgs:"[<options>] [<url>] <project>",examples:["succapp server project create SALES",'succapp server project create SALES --description="Sales demo"',"succapp server project create http://localhost:8180 SALES --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new jd};function qx(r){let[e,t]=r.positional;return e===void 0&&pS(),t===void 0?(xi(e)&&pS(),{projectName:e}):(xi(e)||uS(),{url:e,projectName:t})}function pS(){throw new E("err.cli.missingInput",{inputId:"projectName",sources:["<project>"]})}function uS(){throw new E("err.cli.missingInput",{inputId:"server",sources:["--server=<url>","<url> <project>"]})}function $x(r){return h("cli.cmd.server.proj.create.created",r.name)}q();D();J();ne();var Bd="input",Vd="param",Jo=class extends de{async executeCommand(e,t){let n=await this.resolveServerUrl(e),o=await this.createServerApiClient(e,n);return this.executeScriptCommand(e,n,o,t)}};function Ys(r){return A({result:"result"in r?r.result:void 0,elapsedMs:"elapsedMs"in r?r.elapsedMs:void 0,diagnostics:"diagnostics"in r?r.diagnostics:void 0})}function Xs(){return h("cli.cmd.server.script.done")}function mS(r,e){let t=r.trim();if(!Ha(t))return r;try{return JSON.parse(t)}catch(n){throw new E("err.cli.invalidJson",{inputId:"inputFile",source:e,context:{file:e}},{cause:n})}}$();var qd=class extends Jo{constructor(t=_o){super();this.readFileText=t}toOptions(t){return{scriptPath:t.positional[0]}}async executeScriptCommand(t,n,o,i){let a=await this.readFileText(Wt(t.cwd,i.scriptPath)),s=await o.checkScript({script:a});return t.output.result({...se(t,n),path:i.scriptPath,...Ys(s)},()=>Xs()),0}},hS={path:["server","script","check"],domain:"server",spec:{name:"server script check",flags:[],positionals:[{name:"file",required:!0}],usageArgs:"[<options>] <file>",examples:["succapp server script check ./scripts/job.js"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new qd};ne();$();var $d=class extends Jo{constructor(t=_o){super();this.readFileText=t}toOptions(t){return{scriptPath:t.positional[0],inputFile:t.value(Bd),params:Bg(t.values(Vd))}}async executeScriptCommand(t,n,o,i){let a=await this.readFileText(Wt(t.cwd,i.scriptPath)),s=i.inputFile?mS(await this.readFileText(Wt(t.cwd,i.inputFile)),i.inputFile):void 0,c=Vg(i.params),l=await o.executeScript({script:a,args:A({input:s,params:c})});return t.output.result({...se(t,n),path:i.scriptPath,params:c,...Ys(l)},()=>Xs()),0}},fS={path:["server","script","exec"],domain:"server",spec:{name:"server script exec",flags:[{name:Bd,takesValue:!0,valueHint:"file"},{name:Vd,takesValue:!0,repeatable:!0,valueHint:"key=value"}],positionals:[{name:"file",required:!0}],usageArgs:"[<options>] <file>",examples:["succapp server script exec ./scripts/job.js","succapp server script exec ./scripts/job.js --input=./input.json --param=mode=preview"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new $d};var gS=[Jy,Gy,lS,dS,rS,tS,sS,ZC,iS,eS,YC,cS,aS,fS,hS,Yy,VC];q();D();J();ne();var yS=["missing-baseline","workspace-config","missing-meta","state-file"];function Zs(r){return r.map(e=>{if(yS.includes(e))return e;throw new E("err.cli.invalidChoice",{input:"--only",option:"--only",value:e,allowedValues:yS})})}function Ji(r){return A({checks:r.checks.length>0?r.checks:void 0,targetRemotePaths:r.paths.length>0?r.paths:void 0})}function CS(r){let e=r.issues.filter(t=>t.repairable).length;return{workspace:r.workspaceRootPath,server:r.serverUrl,status:r.issues.length===0?"ok":"problems",summary:{issues:r.issues.length,repairable:e,unrepairable:r.issues.length-e},issues:r.issues.map(Gi)}}function SS(r){let e=r.issues.filter(t=>t.repairable).length;return{workspace:r.workspaceRootPath,server:r.serverUrl,dryRun:!0,summary:{issues:r.issues.length,repairable:e,unrepairable:r.issues.length-e},issues:r.issues.map(Gi)}}function vS(r){return{workspace:r.workspaceRootPath,server:r.serverUrl,dryRun:!1,summary:{issues:r.issues.length,repaired:r.repaired.length,unresolved:r.unresolved.length},issues:r.issues.map(Gi),repaired:r.repaired.map(Gi),unresolved:r.unresolved.map(Gi)}}function kS(r){if(r.issues.length===0)return h("cli.cmd.workspace.repair.checkClean");let e=r.issues.filter(t=>t.repairable).length;return[h("cli.cmd.workspace.repair.checkIssue",r.issues.length,e),Qs(r.issues)].join(`
60
+ `)}function tx(r){return A({name:r.name,desc:r.desc,version:r.version})}function rx(r){return ke({columns:[h("cli.out.header.path")],rows:r.map(e=>[e])})}function nx(r){return ke({columns:[h("cli.out.header.path"),h("cli.out.header.error")],rows:r.map(e=>[e.path,kn(e.errorInfo)])})}function ox(r){return ke({columns:[h("cli.out.header.path"),h("cli.out.workspace.ext.version"),h("cli.out.workspace.ext.targetVersion"),h("cli.out.workspace.ext.kind")],rows:r.map(e=>[e.path,e.currentVersion??"",e.targetVersion,Is(e.kind)])})}ne();var Us=b(require("fs")),ur=b(require("path"));G();D();J();$();var sC=b(require("path"));vt();G();var ix=T("workspace.extension-dev.package");async function cC(r,e){let t=sC.join(r,"package.json"),n=await Le(t);if(!n.trim())return ix.warn(`extension package.json is missing or empty: ${t}`),!1;let o=Nt(n,["name"],e);return o===n?!1:(await He(t,o),!0)}var Ex=BC(),bx=/^[a-z0-9]+(?:-[a-z0-9]+){2,}$/,Tx=T("workspace.extension-dev.create"),js=class{workspace;cachedClient;cachedOptions;constructor(e){this.workspace=e}async prepare(){if(!await wd(this.workspace.root))throw new St("err.extension.sysdataNotCloned",{extensionsDir:ur.join(this.workspace.root,$r)});let t=await(await this.requireClient()).getExtensionTemplates(),n=xd(t);if(n.length===0)throw new St("err.extension.templateUnavailable");return this.cachedOptions=n,n}groupOptionsByExtensionPoint(){let e=this.cachedOptions??[],t=new Map;for(let n of e){let o=t.get(n.extensionPoint)??[];o.push(n),t.set(n.extensionPoint,o)}return t}async validate(e){let t=e.extensionName.trim();if(!t)return{ok:!1,error:"empty"};if(!bx.test(t))return{ok:!1,error:"invalidFormat"};let o=t.split("-")[1];return o!==e.extensionPoint?{ok:!1,error:"extensionPointMismatch",actualExtensionPoint:o}:await Z(Os(this.workspace.root,t))?{ok:!1,error:"targetExists"}:{ok:!0}}async execute(e){let{extensionPoint:t,templateName:n,extensionName:o}=e;if(!await wd(this.workspace.root))throw new St("err.extension.sysdataNotCloned",{extensionsDir:ur.join(this.workspace.root,$r)});let i=await this.requireOption(t,n),a=Os(this.workspace.root,o);if(await Z(a))throw new Error(`target extension directory already exists: ${a}`);let c=await(await this.requireClient()).downloadExtensionTemplate(t,n);return await xx(c,a),await cC(a,o),await this.workspace.refreshSyncStatus(),{extensionRoot:a,packageJsonPath:ur.join(a,"package.json"),extensionPoint:t,templateName:n,templateSummary:i.summary}}async requireClient(){return this.cachedClient||(this.cachedClient=await this.workspace.requireClient()),this.cachedClient}async requireOption(e,t){let o=(this.cachedOptions??await this.prepare()).find(i=>i.extensionPoint===e&&i.templateName===t);if(!o)throw new Error(`extension template not found: ${e}/${t}`);return o}};function xd(r){let e=[],t=r.templates??{};for(let[n,o]of Object.entries(t))if(o)for(let[i,a]of Object.entries(o))e.push({extensionPoint:n,templateName:i,summary:a});return e}async function xx(r,e){let n=new Ex(r).getEntries();if(n.length===0)throw new Error("extension template zip is empty");await Us.promises.mkdir(e,{recursive:!0});try{let o=ur.resolve(e),i=o+ur.sep,a=[],s=new Set;for(let c of n){let l=c.entryName.replace(/\\/g,"/"),p=dn(l.endsWith("/")?l.slice(0,-1):l,"extension template entry"),m=ur.resolve(o,p);if(m!==o&&!m.startsWith(i))throw new Error(`extension template entry escapes target directory: ${l}`);if(l.endsWith("/")||c.isDirectory){s.add(m);continue}s.add(ur.dirname(m)),a.push({destination:m,entry:c})}await Promise.all(Array.from(s).map(c=>Us.promises.mkdir(c,{recursive:!0}))),await Promise.all(a.map(({destination:c,entry:l})=>Us.promises.writeFile(c,l.getData())))}catch(o){try{await Qt(e)}catch(i){Tx.debug(`cleanup partial extension directory failed: ${e}`,i)}throw o}}var Fd=class extends de{toOptions(e){return{extensionPoint:e.value("extension-point")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e),o=await this.createServerApiClient(e,n),i=Fx(xd(await o.getExtensionTemplates()),t.extensionPoint);return e.output.result(A({workspace:e.workspace?.root,server:n,extensionPoint:t.extensionPoint,templates:i.map(eC)}),()=>nC(i)),0}},VC={path:["server","extension","template","list"],domain:"server",spec:{name:"server extension template list",flags:[{name:"extension-point",takesValue:!0,valueHint:"point"}],positionals:[],usageArgs:"[<options>]",examples:["succapp server extension template list","succapp --server=https://bi.example.com server extension template list --extension-point=component"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Fd};function Fx(r,e){return e?r.filter(t=>t.extensionPoint===e):[...r]}J();Un();function qC(r,e={}){return Bs(r,e)!==void 0}function Hi(r,e={}){let t=Bs(r,e);if(!t||!r||typeof r!="object")return r;let n={...bt(r),suggestedAction:t,retryable:!1},o=pt(r);return t==="fixMeta"&&typeof n.backendErrorCode!="string"&&typeof o=="string"&&(n.backendErrorCode=o),(typeof n.path!="string"||n.path.length===0)&&(n.path=e.targetPath??e.path),r.properties=n,sr(r)==null&&(r.errorType=Mx(r)),r}function Bs(r,e={}){let t=bt(r)?.suggestedAction;if(Dx(t))return t;let n=pt(r);if(n==="err.meta.fileExists"||n==="err.meta.file.notfound"||n==="err.meta.saveConcurrent")return"pull";if(n==="err.meta.filefolder.notfound")return"fixMeta";if(n==="err.meta.fileExistsIgnoreCase")return"rename";if(n==="err.meta.delete.project")return"refresh";if(n==="err.permission.denied")return e.action==="delete"&&Ix(e.path)?"refresh":"contactAdmin"}function Mx(r){let e=pt(r);return e==="err.permission.denied"||e==="err.meta.delete.project"?"error":"warn"}function Dx(r){return r==="pull"||r==="rename"||r==="refresh"||r==="fixMeta"||r==="contactAdmin"}function Ix(r){return typeof r=="string"&&/^\/[^/]+$/.test(r)}D();J();Un();q();ne();$();var Vs=b(require("fs")),Ve=class extends de{async resolveServerFileTarget(e,t){return{serverUrl:await this.resolveServerUrl(e,t.url),remotePath:_g(t.path)}}createServerFileClient(e,t){return this.createServerApiClient(e,t.serverUrl)}};function et(r,e={}){let[t,n]=r.positional,o=e.defaultPath;return t===void 0?(o===void 0&&$C(),{path:o}):n===void 0?xi(t)?(o===void 0&&$C(),{url:t,path:o}):{path:t}:{url:t,path:n}}function $C(){throw new E("err.cli.missingInput",{inputId:"serverFilePath",sources:["<path>"]})}function Pn(r,e="--revision"){if(r===void 0)return;let t=Yt(r);if(t===void 0)throw new E("err.cli.invalidNonNegativeInteger",{input:e,option:e,value:r});return t}function qs(r){let e=nt(r.value("file")),t=r.has("stdin");if(e&&t)throw new E("err.cli.conflictingInputs",{inputs:["--file=<local-file>","--stdin"]});if(!e&&!t)throw new E("err.cli.missingInput",{inputId:"contentSource",sources:["--file=<local-file>","--stdin"]});return e?{kind:"file",file:e}:{kind:"stdin"}}async function $s(r,e,t){if(e.kind==="stdin")return{source:"stdin",content:await t()};let n=Wt(r.cwd,e.file);if(!(await Jg(n)).isFile())throw new E("err.cli.invalidRegularFile",{inputId:"inputFile",source:n,path:n});return{source:"file",localFile:n,content:Vs.createReadStream(n)}}function HC(r){let e=nt(r.value("output"));if(!e)throw new E("err.cli.missingInput",{inputId:"outputFile",sources:["--output=<file>"]});return e}async function zC(r,e){try{await Vs.promises.stat(r)}catch(t){if(F(t))return;throw t}if(!e)throw new E("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:"--force",path:r})}function Hs(r,e,t){if(r!==void 0&&e)throw new E("err.cli.conflictingInputs",{inputs:["--expected-revision","--force"],context:{command:t}});if(r===void 0&&!e)throw new E("err.cli.missingInput",{inputId:"revisionOrForce",sources:["--expected-revision=<revision>","--force"],context:{command:t}})}function Ki(r){return A({id:r.id,projectName:r.projectName,path:r.path,parentDir:r.parentDir,name:r.name,isFolder:r.isFolder,type:r.type,size:r.size,hash:r.hash,revision:r.revision,modifyTime:r.modifyTime,modifier:r.modifier,desc:r.desc,labels:r.labels,hidden:r.hidden,order:r.order})}function Ax(r){return A({path:r.path,oldPath:r.oldPath,modifyTime:r.modifyTime,contentMutation:r.contentMutation,pathMutation:r.pathMutation,metaInfoChanged:r.metaInfoChanged,metaInfo:r.metaInfo?Ki(r.metaInfo):void 0,warnings:r.warnings})}function zo(r,e,t,n){return A({workspace:r.workspace?.root,server:e,path:t.path,source:n?.source,localFile:n?.localFile,result:Ax(t)})}async function Ko(r,e,t){try{let n=await t();return Ox(r,n),n}catch(n){let o=_x(n,r,e);if(!o)throw n;KC(r,e,o)}}function Ox(r,e){e.success||KC(r,e.path,Hi(e.errorInfo,{action:r,path:e.path}))}function KC(r,e,t){let n=kn(t)||h("cli.cmd.server.file.unknownServerFile"),o={action:r,remotePath:e,reason:n,errorInfo:t};throw Lx(t)?new Ot("err.base.operationFailed",o,{cause:t}):new St("err.base.operationFailed",o,{cause:t})}function _x(r,e,t){if(!(!(r instanceof zt)||!r.remoteError))return Hi(on(r.remoteError),{action:e,path:t})}function Lx(r){let e=Bs(r);return e==="pull"||e==="rename"}function GC(r){return r.length===0?h("cli.cmd.server.file.files"):ke({columns:[h("cli.out.header.type"),h("cli.cmd.server.file.name"),h("cli.out.header.path"),h("cli.out.header.revision"),h("cli.cmd.server.file.size")],rows:r.map(e=>[e.isFolder?h("cli.cmd.server.file.folder"):h("cli.cmd.server.file.file"),e.name,e.path,zi(e.revision),zi(e.size)])})}function JC(r){return ke({columns:[h("cli.out.header.field"),h("cli.out.header.value")],rows:[[h("cli.out.header.path"),r.path],[h("cli.out.header.type"),r.isFolder?h("cli.cmd.server.file.folder"):h("cli.cmd.server.file.file")],[h("cli.cmd.server.file.id"),r.id],[h("cli.out.header.revision"),zi(r.revision)],[h("cli.cmd.server.file.size"),zi(r.size)],[h("cli.cmd.server.file.modifyTime"),zi(r.modifyTime)],[h("cli.out.header.description"),r.desc??""]]})}function Go(r,e){return h("cli.cmd.server.file.success",r,e.path)}function zi(r){return r===void 0?"":String(r)}var Md=class extends Ve{constructor(t=mn){super();this.readStdin=t}toOptions(t){return{...et(t),source:qs(t)}}async executeCommand(t,n){let o=await this.resolveServerFileTarget(t,n),i=await this.createServerFileClient(t,o),a=await $s(t,n.source,this.readStdin),s=await Ko("Create",o.remotePath,()=>i.saveFile(o.remotePath,a.content,{expectedRevision:null}));return t.output.result(zo(t,o.serverUrl,s,a),()=>Go("Create",s)),0}},YC={path:["server","file","create"],domain:"server",spec:{name:"server file create",flags:[{name:"file",takesValue:!0,valueHint:"local-file"},{name:"stdin",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file create /DEMO/apps/new.view --file=./new.view",'printf "{}" | succapp server file create /DEMO/apps/new.view --stdin',"succapp server file create https://bi.example.com /DEMO/apps/new.view --file=./new.view"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Md};q();D();J();ne();$();var XC=b(require("fs")),QC=require("stream/promises"),Dd=class extends Ve{toOptions(e){return{...et(e),revision:Pn(e.value("revision")),upgradeContent:e.has("upgrade-content"),output:HC(e),force:e.has("force")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),o=Wt(e.cwd,t.output);await zC(o,t.force);let a=await(await this.createServerFileClient(e,n)).getFileContentStream(n.remotePath,{revision:t.revision,upgradeContent:t.upgradeContent});try{await(0,QC.pipeline)(a.stream,XC.createWriteStream(o,{flags:t.force?"w":"wx"}))}catch(s){throw!t.force&&Nx(s)?new E("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:"--force",path:o},{cause:s}):s}return e.output.result(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,output:o,revision:a.revision,modifyTime:a.modifyTime}),()=>h("cli.cmd.server.file.download.downloaded",n.remotePath,o)),0}},ZC={path:["server","file","download"],domain:"server",spec:{name:"server file download",flags:[{name:"revision",takesValue:!0,valueHint:"n"},{name:"upgrade-content",takesValue:!1},{name:"output",takesValue:!0,valueHint:"local-file"},{name:"force",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file download /DEMO/apps/a.view --output=./a.view","succapp server file download --revision=12 /DEMO/apps/a.view --output=./a.view","succapp server file download /DEMO/apps/a.view --output=./a.view --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Dd};function Nx(r){return typeof r=="object"&&r!==null&&"code"in r&&r.code==="EEXIST"}J();D();q();ne();function zs(r){let e=Yt(r);if(r===void 0||e!==void 0&&e>0)return e;throw new E("err.cli.invalidPositiveInteger",{input:"--limit",option:"--limit",value:r})}function Ks(r){return r.length===0?h("cli.out.workspace.file.hist.empty"):ke({columns:[h("cli.out.header.revision"),h("cli.out.header.action"),h("cli.out.header.modified"),h("cli.out.header.modifier"),h("cli.out.header.path"),h("cli.out.header.message")],rows:r.map(e=>[Wx(e.revision),e.action??"",Ux(e.modifyTime),e.modifierName??e.modifier??"",e.path,e.message??""])})}function Gs(r){return A({id:r.id,fileId:r.fileId,path:r.path,revision:r.revision,action:r.action,modifyTime:r.modifyTime,modifier:r.modifier,modifierName:r.modifierName,message:r.message,detail:r.detail})}function Wx(r){return r===void 0?"":String(r)}function Ux(r){return r===void 0?"":new Date(r).toISOString()}ne();var Id=class extends Ve{toOptions(e){return{...et(e),limit:zs(e.value("limit"))}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFileHistory(n.remotePath,{limit:t.limit});return e.output.result(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,summary:{histories:i.length},histories:i.map(Gs)}),()=>Ks(i)),0}},eS={path:["server","file","history"],domain:"server",spec:{name:"server file history",flags:[{name:"limit",takesValue:!0,valueHint:"n"}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file history /DEMO/views/sales.view","succapp server file history https://bi.example.com /DEMO/views/sales.view","succapp server file history --limit=20 /DEMO/views/sales.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Id};ne();var Ad=class extends Ve{toOptions(e){return et(e)}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFile(n.remotePath);return e.output.result(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,file:Ki(i)}),()=>JC(i)),0}},tS={path:["server","file","info"],domain:"server",spec:{name:"server file info",flags:[],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file info /DEMO/apps/a.view","succapp server file info https://bi.example.com /DEMO/apps/a.view","succapp server file info /DEMO/apps/a.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Ad};ne();var Od=class extends Ve{toOptions(e){return et(e,{defaultPath:"/"})}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).listFiles(n.remotePath);return e.output.result(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,summary:{files:i.length},files:i.map(Ki)}),()=>GC(i)),0}},rS={path:["server","file","list"],domain:"server",spec:{name:"server file list",flags:[],positionals:[{name:"url",role:"server-url"},{name:"path"}],usageArgs:"[<options>] [<url>] [<path>]",examples:["succapp --server=https://bi.example.com server file list /DEMO","succapp server file list https://bi.example.com /DEMO/apps","succapp server file list --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Od};var nS=require("node:child_process"),oS=require("node:util"),jx=(0,oS.promisify)(nS.execFile);async function Js(r,e){let t=Bx(r);await jx(t.command,t.args,{signal:e})}function Bx(r){return process.platform==="darwin"?{command:"open",args:[r]}:process.platform==="win32"?{command:"rundll32",args:["url.dll,FileProtocolHandler",r]}:{command:"xdg-open",args:[r]}}q();ne();var _d=class extends Ve{constructor(t=Js){super();this.opener=t}toOptions(t){return{...et(t),edit:t.has("edit")}}async executeCommand(t,n){let o=await this.resolveServerFileTarget(t,n),i=n.edit===!0,a=Ao(o.serverUrl,{path:o.remotePath,...i?{":edit":"true"}:{}});return await this.opener(a,t.abortSignal),t.output.result(A({workspace:t.workspace?.root,server:o.serverUrl,path:o.remotePath,edit:i,url:a}),()=>Vx(a,i)),0}},iS={path:["server","file","open"],domain:"server",spec:{name:"server file open",flags:[{name:"edit",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file open /DEMO/views/sales.view","succapp server file open https://bi.example.com /DEMO/views/sales.view","succapp server file open --edit /DEMO/views/sales.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new _d};function Vx(r,e){return h(e?"cli.cmd.server.file.open.openedEdit":"cli.cmd.server.file.open.openedView",r)}var Ld=class extends Ve{toOptions(e){return{...et(e),expectedRevision:Pn(e.value("expected-revision"),"--expected-revision"),force:e.has("force")}}async executeCommand(e,t){Hs(t.expectedRevision,t.force,"server file remove");let n=await this.resolveServerFileTarget(e,t),o=await this.createServerFileClient(e,n),i=await Ko("Delete",n.remotePath,()=>o.deleteFile(n.remotePath,t.force?void 0:{expectedRevision:t.expectedRevision}));return e.output.result(zo(e,n.serverUrl,i),()=>Go("Delete",i)),0}},aS={path:["server","file","remove"],domain:"server",spec:{name:"server file remove",flags:[{name:"expected-revision",takesValue:!0,valueHint:"n"},{name:"force",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file remove /DEMO/apps/a.view --expected-revision=12","succapp server file remove https://bi.example.com /DEMO/apps/a.view --expected-revision=12","succapp server file remove /DEMO/apps/a.view --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Ld};ne();var Nd=class extends Ve{toOptions(e){return{...et(e),revision:Pn(e.value("revision")),upgradeContent:e.has("upgrade-content")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFileContent(n.remotePath,{revision:t.revision,upgradeContent:t.upgradeContent});return e.output.content(A({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,revision:i.revision,modifyTime:i.modifyTime,size:i.buffer.length}),i.buffer),0}},sS={path:["server","file","show"],domain:"server",spec:{name:"server file show",flags:[{name:"revision",takesValue:!0,valueHint:"n"},{name:"upgrade-content",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file show /DEMO/apps/a.view","succapp server file show --revision=12 /DEMO/apps/a.view","succapp server file show /DEMO/apps/a.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Nd};var Wd=class extends Ve{constructor(t=mn){super();this.readStdin=t}toOptions(t){return{...et(t),source:qs(t),expectedRevision:Pn(t.value("expected-revision"),"--expected-revision"),force:t.has("force")}}async executeCommand(t,n){Hs(n.expectedRevision,n.force,"server file update");let o=await this.resolveServerFileTarget(t,n),i=await this.createServerFileClient(t,o),a=await $s(t,n.source,this.readStdin),s=await Ko("Put",o.remotePath,()=>i.saveFile(o.remotePath,a.content,n.force?void 0:{expectedRevision:n.expectedRevision}));return t.output.result(zo(t,o.serverUrl,s,a),()=>Go("Put",s)),0}},cS={path:["server","file","update"],domain:"server",spec:{name:"server file update",flags:[{name:"file",takesValue:!0,valueHint:"local-file"},{name:"stdin",takesValue:!1},{name:"expected-revision",takesValue:!0,valueHint:"n"},{name:"force",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",required:!0}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file update /DEMO/apps/a.view --file=./a.view --expected-revision=12",'printf "{}" | succapp server file update /DEMO/apps/a.view --stdin --expected-revision=12',"succapp server file update /DEMO/apps/a.view --file=./a.view --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Wd};var Ud=class extends de{toOptions(e){return{url:e.positional[0]}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).getProjects();return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,projects:i.map(Fs)},()=>qy(i)),0}},lS={path:["server","project","list"],domain:"server",spec:{name:"server project list",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server project list","succapp --server=https://bi.example.com server project list","succapp server project list http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Ud};J();D();q();var jd=class extends de{toOptions(e){return{...qx(e),desc:nt(e.value("desc"))}}validateOptions(e,t){!e.workspace&&!t.url&&!e.config.server&&uS()}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).createProject({name:t.projectName,desc:t.desc});return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,project:Fs(i)},()=>$x(i)),0}},dS={path:["server","project","create"],domain:"server",spec:{name:"server project create",flags:[{name:"desc",takesValue:!0,valueHint:"text",description:"cli.cmd.server.proj.create.descOption"}],positionals:[{name:"url",role:"server-url"},{name:"project"}],usageArgs:"[<options>] [<url>] <project>",examples:["succapp server project create SALES",'succapp server project create SALES --desc="Sales demo"',"succapp server project create http://localhost:8180 SALES --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new jd};function qx(r){let[e,t]=r.positional;return e===void 0&&pS(),t===void 0?(xi(e)&&pS(),{projectName:e}):(xi(e)||uS(),{url:e,projectName:t})}function pS(){throw new E("err.cli.missingInput",{inputId:"projectName",sources:["<project>"]})}function uS(){throw new E("err.cli.missingInput",{inputId:"server",sources:["--server=<url>","<url> <project>"]})}function $x(r){return h("cli.cmd.server.proj.create.created",r.name)}q();D();J();ne();var Bd="input",Vd="param",Jo=class extends de{async executeCommand(e,t){let n=await this.resolveServerUrl(e),o=await this.createServerApiClient(e,n);return this.executeScriptCommand(e,n,o,t)}};function Ys(r){return A({result:"result"in r?r.result:void 0,elapsedMs:"elapsedMs"in r?r.elapsedMs:void 0,diagnostics:"diagnostics"in r?r.diagnostics:void 0})}function Xs(){return h("cli.cmd.server.script.done")}function mS(r,e){let t=r.trim();if(!Ha(t))return r;try{return JSON.parse(t)}catch(n){throw new E("err.cli.invalidJson",{inputId:"inputFile",source:e,context:{file:e}},{cause:n})}}$();var qd=class extends Jo{constructor(t=_o){super();this.readFileText=t}toOptions(t){return{scriptPath:t.positional[0]}}async executeScriptCommand(t,n,o,i){let a=await this.readFileText(Wt(t.cwd,i.scriptPath)),s=await o.checkScript({script:a});return t.output.result({...se(t,n),path:i.scriptPath,...Ys(s)},()=>Xs()),0}},hS={path:["server","script","check"],domain:"server",spec:{name:"server script check",flags:[],positionals:[{name:"file",required:!0}],usageArgs:"[<options>] <file>",examples:["succapp server script check ./scripts/job.js"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new qd};ne();$();var $d=class extends Jo{constructor(t=_o){super();this.readFileText=t}toOptions(t){return{scriptPath:t.positional[0],inputFile:t.value(Bd),params:Bg(t.values(Vd))}}async executeScriptCommand(t,n,o,i){let a=await this.readFileText(Wt(t.cwd,i.scriptPath)),s=i.inputFile?mS(await this.readFileText(Wt(t.cwd,i.inputFile)),i.inputFile):void 0,c=Vg(i.params),l=await o.executeScript({script:a,args:A({input:s,params:c})});return t.output.result({...se(t,n),path:i.scriptPath,params:c,...Ys(l)},()=>Xs()),0}},fS={path:["server","script","exec"],domain:"server",spec:{name:"server script exec",flags:[{name:Bd,takesValue:!0,valueHint:"file"},{name:Vd,takesValue:!0,repeatable:!0,valueHint:"key=value"}],positionals:[{name:"file",required:!0}],usageArgs:"[<options>] <file>",examples:["succapp server script exec ./scripts/job.js","succapp server script exec ./scripts/job.js --input=./input.json --param=mode=preview"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new $d};var gS=[Jy,Gy,lS,dS,rS,tS,sS,ZC,iS,eS,YC,cS,aS,fS,hS,Yy,VC];q();D();J();ne();var yS=["missing-baseline","workspace-config","missing-meta","state-file"];function Zs(r){return r.map(e=>{if(yS.includes(e))return e;throw new E("err.cli.invalidChoice",{input:"--only",option:"--only",value:e,allowedValues:yS})})}function Ji(r){return A({checks:r.checks.length>0?r.checks:void 0,targetRemotePaths:r.paths.length>0?r.paths:void 0})}function CS(r){let e=r.issues.filter(t=>t.repairable).length;return{workspace:r.workspaceRootPath,server:r.serverUrl,status:r.issues.length===0?"ok":"problems",summary:{issues:r.issues.length,repairable:e,unrepairable:r.issues.length-e},issues:r.issues.map(Gi)}}function SS(r){let e=r.issues.filter(t=>t.repairable).length;return{workspace:r.workspaceRootPath,server:r.serverUrl,dryRun:!0,summary:{issues:r.issues.length,repairable:e,unrepairable:r.issues.length-e},issues:r.issues.map(Gi)}}function vS(r){return{workspace:r.workspaceRootPath,server:r.serverUrl,dryRun:!1,summary:{issues:r.issues.length,repaired:r.repaired.length,unresolved:r.unresolved.length},issues:r.issues.map(Gi),repaired:r.repaired.map(Gi),unresolved:r.unresolved.map(Gi)}}function kS(r){if(r.issues.length===0)return h("cli.cmd.workspace.repair.checkClean");let e=r.issues.filter(t=>t.repairable).length;return[h("cli.cmd.workspace.repair.checkIssue",r.issues.length,e),Qs(r.issues)].join(`
61
61
  `)}function wS(r){if(r.issues.length===0)return h("cli.cmd.workspace.repair.dryRunClean");let e=r.issues.filter(t=>t.repairable).length;return[h("cli.cmd.workspace.repair.dryRunIssues",r.issues.length,e,r.issues.length-e),Qs(r.issues)].join(`
62
62
  `)}function PS(r){if(r.issues.length===0)return h("cli.cmd.workspace.repair.clean");let e=[h("cli.cmd.workspace.repair.repaired",r.repaired.length,r.unresolved.length)];return r.repaired.length>0&&(e.push(h("cli.cmd.workspace.repair.repairedIssues")),e.push(Qs(r.repaired))),r.unresolved.length>0&&(e.push(h("cli.cmd.workspace.repair.unresolved")),e.push(Qs(r.unresolved))),e.join(`
63
63
  `)}function Gi(r){return A({checkId:r.checkId,strategy:r.strategy,repairable:r.repairable,remotePaths:r.remotePaths,message:r.message,details:r.details})}function Qs(r){return ke({columns:[h("cli.cmd.workspace.repair.check"),h("cli.cmd.workspace.repair.strategy"),h("cli.cmd.workspace.repair.repairable"),h("cli.cmd.workspace.repair.remotePaths"),h("cli.out.header.message")],rows:r.map(e=>[e.checkId,e.strategy,h(e.repairable?"cli.out.value.yes":"cli.out.value.no"),e.remotePaths.join(", "),e.message])})}var ge=class extends ce{async executeWorkspaceCommand(e,t,n){return!t.command||t.command.serverTarget!=="none"?await Rr(t,e):await e.config.ensureLoaded(),this.executeSyncCommand(e,e.createSyncService(),t,n)}};var Hd=class extends ge{toOptions(e){return{checks:Zs(e.values("only")),paths:e.positional}}async executeSyncCommand(e,t,n,o){let i=await t.fsckWorkspace({...Ji(o),task:n.task});return n.output.result(CS(i),()=>kS(i)),i.issues.length>0?1:0}},RS={path:["workspace","check"],domain:"workspace",spec:{name:"workspace check",flags:[{name:"only",takesValue:!0,repeatable:!0,valueHint:"item"}],positionals:[{name:"path",repeatable:!0}],usageArgs:"[<options>] [--] [<path>...]",examples:["succapp workspace check","succapp workspace check --only=missing-baseline","succapp workspace check /DEMO_BLANK --json"]},workspaceTarget:"required",serverTarget:"required",createExecutor:()=>new Hd};q();Ce();D();J();$();var Ew=b(require("path"));var Tl=b(require("fs")),yr=b(require("path"));var ec=class{total=0;byApi=new Map;byPath=new Map;pathKeyCount=0;droppedPathKeys=0;recentCallsDropped=0;recentCalls=[];maxPathKeys;maxRecentCalls;constructor(e={}){this.maxPathKeys=e.maxPathKeys??500,this.maxRecentCalls=e.maxRecentCalls??200}record(e){this.total++,this.byApi.set(e.name,(this.byApi.get(e.name)??0)+1),e.path!==void 0&&this.recordPath(e.name,e.path),this.recordRecentCall(e)}getSnapshot(e={}){let t={total:this.total,byApi:Object.fromEntries(this.byApi),byPath:this.createByPathSnapshot(),droppedPathKeys:this.droppedPathKeys,recentCallsDropped:this.recentCallsDropped,...e.includeRecentCalls?{recentCalls:this.recentCalls.map(n=>({...n}))}:{}};return e.reset&&this.reset(),t}reset(){this.total=0,this.byApi.clear(),this.byPath.clear(),this.pathKeyCount=0,this.droppedPathKeys=0,this.recentCallsDropped=0,this.recentCalls.length=0}recordPath(e,t){let n=this.byPath.get(e);if(n?.has(t)){n.set(t,(n.get(t)??0)+1);return}if(this.pathKeyCount>=this.maxPathKeys){this.droppedPathKeys++;return}n||(n=new Map,this.byPath.set(e,n)),n.set(t,1),this.pathKeyCount++}recordRecentCall(e){if(this.maxRecentCalls<=0){this.recentCallsDropped++;return}this.recentCalls.length>=this.maxRecentCalls&&(this.recentCalls.shift(),this.recentCallsDropped++),this.recentCalls.push({...e})}createByPathSnapshot(){let e={};for(let[t,n]of this.byPath)e[t]=Object.fromEntries(n);return e}};var zd=class{constructor(e){this.delegate=e}diagnostics=new ec;get serverUrl(){return this.delegate.serverUrl}get currentAuthorizationHeader(){return this.delegate.currentAuthorizationHeader}getDiagnostics(e){return this.diagnostics.getSnapshot(e)}async getServerInfo(){return this.recordApiCall("getServerInfo"),this.delegate.getServerInfo()}async getProjects(){return this.recordApiCall("getProjects"),this.delegate.getProjects()}async createProject(e){return this.recordApiCall("createProject",e.name),this.delegate.createProject(e)}async listFiles(e){return this.recordApiCall("listFiles",e),this.delegate.listFiles(e)}async countFiles(e){return this.recordApiCall("countFiles",e),this.delegate.countFiles(e)}async getFileDescendant(e){return this.recordApiCall("getFileDescendant",e),this.delegate.getFileDescendant(e)}async getFile(e){return this.recordApiCall("getFile",e),this.delegate.getFile(e)}async getFileInfos(e){return this.recordApiCall("getFileInfos"),this.delegate.getFileInfos(e)}async getFileHistory(e,t){return this.recordApiCall("getFileHistory",e),this.delegate.getFileHistory(e,t)}isNotFoundError(e){return this.delegate.isNotFoundError(e)}async getFileContent(e,t){return this.recordApiCall("getFileContent",e),this.delegate.getFileContent(e,t)}async getFileContentStream(e,t){return this.recordApiCall("getFileContentStream",e),this.delegate.getFileContentStream(e,t)}async saveFile(e,t,n){return this.recordApiCall("saveFile",e),this.delegate.saveFile(e,t,n)}async createFile(e){return this.recordApiCall("createFile",e.path),this.delegate.createFile(e)}async modifyFile(e){return this.recordApiCall("modifyFile",e.path),this.delegate.modifyFile(e)}async moveFile(e){return this.recordApiCall("moveFile",e.path),this.delegate.moveFile(e)}async upgradeFileContent(e){return this.recordApiCall("upgradeFileContent",e.path),this.delegate.upgradeFileContent(e)}async deleteFile(e,t){return this.recordApiCall("deleteFile",e),this.delegate.deleteFile(e,t)}async getExtensionTemplates(){return this.recordApiCall("getExtensionTemplates"),this.delegate.getExtensionTemplates()}async downloadExtensionTemplate(e,t){return this.recordApiCall("downloadExtensionTemplate",`${e}/${t}`),this.delegate.downloadExtensionTemplate(e,t)}async getDataSources(){return this.recordApiCall("getDataSources"),this.delegate.getDataSources()}async getSettings(e){return this.recordApiCall("getSettings",e?.path),this.delegate.getSettings(e)}async setSettings(e){return this.recordApiCall("setSettings",e.path),this.delegate.setSettings(e)}async probeDataSource(e,t){return this.recordApiCall("probeDataSource",e),this.delegate.probeDataSource(e,t)}async getDataSourceConfig(e,t){return this.recordApiCall("getDataSourceConfig",e),this.delegate.getDataSourceConfig(e,t)}async testDataSource(e){return this.recordApiCall("testDataSource",e.originalDataSource??e.config.name),this.delegate.testDataSource(e)}async createDataSource(e){return this.recordApiCall("createDataSource",e.config.name),this.delegate.createDataSource(e)}async updateDataSource(e){return this.recordApiCall("updateDataSource",e.dataSource),this.delegate.updateDataSource(e)}async deleteDataSource(e){return this.recordApiCall("deleteDataSource",e.dataSource),this.delegate.deleteDataSource(e)}async listDbSchemas(e,t){return this.recordApiCall("listDbSchemas",e),this.delegate.listDbSchemas(e,t)}async listDbTables(e,t){return this.recordApiCall("listDbTables",e),this.delegate.listDbTables(e,t)}async describeDbTable(e,t,n){return this.recordApiCall("describeDbTable",`${e}/${t}`),this.delegate.describeDbTable(e,t,n)}async queryDbDdl(e,t,n){return this.recordApiCall("queryDbDdl",`${e}/${t}`),this.delegate.queryDbDdl(e,t,n)}async executeDbQuery(e){return this.recordApiCall("executeDbQuery",e.dataSource),this.delegate.executeDbQuery(e)}async exportDbQueryData(e){return this.recordApiCall("exportDbQueryData",e.dataSource),this.delegate.exportDbQueryData(e)}async exportDbTableData(e){return this.recordApiCall("exportDbTableData",`${e.dataSource}/${e.tableName}`),this.delegate.exportDbTableData(e)}async executeDbAny(e){return this.recordApiCall("executeDbAny",e.dataSource),this.delegate.executeDbAny(e)}async importDbTableData(e){return this.recordApiCall("importDbTableData",`${e.dataSource}/${e.tableName}`),this.delegate.importDbTableData(e)}async executeScript(e){return this.recordApiCall("executeScript","<temporary-script>"),this.delegate.executeScript(e)}async checkScript(e){return this.recordApiCall("checkScript","<temporary-script>"),this.delegate.checkScript(e)}async refreshCache(){return this.recordApiCall("refreshCache"),this.delegate.refreshCache()}buildViewFileRedirectUrl(e){return this.delegate.buildViewFileRedirectUrl(e)}async getTypeScriptSupportApiLibs(){return this.recordApiCall("getTypeScriptSupportApiLibs"),this.delegate.getTypeScriptSupportApiLibs()}async getJsonSchemaSupport(){return this.recordApiCall("getJsonSchemaSupport"),this.delegate.getJsonSchemaSupport()}async downloadJsonSchema(e){return this.recordApiCall("downloadJsonSchema"),this.delegate.downloadJsonSchema(e)}async getFrontendFrameworksManifest(){return this.recordApiCall("getFrontendFrameworksManifest"),this.delegate.getFrontendFrameworksManifest()}recordApiCall(e,t){this.diagnostics.record({name:e,path:t})}};function ES(r){return new zd(r)}$();Ar();$n();it();gr();qt();var wc=class extends Dt{async execute(){this.task.throwIfAborted();let e=this.options.scope??"both",t=e==="local",n=this.options.refreshAll?await this.context.refreshSyncStatusState({scope:e,forceRefresh:this.options.forceRefresh,rootRemotePath:this.options.rootRemotePath,source:this.options.source,task:this.task}):void 0,o=this.context.getSyncChanges();if(t&&(o=o.filter(a=>a.type!=="conflict"&&at(a))),this.options.paths?.length){let a=await this.resolveTargetRemotePaths(this.options.paths,t?"mirror-only":"server-backed");o=this.filterChangesByTargets(o,a)}let i=n?.warnings??[];return{changes:o,localChanges:o.filter(a=>at(a)),remoteChanges:t?[]:o.filter(a=>fr(a)),conflicts:t?[]:o.filter(a=>a.type==="conflict"),...i.length>0?{warnings:i}:{}}}};var kv=b(require("fs"));G();$();it();var Gr=b(require("fs")),Jr=b(require("path")),Pu=require("node:util");$();$n();Ce();D();Je();G();it();pn();$n();D();G();vt();var CF=T("sync.file-fetcher"),SF=3,vF=20,kF=300,Pc=class{constructor(e){this.options=e;let t={};e.maxConcurrency!==void 0&&(t.maxConcurrency=e.maxConcurrency),e.signal&&(t.signal=e.signal),this.runner=new ze(t),this.maxAttemptsPerFile=Math.max(1,e.maxAttemptsPerFile??SF),this.maxRetries=Math.max(0,e.maxRetries??vF),this.retryBaseDelayMs=Math.max(0,e.retryBaseDelayMs??kF)}runner;maxAttemptsPerFile;maxRetries;retryBaseDelayMs;retryCount=0;stoppedError;fetchToLocal(e,t){return mt(this.options.signal),this.stoppedError?Promise.reject(this.stoppedError):this.runner.addTask(()=>this.fetchToLocalWithRetry(e,t))}async fetchToLocalWithRetry(e,t){let n;for(let o=1;o<=this.maxAttemptsPerFile;o++){if(mt(this.options.signal),this.stoppedError)throw this.stoppedError;try{let i=await this.options.getContentStream(e);return mt(this.options.signal),await cn(t,i.stream),i}catch(i){if(i instanceof Kt)throw i;if(n=i,!this.shouldRetryContentDownload(i))throw this.stop(i),i;if(o>=this.maxAttemptsPerFile){let s=new Error(`download file content failed: ${e}: ${qn(i)}`);throw this.stop(s),s}if(!this.consumeRetryBudget()){let s=new Error(`download file content retry budget exhausted after ${this.maxRetries} retries: ${e}: ${qn(i)}`);throw this.stop(s),s}let a=this.retryBaseDelayMs*o;CF.warn(`content download interrupted, retrying file attempt ${o+1}/${this.maxAttemptsPerFile}, fetch retry budget ${this.retryCount}/${this.maxRetries}: `+e,i),await new Promise(s=>setTimeout(s,a)),mt(this.options.signal)}}throw n instanceof Error?n:new Error(String(n??"content download failed"))}stop(e){this.stoppedError||(this.stoppedError=e instanceof Error?e:new Error(String(e??"content download failed")),this.runner.cancel(this.stoppedError))}consumeRetryBudget(){return this.retryCount>=this.maxRetries?!1:(this.retryCount++,!0)}shouldRetryContentDownload(e){return Lh(e)}};var ku=b(require("fs")),Rc=b(require("path"));$();Je();G();pn();D();qt();Zo();function gv(r){let e=new Map(r.serverProjects.map(a=>[a.remotePath,a])),t=wF(r.serverProjects),n=new Map(r.mirrorProjects.map(a=>[a.remotePath,a])),o=PF(r.mirrorProjects),i={scannableProjectPaths:new Set,unavailableProjects:[],renamedProjects:[]};for(let a of r.trackedProjects){let s=n.get(a),c=s?.id,l=e.get(a);if(l){c&&l.id&&c!==l.id?i.unavailableProjects.push(fv(a,s)):i.scannableProjectPaths.add(a);continue}let p=c&&!o.has(c)?t.get(c):void 0;if(p&&p.remotePath!==a){i.renamedProjects.push({oldProject:s??{name:yv(a),remotePath:a,id:c},newProject:p});continue}i.unavailableProjects.push(fv(a,s))}return i}function wF(r){let e=new Map,t=new Set;for(let n of r)if(n.id){if(e.has(n.id)){t.add(n.id);continue}e.set(n.id,n)}for(let n of t)e.delete(n);return e}function PF(r){let e=new Set,t=new Set;for(let n of r)n.id&&(e.has(n.id)&&t.add(n.id),e.add(n.id));return t}function fv(r,e){return e||{name:yv(r),remotePath:r}}function yv(r){let e=r.lastIndexOf("/");return e>=0?r.slice(e+1):r}var RF=8,Cv=100,EF=/^[0-9a-f]{64}$/,Pt=T("sync.detector.remote"),wu=class{detectRuns=0;serverFileInfoRequests=0;serverFileInfoHits=0;serverFileInfoMisses=0;serverFoldersListed=0;serverFoldersSkippedByScope=0;serverFoldersSkippedByWaterline=0;mirrorFoldersScanned=0;mirrorEntriesCollected=0;mirrorContentStatChecks=0;mirrorContentHashChecks=0;changesByType={};changesByKind=bF();scanScope=TF();visitorEvents={};api={total:0,byApi:{},byPath:{},droppedPathKeys:0,recentCallsDropped:0};describeForLog(){return`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@succsoft/succapp",
3
- "version": "5.0.0",
3
+ "version": "5.0.1",
4
4
  "description": "SuccApp CLI for AI-assisted low-code development, metadata workspace sync, and server automation.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {