@fxri/toolkit 1.11.2 → 1.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- var re=["\u5F85\u529E","\u8FDB\u884C\u4E2D","\u5DF2\u5B8C\u6210","\u963B\u585E","\u5DF2\u653E\u5F03"],P=["\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03"],fe=["owner","status","created","updated","completed","depends_on","scope"];import{readFileSync as gn}from"fs";function M(e){return e.replace(/^\uFEFF/,"")}function E(e){return M(gn(e,"utf8"))}var de=/^---\r?\n([\s\S]*?)\r?\n---/;function pe(e){let t=M(e).match(de);if(!t)return{};let n={};for(let r of(t[1]??"").split(/\r?\n/)){let o=r.indexOf(":");if(o===-1)continue;let s=r.slice(0,o).trim(),i=r.slice(o+1).trim();(i.startsWith("'")&&i.endsWith("'")||i.startsWith('"')&&i.endsWith('"'))&&(i=i.slice(1,-1)),s&&(n[s]=i)}return n}function Y(e){return pe(e)}function U(e){let t=M(e),n=t.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return n?t.slice(n[0].length):t}function me(e){return e.split(/\r?\n/).find(t=>t.startsWith("# ")&&!t.startsWith("#!"))?.replace(/^#\s*/,"")??""}function Xe(e){let t=e.split(/\r?\n/),n=t.findIndex(r=>/^# /.test(r));return n===-1?e:(t.splice(n,1),t.join(`
2
- `))}import{existsSync as hn,readdirSync as Je,statSync as kn}from"fs";import{join as Ze,basename as bn,extname as yn}from"path";function C(e,t){if(!hn(e))return[];let n=[],r=o=>!t||!/^\d{6}$/.test(o)?!0:!(t.since&&o<t.since||t.until&&o>t.until);for(let o of Je(e)){let s=Ze(e,o);if(kn(s).isDirectory()){if(!r(o))continue;for(let i of Je(s))i.endsWith(".md")&&n.push(Ze(s,i))}else o.endsWith(".md")&&n.push(s)}return n}function W(e){return bn(e,yn(e)).match(/^(\d{8})/)?.[1]??""}import{readFileSync as Qn}from"fs";import{join as er,basename as _t}from"path";import{existsSync as Fe}from"fs";import{join as nt,dirname as Tn,resolve as he}from"path";import{homedir as An}from"os";import{spawnSync as xn}from"child_process";import{basename as vn,dirname as qe}from"path";function ge(e,t,n){try{let r=xn("git",e,{cwd:t,...n===void 0?{}:{input:n},encoding:"utf8"});return{status:r.status??-1,stdout:r.stdout??"",stderr:r.stderr??""}}catch(r){return{status:-1,stdout:"",stderr:r instanceof Error?r.message:String(r)}}}function Sn(e){let t=ge(["check-ignore","--quiet","--",tt(e)],qe(e));return t.status===0?{state:"ignored"}:t.status===1?{state:"not-ignored"}:/not a git repository/i.test(t.stderr)?{state:"not-a-repo"}:/outside repository/i.test(t.stderr)?{state:"outside-repo"}:{state:"unavailable",detail:t.stderr.trim()||`git check-ignore \u9000\u51FA\u7801 ${t.status}`}}function Qe(e,t){let n=new Set;if(t.length===0)return n;let r=ge(["check-ignore","--stdin","-z"],e,t.map(o=>`${o}\0`).join(""));if(r.status!==0&&r.status!==1)return n;for(let o of r.stdout.split("\0"))o&&n.add(o);return n}function et(e,t){let n=Rn(t);if(n.kind==="not-a-repo")return{state:"not-a-repo"};if(n.kind==="unavailable")return{state:"unavailable",detail:n.detail};if(!$n(e,n.root))return{state:"outside-repo"};let r=wn(e);if(r===void 0)return{state:"unavailable",detail:"git ls-files \u6267\u884C\u5931\u8D25"};if(r)return{state:"tracked"};let o=Sn(e);return o.state==="unavailable"?{state:"unavailable",detail:o.detail}:{state:o.state}}function $n(e,t){let n=oe(e),r=oe(t);return n===r||n.startsWith(`${r}/`)}function wn(e){let t=ge(["ls-files","--error-unmatch","--",vn(e)],qe(e));if(t.status===0)return!0;if(t.status===1)return!1}function oe(e){return tt(e).replace(/\/+$/,"").toLowerCase()}function Rn(e){let t=ge(["rev-parse","--show-toplevel"],e);if(t.status===0){let n=t.stdout.trim();return n?{kind:"repo",root:n}:{kind:"unavailable",detail:"git rev-parse \u672A\u8FD4\u56DE\u4ED3\u5E93\u6839\u8DEF\u5F84"}}return/not a git repository/i.test(t.stderr)?{kind:"not-a-repo"}:{kind:"unavailable",detail:t.stderr.trim()||`git rev-parse \u9000\u51FA\u7801 ${t.status}`}}function tt(e){return e.replace(/\\/g,"/")}var En=".toolkitrc.json",rt=".toolkitrc.local.json",ot=[{key:"tasks.dir",type:"string"},{key:"redact.enabled",type:"boolean"},{key:"updateCheck.enabled",type:"boolean"},{key:"check.warnings",type:"boolean"}],Le=new Set,Is=ot.map(e=>e.key);var se,Cn;function st(){return se||(se=it(he(process.cwd())),at(se.fallbacks)),se}function it(e){let t=[],n=Ce("\u5168\u5C40\u5C42",nt(ct(),".toolkitrc.json"),t),r=Ce("\u9879\u76EE\u5C42",Ie(En,e,{stopAtHome:!1}),t),o=Ce("\u672C\u5730\u5C42",Ie(rt,e,{stopAtHome:!0}),t),s=Fn(n.config,r.config),i=In(s,o.config);return{global:n,project:r,local:o,merged:i,fallbacks:t}}function _e(e){return e===null?"null":Array.isArray(e)?"\u6570\u7EC4":typeof e}function Ie(e,t,n){let r=oe(ct()),o=he(t);for(;;){if(n.stopAtHome&&oe(o)===r)return null;let s=nt(o,e);if(Fe(s))return s;let i=Tn(o);if(i===o)return null;o=i}}function G(e){let t=st().merged?.[e];return V(t)?t:void 0}function ct(){return Cn??An()}function V(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function lt(e){return e!=null}function Ln(e){if(e===void 0)return st().merged;let t=it(he(e));return at(t.fallbacks),t.merged}function In(e,t){if(!t)return e;let n=e?{...e}:{};for(let[r,o]of Object.entries(t)){if(!V(o))continue;let i={...V(n[r])?n[r]:{}};for(let[l,c]of Object.entries(o))lt(c)&&(i[l]=c);n[r]=i}return Object.keys(n).length>0?n:null}function Fn(e,t){if(!e)return t;if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t))n[r]=o;return n}function at(e){for(let t of e)jn(t.file,t.key,t.detail)}function _n(e,t){if(!Fe(e))return null;let n;try{n=E(e)}catch(o){return t.push({file:e,key:"",detail:`\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25\uFF1A${o instanceof Error?o.message:String(o)}`}),null}let r;try{r=JSON.parse(n)}catch{return t.push({file:e,key:"",detail:"JSON \u89E3\u6790\u5931\u8D25"}),null}return V(r)?r:(t.push({file:e,key:"",detail:`\u9876\u5C42\u987B\u4E3A\u5BF9\u8C61\uFF08\u5B9E\u9645\uFF1A${_e(r)}\uFF09`}),null)}function Ce(e,t,n){if(!t||!Fe(t))return{layer:e,file:null,hit:!1,sections:[],config:null};let r=_n(t,n);return r?(Mn(t,r,n),Nn(t,r,n),{layer:e,file:t,hit:!0,sections:Object.keys(r),config:r}):{layer:e,file:t,hit:!1,sections:[],config:null}}function On(){se=void 0,Le.clear()}function ut(e=process.cwd()){return Ie(rt,he(e),{stopAtHome:!0})}function Nn(e,t,n){for(let{key:r,type:o}of ot){let s=r.indexOf("."),i=r.slice(0,s),l=r.slice(s+1),c=t[i];if(!V(c))continue;let d=c[l];if(!lt(d)||typeof d===o&&!(o==="string"&&d===""))continue;let p=o==="string"?"\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32":"\u987B\u4E3A\u5E03\u5C14\u503C",m=d===""?"\u7A7A\u5B57\u7B26\u4E32":_e(d);n.push({file:e,key:r,detail:`${p}\uFF08\u5B9E\u9645\uFF1A${m}\uFF09`}),delete c[l]}}function Mn(e,t,n){for(let[r,o]of Object.entries(t))V(o)||(n.push({file:e,key:r,detail:`\u914D\u7F6E\u6BB5\u987B\u4E3A\u5BF9\u8C61\uFF08\u5B9E\u9645\uFF1A${_e(o)}\uFF09`}),delete t[r])}function jn(e,t,n){let r=`${e}\0${t}`;if(Le.has(r))return;Le.add(r);let o=t===""?`\u26A0\uFE0F \u5FFD\u7565\u914D\u7F6E\u6587\u4EF6\u300C${e}\u300D`:`\u26A0\uFE0F \u5FFD\u7565\u914D\u7F6E\u9879\u300C${t}\u300D${e?`\uFF08${e}\uFF09`:""}`;console.warn(`${o}\uFF1A${n}\uFF0C\u5DF2\u6309\u672A\u914D\u7F6E\u5904\u7406`)}function ft(e,t){let n=e.trim().toLowerCase();return["1","true","on","yes"].includes(n)?!0:["0","false","off","no"].includes(n)?!1:t}function dt(e,t,n,r){if(e!==void 0)return e;let o=process.env[t];return o!==void 0&&o!==""?ft(o,r):n!==void 0?n:r}var Bn=[{name:"\u5185\u7F51URL",pattern:/(https?:\/\/)[a-zA-Z0-9.-]+(:\d{2,5})(?=\/|[\s]|$)/g,replacement:"$1***$2"},{name:"\u90AE\u7BB1",pattern:/([a-zA-Z0-9._%+-])[a-zA-Z0-9._%+-]*@(?:[a-zA-Z0-9-]+\.)+([a-zA-Z]{2,})/g,replacement:"$1***@***.$2"},{name:"JWT",pattern:/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,replacement:"eyJ***.***.***"},{name:"AWS\u5BC6\u94A5",pattern:/\b(AKIA|ASIA)[A-Z0-9]{16}\b/g,replacement:"$1****"},{name:"GitHub\u5BC6\u94A5",pattern:/\b(ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36,}\b/g,replacement:"$1_****"},{name:"GitHub\u7EC6\u7C92\u5EA6\u5BC6\u94A5",pattern:/\bgithub_pat_[A-Za-z0-9_]{80,}\b/g,replacement:"github_pat_****"},{name:"OpenAI\u5BC6\u94A5",pattern:/\bsk-[A-Za-z0-9]{20,}\b/g,replacement:"sk-****"},{name:"OpenAI\u9879\u76EE\u5BC6\u94A5",pattern:/\bsk-proj-[A-Za-z0-9_-]{40,}\b/g,replacement:"sk-proj-****"},{name:"Slack\u5BC6\u94A5",pattern:/\b(xox[baprs])-[A-Za-z0-9-]{10,}\b/g,replacement:"$1-****"},{name:"Slack\u5E94\u7528\u4EE4\u724C",pattern:/\bxapp-\d+-[A-Za-z0-9-]{15,}\b/g,replacement:"xapp-****"},{name:"\u624B\u673A\u53F7",pattern:/(?<!\d)(1[3-9]\d)\d{4}(\d{4})(?!\d)/g,replacement:"$1****$2"},{name:"\u8EAB\u4EFD\u8BC1",pattern:/(?<!\d)(\d{6})\d{8}(\d{3}[\dXx])(?!\d)/g,replacement:"$1********$2"},{name:"IPv4",pattern:/(?<![\d.])(\d{1,3}\.\d{1,3})\.\d{1,3}\.\d{1,3}(?![\d.])/g,replacement:"$1.***.***"}];function Dn(){let e=G("redact");return e?{enabled:typeof e.enabled=="boolean"?e.enabled:void 0,disable:Array.isArray(e.disable)?e.disable.filter(t=>typeof t=="string"):void 0,rules:Array.isArray(e.rules)?e.rules:void 0}:null}function Yn(){let e=Dn(),t=new Set(e?.disable??[]),n=[];for(let r of e?.rules??[])try{n.push({name:r.name,pattern:new RegExp(r.pattern,r.flags??""),replacement:r.replacement})}catch{}return[...n,...Bn.filter(r=>!t.has(r.name))]}function $(e,t){if(!t||!e)return e;let n=e;for(let r of Yn())n=n.replace(r.pattern,r.replacement);return n}import{readFileSync as Tt}from"fs";import{join as At,basename as Gn}from"path";function z(e){let t={};if(!e)return t;for(let n of e.replace(/^>\s*/,"").split(/[ ]+/).map(r=>r.trim()).filter(Boolean)){let r=n.search(/[::]/);if(r<=0)continue;let o=n.slice(0,r).trim(),s=n.slice(r+1).trim();!o||!s||(o.includes("\u8D1F\u8D23\u4EBA")?t.owner=s:o.includes("\u72B6\u6001")?t.status=s:o.includes("\u8303\u56F4")?t.scope=s:o.includes("\u5B8C\u6210\u65F6\u95F4")&&(t.completed=s))}return t}var gt=/^(\d{4})-(\d{1,2})-(\d{1,2})[T\s](\d{1,2}):(\d{2})(?::\d{2})?$/,ht=/^(\d{4})-(\d{1,2})-(\d{1,2})$/;function L(e){let t=e.trim();return gt.test(t)||ht.test(t)}function A(e){let t=e.trim(),n=t.match(gt)??t.match(ht);if(!n)return t;let r=s=>s?.padStart(2,"0")??"",o=`${n[1]??""}-${r(n[2])}-${r(n[3])}`;return n.length===4?`${o} 00:00`:`${o} ${r(n[4])}:${r(n[5])}`}function kt(e){return e.match(/^\d{8}-(.+?)-/)?.[1]??""}function Un(e,t){return`> \u8D1F\u8D23\u4EBA\uFF1A${kt(e)||"\u672A\u6807\u6CE8"}\u3000\u72B6\u6001\uFF1A\u5DF2\u5B8C\u6210\u3000\u8303\u56F4\uFF1A-\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${A(t)}`}function bt(e,t,n){let r=z(n),o=r.owner||kt(e)||"\u672A\u6807\u6CE8",s=r.status||"\u5DF2\u5B8C\u6210",i=r.scope||"-";return`> \u8D1F\u8D23\u4EBA\uFF1A${o}\u3000\u72B6\u6001\uFF1A${s}\u3000\u8303\u56F4\uFF1A${i}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${A(t)}`}function F(e){e=M(e);let t=e.split(/\r?\n/).map(c=>c.replace(/\r$/,"")),n=[],r=[];for(let c of t)/^-{3,}$/.test(c.trim())?(n.push(r),r=[]):r.push(c);n.push(r);let o=[],s=pt(n[0]??[]),i=s.findIndex(c=>/^## .+/.test(c));i>=0&&o.push(mt(s.slice(i)));for(let c=1;c<n.length;c++){let d=pt(n[c]??[]);d.length!==0&&(/^## .+/.test(d[0]??"")?o.push(mt(d)):Wn(o,d.join(`
1
+ var re=["\u5F85\u529E","\u8FDB\u884C\u4E2D","\u5DF2\u5B8C\u6210","\u963B\u585E","\u5DF2\u653E\u5F03"],P=["\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03"],de=["owner","status","created","updated","completed","depends_on","scope"];import{readFileSync as kn}from"fs";function M(e){return e.replace(/^\uFEFF/,"")}function E(e){return M(kn(e,"utf8"))}var pe=/^---\r?\n([\s\S]*?)\r?\n---/;function me(e){let t=M(e).match(pe);if(!t)return{};let n={};for(let r of(t[1]??"").split(/\r?\n/)){let o=r.indexOf(":");if(o===-1)continue;let s=r.slice(0,o).trim(),i=r.slice(o+1).trim();(i.startsWith("'")&&i.endsWith("'")||i.startsWith('"')&&i.endsWith('"'))&&(i=i.slice(1,-1)),s&&(n[s]=i)}return n}function Y(e){return me(e)}function U(e){let t=M(e),n=t.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return n?t.slice(n[0].length):t}function ge(e){return e.split(/\r?\n/).find(t=>t.startsWith("# ")&&!t.startsWith("#!"))?.replace(/^#\s*/,"")??""}function Ze(e){let t=e.split(/\r?\n/),n=t.findIndex(r=>/^# /.test(r));return n===-1?e:(t.splice(n,1),t.join(`
2
+ `))}import{existsSync as bn,readdirSync as qe,statSync as yn}from"fs";import{join as Qe,basename as xn,extname as vn}from"path";function C(e,t){if(!bn(e))return[];let n=[],r=o=>!t||!/^\d{6}$/.test(o)?!0:!(t.since&&o<t.since||t.until&&o>t.until);for(let o of qe(e)){let s=Qe(e,o);if(yn(s).isDirectory()){if(!r(o))continue;for(let i of qe(s))i.endsWith(".md")&&n.push(Qe(s,i))}else o.endsWith(".md")&&n.push(s)}return n}function W(e){return xn(e,vn(e)).match(/^(\d{8})/)?.[1]??""}import{readFileSync as rr}from"fs";import{join as or,basename as Nt}from"path";import{existsSync as Oe}from"fs";import{join as ot,dirname as Ln,resolve as ke}from"path";import{homedir as In}from"os";import{spawnSync as Sn}from"child_process";import{realpathSync as $n}from"fs";import{basename as et,dirname as Le,isAbsolute as wn,join as Rn}from"path";function he(e,t,n){try{let r=Sn("git",e,{cwd:t,...n===void 0?{}:{input:n},encoding:"utf8"});return{status:r.status??-1,stdout:r.stdout??"",stderr:r.stderr??""}}catch(r){return{status:-1,stdout:"",stderr:r instanceof Error?r.message:String(r)}}}function oe(e){if(!wn(e))return e;let t=e,n=[];for(;;)try{let r=$n.native(t);return n.length===0?r:Rn(r,...n.reverse())}catch{let r=Le(t);if(r===t)return e;n.push(et(t)),t=r}}function Tn(e){let t=he(["check-ignore","--quiet","--",rt(e)],Le(e));return t.status===0?{state:"ignored"}:t.status===1?{state:"not-ignored"}:/not a git repository/i.test(t.stderr)?{state:"not-a-repo"}:/outside repository/i.test(t.stderr)?{state:"outside-repo"}:{state:"unavailable",detail:t.stderr.trim()||`git check-ignore \u9000\u51FA\u7801 ${t.status}`}}function tt(e,t){let n=new Set;if(t.length===0)return n;let r=he(["check-ignore","--stdin","-z"],e,t.map(o=>`${o}\0`).join(""));if(r.status!==0&&r.status!==1)return n;for(let o of r.stdout.split("\0"))o&&n.add(o);return n}function nt(e,t){let n=Cn(t);if(n.kind==="not-a-repo")return{state:"not-a-repo"};if(n.kind==="unavailable")return{state:"unavailable",detail:n.detail};if(!An(e,n.root))return{state:"outside-repo"};let r=En(e);if(r===void 0)return{state:"unavailable",detail:"git ls-files \u6267\u884C\u5931\u8D25"};if(r)return{state:"tracked"};let o=Tn(e);return o.state==="unavailable"?{state:"unavailable",detail:o.detail}:{state:o.state}}function An(e,t){let n=se(oe(e)),r=se(oe(t));return n===r||n.startsWith(`${r}/`)}function En(e){let t=he(["ls-files","--error-unmatch","--",et(e)],Le(e));if(t.status===0)return!0;if(t.status===1)return!1}function se(e){return rt(e).replace(/\/+$/,"").toLowerCase()}function Cn(e){let t=he(["rev-parse","--show-toplevel"],e);if(t.status===0){let n=t.stdout.trim();return n?{kind:"repo",root:n}:{kind:"unavailable",detail:"git rev-parse \u672A\u8FD4\u56DE\u4ED3\u5E93\u6839\u8DEF\u5F84"}}return/not a git repository/i.test(t.stderr)?{kind:"not-a-repo"}:{kind:"unavailable",detail:t.stderr.trim()||`git rev-parse \u9000\u51FA\u7801 ${t.status}`}}function rt(e){return e.replace(/\\/g,"/")}var Fn=".toolkitrc.json",st=".toolkitrc.local.json",it=[{key:"tasks.dir",type:"string"},{key:"redact.enabled",type:"boolean"},{key:"updateCheck.enabled",type:"boolean"},{key:"check.warnings",type:"boolean"}],Fe=new Set,Ms=it.map(e=>e.key);var ie,_n;function ct(){return ie||(ie=lt(ke(process.cwd())),ft(ie.fallbacks)),ie}function lt(e){let t=[],n=Ie("\u5168\u5C40\u5C42",ot(at(),".toolkitrc.json"),t),r=Ie("\u9879\u76EE\u5C42",_e(Fn,e,{stopAtHome:!1}),t),o=Ie("\u672C\u5730\u5C42",_e(st,e,{stopAtHome:!0}),t),s=Mn(n.config,r.config),i=Nn(s,o.config);return{global:n,project:r,local:o,merged:i,fallbacks:t}}function Ne(e){return e===null?"null":Array.isArray(e)?"\u6570\u7EC4":typeof e}function _e(e,t,n){let r=n.stopAtHome?se(oe(at())):"",o=ke(t);for(;;){if(n.stopAtHome&&se(oe(o))===r)return null;let s=ot(o,e);if(Oe(s))return s;let i=Ln(o);if(i===o)return null;o=i}}function G(e){let t=ct().merged?.[e];return V(t)?t:void 0}function at(){return _n??In()}function V(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ut(e){return e!=null}function On(e){if(e===void 0)return ct().merged;let t=lt(ke(e));return ft(t.fallbacks),t.merged}function Nn(e,t){if(!t)return e;let n=e?{...e}:{};for(let[r,o]of Object.entries(t)){if(!V(o))continue;let i={...V(n[r])?n[r]:{}};for(let[l,c]of Object.entries(o))ut(c)&&(i[l]=c);n[r]=i}return Object.keys(n).length>0?n:null}function Mn(e,t){if(!e)return t;if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t))n[r]=o;return n}function ft(e){for(let t of e)Un(t.file,t.key,t.detail)}function jn(e,t){if(!Oe(e))return null;let n;try{n=E(e)}catch(o){return t.push({file:e,key:"",detail:`\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25\uFF1A${o instanceof Error?o.message:String(o)}`}),null}let r;try{r=JSON.parse(n)}catch{return t.push({file:e,key:"",detail:"JSON \u89E3\u6790\u5931\u8D25"}),null}return V(r)?r:(t.push({file:e,key:"",detail:`\u9876\u5C42\u987B\u4E3A\u5BF9\u8C61\uFF08\u5B9E\u9645\uFF1A${Ne(r)}\uFF09`}),null)}function Ie(e,t,n){if(!t||!Oe(t))return{layer:e,file:null,hit:!1,sections:[],config:null};let r=jn(t,n);return r?(Yn(t,r,n),Dn(t,r,n),{layer:e,file:t,hit:!0,sections:Object.keys(r),config:r}):{layer:e,file:t,hit:!1,sections:[],config:null}}function Bn(){ie=void 0,Fe.clear()}function dt(e=process.cwd()){return _e(st,ke(e),{stopAtHome:!0})}function Dn(e,t,n){for(let{key:r,type:o}of it){let s=r.indexOf("."),i=r.slice(0,s),l=r.slice(s+1),c=t[i];if(!V(c))continue;let d=c[l];if(!ut(d)||typeof d===o&&!(o==="string"&&d===""))continue;let p=o==="string"?"\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32":"\u987B\u4E3A\u5E03\u5C14\u503C",m=d===""?"\u7A7A\u5B57\u7B26\u4E32":Ne(d);n.push({file:e,key:r,detail:`${p}\uFF08\u5B9E\u9645\uFF1A${m}\uFF09`}),delete c[l]}}function Yn(e,t,n){for(let[r,o]of Object.entries(t))V(o)||(n.push({file:e,key:r,detail:`\u914D\u7F6E\u6BB5\u987B\u4E3A\u5BF9\u8C61\uFF08\u5B9E\u9645\uFF1A${Ne(o)}\uFF09`}),delete t[r])}function Un(e,t,n){let r=`${e}\0${t}`;if(Fe.has(r))return;Fe.add(r);let o=t===""?`\u26A0\uFE0F \u5FFD\u7565\u914D\u7F6E\u6587\u4EF6\u300C${e}\u300D`:`\u26A0\uFE0F \u5FFD\u7565\u914D\u7F6E\u9879\u300C${t}\u300D${e?`\uFF08${e}\uFF09`:""}`;console.warn(`${o}\uFF1A${n}\uFF0C\u5DF2\u6309\u672A\u914D\u7F6E\u5904\u7406`)}function pt(e,t){let n=e.trim().toLowerCase();return["1","true","on","yes"].includes(n)?!0:["0","false","off","no"].includes(n)?!1:t}function mt(e,t,n,r){if(e!==void 0)return e;let o=process.env[t];return o!==void 0&&o!==""?pt(o,r):n!==void 0?n:r}var Wn=[{name:"\u5185\u7F51URL",pattern:/(https?:\/\/)[a-zA-Z0-9.-]+(:\d{2,5})(?=\/|[\s]|$)/g,replacement:"$1***$2"},{name:"\u90AE\u7BB1",pattern:/([a-zA-Z0-9._%+-])[a-zA-Z0-9._%+-]*@(?:[a-zA-Z0-9-]+\.)+([a-zA-Z]{2,})/g,replacement:"$1***@***.$2"},{name:"JWT",pattern:/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,replacement:"eyJ***.***.***"},{name:"AWS\u5BC6\u94A5",pattern:/\b(AKIA|ASIA)[A-Z0-9]{16}\b/g,replacement:"$1****"},{name:"GitHub\u5BC6\u94A5",pattern:/\b(ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36,}\b/g,replacement:"$1_****"},{name:"GitHub\u7EC6\u7C92\u5EA6\u5BC6\u94A5",pattern:/\bgithub_pat_[A-Za-z0-9_]{80,}\b/g,replacement:"github_pat_****"},{name:"OpenAI\u5BC6\u94A5",pattern:/\bsk-[A-Za-z0-9]{20,}\b/g,replacement:"sk-****"},{name:"OpenAI\u9879\u76EE\u5BC6\u94A5",pattern:/\bsk-proj-[A-Za-z0-9_-]{40,}\b/g,replacement:"sk-proj-****"},{name:"Slack\u5BC6\u94A5",pattern:/\b(xox[baprs])-[A-Za-z0-9-]{10,}\b/g,replacement:"$1-****"},{name:"Slack\u5E94\u7528\u4EE4\u724C",pattern:/\bxapp-\d+-[A-Za-z0-9-]{15,}\b/g,replacement:"xapp-****"},{name:"\u624B\u673A\u53F7",pattern:/(?<!\d)(1[3-9]\d)\d{4}(\d{4})(?!\d)/g,replacement:"$1****$2"},{name:"\u8EAB\u4EFD\u8BC1",pattern:/(?<!\d)(\d{6})\d{8}(\d{3}[\dXx])(?!\d)/g,replacement:"$1********$2"},{name:"IPv4",pattern:/(?<![\d.])(\d{1,3}\.\d{1,3})\.\d{1,3}\.\d{1,3}(?![\d.])/g,replacement:"$1.***.***"}];function Hn(){let e=G("redact");return e?{enabled:typeof e.enabled=="boolean"?e.enabled:void 0,disable:Array.isArray(e.disable)?e.disable.filter(t=>typeof t=="string"):void 0,rules:Array.isArray(e.rules)?e.rules:void 0}:null}function zn(){let e=Hn(),t=new Set(e?.disable??[]),n=[];for(let r of e?.rules??[])try{n.push({name:r.name,pattern:new RegExp(r.pattern,r.flags??""),replacement:r.replacement})}catch{}return[...n,...Wn.filter(r=>!t.has(r.name))]}function $(e,t){if(!t||!e)return e;let n=e;for(let r of zn())n=n.replace(r.pattern,r.replacement);return n}import{readFileSync as Et}from"fs";import{join as Ct,basename as Zn}from"path";function H(e){let t={};if(!e)return t;for(let n of e.replace(/^>\s*/,"").split(/[ ]+/).map(r=>r.trim()).filter(Boolean)){let r=n.search(/[::]/);if(r<=0)continue;let o=n.slice(0,r).trim(),s=n.slice(r+1).trim();!o||!s||(o.includes("\u8D1F\u8D23\u4EBA")?t.owner=s:o.includes("\u72B6\u6001")?t.status=s:o.includes("\u8303\u56F4")?t.scope=s:o.includes("\u5B8C\u6210\u65F6\u95F4")&&(t.completed=s))}return t}var kt=/^(\d{4})-(\d{1,2})-(\d{1,2})[T\s](\d{1,2}):(\d{2})(?::\d{2})?$/,bt=/^(\d{4})-(\d{1,2})-(\d{1,2})$/;function L(e){let t=e.trim();return kt.test(t)||bt.test(t)}function A(e){let t=e.trim(),n=t.match(kt)??t.match(bt);if(!n)return t;let r=s=>s?.padStart(2,"0")??"",o=`${n[1]??""}-${r(n[2])}-${r(n[3])}`;return n.length===4?`${o} 00:00`:`${o} ${r(n[4])}:${r(n[5])}`}function yt(e){return e.match(/^\d{8}-(.+?)-/)?.[1]??""}function Pn(e,t){return`> \u8D1F\u8D23\u4EBA\uFF1A${yt(e)||"\u672A\u6807\u6CE8"}\u3000\u72B6\u6001\uFF1A\u5DF2\u5B8C\u6210\u3000\u8303\u56F4\uFF1A-\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${A(t)}`}function xt(e,t,n){let r=H(n),o=r.owner||yt(e)||"\u672A\u6807\u6CE8",s=r.status||"\u5DF2\u5B8C\u6210",i=r.scope||"-";return`> \u8D1F\u8D23\u4EBA\uFF1A${o}\u3000\u72B6\u6001\uFF1A${s}\u3000\u8303\u56F4\uFF1A${i}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${A(t)}`}function F(e){e=M(e);let t=e.split(/\r?\n/).map(c=>c.replace(/\r$/,"")),n=[],r=[];for(let c of t)/^-{3,}$/.test(c.trim())?(n.push(r),r=[]):r.push(c);n.push(r);let o=[],s=gt(n[0]??[]),i=s.findIndex(c=>/^## .+/.test(c));i>=0&&o.push(ht(s.slice(i)));for(let c=1;c<n.length;c++){let d=gt(n[c]??[]);d.length!==0&&(/^## .+/.test(d[0]??"")?o.push(ht(d)):Vn(o,d.join(`
3
3
  `).trim()))}if(o.length===0)return{header:e,blocks:[]};let l=i>=0?i:s.length;return{header:s.slice(0,l).join(`
4
- `).trimEnd(),blocks:o}}function pt(e){let t=0,n=e.length;for(;t<n&&(e[t]??"").trim()==="";)t++;for(;n>t&&(e[n-1]??"").trim()==="";)n--;return e.slice(t,n)}function mt(e){let t=(e[0]??"").replace(/^## /,"").trim(),n=null,r="",o=1;for(let s=1;s<e.length;s++){let i=e[s]??"",l=i.trim();if(l.startsWith("> ")&&l.includes("\u5B8C\u6210\u65F6\u95F4")){n=i;let c=l.match(/完成时间:(.+)$/);c&&(r=(c[1]??"").trim()),o=s+1;break}}return{title:t,metaLine:n,completed:r,body:e.slice(o).join(`
5
- `).trim()}}function Wn(e,t){let n=e[e.length-1];!n||!t||(n.body=n.body?`${n.body}
4
+ `).trimEnd(),blocks:o}}function gt(e){let t=0,n=e.length;for(;t<n&&(e[t]??"").trim()==="";)t++;for(;n>t&&(e[n-1]??"").trim()==="";)n--;return e.slice(t,n)}function ht(e){let t=(e[0]??"").replace(/^## /,"").trim(),n=null,r="",o=1;for(let s=1;s<e.length;s++){let i=e[s]??"",l=i.trim();if(l.startsWith("> ")&&l.includes("\u5B8C\u6210\u65F6\u95F4")){n=i;let c=l.match(/完成时间:(.+)$/);c&&(r=(c[1]??"").trim()),o=s+1;break}}return{title:t,metaLine:n,completed:r,body:e.slice(o).join(`
5
+ `).trim()}}function Vn(e,t){let n=e[e.length-1];!n||!t||(n.body=n.body?`${n.body}
6
6
 
7
- ${t}`:t)}function yt(e){let t=[];for(let n of e)for(let r of n.body.matchAll(/^## (\d{8}-[^-]+-.+)$/gm))r[1]&&t.push(r[1]);return t}function Oe(e){let t=e.metaLine??(L(e.completed)?Un(e.title,e.completed):null);return t?`## ${e.title}
7
+ ${t}`:t)}function vt(e){let t=[];for(let n of e)for(let r of n.body.matchAll(/^## (\d{8}-[^-]+-.+)$/gm))r[1]&&t.push(r[1]);return t}function Me(e){let t=e.metaLine??(L(e.completed)?Pn(e.title,e.completed):null);return t?`## ${e.title}
8
8
 
9
9
  ${t}
10
10
 
11
11
  ${e.body}`:`## ${e.title}
12
12
 
13
- ${e.body}`}function zn(e){let t=new Map;for(let s of e)t.set(s.title,s);let n=[...t.values()],r=n.filter(s=>L(s.completed)),o=n.filter(s=>!L(s.completed));return r.sort((s,i)=>A(i.completed).localeCompare(A(s.completed))),[...r,...o]}function H(e,t,n=`
14
- `){let r=zn(t).map(Oe).join(`
13
+ ${e.body}`}function Gn(e){let t=new Map;for(let s of e)t.set(s.title,s);let n=[...t.values()],r=n.filter(s=>L(s.completed)),o=n.filter(s=>!L(s.completed));return r.sort((s,i)=>A(i.completed).localeCompare(A(s.completed))),[...r,...o]}function z(e,t,n=`
14
+ `){let r=Gn(t).map(Me).join(`
15
15
 
16
16
  ---
17
17
 
@@ -19,56 +19,56 @@ ${e.body}`}function zn(e){let t=new Map;for(let s of e)t.set(s.title,s);let n=[.
19
19
 
20
20
  ${r}
21
21
  `:`${r}
22
- `).replace(/\n/g,n)}function Hn(e){return e.trim().replace(/^['"]|['"]$/g,"")}function xt(e){return e.split(/[,,]/).map(Hn).filter(Boolean)}function ke(e){if(Array.isArray(e))return e.filter(r=>typeof r=="string");if(typeof e!="string")return[];let t=e.trim();if(!t||t==="[]")return[];try{let r=JSON.parse(t);if(Array.isArray(r))return r.map(String).filter(Boolean);if(typeof r!="string")return console.warn(`\u26A0\uFE0F depends_on\u300C${t}\u300D\u4E0D\u662F\u5217\u8868\u5F62\u6001\uFF0C\u5DF2\u5FFD\u7565`),[]}catch{}let n=[...t.matchAll(/'([^']*)'|"([^"]*)"/g)].map(r=>r[1]??r[2]).filter(r=>!!r);if(n.length>0)return n;if(t.startsWith("[")||t.endsWith("]")){let r=t.match(/^\[(.*)\]$/)?.[1];return r==null&&console.warn(`\u26A0\uFE0F depends_on\u300C${t}\u300D\u4E2D\u62EC\u53F7\u4E0D\u5B8C\u6574\uFF0C\u5DF2\u6309\u88F8\u5217\u8868\u89E3\u6790`),xt((r??t).replace(/^\[/,"").replace(/\]$/,""))}return xt(t)}import{relative as Pn,sep as Vn}from"path";function O(e,t){return Pn(e,t).split(Vn).join("/")}var K=e=>String(e).padStart(2,"0");function vt(e){let t=e.trim().match(/^(\d{4})[-/]?(\d{1,2})[-/]?(\d{1,2})/);if(!t)return null;let[,n,r,o]=t;return!n||!r||!o?null:{y:n,m:K(+r),d:K(+o)}}function S(e){let t=vt(e);return t?`${t.y}-${t.m}-${t.d}`:""}function Ne(e){let t=vt(e);return t?`${t.y}${t.m}${t.d}`:e.trim().replace(/[-/]/g,"")}function St(){let e=new Date;return`${e.getFullYear()}-${K(e.getMonth()+1)}-${K(e.getDate())}`}function Me(){let e=new Date;return`${e.getFullYear()}${K(e.getMonth()+1)}${K(e.getDate())}`}var $t=840*60*1e3,X=$t/36e5;function J(e,t=Date.now()){return new Date(e.replace(" ","T")).getTime()>t+$t}var B=["\u5F85\u529E","\u8FDB\u884C\u4E2D","\u963B\u585E","\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03","\u672A\u6807\u6CE8"];function Et(e=".tasks"){let t=At(e,"active");return C(t).map(n=>{let r=Tt(n,"utf8"),o=Y(r);return{view:"\u5F85\u5B8C\u6210",title:me(r)||Gn(n,".md"),status:o.status||"\u672A\u6807\u6CE8",owner:o.owner||"\u672A\u6807\u6CE8",scope:o.scope||"-",created:o.created||W(n),updated:o.updated||"",completed:o.completed||"",depends:ke(o.depends_on),file:O(e,n)}})}function Kn(e){let t=z(e);return{owner:t.owner||"\u672A\u6807\u6CE8",status:t.status||"\u5DF2\u5B8C\u6210",scope:t.scope||"-"}}function Ct(e=".tasks",t){let n=At(e,"archive"),r=[];for(let o of C(n,t)){let s=Tt(o,"utf8");for(let i of F(s).blocks){let l=Kn(i.metaLine);r.push({view:"\u5DF2\u5F52\u6863",title:i.title,status:l.status,owner:l.owner,scope:l.scope,created:i.title.match(/^(\d{8})-/)?.[1]??"",updated:"",completed:i.completed,depends:[],file:O(e,o)})}}return r}function Xn(e){return e.split("+").map(t=>t.trim()).filter(Boolean)}function Jn(e,t){if(e===void 0)return!0;let n=Array.isArray(e)?e:[e],r=Xn(t);return n.some(o=>r.includes(o))}function wt(e,t){return e===void 0?!0:Array.isArray(e)?e.includes(t):e===t}function Zn(e,t){if(!wt(t.owner,e.owner)||!Jn(t.scope,e.scope)||!wt(t.status,e.status))return!1;if(t.date||t.since||t.until){let n=t.date?S(t.date):S(t.since||""),r=t.date?S(t.date):S(t.until||"");if(!n&&!r||!(e.view==="\u5DF2\u5F52\u6863"?[S(e.completed)]:[S(e.created),S(e.updated)].filter(Boolean)).some(i=>i&&(!n||i>=n)&&(!r||i<=r)))return!1}return!0}function Lt(e){return e.view==="\u5DF2\u5F52\u6863"?S(e.completed):S(e.created||e.updated||e.completed)}function Rt(e){let t=e.view==="\u5DF2\u5F52\u6863"?e.completed:e.completed||e.updated||e.created,n=S(t);if(!n)return"";let r=t.match(/(\d{1,2}):(\d{2})/),o=r?.[1]??"",s=r?.[2]??"";return n.replace(/-/g,"")+(r?`${o.padStart(2,"0")}${s}`:"0000")}function It(e){let t=new Map(B.map((n,r)=>[n,r]));return[...e].sort((n,r)=>{let o=t.get(n.status)??B.length,s=t.get(r.status)??B.length;return o!==s?o-s:Rt(r).localeCompare(Rt(n))})}function Ft(e){let t={},n={};for(let r of e)t[r.status]=(t[r.status]||0)+1,n[r.owner]=(n[r.owner]||0)+1;return{total:e.length,byStatus:t,byOwner:n}}function qn(e){if(!e.date&&!e.since&&!e.until)return;let t=e.date?S(e.date):S(e.since||""),n=e.date?S(e.date):S(e.until||"");if(!t&&!n)return;let r=o=>o.slice(0,7).replace("-","");return{since:t?r(t):void 0,until:n?r(n):void 0}}function je(e=".tasks",t="active",n={}){let r=[];(t==="active"||t==="all")&&r.push(...Et(e)),(t==="archived"||t==="all")&&r.push(...Ct(e,qn(n))),r=r.filter(s=>Zn(s,n));let o=It(r);return{rows:o,summary:Ft(o)}}function tr(e=".tasks"){let t=er(e,"active");return C(t).map(n=>{let r=Qn(n,"utf8"),o=Y(r),s=me(r)||_t(n,".md");return{file:n,name:_t(n,".md"),date:W(n),title:s,frontmatter:o,body:U(r).trim()}})}function nr(e=".tasks",t=!0){Ot(e,"active",{},t)}function Ot(e=".tasks",t="active",n={},r=!0){let{rows:o,summary:s}=je(e,t,n);rr(o,s,t,n,r)}function rr(e,t,n="active",r={},o=!0){if(console.log(`\u4EFB\u52A1\u603B\u89C8\uFF08${n==="active"?"\u5F85\u5B8C\u6210":n==="archived"?"\u5DF2\u5F52\u6863":"\u5F85\u5B8C\u6210 + \u5DF2\u5F52\u6863"}\uFF09\uFF1A
23
- `),e.length===0){let c=Object.values(r).some(d=>Array.isArray(d)?d.length>0:!!d);console.log(c?"\u65E0\u5339\u914D\u4EFB\u52A1":n==="archived"?"\u5F53\u524D\u65E0\u5DF2\u5F52\u6863\u4EFB\u52A1":n==="all"?"\u5F53\u524D\u65E0\u4EFB\u52A1":"\u5F53\u524D\u65E0\u5F85\u5B8C\u6210\u4EFB\u52A1");return}let i={};for(let c of e)(i[c.status]||=[]).push(c);let l=Object.keys(i).filter(c=>!B.includes(c)).sort();for(let c of[...B,...l]){let d=i[c]||[];if(d.length!==0){console.log(`\u3010${c}\u3011${d.length} \u9879`);for(let p of d){let m=n==="all"?`${p.view} `:"";console.log(` ${Lt(p)} ${m}${(p.owner||"\u672A\u6807\u6CE8").padEnd(8)} ${$(p.title,o)}\uFF08${p.scope||"-"}\uFF09`)}console.log("")}}or(t)}function or(e){let t=B.filter(o=>e.byStatus[o]),n=Object.keys(e.byStatus).filter(o=>!B.includes(o)),r=Object.keys(e.byOwner).sort((o,s)=>(e.byOwner[s]??0)-(e.byOwner[o]??0));if(console.log(`\u5171 ${e.total} \u4E2A\u4EFB\u52A1`),t.length>0||n.length>0){let o=t.map(s=>`${s} ${e.byStatus[s]}`);n.length>0&&o.push(`\u5176\u4ED6 ${n.reduce((s,i)=>s+(e.byStatus[i]??0),0)}`),console.log(`\u6309\u72B6\u6001\uFF1A${o.join("\u3000")}`)}r.length>0&&console.log(`\u6309\u8D1F\u8D23\u4EBA\uFF1A${r.map(o=>`${o} ${e.byOwner[o]}`).join("\u3000")}`)}import{mkdirSync as ar}from"fs";import{dirname as ur}from"path";import{createRequire as fr}from"module";import{writeFileSync as sr,renameSync as ir}from"fs";import{dirname as cr,join as lr}from"path";function _(e,t){let n=lr(cr(e),`.tmp-${process.pid}-${Date.now().toString(36)}`);sr(n,t),ir(n,e)}var dr=fr(import.meta.url);function Be(e){ar(ur(e),{recursive:!0})}var be=[{label:"\u89C6\u56FE",value:e=>e.view==="\u5DF2\u5F52\u6863"?"\u5DF2\u5F52\u6863":"\u5F85\u5B8C\u6210"},{label:"\u4EFB\u52A1\u540D",value:e=>e.title},{label:"\u72B6\u6001",value:e=>e.status},{label:"\u8D1F\u8D23\u4EBA",value:e=>e.owner},{label:"\u8303\u56F4",value:e=>e.scope},{label:"\u521B\u5EFA\u65E5\u671F",value:e=>e.created?S(e.created):""},{label:"\u66F4\u65B0\u65E5\u671F",value:e=>e.updated?S(e.updated):""},{label:"\u5B8C\u6210\u65F6\u95F4",value:e=>e.completed},{label:"\u4F9D\u8D56",value:e=>e.depends.join(", ")},{label:"\u6765\u6E90\u6587\u4EF6",value:e=>e.file}],pr=[{label:"\u4EFB\u52A1\u540D",value:e=>e.title},{label:"\u72B6\u6001",value:e=>e.status},{label:"\u8D1F\u8D23\u4EBA",value:e=>e.owner},{label:"\u8303\u56F4",value:e=>e.scope},{label:"\u521B\u5EFA\u65E5\u671F",value:e=>e.created?S(e.created):""},{label:"\u66F4\u65B0\u65E5\u671F",value:e=>e.updated?S(e.updated):""},{label:"\u5B8C\u6210\u65F6\u95F4",value:e=>e.completed},{label:"\u4F9D\u8D56",value:e=>e.depends.join(", ")},{label:"\u6765\u6E90\u6587\u4EF6",value:e=>e.file}],mr=[{label:"\u4EFB\u52A1\u540D",value:e=>e.title},{label:"\u72B6\u6001",value:e=>e.status},{label:"\u8D1F\u8D23\u4EBA",value:e=>e.owner},{label:"\u8303\u56F4",value:e=>e.scope},{label:"\u5B8C\u6210\u65F6\u95F4",value:e=>e.completed},{label:"\u6765\u6E90\u6587\u4EF6",value:e=>e.file}];function gr(e){return/[",\n\r]/.test(e)?`"${e.replace(/"/g,'""')}"`:e}function Nt(e,t=!0){let n=be.map(o=>o.label).join(","),r=e.map(o=>be.map(s=>gr($(s.value(o),t))).join(",")).join(`\r
22
+ `).replace(/\n/g,n)}function Kn(e){return e.trim().replace(/^['"]|['"]$/g,"")}function St(e){return e.split(/[,,]/).map(Kn).filter(Boolean)}function be(e){if(Array.isArray(e))return e.filter(r=>typeof r=="string");if(typeof e!="string")return[];let t=e.trim();if(!t||t==="[]")return[];try{let r=JSON.parse(t);if(Array.isArray(r))return r.map(String).filter(Boolean);if(typeof r!="string")return console.warn(`\u26A0\uFE0F depends_on\u300C${t}\u300D\u4E0D\u662F\u5217\u8868\u5F62\u6001\uFF0C\u5DF2\u5FFD\u7565`),[]}catch{}let n=[...t.matchAll(/'([^']*)'|"([^"]*)"/g)].map(r=>r[1]??r[2]).filter(r=>!!r);if(n.length>0)return n;if(t.startsWith("[")||t.endsWith("]")){let r=t.match(/^\[(.*)\]$/)?.[1];return r==null&&console.warn(`\u26A0\uFE0F depends_on\u300C${t}\u300D\u4E2D\u62EC\u53F7\u4E0D\u5B8C\u6574\uFF0C\u5DF2\u6309\u88F8\u5217\u8868\u89E3\u6790`),St((r??t).replace(/^\[/,"").replace(/\]$/,""))}return St(t)}import{relative as Xn,sep as Jn}from"path";function O(e,t){return Xn(e,t).split(Jn).join("/")}var K=e=>String(e).padStart(2,"0");function $t(e){let t=e.trim().match(/^(\d{4})[-/]?(\d{1,2})[-/]?(\d{1,2})/);if(!t)return null;let[,n,r,o]=t;return!n||!r||!o?null:{y:n,m:K(+r),d:K(+o)}}function S(e){let t=$t(e);return t?`${t.y}-${t.m}-${t.d}`:""}function je(e){let t=$t(e);return t?`${t.y}${t.m}${t.d}`:e.trim().replace(/[-/]/g,"")}function wt(){let e=new Date;return`${e.getFullYear()}-${K(e.getMonth()+1)}-${K(e.getDate())}`}function Be(){let e=new Date;return`${e.getFullYear()}${K(e.getMonth()+1)}${K(e.getDate())}`}var Rt=840*60*1e3,X=Rt/36e5;function J(e,t=Date.now()){return new Date(e.replace(" ","T")).getTime()>t+Rt}var B=["\u5F85\u529E","\u8FDB\u884C\u4E2D","\u963B\u585E","\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03","\u672A\u6807\u6CE8"];function Lt(e=".tasks"){let t=Ct(e,"active");return C(t).map(n=>{let r=Et(n,"utf8"),o=Y(r);return{view:"\u5F85\u5B8C\u6210",title:ge(r)||Zn(n,".md"),status:o.status||"\u672A\u6807\u6CE8",owner:o.owner||"\u672A\u6807\u6CE8",scope:o.scope||"-",created:o.created||W(n),updated:o.updated||"",completed:o.completed||"",depends:be(o.depends_on),file:O(e,n)}})}function qn(e){let t=H(e);return{owner:t.owner||"\u672A\u6807\u6CE8",status:t.status||"\u5DF2\u5B8C\u6210",scope:t.scope||"-"}}function It(e=".tasks",t){let n=Ct(e,"archive"),r=[];for(let o of C(n,t)){let s=Et(o,"utf8");for(let i of F(s).blocks){let l=qn(i.metaLine);r.push({view:"\u5DF2\u5F52\u6863",title:i.title,status:l.status,owner:l.owner,scope:l.scope,created:i.title.match(/^(\d{8})-/)?.[1]??"",updated:"",completed:i.completed,depends:[],file:O(e,o)})}}return r}function Qn(e){return e.split("+").map(t=>t.trim()).filter(Boolean)}function er(e,t){if(e===void 0)return!0;let n=Array.isArray(e)?e:[e],r=Qn(t);return n.some(o=>r.includes(o))}function Tt(e,t){return e===void 0?!0:Array.isArray(e)?e.includes(t):e===t}function tr(e,t){if(!Tt(t.owner,e.owner)||!er(t.scope,e.scope)||!Tt(t.status,e.status))return!1;if(t.date||t.since||t.until){let n=t.date?S(t.date):S(t.since||""),r=t.date?S(t.date):S(t.until||"");if(!n&&!r||!(e.view==="\u5DF2\u5F52\u6863"?[S(e.completed)]:[S(e.created),S(e.updated)].filter(Boolean)).some(i=>i&&(!n||i>=n)&&(!r||i<=r)))return!1}return!0}function Ft(e){return e.view==="\u5DF2\u5F52\u6863"?S(e.completed):S(e.created||e.updated||e.completed)}function At(e){let t=e.view==="\u5DF2\u5F52\u6863"?e.completed:e.completed||e.updated||e.created,n=S(t);if(!n)return"";let r=t.match(/(\d{1,2}):(\d{2})/),o=r?.[1]??"",s=r?.[2]??"";return n.replace(/-/g,"")+(r?`${o.padStart(2,"0")}${s}`:"0000")}function _t(e){let t=new Map(B.map((n,r)=>[n,r]));return[...e].sort((n,r)=>{let o=t.get(n.status)??B.length,s=t.get(r.status)??B.length;return o!==s?o-s:At(r).localeCompare(At(n))})}function Ot(e){let t={},n={};for(let r of e)t[r.status]=(t[r.status]||0)+1,n[r.owner]=(n[r.owner]||0)+1;return{total:e.length,byStatus:t,byOwner:n}}function nr(e){if(!e.date&&!e.since&&!e.until)return;let t=e.date?S(e.date):S(e.since||""),n=e.date?S(e.date):S(e.until||"");if(!t&&!n)return;let r=o=>o.slice(0,7).replace("-","");return{since:t?r(t):void 0,until:n?r(n):void 0}}function De(e=".tasks",t="active",n={}){let r=[];(t==="active"||t==="all")&&r.push(...Lt(e)),(t==="archived"||t==="all")&&r.push(...It(e,nr(n))),r=r.filter(s=>tr(s,n));let o=_t(r);return{rows:o,summary:Ot(o)}}function sr(e=".tasks"){let t=or(e,"active");return C(t).map(n=>{let r=rr(n,"utf8"),o=Y(r),s=ge(r)||Nt(n,".md");return{file:n,name:Nt(n,".md"),date:W(n),title:s,frontmatter:o,body:U(r).trim()}})}function ir(e=".tasks",t=!0){Mt(e,"active",{},t)}function Mt(e=".tasks",t="active",n={},r=!0){let{rows:o,summary:s}=De(e,t,n);cr(o,s,t,n,r)}function cr(e,t,n="active",r={},o=!0){if(console.log(`\u4EFB\u52A1\u603B\u89C8\uFF08${n==="active"?"\u5F85\u5B8C\u6210":n==="archived"?"\u5DF2\u5F52\u6863":"\u5F85\u5B8C\u6210 + \u5DF2\u5F52\u6863"}\uFF09\uFF1A
23
+ `),e.length===0){let c=Object.values(r).some(d=>Array.isArray(d)?d.length>0:!!d);console.log(c?"\u65E0\u5339\u914D\u4EFB\u52A1":n==="archived"?"\u5F53\u524D\u65E0\u5DF2\u5F52\u6863\u4EFB\u52A1":n==="all"?"\u5F53\u524D\u65E0\u4EFB\u52A1":"\u5F53\u524D\u65E0\u5F85\u5B8C\u6210\u4EFB\u52A1");return}let i={};for(let c of e)(i[c.status]||=[]).push(c);let l=Object.keys(i).filter(c=>!B.includes(c)).sort();for(let c of[...B,...l]){let d=i[c]||[];if(d.length!==0){console.log(`\u3010${c}\u3011${d.length} \u9879`);for(let p of d){let m=n==="all"?`${p.view} `:"";console.log(` ${Ft(p)} ${m}${(p.owner||"\u672A\u6807\u6CE8").padEnd(8)} ${$(p.title,o)}\uFF08${p.scope||"-"}\uFF09`)}console.log("")}}lr(t)}function lr(e){let t=B.filter(o=>e.byStatus[o]),n=Object.keys(e.byStatus).filter(o=>!B.includes(o)),r=Object.keys(e.byOwner).sort((o,s)=>(e.byOwner[s]??0)-(e.byOwner[o]??0));if(console.log(`\u5171 ${e.total} \u4E2A\u4EFB\u52A1`),t.length>0||n.length>0){let o=t.map(s=>`${s} ${e.byStatus[s]}`);n.length>0&&o.push(`\u5176\u4ED6 ${n.reduce((s,i)=>s+(e.byStatus[i]??0),0)}`),console.log(`\u6309\u72B6\u6001\uFF1A${o.join("\u3000")}`)}r.length>0&&console.log(`\u6309\u8D1F\u8D23\u4EBA\uFF1A${r.map(o=>`${o} ${e.byOwner[o]}`).join("\u3000")}`)}import{mkdirSync as pr}from"fs";import{dirname as mr}from"path";import{createRequire as gr}from"module";import{writeFileSync as ar,renameSync as ur}from"fs";import{dirname as fr,join as dr}from"path";function _(e,t){let n=dr(fr(e),`.tmp-${process.pid}-${Date.now().toString(36)}`);ar(n,t),ur(n,e)}var hr=gr(import.meta.url);function Ye(e){pr(mr(e),{recursive:!0})}var ye=[{label:"\u89C6\u56FE",value:e=>e.view==="\u5DF2\u5F52\u6863"?"\u5DF2\u5F52\u6863":"\u5F85\u5B8C\u6210"},{label:"\u4EFB\u52A1\u540D",value:e=>e.title},{label:"\u72B6\u6001",value:e=>e.status},{label:"\u8D1F\u8D23\u4EBA",value:e=>e.owner},{label:"\u8303\u56F4",value:e=>e.scope},{label:"\u521B\u5EFA\u65E5\u671F",value:e=>e.created?S(e.created):""},{label:"\u66F4\u65B0\u65E5\u671F",value:e=>e.updated?S(e.updated):""},{label:"\u5B8C\u6210\u65F6\u95F4",value:e=>e.completed},{label:"\u4F9D\u8D56",value:e=>e.depends.join(", ")},{label:"\u6765\u6E90\u6587\u4EF6",value:e=>e.file}],kr=[{label:"\u4EFB\u52A1\u540D",value:e=>e.title},{label:"\u72B6\u6001",value:e=>e.status},{label:"\u8D1F\u8D23\u4EBA",value:e=>e.owner},{label:"\u8303\u56F4",value:e=>e.scope},{label:"\u521B\u5EFA\u65E5\u671F",value:e=>e.created?S(e.created):""},{label:"\u66F4\u65B0\u65E5\u671F",value:e=>e.updated?S(e.updated):""},{label:"\u5B8C\u6210\u65F6\u95F4",value:e=>e.completed},{label:"\u4F9D\u8D56",value:e=>e.depends.join(", ")},{label:"\u6765\u6E90\u6587\u4EF6",value:e=>e.file}],br=[{label:"\u4EFB\u52A1\u540D",value:e=>e.title},{label:"\u72B6\u6001",value:e=>e.status},{label:"\u8D1F\u8D23\u4EBA",value:e=>e.owner},{label:"\u8303\u56F4",value:e=>e.scope},{label:"\u5B8C\u6210\u65F6\u95F4",value:e=>e.completed},{label:"\u6765\u6E90\u6587\u4EF6",value:e=>e.file}];function yr(e){return/[",\n\r]/.test(e)?`"${e.replace(/"/g,'""')}"`:e}function jt(e,t=!0){let n=ye.map(o=>o.label).join(","),r=e.map(o=>ye.map(s=>yr($(s.value(o),t))).join(",")).join(`\r
24
24
  `);return`\uFEFF${n}${r?`\r
25
- ${r}`:""}`}function Mt(e,t,n=!0){let r=e.map(o=>({view:o.view==="\u5DF2\u5F52\u6863"?"archived":"active",title:$(o.title,n),status:$(o.status,n),owner:$(o.owner,n),scope:$(o.scope,n),created:$(o.created,n),updated:$(o.updated,n),completed:$(o.completed,n),depends:o.depends.map(s=>$(s,n)),file:$(o.file,n)}));return JSON.stringify({schemaVersion:1,summary:t,items:r},null,2)}async function hr(e,t,n=!0){let r=dr("exceljs"),o=new r.Workbook,s=e.filter(u=>u.view==="\u5F85\u5B8C\u6210"),i=e.filter(u=>u.view==="\u5DF2\u5F52\u6863"),l=(u,a,f)=>{u.columns=a.map(g=>({header:g.label,key:g.label,width:Math.max(g.label.length+4,14)})),u.getRow(1).font={bold:!0};for(let g of f)u.addRow(a.map(b=>$(b.value(g),n)))},c=o.addWorksheet("\u5F85\u5B8C\u6210");l(c,pr,s);let d=o.addWorksheet("\u5DF2\u5F52\u6863");l(d,mr,i);let p=o.addWorksheet("\u6C47\u603B");p.columns=[{header:"\u7C7B\u522B",key:"k",width:10},{header:"\u6570\u503C",key:"v",width:12}];let m=(u,a)=>{p.addRow([u,""]).font={bold:!0};for(let[f,g]of Object.entries(a).sort((b,w)=>w[1]-b[1]))p.addRow([f,g])};p.addRow(["\u4EFB\u52A1\u603B\u6570",t.total]).font={bold:!0},m("\u6309\u72B6\u6001",t.byStatus),m("\u6309\u8D1F\u8D23\u4EBA",t.byOwner),p.addRow([]);let h=p.addRow(be.map(u=>u.label));h.font={bold:!0};for(let u of e)p.addRow(be.map(a=>$(a.value(u),n)));return Buffer.from(await o.xlsx.writeBuffer())}async function kr(e,t,n,r=!0){let o=e.split(".").pop()?.toLowerCase();if(o==="csv")Be(e),_(e,Nt(t,r));else if(o==="json")Be(e),_(e,Mt(t,n,r));else if(o==="xlsx")Be(e),_(e,await hr(t,n,r));else throw new Error(`\u4E0D\u652F\u6301\u7684\u5BFC\u51FA\u683C\u5F0F\u300C${o||""}\u300D\uFF0C\u4EC5\u652F\u6301 .csv / .xlsx / .json`)}import{existsSync as Ye,mkdirSync as Yt}from"fs";import{join as Q}from"path";import{createRequire as Er}from"module";import{openSync as br,writeSync as yr,readFileSync as xr,unlinkSync as jt,statSync as vr,closeSync as Sr}from"fs";import{join as Bt}from"path";var $r=600*1e3,wr=1800*1e3,De={pid:process.pid,startedAt:Math.round(Date.now()-process.uptime()*1e3)};function Dt(e){try{let t=JSON.parse(xr(e,"utf8"));if(typeof t.pid=="number"&&typeof t.startedAt=="number")return{pid:t.pid,startedAt:t.startedAt}}catch{}return null}function Rr(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}function Tr(e){try{return Date.now()-vr(e).mtimeMs}catch{return Number.POSITIVE_INFINITY}}function Ar(e,t,n){let r=Tr(e);return r>wr?!0:t?!Rr(t.pid):r>n}function Z(e,t=$r){let n=Bt(e,".archive.lock");for(let r=0;r<2;r++)try{let o=br(n,"wx");return yr(o,JSON.stringify(De)),o}catch{if(!Ar(n,Dt(n),t))return null;try{jt(n)}catch{}}return null}function q(e,t){Sr(t);let n=Bt(e,".archive.lock"),r=Dt(n);if(!(!r||r.pid!==De.pid||r.startedAt!==De.startedAt))try{jt(n)}catch{}}var Cr=Er(import.meta.url),Ut={\u4EFB\u52A1\u540D:"title",\u6807\u9898:"title",\u4E8B\u9879:"title",\u4EFB\u52A1:"title",\u4EFB\u52A1\u6807\u9898:"title",\u4E8B\u9879\u540D\u79F0:"title",title:"title",name:"title",task:"title",subject:"title",summary:"title",\u72B6\u6001:"status",status:"status",state:"status",\u8D1F\u8D23\u4EBA:"owner",\u7ECF\u529E\u4EBA:"owner",\u5904\u7406\u4EBA:"owner",\u6267\u884C\u4EBA:"owner",\u6307\u6D3E\u7ED9:"owner",owner:"owner",assignee:"owner",handler:"owner",\u8303\u56F4:"scope",\u9879\u76EE:"scope",\u6A21\u5757:"scope",scope:"scope",project:"scope",\u521B\u5EFA\u65E5\u671F:"created",\u521B\u5EFA\u65F6\u95F4:"created",created:"created",created_at:"created",createdat:"created",\u66F4\u65B0\u65E5\u671F:"updated",\u66F4\u65B0\u65F6\u95F4:"updated",updated:"updated",updated_at:"updated",updatedat:"updated",\u5B8C\u6210\u65F6\u95F4:"completed",\u5B8C\u6210\u65E5\u671F:"completed",\u622A\u6B62\u65F6\u95F4:"completed",\u622A\u6B62\u65E5\u671F:"completed",\u7ED3\u675F\u65F6\u95F4:"completed",completed:"completed",done:"completed",finished:"completed",completedat:"completed",due:"completed",\u4F9D\u8D56:"depends",\u4F9D\u8D56\u4EFB\u52A1:"depends",depends:"depends",depends_on:"depends",dependency:"depends",dependencies:"depends",\u5907\u6CE8:"body",\u63CF\u8FF0:"body",\u6B63\u6587:"body",\u8BF4\u660E:"body",description:"body",body:"body",note:"body",notes:"body",\u89C6\u56FE:"",\u6765\u6E90\u6587\u4EF6:"",\u6587\u4EF6:"",view:"",file:"",path:""},Lr=new Set(["title","depends","body"]),Ir=/^[A-Za-z][A-Za-z0-9_.-]*$/;function Wt(e,t={}){let n=new Map;return e.forEach((r,o)=>{let s=String(r??"").trim().toLowerCase();if(!s)return;let i;t[s]!==void 0&&(i=t[s]),i===void 0&&(i=Ut[s]),i!==""&&i&&!n.has(i)&&n.set(i,o)}),n}function Fr(e){let t=[],n=M(e).replace(/\r\n/g,`
25
+ ${r}`:""}`}function Bt(e,t,n=!0){let r=e.map(o=>({view:o.view==="\u5DF2\u5F52\u6863"?"archived":"active",title:$(o.title,n),status:$(o.status,n),owner:$(o.owner,n),scope:$(o.scope,n),created:$(o.created,n),updated:$(o.updated,n),completed:$(o.completed,n),depends:o.depends.map(s=>$(s,n)),file:$(o.file,n)}));return JSON.stringify({schemaVersion:1,summary:t,items:r},null,2)}async function xr(e,t,n=!0){let r=hr("exceljs"),o=new r.Workbook,s=e.filter(u=>u.view==="\u5F85\u5B8C\u6210"),i=e.filter(u=>u.view==="\u5DF2\u5F52\u6863"),l=(u,a,f)=>{u.columns=a.map(g=>({header:g.label,key:g.label,width:Math.max(g.label.length+4,14)})),u.getRow(1).font={bold:!0};for(let g of f)u.addRow(a.map(b=>$(b.value(g),n)))},c=o.addWorksheet("\u5F85\u5B8C\u6210");l(c,kr,s);let d=o.addWorksheet("\u5DF2\u5F52\u6863");l(d,br,i);let p=o.addWorksheet("\u6C47\u603B");p.columns=[{header:"\u7C7B\u522B",key:"k",width:10},{header:"\u6570\u503C",key:"v",width:12}];let m=(u,a)=>{p.addRow([u,""]).font={bold:!0};for(let[f,g]of Object.entries(a).sort((b,w)=>w[1]-b[1]))p.addRow([f,g])};p.addRow(["\u4EFB\u52A1\u603B\u6570",t.total]).font={bold:!0},m("\u6309\u72B6\u6001",t.byStatus),m("\u6309\u8D1F\u8D23\u4EBA",t.byOwner),p.addRow([]);let h=p.addRow(ye.map(u=>u.label));h.font={bold:!0};for(let u of e)p.addRow(ye.map(a=>$(a.value(u),n)));return Buffer.from(await o.xlsx.writeBuffer())}async function vr(e,t,n,r=!0){let o=e.split(".").pop()?.toLowerCase();if(o==="csv")Ye(e),_(e,jt(t,r));else if(o==="json")Ye(e),_(e,Bt(t,n,r));else if(o==="xlsx")Ye(e),_(e,await xr(t,n,r));else throw new Error(`\u4E0D\u652F\u6301\u7684\u5BFC\u51FA\u683C\u5F0F\u300C${o||""}\u300D\uFF0C\u4EC5\u652F\u6301 .csv / .xlsx / .json`)}import{existsSync as We,mkdirSync as Wt}from"fs";import{join as Q}from"path";import{createRequire as Fr}from"module";import{openSync as Sr,writeSync as $r,readFileSync as wr,unlinkSync as Dt,statSync as Rr,closeSync as Tr}from"fs";import{join as Yt}from"path";var Ar=600*1e3,Er=1800*1e3,Ue={pid:process.pid,startedAt:Math.round(Date.now()-process.uptime()*1e3)};function Ut(e){try{let t=JSON.parse(wr(e,"utf8"));if(typeof t.pid=="number"&&typeof t.startedAt=="number")return{pid:t.pid,startedAt:t.startedAt}}catch{}return null}function Cr(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}function Lr(e){try{return Date.now()-Rr(e).mtimeMs}catch{return Number.POSITIVE_INFINITY}}function Ir(e,t,n){let r=Lr(e);return r>Er?!0:t?!Cr(t.pid):r>n}function Z(e,t=Ar){let n=Yt(e,".archive.lock");for(let r=0;r<2;r++)try{let o=Sr(n,"wx");return $r(o,JSON.stringify(Ue)),o}catch{if(!Ir(n,Ut(n),t))return null;try{Dt(n)}catch{}}return null}function q(e,t){Tr(t);let n=Yt(e,".archive.lock"),r=Ut(n);if(!(!r||r.pid!==Ue.pid||r.startedAt!==Ue.startedAt))try{Dt(n)}catch{}}var _r=Fr(import.meta.url),Ht={\u4EFB\u52A1\u540D:"title",\u6807\u9898:"title",\u4E8B\u9879:"title",\u4EFB\u52A1:"title",\u4EFB\u52A1\u6807\u9898:"title",\u4E8B\u9879\u540D\u79F0:"title",title:"title",name:"title",task:"title",subject:"title",summary:"title",\u72B6\u6001:"status",status:"status",state:"status",\u8D1F\u8D23\u4EBA:"owner",\u7ECF\u529E\u4EBA:"owner",\u5904\u7406\u4EBA:"owner",\u6267\u884C\u4EBA:"owner",\u6307\u6D3E\u7ED9:"owner",owner:"owner",assignee:"owner",handler:"owner",\u8303\u56F4:"scope",\u9879\u76EE:"scope",\u6A21\u5757:"scope",scope:"scope",project:"scope",\u521B\u5EFA\u65E5\u671F:"created",\u521B\u5EFA\u65F6\u95F4:"created",created:"created",created_at:"created",createdat:"created",\u66F4\u65B0\u65E5\u671F:"updated",\u66F4\u65B0\u65F6\u95F4:"updated",updated:"updated",updated_at:"updated",updatedat:"updated",\u5B8C\u6210\u65F6\u95F4:"completed",\u5B8C\u6210\u65E5\u671F:"completed",\u622A\u6B62\u65F6\u95F4:"completed",\u622A\u6B62\u65E5\u671F:"completed",\u7ED3\u675F\u65F6\u95F4:"completed",completed:"completed",done:"completed",finished:"completed",completedat:"completed",due:"completed",\u4F9D\u8D56:"depends",\u4F9D\u8D56\u4EFB\u52A1:"depends",depends:"depends",depends_on:"depends",dependency:"depends",dependencies:"depends",\u5907\u6CE8:"body",\u63CF\u8FF0:"body",\u6B63\u6587:"body",\u8BF4\u660E:"body",description:"body",body:"body",note:"body",notes:"body",\u89C6\u56FE:"",\u6765\u6E90\u6587\u4EF6:"",\u6587\u4EF6:"",view:"",file:"",path:""},Or=new Set(["title","depends","body"]),Nr=/^[A-Za-z][A-Za-z0-9_.-]*$/;function zt(e,t={}){let n=new Map;return e.forEach((r,o)=>{let s=String(r??"").trim().toLowerCase();if(!s)return;let i;t[s]!==void 0&&(i=t[s]),i===void 0&&(i=Ht[s]),i!==""&&i&&!n.has(i)&&n.set(i,o)}),n}function Mr(e){let t=[],n=M(e).replace(/\r\n/g,`
26
26
  `).replace(/\r/g,`
27
27
  `),r=[],o="",s=!1;for(let i=0;i<n.length;i++){let l=n[i];s?l==='"'?n[i+1]==='"'?(o+='"',i++):s=!1:o+=l:l==='"'?s=!0:l===","?(r.push(o),o=""):l===`
28
- `?(r.push(o),t.push(r),r=[],o=""):o+=l}return(o!==""||r.length>0)&&(r.push(o),t.push(r)),t.filter(i=>i.length>1||(i[0]||"").trim()!=="")}function _r(e,t){let n=Fr(e);if(n.length===0)return[];let r=Wt(n[0]??[],t),o=[];for(let s=1;s<n.length;s++){let i={},l=n[s]??[];for(let[c,d]of r)i[c]=(l[d]??"").trim();(i.title||Object.keys(i).length>0)&&o.push(i)}return o}function Or(e,t){let n=[];for(let r=1;r<=(e.rowCount||0);r++){let o=e.getRow(r),s=[];for(let l=1;l<=(o.cellCount||0);l++)s.push(o.getCell(l).text??"");if(s.every(l=>l.trim()===""))continue;let i=Wt(s,t);if(i.has("title")){for(let l=r+1;l<=e.rowCount;l++){let c=e.getRow(l),d={},p=!0;for(let[m,h]of i){let u=(c.getCell(h+1).text??"").trim();u&&(p=!1),d[m]=u}!p&&(d.title||Object.keys(d).length>0)&&n.push(d)}break}}return n}async function Nr(e,t){let n=Cr("exceljs"),r=new n.Workbook;await r.xlsx.readFile(e);let o=[];for(let s of r.worksheets)s.name.includes("\u6C47\u603B")||o.push(...Or(s,t));return o}function Mr(e,t){let n=JSON.parse(e);if(!Array.isArray(n)&&typeof n.schemaVersion=="number"){let s=n.schemaVersion;s>1&&console.warn(`\u26A0\uFE0F \u5BFC\u5165 JSON \u6765\u81EA\u66F4\u9AD8 schema \u7248\u672C v${s}\uFF0C\u5B57\u6BB5\u89E3\u6790\u53EF\u80FD\u4E0D\u5B8C\u6574`)}let r=Array.isArray(n)?n:Array.isArray(n.items)?n.items:[],o=[];for(let s of r){if(!s||typeof s!="object")continue;let i={};for(let[l,c]of Object.entries(s)){let d=l.trim().toLowerCase(),p;t[d]!==void 0&&(p=t[d]),p===void 0&&(p=Ut[d]),p&&(Array.isArray(c)?i[p]=c.join(","):c!=null&&(i[p]=String(c)))}o.push(i)}return o}function jr(e){let t=e.trim().replace(/[\\/:*?"<>|]/g," ").replace(/\s+/g," "),n=t.length>24;return{slug:t.slice(0,24).trim().replace(/\s+/g,"-")||"\u4EFB\u52A1",truncated:n}}function Br(e,t,n){let r={};for(let[o,s]of Object.entries(e)){if(Lr.has(o)||fe.includes(o))continue;let i=(s??"").trim();if(i){if(!Ir.test(o)){n.push(`\u4EFB\u52A1\u300C${t}\u300D\u81EA\u5B9A\u4E49\u5217\u540D\u300C${o}\u300D\u975E\u6CD5\uFF08\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u4EC5\u542B\u5B57\u6BCD/\u6570\u5B57/\u4E0B\u5212\u7EBF/\u4E2D\u5212\u7EBF/\u70B9\uFF09\uFF0C\u672A\u5199\u5165 frontmatter`);continue}if(/[\r\n]/.test(i)){n.push(`\u4EFB\u52A1\u300C${t}\u300D\u81EA\u5B9A\u4E49\u5217\u300C${o}\u300D\u503C\u542B\u6362\u884C\uFF0C\u672A\u5199\u5165 frontmatter`);continue}r[o]=i}}return r}function Dr(e,t,n){let r=(e.title||"").trim();if(!r)return n.push(`\u8DF3\u8FC7\u4E00\u884C\uFF1A\u7F3A\u5C11\u4EFB\u52A1\u540D\uFF08${Object.entries(e).slice(0,3).map(([d,p])=>`${d}=${p}`).join(" ")}\uFF09`),{ok:!1};let o=(e.status||"").trim()||"\u5F85\u529E";re.includes(o)||(n.push(`\u4EFB\u52A1\u300C${r}\u300D\u72B6\u6001\u300C${o}\u300D\u975E\u6CD5\uFF0C\u5DF2\u5F52\u4E3A\u5F85\u529E`),o="\u5F85\u529E");let s=e.completed?.trim()?A(e.completed.trim()):"";s&&!P.includes(o)&&(n.push(`\u4EFB\u52A1\u300C${r}\u300D\u5E26\u5B8C\u6210\u65F6\u95F4\u4F46\u72B6\u6001\u4E3A\u300C${o}\u300D\uFF0C\u5DF2\u7F6E\u4E3A\u5DF2\u5B8C\u6210`),o="\u5DF2\u5B8C\u6210");let i=(e.owner||"").trim()||t.owner||"";i=i.replace(/\s+/g,"");let l=(e.scope||"").trim()||t.scope||"-";e.scope&&/[、,,()()]/.test(e.scope.trim())&&n.push(`\u4EFB\u52A1\u300C${r}\u300D\u8303\u56F4\u300C${e.scope.trim()}\u300D\u542B\u987F\u53F7/\u9017\u53F7/\u62EC\u53F7\uFF0C\u5C06\u6309\u5355\u503C\u5199\u5165\uFF1B\u591A\u503C\u8BF7\u7528\u534A\u89D2\u52A0\u53F7\uFF08\u5982 toolkit+lxgl-web\uFF09\uFF0C\u62EC\u53F7\u6CE8\u91CA\u8BF7\u79FB\u5165\u6B63\u6587`);let c=(e.depends||"").split(/[,,;;]/).map(d=>d.trim()).filter(Boolean);return{ok:!0,t:{title:r,status:o,owner:i||"\u672A\u6807\u6CE8",scope:l,created:Ne(e.created||""),updated:Ne(e.updated||""),completed:s,depends:c,body:e.body?.trim()||"",extra:Br(e,r,n)}}}function Yr(e,t,n,r){let o=t.created||Me(),s=Q(e,"active",o.slice(0,6)),{slug:i,truncated:l}=jr(t.title);l&&r.push(`\u4EFB\u52A1\u300C${t.title}\u300D\u6807\u9898\u8FC7\u957F\uFF0C\u6587\u4EF6\u540D\u5DF2\u622A\u65AD`);let c=`${o}-${t.owner}-${i}`,d=1,p=Q(s,`${c}.md`);for(;Ye(p);)p=Q(s,`${c}-${d++}.md`);let h=["---",`owner: ${t.owner}`,`status: ${t.status}`,`created: ${o}`,`updated: ${t.updated||Me()}`,`completed: ${t.completed?`'${t.completed}'`:"''"}`,`depends_on: ${JSON.stringify(t.depends)}`,`scope: ${t.scope}`,...Object.entries(t.extra).map(([u,a])=>`${u}: ${a}`),"---","",`# ${t.title}`].join(`
28
+ `?(r.push(o),t.push(r),r=[],o=""):o+=l}return(o!==""||r.length>0)&&(r.push(o),t.push(r)),t.filter(i=>i.length>1||(i[0]||"").trim()!=="")}function jr(e,t){let n=Mr(e);if(n.length===0)return[];let r=zt(n[0]??[],t),o=[];for(let s=1;s<n.length;s++){let i={},l=n[s]??[];for(let[c,d]of r)i[c]=(l[d]??"").trim();(i.title||Object.keys(i).length>0)&&o.push(i)}return o}function Br(e,t){let n=[];for(let r=1;r<=(e.rowCount||0);r++){let o=e.getRow(r),s=[];for(let l=1;l<=(o.cellCount||0);l++)s.push(o.getCell(l).text??"");if(s.every(l=>l.trim()===""))continue;let i=zt(s,t);if(i.has("title")){for(let l=r+1;l<=e.rowCount;l++){let c=e.getRow(l),d={},p=!0;for(let[m,h]of i){let u=(c.getCell(h+1).text??"").trim();u&&(p=!1),d[m]=u}!p&&(d.title||Object.keys(d).length>0)&&n.push(d)}break}}return n}async function Dr(e,t){let n=_r("exceljs"),r=new n.Workbook;await r.xlsx.readFile(e);let o=[];for(let s of r.worksheets)s.name.includes("\u6C47\u603B")||o.push(...Br(s,t));return o}function Yr(e,t){let n=JSON.parse(e);if(!Array.isArray(n)&&typeof n.schemaVersion=="number"){let s=n.schemaVersion;s>1&&console.warn(`\u26A0\uFE0F \u5BFC\u5165 JSON \u6765\u81EA\u66F4\u9AD8 schema \u7248\u672C v${s}\uFF0C\u5B57\u6BB5\u89E3\u6790\u53EF\u80FD\u4E0D\u5B8C\u6574`)}let r=Array.isArray(n)?n:Array.isArray(n.items)?n.items:[],o=[];for(let s of r){if(!s||typeof s!="object")continue;let i={};for(let[l,c]of Object.entries(s)){let d=l.trim().toLowerCase(),p;t[d]!==void 0&&(p=t[d]),p===void 0&&(p=Ht[d]),p&&(Array.isArray(c)?i[p]=c.join(","):c!=null&&(i[p]=String(c)))}o.push(i)}return o}function Ur(e){let t=e.trim().replace(/[\\/:*?"<>|]/g," ").replace(/\s+/g," "),n=t.length>24;return{slug:t.slice(0,24).trim().replace(/\s+/g,"-")||"\u4EFB\u52A1",truncated:n}}function Wr(e,t,n){let r={};for(let[o,s]of Object.entries(e)){if(Or.has(o)||de.includes(o))continue;let i=(s??"").trim();if(i){if(!Nr.test(o)){n.push(`\u4EFB\u52A1\u300C${t}\u300D\u81EA\u5B9A\u4E49\u5217\u540D\u300C${o}\u300D\u975E\u6CD5\uFF08\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u4EC5\u542B\u5B57\u6BCD/\u6570\u5B57/\u4E0B\u5212\u7EBF/\u4E2D\u5212\u7EBF/\u70B9\uFF09\uFF0C\u672A\u5199\u5165 frontmatter`);continue}if(/[\r\n]/.test(i)){n.push(`\u4EFB\u52A1\u300C${t}\u300D\u81EA\u5B9A\u4E49\u5217\u300C${o}\u300D\u503C\u542B\u6362\u884C\uFF0C\u672A\u5199\u5165 frontmatter`);continue}r[o]=i}}return r}function Hr(e,t,n){let r=(e.title||"").trim();if(!r)return n.push(`\u8DF3\u8FC7\u4E00\u884C\uFF1A\u7F3A\u5C11\u4EFB\u52A1\u540D\uFF08${Object.entries(e).slice(0,3).map(([d,p])=>`${d}=${p}`).join(" ")}\uFF09`),{ok:!1};let o=(e.status||"").trim()||"\u5F85\u529E";re.includes(o)||(n.push(`\u4EFB\u52A1\u300C${r}\u300D\u72B6\u6001\u300C${o}\u300D\u975E\u6CD5\uFF0C\u5DF2\u5F52\u4E3A\u5F85\u529E`),o="\u5F85\u529E");let s=e.completed?.trim()?A(e.completed.trim()):"";s&&!P.includes(o)&&(n.push(`\u4EFB\u52A1\u300C${r}\u300D\u5E26\u5B8C\u6210\u65F6\u95F4\u4F46\u72B6\u6001\u4E3A\u300C${o}\u300D\uFF0C\u5DF2\u7F6E\u4E3A\u5DF2\u5B8C\u6210`),o="\u5DF2\u5B8C\u6210");let i=(e.owner||"").trim()||t.owner||"";i=i.replace(/\s+/g,"");let l=(e.scope||"").trim()||t.scope||"-";e.scope&&/[、,,()()]/.test(e.scope.trim())&&n.push(`\u4EFB\u52A1\u300C${r}\u300D\u8303\u56F4\u300C${e.scope.trim()}\u300D\u542B\u987F\u53F7/\u9017\u53F7/\u62EC\u53F7\uFF0C\u5C06\u6309\u5355\u503C\u5199\u5165\uFF1B\u591A\u503C\u8BF7\u7528\u534A\u89D2\u52A0\u53F7\uFF08\u5982 toolkit+lxgl-web\uFF09\uFF0C\u62EC\u53F7\u6CE8\u91CA\u8BF7\u79FB\u5165\u6B63\u6587`);let c=(e.depends||"").split(/[,,;;]/).map(d=>d.trim()).filter(Boolean);return{ok:!0,t:{title:r,status:o,owner:i||"\u672A\u6807\u6CE8",scope:l,created:je(e.created||""),updated:je(e.updated||""),completed:s,depends:c,body:e.body?.trim()||"",extra:Wr(e,r,n)}}}function zr(e,t,n,r){let o=t.created||Be(),s=Q(e,"active",o.slice(0,6)),{slug:i,truncated:l}=Ur(t.title);l&&r.push(`\u4EFB\u52A1\u300C${t.title}\u300D\u6807\u9898\u8FC7\u957F\uFF0C\u6587\u4EF6\u540D\u5DF2\u622A\u65AD`);let c=`${o}-${t.owner}-${i}`,d=1,p=Q(s,`${c}.md`);for(;We(p);)p=Q(s,`${c}-${d++}.md`);let h=["---",`owner: ${t.owner}`,`status: ${t.status}`,`created: ${o}`,`updated: ${t.updated||Be()}`,`completed: ${t.completed?`'${t.completed}'`:"''"}`,`depends_on: ${JSON.stringify(t.depends)}`,`scope: ${t.scope}`,...Object.entries(t.extra).map(([u,a])=>`${u}: ${a}`),"---","",`# ${t.title}`].join(`
29
29
  `)+(t.body?`
30
30
 
31
31
  ${t.body}
32
32
  `:`
33
- `);return n||(Yt(s,{recursive:!0}),_(p,h)),p}function Ur(e,t){let n=e.completed||"",r=n?S(n):"";if(!r)return t.push(`\u4EFB\u52A1\u300C${e.title}\u300D\u7F3A\u5C11\u5B8C\u6210\u65F6\u95F4\uFF0C\u65E0\u6CD5\u76F4\u63A5\u5F52\u6863\uFF08\u53EF\u6539\u7528 active \u76EE\u6807\uFF09`),null;let o=Object.keys(e.extra);o.length>0&&t.push(`\u4EFB\u52A1\u300C${e.title}\u300D\u81EA\u5B9A\u4E49\u5217\u300C${o.join("\u3001")}\u300D\u5728 archive \u76EE\u6807\u65E0\u627F\u8F7D\u4F4D\u7F6E\uFF0C\u672A\u5199\u5165\uFF08\u9700\u4FDD\u7559\u8BF7\u6539\u7528 active \u76EE\u6807\uFF09`);let s=r.replace(/-/g,""),i=`> \u8D1F\u8D23\u4EBA\uFF1A${e.owner}\u3000\u72B6\u6001\uFF1A${e.status}\u3000\u8303\u56F4\uFF1A${e.scope}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${n}`;return{date:s,block:{title:e.title,metaLine:i,completed:n,body:e.body}}}function Wr(e,t){return Q(e,"archive",t.slice(0,6),`${t}.md`)}function zr(e,t,n){let r=Q(e,"archive",t.slice(0,6)),o=Q(r,`${t}.md`);Yt(r,{recursive:!0});let s=`# ${t} \u5F52\u6863
33
+ `);return n||(Wt(s,{recursive:!0}),_(p,h)),p}function Pr(e,t){let n=e.completed||"",r=n?S(n):"";if(!r)return t.push(`\u4EFB\u52A1\u300C${e.title}\u300D\u7F3A\u5C11\u5B8C\u6210\u65F6\u95F4\uFF0C\u65E0\u6CD5\u76F4\u63A5\u5F52\u6863\uFF08\u53EF\u6539\u7528 active \u76EE\u6807\uFF09`),null;let o=Object.keys(e.extra);o.length>0&&t.push(`\u4EFB\u52A1\u300C${e.title}\u300D\u81EA\u5B9A\u4E49\u5217\u300C${o.join("\u3001")}\u300D\u5728 archive \u76EE\u6807\u65E0\u627F\u8F7D\u4F4D\u7F6E\uFF0C\u672A\u5199\u5165\uFF08\u9700\u4FDD\u7559\u8BF7\u6539\u7528 active \u76EE\u6807\uFF09`);let s=r.replace(/-/g,""),i=`> \u8D1F\u8D23\u4EBA\uFF1A${e.owner}\u3000\u72B6\u6001\uFF1A${e.status}\u3000\u8303\u56F4\uFF1A${e.scope}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${n}`;return{date:s,block:{title:e.title,metaLine:i,completed:n,body:e.body}}}function Vr(e,t){return Q(e,"archive",t.slice(0,6),`${t}.md`)}function Gr(e,t,n){let r=Q(e,"archive",t.slice(0,6)),o=Q(r,`${t}.md`);Wt(r,{recursive:!0});let s=`# ${t} \u5F52\u6863
34
34
 
35
35
  > \u672C\u6587\u4EF6\u7531 \`toolkit tasks import --target archive\` \u81EA\u52A8\u751F\u6210\u3002
36
- `,i=[];if(Ye(o)){let l=F(E(o));l.header&&(s=l.header),i=l.blocks}i.push(...n),_(o,H(s,i))}async function Hr(e,t=".tasks",n={}){let r=!!n.dryRun,o=[],s=Object.fromEntries(Object.entries(n.importColumns??{}).map(([a,f])=>[String(a).trim().toLowerCase(),String(f)])),i=e.split(".").pop()?.toLowerCase(),l;if(i==="csv")l=_r(E(e),s);else if(i==="xlsx")l=await Nr(e,s);else if(i==="json")l=Mr(E(e),s);else throw new Error(`\u4E0D\u652F\u6301\u7684\u5BFC\u5165\u683C\u5F0F\u300C${i||""}\u300D\uFF0C\u4EC5\u652F\u6301 .csv / .xlsx / .json`);if(l.length===0)return console.log("\u672A\u8BC6\u522B\u5230\u53EF\u5BFC\u5165\u7684\u4EFB\u52A1\u884C\uFF08\u68C0\u67E5\u8868\u5934\u662F\u5426\u5305\u542B\u300C\u4EFB\u52A1\u540D/\u6807\u9898\u300D\u7B49\u5217\u540D\uFF09"),{created:0,skipped:0,warnings:o,dryRun:r};let c=0,d=0,p=n.target??"active",m=new Map,h=null;if(!r&&Ye(t)&&(h=Z(t),h===null)){let a="\u68C0\u6D4B\u5230\u5199\u5165\u9501 .archive.lock\uFF0C\u53EF\u80FD\u6709\u5E76\u53D1\u5199\u5165\u6B63\u5728\u8FDB\u884C\uFF0C\u672C\u6B21\u5DF2\u8DF3\u8FC7";return console.warn(`\u26A0\uFE0F ${a}`),{created:0,skipped:l.length,warnings:[...o,a],dryRun:r}}try{for(let a of l){let f=Dr(a,n,o);if(!f.ok){d++;continue}let g=f.t;if(p==="archive"){let b=Ur(g,o);if(!b){d++;continue}let w=m.get(b.date);w?w.push(b.block):m.set(b.date,[b.block]),console.log(`${r?"[\u9884\u6F14] \u5C06\u5199\u5165\u5F52\u6863":"\u5DF2\u5199\u5165\u5F52\u6863"} \u2192 ${O(t,Wr(t,b.date))}`)}else{let b=Yr(t,g,r,o);console.log(`${r?"[\u9884\u6F14] \u5C06\u521B\u5EFA":"\u5DF2\u521B\u5EFA"} \u2192 ${O(t,b)}`)}c++}if(!r)for(let[a,f]of m)zr(t,a,f)}finally{if(h!==null)try{q(t,h)}catch{}}for(let a of o)console.warn(`\u26A0\uFE0F ${a}`);return console.log(`${r?"\u9884\u6F14\u53EF\u5BFC\u5165":"\u5DF2\u5BFC\u5165"} ${c} \u4E2A\u4EFB\u52A1\uFF0C\u8DF3\u8FC7 ${d} \u884C`),{created:c,skipped:d,warnings:o,dryRun:r}}import{readFileSync as Ue,mkdirSync as Pr,unlinkSync as Vr,existsSync as Gr,readdirSync as Kr,rmdirSync as Xr}from"fs";import{join as ye,basename as xe,dirname as Ht,resolve as zt,sep as Jr}from"path";function ve(e,t){let n=zt(e),r=zt(t);for(;n!==r&&n.startsWith(r+Jr);){try{if(Kr(n).length>0)break;Xr(n)}catch{break}n=Ht(n)}}function Zr(e){let t=Ue(e,"utf8"),{blocks:n}=F(t);return n.map(r=>({block:Oe(r),completed:r.completed}))}function qr(e=".tasks",t=!0,n={}){let{dryRun:r=!1,warn:o=!0}=n,s=ye(e,"active"),i=ye(e,"archive"),l=[],c=C(s);if(c.length===0)return console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1\uFF0C\u65E0\u9700\u5F52\u6863"),{archived:0,skipped:[],warnings:l};let d=[],p=[];for(let u of c){let a=Ue(u,"utf8").replace(/\r\n?/g,`
37
- `),f=Y(a);if(!P.includes(f.status))continue;let g=(f.completed||"").trim();if(!L(g)){p.push(xe(u,".md")),console.log(g?`\u8DF3\u8FC7 ${xe(u,".md")}\uFF1Acompleted\u300C${g}\u300D\u65E0\u6CD5\u8BC6\u522B\u4E3A\u65E5\u671F\u6216\u65E5\u671F+\u65F6\u5206`:`\u8DF3\u8FC7 ${xe(u,".md")}\uFF1A\u7F3A\u5C11 completed \u5B8C\u6210\u65F6\u95F4`);continue}d.push({file:u,name:xe(u,".md"),owner:f.owner||"\u672A\u6807\u6CE8",status:f.status||"\u672A\u6807\u6CE8",scope:f.scope||"-",completed:A(g),body:U(a).trim()})}if(d.length===0)return console.log("\u672C\u6B21\u65E0\u53EF\u5F52\u6863\u4EFB\u52A1"),{archived:0,skipped:p,warnings:l};if(o){let u=[],a=[],f=[];for(let g of d){let b=g.completed.replace(/-/g,"").slice(0,8),w=W(g.file);w&&b!==w&&u.push(`${g.name}\uFF08\u5B8C\u6210\u65F6\u95F4 ${g.completed}\uFF0C\u521B\u5EFA\u65E5 ${w}\uFF09`),J(g.completed)?a.push(`${g.name}\uFF08\u5B8C\u6210\u65F6\u95F4 ${g.completed}\uFF09`):g.completed.endsWith(" 00:00")&&f.push(`${g.name}\uFF08\u5B8C\u6210\u65F6\u95F4 ${g.completed}\uFF09`)}u.length>0&&l.push(`\u5B8C\u6210\u65F6\u95F4\u4E0E\u521B\u5EFA\u65E5\u4E0D\u4E00\u81F4\u3001\u8BF7\u786E\u8BA4 completed \u662F\u5426\u586B\u9519\u7684 ${u.length} \u4E2A\u4EFB\u52A1\uFF1A${u.join("\uFF1B")}`),a.length>0&&l.push(`\u5B8C\u6210\u65F6\u95F4\u665A\u4E8E\u5F53\u524D\u7CFB\u7EDF\u65F6\u95F4 ${X} \u5C0F\u65F6\u4EE5\u4E0A\u3001\u7591\u4F3C\u65F6\u95F4\u6E90\u9519\u8BEF\u7684 ${a.length} \u4E2A\u4EFB\u52A1\uFF1A${a.join("\uFF1B")}`),f.length>0&&l.push(`\u5B8C\u6210\u65F6\u95F4\u6070\u4E3A\u96F6\u70B9\u6574\u3001\u7591\u4F3C\u53EA\u586B\u4E86\u65E5\u671F\u88AB\u8865\u96F6\u7684 ${f.length} \u4E2A\u4EFB\u52A1\uFF1A${f.join("\uFF1B")}`)}let m={};for(let u of d){let a=u.completed.replace(/-/g,"").slice(0,8);(m[a]||=[]).push(u)}let h=null;if(!r&&(h=Z(e),h===null)){let u="\u68C0\u6D4B\u5230\u5F52\u6863\u9501 .archive.lock\uFF0C\u53EF\u80FD\u6709\u5E76\u53D1\u5F52\u6863\u6B63\u5728\u8FDB\u884C\uFF0C\u672C\u6B21\u5DF2\u8DF3\u8FC7";return console.warn(`\u26A0\uFE0F ${u}`),{archived:0,skipped:p,warnings:[...l,u]}}try{let u=0,a=[];for(let[f,g]of Object.entries(m)){let b=ye(i,f.slice(0,6)),w=ye(b,`${f}.md`),j=Gr(w)?Ue(w,"utf8"):"",I=`# ${f} \u5F52\u6863
36
+ `,i=[];if(We(o)){let l=F(E(o));l.header&&(s=l.header),i=l.blocks}i.push(...n),_(o,z(s,i))}async function Kr(e,t=".tasks",n={}){let r=!!n.dryRun,o=[],s=Object.fromEntries(Object.entries(n.importColumns??{}).map(([a,f])=>[String(a).trim().toLowerCase(),String(f)])),i=e.split(".").pop()?.toLowerCase(),l;if(i==="csv")l=jr(E(e),s);else if(i==="xlsx")l=await Dr(e,s);else if(i==="json")l=Yr(E(e),s);else throw new Error(`\u4E0D\u652F\u6301\u7684\u5BFC\u5165\u683C\u5F0F\u300C${i||""}\u300D\uFF0C\u4EC5\u652F\u6301 .csv / .xlsx / .json`);if(l.length===0)return console.log("\u672A\u8BC6\u522B\u5230\u53EF\u5BFC\u5165\u7684\u4EFB\u52A1\u884C\uFF08\u68C0\u67E5\u8868\u5934\u662F\u5426\u5305\u542B\u300C\u4EFB\u52A1\u540D/\u6807\u9898\u300D\u7B49\u5217\u540D\uFF09"),{created:0,skipped:0,warnings:o,dryRun:r};let c=0,d=0,p=n.target??"active",m=new Map,h=null;if(!r&&We(t)&&(h=Z(t),h===null)){let a="\u68C0\u6D4B\u5230\u5199\u5165\u9501 .archive.lock\uFF0C\u53EF\u80FD\u6709\u5E76\u53D1\u5199\u5165\u6B63\u5728\u8FDB\u884C\uFF0C\u672C\u6B21\u5DF2\u8DF3\u8FC7";return console.warn(`\u26A0\uFE0F ${a}`),{created:0,skipped:l.length,warnings:[...o,a],dryRun:r}}try{for(let a of l){let f=Hr(a,n,o);if(!f.ok){d++;continue}let g=f.t;if(p==="archive"){let b=Pr(g,o);if(!b){d++;continue}let w=m.get(b.date);w?w.push(b.block):m.set(b.date,[b.block]),console.log(`${r?"[\u9884\u6F14] \u5C06\u5199\u5165\u5F52\u6863":"\u5DF2\u5199\u5165\u5F52\u6863"} \u2192 ${O(t,Vr(t,b.date))}`)}else{let b=zr(t,g,r,o);console.log(`${r?"[\u9884\u6F14] \u5C06\u521B\u5EFA":"\u5DF2\u521B\u5EFA"} \u2192 ${O(t,b)}`)}c++}if(!r)for(let[a,f]of m)Gr(t,a,f)}finally{if(h!==null)try{q(t,h)}catch{}}for(let a of o)console.warn(`\u26A0\uFE0F ${a}`);return console.log(`${r?"\u9884\u6F14\u53EF\u5BFC\u5165":"\u5DF2\u5BFC\u5165"} ${c} \u4E2A\u4EFB\u52A1\uFF0C\u8DF3\u8FC7 ${d} \u884C`),{created:c,skipped:d,warnings:o,dryRun:r}}import{readFileSync as He,mkdirSync as Xr,unlinkSync as Jr,existsSync as Zr,readdirSync as qr,rmdirSync as Qr}from"fs";import{join as xe,basename as ve,dirname as Vt,resolve as Pt,sep as eo}from"path";function Se(e,t){let n=Pt(e),r=Pt(t);for(;n!==r&&n.startsWith(r+eo);){try{if(qr(n).length>0)break;Qr(n)}catch{break}n=Vt(n)}}function to(e){let t=He(e,"utf8"),{blocks:n}=F(t);return n.map(r=>({block:Me(r),completed:r.completed}))}function no(e=".tasks",t=!0,n={}){let{dryRun:r=!1,warn:o=!0}=n,s=xe(e,"active"),i=xe(e,"archive"),l=[],c=C(s);if(c.length===0)return console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1\uFF0C\u65E0\u9700\u5F52\u6863"),{archived:0,skipped:[],warnings:l};let d=[],p=[];for(let u of c){let a=He(u,"utf8").replace(/\r\n?/g,`
37
+ `),f=Y(a);if(!P.includes(f.status))continue;let g=(f.completed||"").trim();if(!L(g)){p.push(ve(u,".md")),console.log(g?`\u8DF3\u8FC7 ${ve(u,".md")}\uFF1Acompleted\u300C${g}\u300D\u65E0\u6CD5\u8BC6\u522B\u4E3A\u65E5\u671F\u6216\u65E5\u671F+\u65F6\u5206`:`\u8DF3\u8FC7 ${ve(u,".md")}\uFF1A\u7F3A\u5C11 completed \u5B8C\u6210\u65F6\u95F4`);continue}d.push({file:u,name:ve(u,".md"),owner:f.owner||"\u672A\u6807\u6CE8",status:f.status||"\u672A\u6807\u6CE8",scope:f.scope||"-",completed:A(g),body:U(a).trim()})}if(d.length===0)return console.log("\u672C\u6B21\u65E0\u53EF\u5F52\u6863\u4EFB\u52A1"),{archived:0,skipped:p,warnings:l};if(o){let u=[],a=[],f=[];for(let g of d){let b=g.completed.replace(/-/g,"").slice(0,8),w=W(g.file);w&&b!==w&&u.push(`${g.name}\uFF08\u5B8C\u6210\u65F6\u95F4 ${g.completed}\uFF0C\u521B\u5EFA\u65E5 ${w}\uFF09`),J(g.completed)?a.push(`${g.name}\uFF08\u5B8C\u6210\u65F6\u95F4 ${g.completed}\uFF09`):g.completed.endsWith(" 00:00")&&f.push(`${g.name}\uFF08\u5B8C\u6210\u65F6\u95F4 ${g.completed}\uFF09`)}u.length>0&&l.push(`\u5B8C\u6210\u65F6\u95F4\u4E0E\u521B\u5EFA\u65E5\u4E0D\u4E00\u81F4\u3001\u8BF7\u786E\u8BA4 completed \u662F\u5426\u586B\u9519\u7684 ${u.length} \u4E2A\u4EFB\u52A1\uFF1A${u.join("\uFF1B")}`),a.length>0&&l.push(`\u5B8C\u6210\u65F6\u95F4\u665A\u4E8E\u5F53\u524D\u7CFB\u7EDF\u65F6\u95F4 ${X} \u5C0F\u65F6\u4EE5\u4E0A\u3001\u7591\u4F3C\u65F6\u95F4\u6E90\u9519\u8BEF\u7684 ${a.length} \u4E2A\u4EFB\u52A1\uFF1A${a.join("\uFF1B")}`),f.length>0&&l.push(`\u5B8C\u6210\u65F6\u95F4\u6070\u4E3A\u96F6\u70B9\u6574\u3001\u7591\u4F3C\u53EA\u586B\u4E86\u65E5\u671F\u88AB\u8865\u96F6\u7684 ${f.length} \u4E2A\u4EFB\u52A1\uFF1A${f.join("\uFF1B")}`)}let m={};for(let u of d){let a=u.completed.replace(/-/g,"").slice(0,8);(m[a]||=[]).push(u)}let h=null;if(!r&&(h=Z(e),h===null)){let u="\u68C0\u6D4B\u5230\u5F52\u6863\u9501 .archive.lock\uFF0C\u53EF\u80FD\u6709\u5E76\u53D1\u5F52\u6863\u6B63\u5728\u8FDB\u884C\uFF0C\u672C\u6B21\u5DF2\u8DF3\u8FC7";return console.warn(`\u26A0\uFE0F ${u}`),{archived:0,skipped:p,warnings:[...l,u]}}try{let u=0,a=[];for(let[f,g]of Object.entries(m)){let b=xe(i,f.slice(0,6)),w=xe(b,`${f}.md`),j=Zr(w)?He(w,"utf8"):"",I=`# ${f} \u5F52\u6863
38
38
 
39
- > \u672C\u6587\u4EF6\u7531 \`toolkit tasks archive\` \u81EA\u52A8\u751F\u6210\u3002`,T=[];if(j){let v=F(j);v.header&&(I=v.header),T.push(...v.blocks)}if(o){let v=new Set(T.map(R=>R.title)),k=g.filter(R=>v.has(R.name)).map(R=>R.name);k.length>0&&l.push(`\u5F52\u6863\u6587\u4EF6\u5DF2\u5B58\u5728\u540C\u540D\u4EFB\u52A1\uFF0C\u7591\u4F3C\u91CD\u590D\u5F52\u6863\u3001\u672C\u6B21\u4EE5\u65B0\u5185\u5BB9\u8986\u76D6\u540C\u540D\u5757\u7684 ${k.length} \u4E2A\u4EFB\u52A1\uFF1A${k.join("\u3001")}`)}if(T.push(...g.map(v=>({title:v.name,metaLine:`> \u8D1F\u8D23\u4EBA\uFF1A${v.owner}\u3000\u72B6\u6001\uFF1A${v.status}\u3000\u8303\u56F4\uFF1A${v.scope}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${v.completed}`,completed:v.completed,body:$(v.body,t)}))),r){console.log(`[\u9884\u6F14] \u5C06\u5F52\u6863 ${g.length} \u4E2A\u4EFB\u52A1 \u2192 ${f}.md`);for(let v of g)console.log(`[\u9884\u6F14] - ${v.name}`);continue}try{Pr(b,{recursive:!0});let v=j.includes(`\r
39
+ > \u672C\u6587\u4EF6\u7531 \`toolkit tasks archive\` \u81EA\u52A8\u751F\u6210\u3002`,T=[];if(j){let v=F(j);v.header&&(I=v.header),T.push(...v.blocks)}if(o){let v=new Set(T.map(R=>R.title)),k=g.filter(R=>v.has(R.name)).map(R=>R.name);k.length>0&&l.push(`\u5F52\u6863\u6587\u4EF6\u5DF2\u5B58\u5728\u540C\u540D\u4EFB\u52A1\uFF0C\u7591\u4F3C\u91CD\u590D\u5F52\u6863\u3001\u672C\u6B21\u4EE5\u65B0\u5185\u5BB9\u8986\u76D6\u540C\u540D\u5757\u7684 ${k.length} \u4E2A\u4EFB\u52A1\uFF1A${k.join("\u3001")}`)}if(T.push(...g.map(v=>({title:v.name,metaLine:`> \u8D1F\u8D23\u4EBA\uFF1A${v.owner}\u3000\u72B6\u6001\uFF1A${v.status}\u3000\u8303\u56F4\uFF1A${v.scope}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${v.completed}`,completed:v.completed,body:$(v.body,t)}))),r){console.log(`[\u9884\u6F14] \u5C06\u5F52\u6863 ${g.length} \u4E2A\u4EFB\u52A1 \u2192 ${f}.md`);for(let v of g)console.log(`[\u9884\u6F14] - ${v.name}`);continue}try{Xr(b,{recursive:!0});let v=j.includes(`\r
40
40
  `)?`\r
41
41
  `:`
42
- `;_(w,H(I,T,v));for(let R of g)Vr(R.file);let k=g[0];k&&ve(Ht(k.file),e),console.log(`\u5DF2\u5F52\u6863 ${g.length} \u4E2A\u4EFB\u52A1 \u2192 ${f}.md`),u+=g.length}catch(v){a.push(`${f}.md\uFF1A${v.message}`)}}for(let f of l)console.warn(`\u26A0\uFE0F ${f}`);if(a.length>0){console.error(`\u5F52\u6863\u5931\u8D25 ${a.length} \u4E2A\u65E5\u671F\u6587\u4EF6\uFF08active \u672A\u5220\u9664\uFF0C\u53EF\u91CD\u8BD5\uFF09\uFF1A`);for(let f of a)console.error(` - ${f}`)}return console.log(r?`[\u9884\u6F14] \u5171 ${d.length} \u4E2A\u4EFB\u52A1\u53EF\u5F52\u6863\uFF08\u672A\u843D\u76D8\uFF09`:`\u5171\u5F52\u6863 ${u} \u4E2A\u4EFB\u52A1${a.length>0?`\uFF0C\u5931\u8D25 ${a.length} \u4E2A`:""}`),{archived:r?d.length:u,skipped:p,warnings:l}}finally{if(h!==null)try{q(e,h)}catch{}}}import{statSync as Ao,readdirSync as tn,existsSync as Eo,readFileSync as Co}from"fs";import{join as He,basename as ue,dirname as Lo}from"path";import{readFileSync as Se,unlinkSync as Qr,existsSync as $e,mkdirSync as Pt,renameSync as eo}from"fs";import{join as te,basename as ee,dirname as ie}from"path";var to=["\u8D1F\u8D23\u4EBA","\u72B6\u6001","\u8303\u56F4","\u5B8C\u6210\u65F6\u95F4"];function Vt(e){return to.every(t=>e.includes(t))}function no(e){if(!/[、,,]/.test(e))return null;let t=e.split(/[、,,]/).map(n=>n.trim()).filter(Boolean);return t.length>0?t.join("+"):null}function ro(e,t){return e.replace(/(范围[::])[^ ]*/,`$1${t}`)}function We(e=".tasks"){let t=te(e,"archive"),n=C(t),r=[];for(let o of n){let s=O(e,o),i=ee(o).replace(/\.md$/,""),l=Se(o,"utf8"),{blocks:c}=F(l),d=ee(ie(o));d&&i&&d!==i.slice(0,6)&&r.push({file:s,message:`\u5F52\u6863\u6587\u4EF6\u4F4D\u4E8E ${d} \u6708\u4EFD\u76EE\u5F55\uFF0C\u4E0E\u6587\u4EF6\u540D\u65E5\u671F ${i.slice(0,6)} \u4E0D\u4E00\u81F4`,fixable:!1});for(let m of yt(c))r.push({file:s,message:`\u7591\u4F3C\u4EFB\u52A1\u5757\u300C${m}\u300D\u7F3A\u5C11\u5757\u95F4 \`---\` \u5206\u9694\u7B26\uFF0C\u5DF2\u88AB\u5F52\u5165\u524D\u4E00\u5757\u6B63\u6587\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1});let p=c.filter(m=>L(m.completed));for(let m=1;m<p.length;m++){let h=p[m-1],u=p[m];if(!h||!u)continue;let a=A(h.completed),f=A(u.completed);if(a<f){r.push({file:s,message:"\u4EFB\u52A1\u5757\u672A\u6309\u5B8C\u6210\u65F6\u95F4\u964D\u5E8F\u6392\u5217",fixable:!0});break}}for(let m of c){if(m.metaLine?Vt(m.metaLine)||r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5143\u6570\u636E\u884C\u4E0D\u5B8C\u6574\uFF08\u7F3A\u8D1F\u8D23\u4EBA/\u72B6\u6001/\u8303\u56F4\u4E4B\u4E00\uFF09`,fixable:L(m.completed)}):r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u7F3A\u5C11\u5143\u6570\u636E\u884C\uFF08\u8D1F\u8D23\u4EBA/\u72B6\u6001/\u8303\u56F4/\u5B8C\u6210\u65F6\u95F4\uFF09`,fixable:L(m.completed)}),m.metaLine){let f=z(m.metaLine);f.scope&&/[、,,]/.test(f.scope)&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u8303\u56F4\u300C${f.scope}\u300D\u542B\u987F\u53F7/\u9017\u53F7\u7591\u4F3C\u591A\u503C\u5206\u9694\uFF0C\u53EF --fix \u5F52\u4E00\u4E3A\u534A\u89D2\u52A0\u53F7`,fixable:!0}),f.scope&&/[()()]/.test(f.scope)&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u8303\u56F4\u300C${f.scope}\u300D\u542B\u62EC\u53F7\u7591\u4F3C\u6CE8\u91CA\uFF0C\u5220\u7559\u9700\u4EBA\u5DE5\u786E\u8BA4`,fixable:!1})}let h=L(m.completed);m.completed&&!h&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5B8C\u6210\u65F6\u95F4\u300C${m.completed}\u300D\u65E0\u6CD5\u8BC6\u522B\u4E3A\u65E5\u671F\u6216\u65E5\u671F+\u65F6\u5206\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1});let u=A(m.completed),a=h?u.replace(/-/g,"").slice(0,8):"";a&&i&&a!==i&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5B8C\u6210\u65F6\u95F4 ${u} \u4E0E\u5F52\u6863\u6587\u4EF6\u65E5\u671F ${i} \u4E0D\u4E00\u81F4`,fixable:!1}),h&&J(u)?r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5B8C\u6210\u65F6\u95F4 ${u} \u665A\u4E8E\u5F53\u524D\u7CFB\u7EDF\u65F6\u95F4 ${X} \u5C0F\u65F6\u4EE5\u4E0A\uFF0C\u7591\u4F3C\u65F6\u95F4\u6E90\u9519\u8BEF\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1}):h&&u.endsWith(" 00:00")&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5B8C\u6210\u65F6\u95F4 ${u} \u6070\u4E3A\u96F6\u70B9\u6574\uFF0C\u7591\u4F3C\u53EA\u586B\u4E86\u65E5\u671F\u88AB\u8865\u96F6\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1})}}return r}function oo(e,t,n){let r=te(e,"archive",n.slice(0,6)),o=te(r,`${n}.md`);Pt(r,{recursive:!0});let s=`# ${n} \u5F52\u6863
42
+ `;_(w,z(I,T,v));for(let R of g)Jr(R.file);let k=g[0];k&&Se(Vt(k.file),e),console.log(`\u5DF2\u5F52\u6863 ${g.length} \u4E2A\u4EFB\u52A1 \u2192 ${f}.md`),u+=g.length}catch(v){a.push(`${f}.md\uFF1A${v.message}`)}}for(let f of l)console.warn(`\u26A0\uFE0F ${f}`);if(a.length>0){console.error(`\u5F52\u6863\u5931\u8D25 ${a.length} \u4E2A\u65E5\u671F\u6587\u4EF6\uFF08active \u672A\u5220\u9664\uFF0C\u53EF\u91CD\u8BD5\uFF09\uFF1A`);for(let f of a)console.error(` - ${f}`)}return console.log(r?`[\u9884\u6F14] \u5171 ${d.length} \u4E2A\u4EFB\u52A1\u53EF\u5F52\u6863\uFF08\u672A\u843D\u76D8\uFF09`:`\u5171\u5F52\u6863 ${u} \u4E2A\u4EFB\u52A1${a.length>0?`\uFF0C\u5931\u8D25 ${a.length} \u4E2A`:""}`),{archived:r?d.length:u,skipped:p,warnings:l}}finally{if(h!==null)try{q(e,h)}catch{}}}import{statSync as Io,readdirSync as rn,existsSync as Fo,readFileSync as _o}from"fs";import{join as Ve,basename as fe,dirname as Oo}from"path";import{readFileSync as $e,unlinkSync as ro,existsSync as we,mkdirSync as Gt,renameSync as oo}from"fs";import{join as te,basename as ee,dirname as ce}from"path";var so=["\u8D1F\u8D23\u4EBA","\u72B6\u6001","\u8303\u56F4","\u5B8C\u6210\u65F6\u95F4"];function Kt(e){return so.every(t=>e.includes(t))}function io(e){if(!/[、,,]/.test(e))return null;let t=e.split(/[、,,]/).map(n=>n.trim()).filter(Boolean);return t.length>0?t.join("+"):null}function co(e,t){return e.replace(/(范围[::])[^ ]*/,`$1${t}`)}function ze(e=".tasks"){let t=te(e,"archive"),n=C(t),r=[];for(let o of n){let s=O(e,o),i=ee(o).replace(/\.md$/,""),l=$e(o,"utf8"),{blocks:c}=F(l),d=ee(ce(o));d&&i&&d!==i.slice(0,6)&&r.push({file:s,message:`\u5F52\u6863\u6587\u4EF6\u4F4D\u4E8E ${d} \u6708\u4EFD\u76EE\u5F55\uFF0C\u4E0E\u6587\u4EF6\u540D\u65E5\u671F ${i.slice(0,6)} \u4E0D\u4E00\u81F4`,fixable:!1});for(let m of vt(c))r.push({file:s,message:`\u7591\u4F3C\u4EFB\u52A1\u5757\u300C${m}\u300D\u7F3A\u5C11\u5757\u95F4 \`---\` \u5206\u9694\u7B26\uFF0C\u5DF2\u88AB\u5F52\u5165\u524D\u4E00\u5757\u6B63\u6587\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1});let p=c.filter(m=>L(m.completed));for(let m=1;m<p.length;m++){let h=p[m-1],u=p[m];if(!h||!u)continue;let a=A(h.completed),f=A(u.completed);if(a<f){r.push({file:s,message:"\u4EFB\u52A1\u5757\u672A\u6309\u5B8C\u6210\u65F6\u95F4\u964D\u5E8F\u6392\u5217",fixable:!0});break}}for(let m of c){if(m.metaLine?Kt(m.metaLine)||r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5143\u6570\u636E\u884C\u4E0D\u5B8C\u6574\uFF08\u7F3A\u8D1F\u8D23\u4EBA/\u72B6\u6001/\u8303\u56F4\u4E4B\u4E00\uFF09`,fixable:L(m.completed)}):r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u7F3A\u5C11\u5143\u6570\u636E\u884C\uFF08\u8D1F\u8D23\u4EBA/\u72B6\u6001/\u8303\u56F4/\u5B8C\u6210\u65F6\u95F4\uFF09`,fixable:L(m.completed)}),m.metaLine){let f=H(m.metaLine);f.scope&&/[、,,]/.test(f.scope)&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u8303\u56F4\u300C${f.scope}\u300D\u542B\u987F\u53F7/\u9017\u53F7\u7591\u4F3C\u591A\u503C\u5206\u9694\uFF0C\u53EF --fix \u5F52\u4E00\u4E3A\u534A\u89D2\u52A0\u53F7`,fixable:!0}),f.scope&&/[()()]/.test(f.scope)&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u8303\u56F4\u300C${f.scope}\u300D\u542B\u62EC\u53F7\u7591\u4F3C\u6CE8\u91CA\uFF0C\u5220\u7559\u9700\u4EBA\u5DE5\u786E\u8BA4`,fixable:!1})}let h=L(m.completed);m.completed&&!h&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5B8C\u6210\u65F6\u95F4\u300C${m.completed}\u300D\u65E0\u6CD5\u8BC6\u522B\u4E3A\u65E5\u671F\u6216\u65E5\u671F+\u65F6\u5206\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1});let u=A(m.completed),a=h?u.replace(/-/g,"").slice(0,8):"";a&&i&&a!==i&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5B8C\u6210\u65F6\u95F4 ${u} \u4E0E\u5F52\u6863\u6587\u4EF6\u65E5\u671F ${i} \u4E0D\u4E00\u81F4`,fixable:!1}),h&&J(u)?r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5B8C\u6210\u65F6\u95F4 ${u} \u665A\u4E8E\u5F53\u524D\u7CFB\u7EDF\u65F6\u95F4 ${X} \u5C0F\u65F6\u4EE5\u4E0A\uFF0C\u7591\u4F3C\u65F6\u95F4\u6E90\u9519\u8BEF\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1}):h&&u.endsWith(" 00:00")&&r.push({file:s,message:`\u5757\u300C${m.title}\u300D\u5B8C\u6210\u65F6\u95F4 ${u} \u6070\u4E3A\u96F6\u70B9\u6574\uFF0C\u7591\u4F3C\u53EA\u586B\u4E86\u65E5\u671F\u88AB\u8865\u96F6\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1})}}return r}function lo(e,t,n){let r=te(e,"archive",n.slice(0,6)),o=te(r,`${n}.md`);Gt(r,{recursive:!0});let s=`# ${n} \u5F52\u6863
43
43
 
44
- > \u672C\u6587\u4EF6\u7531 \`toolkit tasks archive\` \u81EA\u52A8\u751F\u6210\u3002`,i=[];if($e(o)){let c=F(Se(o,"utf8"));c.header&&(s=c.header),i.push(...c.blocks)}i.some(c=>c.title===t.title)&&console.warn(`\u26A0\uFE0F \u76EE\u6807 ${n}.md \u5DF2\u5B58\u5728\u540C\u540D\u5757\u300C${t.title}\u300D\uFF0C\u8FC1\u79FB\u5C06\u4EE5\u672C\u6B21\u5757\u8986\u76D6\u540C\u540D\u5757`),i.push(t);let l=$e(o)&&Se(o,"utf8").includes(`\r
44
+ > \u672C\u6587\u4EF6\u7531 \`toolkit tasks archive\` \u81EA\u52A8\u751F\u6210\u3002`,i=[];if(we(o)){let c=F($e(o,"utf8"));c.header&&(s=c.header),i.push(...c.blocks)}i.some(c=>c.title===t.title)&&console.warn(`\u26A0\uFE0F \u76EE\u6807 ${n}.md \u5DF2\u5B58\u5728\u540C\u540D\u5757\u300C${t.title}\u300D\uFF0C\u8FC1\u79FB\u5C06\u4EE5\u672C\u6B21\u5757\u8986\u76D6\u540C\u540D\u5757`),i.push(t);let l=we(o)&&$e(o,"utf8").includes(`\r
45
45
  `)?`\r
46
46
  `:`
47
- `;_(o,H(s,i,l)),console.log(` \u5757\u300C${t.title}\u300D\u8FC1\u79FB \u2192 ${n}.md`)}function so(e=".tasks"){let t=te(e,"archive"),n=C(t),r=[],o=0,s=null;if(s=Z(e),s===null)return console.warn("\u26A0\uFE0F \u68C0\u6D4B\u5230\u5F52\u6863\u9501\uFF0C\u53EF\u80FD\u6709\u5E76\u53D1\u5199\u64CD\u4F5C\u6B63\u5728\u8FDB\u884C\uFF0C\u672C\u6B21\u5DF2\u8DF3\u8FC7\u4FEE\u590D"),{issues:r,fixed:o};try{for(let i of n)try{o+=io(e,t,i,r)}catch(l){r.push({file:ee(i),message:`\u5F52\u4E00\u5316\u5931\u8D25\uFF0C\u5DF2\u8DF3\u8FC7\u8BE5\u6587\u4EF6\uFF1A${l.message}`,fixable:!1})}return{issues:r,fixed:o}}finally{if(s!==null)try{q(e,s)}catch{}}}function io(e,t,n,r){let o=0,s=n,i=ee(s),l=i.replace(/\.md$/,""),c=ee(ie(s)),d=/^\d{8}$/.test(l)?l.slice(0,6):"";if(d&&c!==d){let k=te(t,d,i);$e(k)?console.warn(`\u26A0\uFE0F ${i}\uFF1A\u76EE\u6807\u6708\u4EFD\u76EE\u5F55 ${d} \u5DF2\u5B58\u5728\u540C\u540D\u6587\u4EF6\uFF0C\u672A\u81EA\u52A8\u79FB\u52A8\uFF08\u9700\u4EBA\u5DE5\u5904\u7406\uFF09`):(Pt(te(t,d),{recursive:!0}),eo(s,k),s=k,ve(ie(n),t))}let p=Se(s,"utf8"),{header:m,blocks:h}=F(p),u=[],a=s!==n;s!==n&&(u.push(`\u79FB\u52A8\u81F3 ${ee(ie(s))} \u6708\u4EFD\u76EE\u5F55`),o++);for(let k of h)L(k.completed)&&(!k.metaLine||!Vt(k.metaLine))&&(k.metaLine=bt(k.title,k.completed,k.metaLine),u.push(`\u8865\u5143\u6570\u636E\u300C${k.title}\u300D`),a=!0,o++);for(let k of h){if(!k.metaLine)continue;let R=z(k.metaLine);if(!R.scope)continue;let Ke=no(R.scope);Ke&&(k.metaLine=ro(k.metaLine,Ke),u.push(`\u8303\u56F4\u5206\u9694\u5F52\u4E00\u300C${k.title}\u300D`),a=!0,o++),/[()()]/.test(R.scope)&&r.push({file:i,message:`\u5757\u300C${k.title}\u300D\u8303\u56F4\u300C${R.scope}\u300D\u542B\u62EC\u53F7\u7591\u4F3C\u6CE8\u91CA\uFF0C\u5220\u7559\u9700\u4EBA\u5DE5\u786E\u8BA4`,fixable:!1})}let f=[],g=0;for(let k of h){if(k.completed&&!L(k.completed)){r.push({file:i,message:`\u5757\u300C${k.title}\u300D\u5B8C\u6210\u65F6\u95F4\u300C${k.completed}\u300D\u65E0\u6CD5\u8BC6\u522B\uFF0C\u672A\u8FC1\u79FB\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1}),f.push(k);continue}let R=k.completed?A(k.completed).replace(/-/g,"").slice(0,8):"";R&&R!==l?(oo(e,k,R),g++,a=!0):f.push(k)}g>0&&(u.push(`\u8FC1\u79FB ${g} \u4E2A\u6F02\u79FB\u5757`),o+=g);let b=f.filter(k=>L(k.completed)),w=f.filter(k=>!L(k.completed)),j=[...b].sort((k,R)=>A(R.completed).localeCompare(A(k.completed)));JSON.stringify(j.map(k=>k.title))!==JSON.stringify(b.map(k=>k.title))&&(f.splice(0,f.length,...j,...w),u.push("\u964D\u5E8F\u91CD\u6392"),o++,a=!0);let T=/^---\s*\r?\n\r?\n---/m.test(p);T&&(u.push("\u6E05\u7406\u5197\u4F59\u5206\u9694\u7B26"),o++);let v=p.includes(`\r
47
+ `;_(o,z(s,i,l)),console.log(` \u5757\u300C${t.title}\u300D\u8FC1\u79FB \u2192 ${n}.md`)}function ao(e=".tasks"){let t=te(e,"archive"),n=C(t),r=[],o=0,s=null;if(s=Z(e),s===null)return console.warn("\u26A0\uFE0F \u68C0\u6D4B\u5230\u5F52\u6863\u9501\uFF0C\u53EF\u80FD\u6709\u5E76\u53D1\u5199\u64CD\u4F5C\u6B63\u5728\u8FDB\u884C\uFF0C\u672C\u6B21\u5DF2\u8DF3\u8FC7\u4FEE\u590D"),{issues:r,fixed:o};try{for(let i of n)try{o+=uo(e,t,i,r)}catch(l){r.push({file:ee(i),message:`\u5F52\u4E00\u5316\u5931\u8D25\uFF0C\u5DF2\u8DF3\u8FC7\u8BE5\u6587\u4EF6\uFF1A${l.message}`,fixable:!1})}return{issues:r,fixed:o}}finally{if(s!==null)try{q(e,s)}catch{}}}function uo(e,t,n,r){let o=0,s=n,i=ee(s),l=i.replace(/\.md$/,""),c=ee(ce(s)),d=/^\d{8}$/.test(l)?l.slice(0,6):"";if(d&&c!==d){let k=te(t,d,i);we(k)?console.warn(`\u26A0\uFE0F ${i}\uFF1A\u76EE\u6807\u6708\u4EFD\u76EE\u5F55 ${d} \u5DF2\u5B58\u5728\u540C\u540D\u6587\u4EF6\uFF0C\u672A\u81EA\u52A8\u79FB\u52A8\uFF08\u9700\u4EBA\u5DE5\u5904\u7406\uFF09`):(Gt(te(t,d),{recursive:!0}),oo(s,k),s=k,Se(ce(n),t))}let p=$e(s,"utf8"),{header:m,blocks:h}=F(p),u=[],a=s!==n;s!==n&&(u.push(`\u79FB\u52A8\u81F3 ${ee(ce(s))} \u6708\u4EFD\u76EE\u5F55`),o++);for(let k of h)L(k.completed)&&(!k.metaLine||!Kt(k.metaLine))&&(k.metaLine=xt(k.title,k.completed,k.metaLine),u.push(`\u8865\u5143\u6570\u636E\u300C${k.title}\u300D`),a=!0,o++);for(let k of h){if(!k.metaLine)continue;let R=H(k.metaLine);if(!R.scope)continue;let Je=io(R.scope);Je&&(k.metaLine=co(k.metaLine,Je),u.push(`\u8303\u56F4\u5206\u9694\u5F52\u4E00\u300C${k.title}\u300D`),a=!0,o++),/[()()]/.test(R.scope)&&r.push({file:i,message:`\u5757\u300C${k.title}\u300D\u8303\u56F4\u300C${R.scope}\u300D\u542B\u62EC\u53F7\u7591\u4F3C\u6CE8\u91CA\uFF0C\u5220\u7559\u9700\u4EBA\u5DE5\u786E\u8BA4`,fixable:!1})}let f=[],g=0;for(let k of h){if(k.completed&&!L(k.completed)){r.push({file:i,message:`\u5757\u300C${k.title}\u300D\u5B8C\u6210\u65F6\u95F4\u300C${k.completed}\u300D\u65E0\u6CD5\u8BC6\u522B\uFF0C\u672A\u8FC1\u79FB\uFF08\u9700\u4EBA\u5DE5\u786E\u8BA4\uFF09`,fixable:!1}),f.push(k);continue}let R=k.completed?A(k.completed).replace(/-/g,"").slice(0,8):"";R&&R!==l?(lo(e,k,R),g++,a=!0):f.push(k)}g>0&&(u.push(`\u8FC1\u79FB ${g} \u4E2A\u6F02\u79FB\u5757`),o+=g);let b=f.filter(k=>L(k.completed)),w=f.filter(k=>!L(k.completed)),j=[...b].sort((k,R)=>A(R.completed).localeCompare(A(k.completed)));JSON.stringify(j.map(k=>k.title))!==JSON.stringify(b.map(k=>k.title))&&(f.splice(0,f.length,...j,...w),u.push("\u964D\u5E8F\u91CD\u6392"),o++,a=!0);let T=/^---\s*\r?\n\r?\n---/m.test(p);T&&(u.push("\u6E05\u7406\u5197\u4F59\u5206\u9694\u7B26"),o++);let v=p.includes(`\r
48
48
  `)?`\r
49
49
  `:`
50
- `;return h.length>0&&f.length===0?($e(s)&&Qr(s),ve(ie(s),t),u.push("\u5220\u9664\u7A7A\u5F52\u6863\u6587\u4EF6"),a=!0):(a||T)&&_(s,H(m,f,v)),u.length>0&&console.log(` ${i}: ${u.join("\u3001")}`),o}import{existsSync as we,readdirSync as kc}from"fs";import{join as D}from"path";var Kt="conventions",ce="index.md",le="history.md",Te="conventions.md",ae=2,ne=2,xc=`<!-- toolkit-conventions: v${ae} -->`,co=`<!-- toolkit-conventions-entry: v${ne} -->`,lo=/<!--\s*toolkit-conventions:\s*v(\d+)\s*-->/,ao=/<!--\s*toolkit-conventions-entry:\s*v(\d+)\s*-->/,Ae="ID";var uo="\u5F53\u524D\u8BED\u4E49";function fo(e,t){let n=e.split(/\r?\n/,1)[0]??"",r=t.exec(n);return r?Number(r[1]):null}function po(e){return fo(e,lo)}function Xt(e){let t=ao.exec(e);return t?Number(t[1]):null}function mo(e){let t=D(e,Kt),n=D(t,ce),r=we(n);return{hasDir:we(t),hasIndex:r,hasHistory:we(D(t,le)),hasLegacy:we(D(e,Te)),markerVersion:r?po(E(n)):null}}function go(e,t,n,r){return e?r===ae?t&&n?"v2":"abnormal":t?n?"v2":"abnormal":n?"abnormal":"v1":"none"}function ze(e){let t=e.trim();return t.startsWith("|")&&t.endsWith("|")&&t.length>1}function Re(e){return e.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(t=>t.trim())}function Gt(e){if(!ze(e))return!1;let t=Re(e);return t.length>0&&t.every(n=>/^:?-{2,}:?$/.test(n))}function ho(e,t){for(let n=0;n+1<e.length;n++){let r=e[n]??"";if(!ze(r)||!Re(r).includes(t)||!Gt(e[n+1]??""))continue;let o=[],s=[];for(let i=n+2;i<e.length;i++){let l=e[i]??"";if(!ze(l)||Gt(l))break;o.push(Re(l)),s.push(i)}return{headerLine:n,separatorLine:n+1,rowLines:s,header:Re(r),rows:o}}return null}function ko(e){return ho(e,uo)}function bo(e){let t=[];for(let n of e.rows)n.every(r=>r==="")||t.push({id:n[0]??"",name:n[1]??"",cells:n});return t}function Jt(e){let t=mo(e),n=D(e,Kt),r=D(n,ce),o=t.hasIndex?E(r):"",s=t.hasIndex?ko(o.split(/\r?\n/)):null,i=s?.header??[],l=(i[0]??"")===Ae,c=s?bo(s):[],d=c.map(p=>Number(p.id)).filter(p=>Number.isInteger(p));return{...t,dir:n,indexFile:r,historyFile:D(n,le),legacyFile:D(e,Te),form:go(t.hasIndex,t.hasHistory,l,t.markerVersion),header:i,entries:c,maxSeq:d.length>0?Math.max(...d):0}}var yo="# \u89C4\u8303\u6F14\u8FDB\u8BB0\u5F55",xo="| \u89C4\u5219 ID / \u540D\u79F0 | \u4FEE\u8BA2\u5185\u5BB9 | \u4FEE\u8BA2\u6765\u6E90\u4EFB\u52A1 |",vo="> \u8868\u8BED\u4E49\u8FB9\u754C\uFF1A\u672C\u8868\u53EA\u8BB0**\u89C4\u8303\u8BED\u4E49\u53D8\u66F4**\uFF1B\u8F7D\u4F53\u7ED3\u6784\u5347\u7EA7\u3001\u5165\u53E3\u58F3\u751F\u6210 / \u5220\u9664\u5747\u4E0D\u5165\u8868\u3002",So="> \u5143\u89C4\u5219\uFF1A\u89C4\u5219\u8BED\u4E49\u53D8\u66F4\u65F6\u4E0D\u5F97\u8986\u76D6\u65E7\u8BED\u4E49\u76F4\u63A5\u4E22\u53F2\u2014\u2014\u5728\u300C\u6F14\u8FDB\u8BB0\u5F55\u300D\u8FFD\u52A0\u4E00\u6761\uFF08\u89C4\u5219 \u2192 \u65E7\u8BED\u4E49 \u2192 \u53D8\u66F4\u4E3A \u2192 \u4FEE\u8BA2\u6765\u6E90\u4EFB\u52A1\uFF09\uFF0C`index.md` \u7D22\u5F15\u8868\u53EA\u4FDD\u7559\u5F53\u524D\u8BED\u4E49\uFF1B\u89C4\u5219\u5C42\u6E90\u5934\u53D8\u66F4\uFF08`AGENTS.md` / `docs/ai-rules.md` / skills \u6761\u6587\uFF09\u968F\u8BE5\u53D8\u66F4\u540C\u6279\u843D\u76D8\u3002",vc=`${yo}
50
+ `;return h.length>0&&f.length===0?(we(s)&&ro(s),Se(ce(s),t),u.push("\u5220\u9664\u7A7A\u5F52\u6863\u6587\u4EF6"),a=!0):(a||T)&&_(s,z(m,f,v)),u.length>0&&console.log(` ${i}: ${u.join("\u3001")}`),o}import{existsSync as Re,readdirSync as Sc}from"fs";import{join as D}from"path";var Jt="conventions",le="index.md",ae="history.md",Ae="conventions.md",ue=2,ne=2,Rc=`<!-- toolkit-conventions: v${ue} -->`,fo=`<!-- toolkit-conventions-entry: v${ne} -->`,po=/<!--\s*toolkit-conventions:\s*v(\d+)\s*-->/,mo=/<!--\s*toolkit-conventions-entry:\s*v(\d+)\s*-->/,Ee="ID";var go="\u5F53\u524D\u8BED\u4E49";function ho(e,t){let n=e.split(/\r?\n/,1)[0]??"",r=t.exec(n);return r?Number(r[1]):null}function ko(e){return ho(e,po)}function Zt(e){let t=mo.exec(e);return t?Number(t[1]):null}function bo(e){let t=D(e,Jt),n=D(t,le),r=Re(n);return{hasDir:Re(t),hasIndex:r,hasHistory:Re(D(t,ae)),hasLegacy:Re(D(e,Ae)),markerVersion:r?ko(E(n)):null}}function yo(e,t,n,r){return e?r===ue?t&&n?"v2":"abnormal":t?n?"v2":"abnormal":n?"abnormal":"v1":"none"}function Pe(e){let t=e.trim();return t.startsWith("|")&&t.endsWith("|")&&t.length>1}function Te(e){return e.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(t=>t.trim())}function Xt(e){if(!Pe(e))return!1;let t=Te(e);return t.length>0&&t.every(n=>/^:?-{2,}:?$/.test(n))}function xo(e,t){for(let n=0;n+1<e.length;n++){let r=e[n]??"";if(!Pe(r)||!Te(r).includes(t)||!Xt(e[n+1]??""))continue;let o=[],s=[];for(let i=n+2;i<e.length;i++){let l=e[i]??"";if(!Pe(l)||Xt(l))break;o.push(Te(l)),s.push(i)}return{headerLine:n,separatorLine:n+1,rowLines:s,header:Te(r),rows:o}}return null}function vo(e){return xo(e,go)}function So(e){let t=[];for(let n of e.rows)n.every(r=>r==="")||t.push({id:n[0]??"",name:n[1]??"",cells:n});return t}function qt(e){let t=bo(e),n=D(e,Jt),r=D(n,le),o=t.hasIndex?E(r):"",s=t.hasIndex?vo(o.split(/\r?\n/)):null,i=s?.header??[],l=(i[0]??"")===Ee,c=s?So(s):[],d=c.map(p=>Number(p.id)).filter(p=>Number.isInteger(p));return{...t,dir:n,indexFile:r,historyFile:D(n,ae),legacyFile:D(e,Ae),form:yo(t.hasIndex,t.hasHistory,l,t.markerVersion),header:i,entries:c,maxSeq:d.length>0?Math.max(...d):0}}var $o="# \u89C4\u8303\u6F14\u8FDB\u8BB0\u5F55",wo="| \u89C4\u5219 ID / \u540D\u79F0 | \u4FEE\u8BA2\u5185\u5BB9 | \u4FEE\u8BA2\u6765\u6E90\u4EFB\u52A1 |",Ro="> \u8868\u8BED\u4E49\u8FB9\u754C\uFF1A\u672C\u8868\u53EA\u8BB0**\u89C4\u8303\u8BED\u4E49\u53D8\u66F4**\uFF1B\u8F7D\u4F53\u7ED3\u6784\u5347\u7EA7\u3001\u5165\u53E3\u58F3\u751F\u6210 / \u5220\u9664\u5747\u4E0D\u5165\u8868\u3002",To="> \u5143\u89C4\u5219\uFF1A\u89C4\u5219\u8BED\u4E49\u53D8\u66F4\u65F6\u4E0D\u5F97\u8986\u76D6\u65E7\u8BED\u4E49\u76F4\u63A5\u4E22\u53F2\u2014\u2014\u5728\u300C\u6F14\u8FDB\u8BB0\u5F55\u300D\u8FFD\u52A0\u4E00\u6761\uFF08\u89C4\u5219 \u2192 \u65E7\u8BED\u4E49 \u2192 \u53D8\u66F4\u4E3A \u2192 \u4FEE\u8BA2\u6765\u6E90\u4EFB\u52A1\uFF09\uFF0C`index.md` \u7D22\u5F15\u8868\u53EA\u4FDD\u7559\u5F53\u524D\u8BED\u4E49\uFF1B\u89C4\u5219\u5C42\u6E90\u5934\u53D8\u66F4\uFF08`AGENTS.md` / `docs/ai-rules.md` / skills \u6761\u6587\uFF09\u968F\u8BE5\u53D8\u66F4\u540C\u6279\u843D\u76D8\u3002",Tc=`${$o}
51
51
 
52
- ${So}
53
- ${vo}
52
+ ${To}
53
+ ${Ro}
54
54
 
55
- ${xo}
55
+ ${wo}
56
56
  | --- | --- | --- |
57
- `;import{existsSync as $o}from"fs";import{join as Zt}from"path";var wo="toolkit-conventions",Ro="SKILL.md",To=[".agents/skills",".trae/skills",".trae-cn/skills",".cursor/skills",".claude/skills"];function qt(e){let t=[];for(let n of To){let r=`${n}/${wo}`,o=`${r}/${Ro}`;$o(Zt(e,o))&&t.push({dir:r,file:o,version:Xt(E(Zt(e,o)))})}return t}function Qt(e){let[t]=e;if(!t)return null;let n=o=>o.version===null?"\u65E0":`v${o.version}`;if(e.length===1)return{file:t.file,message:`\u5165\u53E3\u58F3\u6807\u8BB0 ${n(t)}\uFF0C\u4E0E\u5F53\u524D toolkit \u7684 v${ne} \u4E0D\u4E00\u81F4\uFF1A\u91CD\u8DD1 toolkit init \u53EF\u8865\u9F50`};let r=e.map(o=>`${o.file}\uFF08\u6807\u8BB0 ${n(o)}\uFF09`).join("\u3001");return{file:t.file,message:`\u5165\u53E3\u58F3\u6807\u8BB0\u4E0E\u5F53\u524D toolkit \u7684 v${ne} \u4E0D\u4E00\u81F4\uFF0C\u5171 ${e.length} \u5904\uFF1A${r}\uFF1B\u91CD\u8DD1 toolkit init \u53EF\u4E00\u6B21\u6027\u8865\u9F50`}}function en(e){let[t]=e;if(!t)return null;if(e.length===1)return{file:t.file,message:`\u5165\u53E3\u58F3 ${t.file} \u88AB gitignore \u8986\u76D6\uFF1A\u4E0D\u4F1A\u968F git \u5206\u53D1\uFF0C\u8BF7\u628A\u8BE5\u8DEF\u5F84\u4ECE\u5FFD\u7565\u89C4\u5219\u4E2D\u6392\u9664`};let n=e.map(r=>r.file).join("\u3001");return{file:t.file,message:`\u5165\u53E3\u58F3\u88AB gitignore \u8986\u76D6\uFF0C\u5171 ${e.length} \u5904\uFF1A${n}\uFF1B\u4E0D\u4F1A\u968F git \u5206\u53D1\uFF0C\u8BF7\u628A\u76F8\u5E94\u8DEF\u5F84\u4ECE\u5FFD\u7565\u89C4\u5219\u4E2D\u6392\u9664`}}var nn=/待办|待实施|待核对|待确认|待开始|待评估|待排期|待做|TODO/,Io=/^[-*]\s*\[ \]\s/m,Fo=/^[-*]\s*\[ \]/,_o=/^\d{4}-\d{1,2}-\d{1,2}(?:[T\s]\d{1,2}:\d{2}(?::\d{2})?)?$/,Oo=/^\d{4}-\d{1,2}-\d{1,2}[T\s]\d{1,2}:\d{2}(?::\d{2})?$/,No=/^\d{8}-[^-]+-.+\.md$/;function rn(e){let t=e.match(/^(\d{4})-?(\d{1,2})-?(\d{1,2})/);if(!t)return!1;let[,n,r,o]=t;if(!n||!r||!o)return!1;let s=+n,i=+r,l=+o;if(i<1||i>12||l<1||l>31)return!1;let c=new Date(Date.UTC(s,i-1,l));return c.getUTCFullYear()===s&&c.getUTCMonth()===i-1&&c.getUTCDate()===l}function N(e,t,n){for(let r=0;r<t;r++)if((e[r]??"").trimStart().startsWith(`${n}:`))return r+1;return 1}function on(e,t,n){let r=!1;for(let o=t;o<e.length;o++){let s=e[o]??"";if(!r&&/^# /.test(s)){r=!0;continue}if(n.test(s))return o+1}return t+1}function Mo(e,t){let n=[];t.startsWith("\uFEFF")&&n.push({level:"warn",file:e,line:1,message:"\u6587\u4EF6\u542B UTF-8 BOM\uFF0C\u5EFA\u8BAE\u53BB\u9664\uFF08\u90E8\u5206\u89E3\u6790\u5DE5\u5177\u4F1A\u5F02\u5E38\uFF09"});let o=t.split(/\r?\n/).findIndex(i=>/[ \t]+$/.test(i));o>=0&&n.push({level:"warn",file:e,line:o+1,message:"\u884C\u5C3E\u6709\u591A\u4F59\u7A7A\u767D\uFF08\u7A7A\u683C\u6216\u5236\u8868\u7B26\uFF09\uFF0C\u5EFA\u8BAE\u53BB\u9664"});let s=-1;for(let i=0;i<t.length;i++)if(t[i]===`
57
+ `;import{existsSync as Ao}from"fs";import{join as Qt}from"path";var Eo="toolkit-conventions",Co="SKILL.md",Lo=[".agents/skills",".trae/skills",".trae-cn/skills",".cursor/skills",".claude/skills"];function en(e){let t=[];for(let n of Lo){let r=`${n}/${Eo}`,o=`${r}/${Co}`;Ao(Qt(e,o))&&t.push({dir:r,file:o,version:Zt(E(Qt(e,o)))})}return t}function tn(e){let[t]=e;if(!t)return null;let n=o=>o.version===null?"\u65E0":`v${o.version}`;if(e.length===1)return{file:t.file,message:`\u5165\u53E3\u58F3\u6807\u8BB0 ${n(t)}\uFF0C\u4E0E\u5F53\u524D toolkit \u7684 v${ne} \u4E0D\u4E00\u81F4\uFF1A\u91CD\u8DD1 toolkit init \u53EF\u8865\u9F50`};let r=e.map(o=>`${o.file}\uFF08\u6807\u8BB0 ${n(o)}\uFF09`).join("\u3001");return{file:t.file,message:`\u5165\u53E3\u58F3\u6807\u8BB0\u4E0E\u5F53\u524D toolkit \u7684 v${ne} \u4E0D\u4E00\u81F4\uFF0C\u5171 ${e.length} \u5904\uFF1A${r}\uFF1B\u91CD\u8DD1 toolkit init \u53EF\u4E00\u6B21\u6027\u8865\u9F50`}}function nn(e){let[t]=e;if(!t)return null;if(e.length===1)return{file:t.file,message:`\u5165\u53E3\u58F3 ${t.file} \u88AB gitignore \u8986\u76D6\uFF1A\u4E0D\u4F1A\u968F git \u5206\u53D1\uFF0C\u8BF7\u628A\u8BE5\u8DEF\u5F84\u4ECE\u5FFD\u7565\u89C4\u5219\u4E2D\u6392\u9664`};let n=e.map(r=>r.file).join("\u3001");return{file:t.file,message:`\u5165\u53E3\u58F3\u88AB gitignore \u8986\u76D6\uFF0C\u5171 ${e.length} \u5904\uFF1A${n}\uFF1B\u4E0D\u4F1A\u968F git \u5206\u53D1\uFF0C\u8BF7\u628A\u76F8\u5E94\u8DEF\u5F84\u4ECE\u5FFD\u7565\u89C4\u5219\u4E2D\u6392\u9664`}}var on=/待办|待实施|待核对|待确认|待开始|待评估|待排期|待做|TODO/,No=/^[-*]\s*\[ \]\s/m,Mo=/^[-*]\s*\[ \]/,jo=/^\d{4}-\d{1,2}-\d{1,2}(?:[T\s]\d{1,2}:\d{2}(?::\d{2})?)?$/,Bo=/^\d{4}-\d{1,2}-\d{1,2}[T\s]\d{1,2}:\d{2}(?::\d{2})?$/,Do=/^\d{8}-[^-]+-.+\.md$/;function sn(e){let t=e.match(/^(\d{4})-?(\d{1,2})-?(\d{1,2})/);if(!t)return!1;let[,n,r,o]=t;if(!n||!r||!o)return!1;let s=+n,i=+r,l=+o;if(i<1||i>12||l<1||l>31)return!1;let c=new Date(Date.UTC(s,i-1,l));return c.getUTCFullYear()===s&&c.getUTCMonth()===i-1&&c.getUTCDate()===l}function N(e,t,n){for(let r=0;r<t;r++)if((e[r]??"").trimStart().startsWith(`${n}:`))return r+1;return 1}function cn(e,t,n){let r=!1;for(let o=t;o<e.length;o++){let s=e[o]??"";if(!r&&/^# /.test(s)){r=!0;continue}if(n.test(s))return o+1}return t+1}function Yo(e,t){let n=[];t.startsWith("\uFEFF")&&n.push({level:"warn",file:e,line:1,message:"\u6587\u4EF6\u542B UTF-8 BOM\uFF0C\u5EFA\u8BAE\u53BB\u9664\uFF08\u90E8\u5206\u89E3\u6790\u5DE5\u5177\u4F1A\u5F02\u5E38\uFF09"});let o=t.split(/\r?\n/).findIndex(i=>/[ \t]+$/.test(i));o>=0&&n.push({level:"warn",file:e,line:o+1,message:"\u884C\u5C3E\u6709\u591A\u4F59\u7A7A\u767D\uFF08\u7A7A\u683C\u6216\u5236\u8868\u7B26\uFF09\uFF0C\u5EFA\u8BAE\u53BB\u9664"});let s=-1;for(let i=0;i<t.length;i++)if(t[i]===`
58
58
  `&&(i===0||t[i-1]!=="\r")){s=i;break}return s>=0&&t.includes(`\r
59
59
  `)&&n.push({level:"warn",file:e,line:t.slice(0,s).split(`
60
- `).length,message:"\u6362\u884C\u7B26\u6DF7\u7528\uFF08\u540C\u6587\u4EF6\u540C\u65F6\u542B CRLF \u4E0E LF\uFF09\uFF0C\u5EFA\u8BAE\u7EDF\u4E00\u4E3A LF"}),n}function cn(e){let t=[],n=ue(e),r=Co(e,"utf8");t.push(...Mo(n,r));let o=M(r),s=o.split(/\r?\n/),i=de.exec(o)?.[0].split(/\r?\n/).length??0;if(!de.test(o))return t.push({level:"error",file:n,line:1,message:"\u7F3A\u5C11 frontmatter"}),t;let c=pe(o);for(let a of Object.keys(c))fe.includes(a)||t.push({level:"warn",file:n,line:N(s,i,a),message:`frontmatter \u542B\u672A\u77E5\u5B57\u6BB5\u300C${a}\u300D\uFF0C\u672C\u5DE5\u5177\u4E0D\u8BFB\u53D6\uFF08\u5F52\u6863\u4E0E\u5F52\u4E00\u5316\u4E0D\u4F1A\u4FDD\u7559\uFF0C\u8BF7\u81EA\u884C\u7EF4\u62A4\uFF09`});if(c.status?re.includes(c.status)||t.push({level:"error",file:n,line:N(s,i,"status"),message:`status \u975E\u6CD5\u503C\u300C${c.status}\u300D\uFF0C\u5E94\u4E3A ${re.join(" / ")}`}):t.push({level:"error",file:n,line:N(s,i,"status"),message:"frontmatter \u7F3A\u5C11 status \u5B57\u6BB5"}),P.includes(c.status)&&!c.completed&&t.push({level:"error",file:n,line:N(s,i,"completed"),message:`status \u4E3A\u300C${c.status}\u300D\u4F46\u7F3A\u5C11 completed \u5B8C\u6210\u65F6\u95F4`}),c.completed){let a=c.completed.trim(),f=N(s,i,"completed");if(!_o.test(a))t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u683C\u5F0F\u975E\u6CD5\uFF0C\u5E94\u4E3A YYYY-MM-DD HH:mm`});else{let g=a.match(/^\d{4}-\d{1,2}-\d{1,2}/)?.[0]??a;rn(g)?Oo.test(a)?J(a)?t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u665A\u4E8E\u5F53\u524D\u7CFB\u7EDF\u65F6\u95F4 ${X} \u5C0F\u65F6\u4EE5\u4E0A\uFF0C\u7591\u4F3C\u65F6\u95F4\u6E90\u9519\u8BEF\uFF0C\u8BF7\u5F53\u573A\u53D6\u7CFB\u7EDF\u65F6\u95F4\u6838\u5B9E`}):/(?:[T\s]00:00(?::00)?)$/.test(a)&&t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u6070\u4E3A\u96F6\u70B9\u6574\uFF0C\u7591\u4F3C\u53EA\u586B\u4E86\u65E5\u671F\u88AB\u8865\u96F6\uFF0C\u8BF7\u6838\u5B9E\u5B9E\u9645\u5B8C\u6210\u65F6\u95F4`}):t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u5EFA\u8BAE\u8865\u5168\u4E3A\u5B8C\u6574\u65F6\u95F4 YYYY-MM-DD HH:mm`}):t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u65E5\u671F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u6838\u5BF9`})}}c.owner||t.push({level:"warn",file:n,line:N(s,i,"owner"),message:"\u7F3A\u5C11 owner \u8D1F\u8D23\u4EBA\u5B57\u6BB5"}),c.created?/^\d{8}$/.test(c.created.trim())?rn(c.created.trim())||t.push({level:"warn",file:n,line:N(s,i,"created"),message:`created\u300C${c.created}\u300D\u65E5\u671F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u6838\u5BF9`}):t.push({level:"warn",file:n,line:N(s,i,"created"),message:`created\u300C${c.created}\u300D\u683C\u5F0F\u975E\u6CD5\uFF0C\u5E94\u4E3A YYYYMMDD`}):t.push({level:"warn",file:n,line:N(s,i,"created"),message:"\u7F3A\u5C11 created \u521B\u5EFA\u65E5\u671F\u5B57\u6BB5"}),c.updated&&c.created&&/^\d{8}$/.test(c.updated.trim())&&/^\d{8}$/.test(c.created.trim())&&c.updated.trim()<c.created.trim()&&t.push({level:"error",file:n,line:N(s,i,"updated"),message:`updated ${c.updated.trim()} \u65E9\u4E8E created ${c.created.trim()}\uFF0C\u65F6\u95F4\u7EBF\u77DB\u76FE`});let d=n.match(/^(\d{8})-/);if(No.test(n)?c.created&&/^\d{8}$/.test(c.created.trim())&&d&&c.created.trim()!==d[1]&&t.push({level:"warn",file:n,message:`\u6587\u4EF6\u540D\u65E5\u671F ${d[1]} \u4E0E created ${c.created.trim()} \u4E0D\u4E00\u81F4`}):t.push({level:"warn",file:n,message:"\u6587\u4EF6\u540D\u4E0D\u7B26\u5408\u89C4\u8303 {YYYYMMDD}-{\u8D1F\u8D23\u4EBA}-{\u7B80\u8FF0}.md"}),c.scope){let a=c.scope.trim(),f=N(s,i,"scope");/[、,,]/.test(a)&&t.push({level:"warn",file:n,line:f,message:`scope\u300C${c.scope}\u300D\u542B\u987F\u53F7/\u9017\u53F7\u7591\u4F3C\u591A\u503C\u5206\u9694\uFF0C\u591A\u503C\u8BF7\u6539\u7528\u534A\u89D2\u52A0\u53F7\u8FDE\u63A5\uFF08\u5982 scope: toolkit+lxgl-web\uFF09`}),/[()()]/.test(a)&&t.push({level:"warn",file:n,line:f,message:`scope\u300C${c.scope}\u300D\u542B\u62EC\u53F7\u7591\u4F3C\u6CE8\u91CA\u6027\u6587\u5B57\uFF0C\u8BF4\u660E\u8BF7\u79FB\u5165\u6B63\u6587`})}let p=Xe(U(o)),h=G("check")?.pendingMarkers!==!1?p.match(nn):null;return h&&t.push({level:"warn",file:n,line:on(s,i,nn),message:`\u6B63\u6587\u542B\u672A\u95ED\u5408\u5F85\u529E\u6807\u8BB0\u300C${h[0]}\u300D\uFF0C\u5EFA\u8BAE\u62C6\u5206\u4E3A\u72EC\u7ACB active \u4EFB\u52A1\u6216\u660E\u786E\u95ED\u73AF`}),G("check")?.includeCheckbox!==!1&&Io.test(p)&&t.push({level:"warn",file:n,line:on(s,i,Fo),message:"\u6B63\u6587\u542B\u672A\u52FE\u9009\u5F85\u529E\u9879\u300C- [ ]\u300D\uFF0C\u5EFA\u8BAE\u62C6\u5206\u4E3A\u72EC\u7ACB active \u4EFB\u52A1\u6216\u52FE\u9009\u5B8C\u6210"}),t}function jo(e){let t=[];if(!Eo(e))return t;for(let n of tn(e,{withFileTypes:!0}))if(!(n.name==="active"||n.name==="archive")){if(n.isFile())n.name.endsWith(".md")&&/^\d{8}-/.test(n.name)&&t.push(n.name);else if(n.isDirectory())for(let r of tn(He(e,n.name)))r.endsWith(".md")&&/^\d{8}-/.test(r)&&t.push(`${n.name}/${r}`)}return t}function Bo(e){let t=ut(e);if(!t)return[];let n=O(e,t),r=et(t,e);return r.state==="not-a-repo"||r.state==="outside-repo"?[]:r.state==="unavailable"?[{level:"warn",file:n,message:`\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u5FFD\u7565\u5224\u5B9A\u4E0D\u53EF\u7528\uFF08${r.detail??"\u672A\u77E5\u539F\u56E0"}\uFF09\uFF0C\u8BF7\u6838\u5B9E git \u73AF\u5883`}]:r.state==="tracked"?[{level:"warn",file:n,message:`\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u5DF2\u88AB\u5FFD\u7565\u89C4\u5219\u8986\u76D6\u4F46\u4ECD\u88AB git \u8DDF\u8E2A\uFF08\u7591\u4F3C\u5386\u53F2 git add -f\uFF09\uFF1A\u6267\u884C git rm --cached ${n} \u540E\u624D\u4F1A\u771F\u6B63\u4E0D\u5165\u5E93`}]:r.state==="ignored"?[]:[{level:"warn",file:n,message:"\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u672A\u88AB gitignore \u8986\u76D6\uFF0C\u53EF\u80FD\u968F git \u63D0\u4EA4\u6CC4\u9732\u4E2A\u4EBA\u914D\u7F6E\uFF1A\u91CD\u8DD1 toolkit init \u53EF\u81EA\u52A8\u8865\u5199\u5FFD\u7565\u884C"}]}function Do(e,t){let n=[],r=Jt(e);r.hasLegacy&&n.push({level:"warn",file:Te,message:r.hasDir?"\u65E7\u5355\u6587\u4EF6\u89C4\u8303\u8F7D\u4F53\u5DF2\u88AB conventions/ \u76EE\u5F55\u5F62\u6001\u53D6\u4EE3\uFF0C\u5EFA\u8BAE\u6E05\u7406\uFF08\u4E24\u8005\u5E76\u5B58\u65F6\u4EE5\u76EE\u5F55\u5F62\u6001\u4E3A\u51C6\uFF09":"\u65E7\u5355\u6587\u4EF6\u89C4\u8303\u8F7D\u4F53\uFF0C\u5EFA\u8BAE\u8FC1\u79FB\u4E3A conventions/ \u76EE\u5F55\u5F62\u6001\uFF08index.md \u4F5C\u552F\u4E00\u5165\u53E3 + common.md / \u7AEF\u5206\u518C\u6309\u9700\u521B\u5EFA\uFF09"}),r.hasDir&&!r.hasIndex&&n.push({level:"warn",file:`conventions/${ce}`,message:"\u89C4\u8303\u8F7D\u4F53\u7F3A index.md\uFF08\u552F\u4E00\u5165\u53E3\u4E0E\u552F\u4E00\u6743\u5A01\uFF09\uFF0C\u8BF7\u8865\u9F50"}),r.form==="abnormal"&&n.push({level:"warn",file:`conventions/${ce}`,message:r.markerVersion===ae?`\u89C4\u8303\u8F7D\u4F53\u6807\u4E3A v${ae} \u4F46\u7F3A ${le} \u6216\u7D22\u5F15\u8868\u9996\u5217\u975E ${Ae}\uFF0C\u8BF7\u8865\u9F50\u6216\u6267\u884C toolkit conventions upgrade`:`\u89C4\u8303\u8F7D\u4F53\u5B58\u5728 ${le} \u4F46\u7D22\u5F15\u8868\u9996\u5217\u4ECD\u975E ${Ae}\uFF08\u5F62\u6001\u5F02\u5E38\uFF09\uFF0C\u8BF7\u4EBA\u5DE5\u786E\u8BA4`});let o=qt(t),s=Qe(t,o.map(l=>l.file)),i=[Qt(o.filter(l=>l.version!==ne)),en(o.filter(l=>s.has(l.file)))];for(let l of i)l&&n.push({level:"warn",file:l.file,message:l.message});return n.push(...Bo(t)),n}function Yo(e=".tasks",t=process.cwd()){let n=He(e,"active"),r=C(n),o=[];for(let c of r)o.push(...cn(c)),Lo(c)===n&&o.push({level:"warn",file:ue(c),message:"active \u4EFB\u52A1\u5E94\u653E\u5165 {YYYYMM} \u6708\u4EFD\u5B50\u76EE\u5F55\uFF08\u5F53\u524D\u76F4\u653E active \u6839\u76EE\u5F55\uFF09"});for(let c of jo(e))o.push({level:"warn",file:c,message:"\u4EFB\u52A1\u6587\u4EF6\u6E38\u79BB\u4E8E active/ \u4E4B\u5916\uFF0Ctasks/check/archive \u5747\u4E0D\u4F1A\u8BFB\u53D6\uFF0C\u5E94\u79FB\u5165 active/{YYYYMM}/ \u6708\u4EFD\u5B50\u76EE\u5F55"});o.push(...Do(e,t));for(let c of We(e))o.push({level:"warn",file:c.file,message:c.message});let s=new Map;for(let c of r){let d=ue(c,".md"),p=s.get(d);p?p.push(c):s.set(d,[c])}for(let[c,d]of s)d.length>1&&o.push({level:"warn",file:c,message:`\u5B58\u5728 ${d.length} \u4E2A\u540C\u540D\u4EFB\u52A1\u6587\u4EF6\uFF0C\u7591\u4F3C\u91CD\u590D\u5EFA\u6863`});o.push(...Wo(r,e));let i=o.filter(c=>c.level==="error").length,l=o.length-i;return{issues:o,errorCount:i,warnCount:l}}var sn=new Map;function Uo(e){let t=Ao(e),n=sn.get(e);if(n&&n.mtimeMs===t.mtimeMs)return n.titles;let r=[],o=new Set;try{for(let s of F(E(e)).blocks)s.title&&!o.has(s.title)&&(o.add(s.title),r.push(s.title))}catch{}return sn.set(e,{mtimeMs:t.mtimeMs,titles:r}),r}function Wo(e,t){let n=[],r=new Set(e.map(u=>ue(u,".md"))),o=new Map,s=u=>u.trim().replace(/\.md$/,"").trim();for(let u of e){let a=ue(u,".md"),f=E(u),g=pe(f);o.set(a,ke(g.depends_on).map(s))}if(![...o.values()].some(u=>u.length>0))return n;let i=null,l=u=>{if(!i){i=new Map;for(let a of C(He(t,"archive")))for(let f of Uo(a))i.has(f)||i.set(f,O(t,a))}return i.get(u)};for(let[u,a]of o)for(let f of a)if(!r.has(f)){let g=l(f);n.push({level:"warn",file:u,message:g?`\u4F9D\u8D56\u7684\u4EFB\u52A1\u300C${f}\u300D\u4E0D\u5728 active \u4E2D\uFF08\u5DF2\u5F52\u6863\u4E8E ${g}\uFF0C\u65E0\u9700\u518D\u4F9D\u8D56\uFF09`:`\u4F9D\u8D56\u7684\u4EFB\u52A1\u300C${f}\u300D\u4E0D\u5728 active \u4E2D\uFF08\u53EF\u80FD\u5DF2\u5F52\u6863\u6216\u6587\u4EF6\u540D\u62FC\u5199\u9519\u8BEF\uFF09`})}let c=0,d=1,p=2,m=new Map,h=(u,a)=>{m.set(u,d);for(let f of o.get(u)??[]){if(!r.has(f))continue;let g=m.get(f)??c;if(g===d)return[...a,f];if(g===c){let b=h(f,[...a,f]);if(b)return b}}return m.set(u,p),null};for(let u of o.keys())if((m.get(u)??c)===c){let a=h(u,[u]);if(a){n.push({level:"warn",file:u,message:`depends_on \u5B58\u5728\u5FAA\u73AF\u4F9D\u8D56\uFF1A${a.join(" \u2192 ")}`});break}}return n}var ln={breaking:["\u91CD\u5927\uFF1A","Breaking:"],added:["\u65B0\u589E\uFF1A","Added:"],changed:["\u4FEE\u6539\uFF1A","Changed:"],improved:["\u4F18\u5316\uFF1A","Improved:","\u6280\u80FD\uFF1A","skills\uFF1A"],fixed:["\u4FEE\u590D\uFF1A","Fixed:"],docs:["\u6587\u6863\uFF1A","Docs:"],removed:["\u6E05\u7406\uFF1A","Removed:"],deps:["\u4F9D\u8D56\uFF1A"],other:[]},an={"### \u{1F41B} \u8865\u4E01\u4FEE\u590D":"fixed"},Pe={zh:{groups:[{slot:"breaking",title:"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4"},{slot:"added",title:"### \u2728 \u65B0\u589E\u529F\u80FD"},{slot:"changed",title:"### \u{1F527} \u529F\u80FD\u8C03\u6574"},{slot:"improved",title:"### \u26A1 \u4F18\u5316\u6539\u8FDB"},{slot:"fixed",title:"### \u{1F41B} \u95EE\u9898\u4FEE\u590D"},{slot:"docs",title:"### \u{1F4DD} \u6587\u6863\u66F4\u65B0"},{slot:"removed",title:"### \u{1F9F9} \u6E05\u7406\u79FB\u9664"},{slot:"deps",title:"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4"},{slot:"other",title:"### \u{1F4E6} \u5176\u4ED6\u53D8\u66F4"}],replacements:{"### \u91CD\u5927\u53D8\u66F4":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### \u65B0\u589E\u529F\u80FD":"### \u2728 \u65B0\u589E\u529F\u80FD","### \u8865\u4E01\u4FEE\u590D":"### \u{1F41B} \u95EE\u9898\u4FEE\u590D","- Updated dependencies":"- \u66F4\u65B0\u4F9D\u8D56"},deps:"- \u66F4\u65B0\u4F9D\u8D56",released:"\u53D1\u5E03"},en:{groups:[{slot:"breaking",title:"### \u{1F6A8} Breaking Changes"},{slot:"added",title:"### \u2728 Added"},{slot:"changed",title:"### \u{1F527} Changed"},{slot:"improved",title:"### \u26A1 Improved"},{slot:"fixed",title:"### \u{1F41B} Fixed"},{slot:"docs",title:"### \u{1F4DD} Docs"},{slot:"removed",title:"### \u{1F9F9} Removed"},{slot:"deps",title:"### \u{1F517} Dependency Updates"},{slot:"other",title:"### \u{1F4E6} Other"}],replacements:{},deps:"- Updated dependencies",released:"released"}},Gc="zh";function Kc(e,t,n){let r=e[t];return r?{lang:r}:{lang:e[n]??Pe[n],unknown:t}}import{readdirSync as zo}from"fs";import{join as un}from"path";function Ve(e){let t=[],n=new Set(["node_modules",".git","dist","coverage"]),r=o=>{let s;try{s=zo(o,{withFileTypes:!0})}catch{return}for(let i of s)if(i.isDirectory()){if(n.has(i.name))continue;r(un(o,i.name))}else i.name==="CHANGELOG.md"&&t.push(un(o,i.name))};return r(e),t}import{readFileSync as Ho,readdirSync as nl,writeFileSync as Po}from"fs";var Ee=/^## \d+\.\d+\.\d+/,Ge={"### Major Changes":"breaking","### Minor Changes":"added","### Patch Changes":"other","### Dependent Changes":"deps"},Vo="- Updated dependencies",Go=Object.values(Pe).map(e=>e.released);function Ko(){return St()}function pn(e,t,n,r=!0,o=!1){let s=Ho(e,"utf8"),i=s.includes(`\r
60
+ `).length,message:"\u6362\u884C\u7B26\u6DF7\u7528\uFF08\u540C\u6587\u4EF6\u540C\u65F6\u542B CRLF \u4E0E LF\uFF09\uFF0C\u5EFA\u8BAE\u7EDF\u4E00\u4E3A LF"}),n}function an(e){let t=[],n=fe(e),r=_o(e,"utf8");t.push(...Yo(n,r));let o=M(r),s=o.split(/\r?\n/),i=pe.exec(o)?.[0].split(/\r?\n/).length??0;if(!pe.test(o))return t.push({level:"error",file:n,line:1,message:"\u7F3A\u5C11 frontmatter"}),t;let c=me(o);for(let a of Object.keys(c))de.includes(a)||t.push({level:"warn",file:n,line:N(s,i,a),message:`frontmatter \u542B\u672A\u77E5\u5B57\u6BB5\u300C${a}\u300D\uFF0C\u672C\u5DE5\u5177\u4E0D\u8BFB\u53D6\uFF08\u5F52\u6863\u4E0E\u5F52\u4E00\u5316\u4E0D\u4F1A\u4FDD\u7559\uFF0C\u8BF7\u81EA\u884C\u7EF4\u62A4\uFF09`});if(c.status?re.includes(c.status)||t.push({level:"error",file:n,line:N(s,i,"status"),message:`status \u975E\u6CD5\u503C\u300C${c.status}\u300D\uFF0C\u5E94\u4E3A ${re.join(" / ")}`}):t.push({level:"error",file:n,line:N(s,i,"status"),message:"frontmatter \u7F3A\u5C11 status \u5B57\u6BB5"}),P.includes(c.status)&&!c.completed&&t.push({level:"error",file:n,line:N(s,i,"completed"),message:`status \u4E3A\u300C${c.status}\u300D\u4F46\u7F3A\u5C11 completed \u5B8C\u6210\u65F6\u95F4`}),c.completed){let a=c.completed.trim(),f=N(s,i,"completed");if(!jo.test(a))t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u683C\u5F0F\u975E\u6CD5\uFF0C\u5E94\u4E3A YYYY-MM-DD HH:mm`});else{let g=a.match(/^\d{4}-\d{1,2}-\d{1,2}/)?.[0]??a;sn(g)?Bo.test(a)?J(a)?t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u665A\u4E8E\u5F53\u524D\u7CFB\u7EDF\u65F6\u95F4 ${X} \u5C0F\u65F6\u4EE5\u4E0A\uFF0C\u7591\u4F3C\u65F6\u95F4\u6E90\u9519\u8BEF\uFF0C\u8BF7\u5F53\u573A\u53D6\u7CFB\u7EDF\u65F6\u95F4\u6838\u5B9E`}):/(?:[T\s]00:00(?::00)?)$/.test(a)&&t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u6070\u4E3A\u96F6\u70B9\u6574\uFF0C\u7591\u4F3C\u53EA\u586B\u4E86\u65E5\u671F\u88AB\u8865\u96F6\uFF0C\u8BF7\u6838\u5B9E\u5B9E\u9645\u5B8C\u6210\u65F6\u95F4`}):t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u5EFA\u8BAE\u8865\u5168\u4E3A\u5B8C\u6574\u65F6\u95F4 YYYY-MM-DD HH:mm`}):t.push({level:"warn",file:n,line:f,message:`completed\u300C${c.completed}\u300D\u65E5\u671F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u6838\u5BF9`})}}c.owner||t.push({level:"warn",file:n,line:N(s,i,"owner"),message:"\u7F3A\u5C11 owner \u8D1F\u8D23\u4EBA\u5B57\u6BB5"}),c.created?/^\d{8}$/.test(c.created.trim())?sn(c.created.trim())||t.push({level:"warn",file:n,line:N(s,i,"created"),message:`created\u300C${c.created}\u300D\u65E5\u671F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u6838\u5BF9`}):t.push({level:"warn",file:n,line:N(s,i,"created"),message:`created\u300C${c.created}\u300D\u683C\u5F0F\u975E\u6CD5\uFF0C\u5E94\u4E3A YYYYMMDD`}):t.push({level:"warn",file:n,line:N(s,i,"created"),message:"\u7F3A\u5C11 created \u521B\u5EFA\u65E5\u671F\u5B57\u6BB5"}),c.updated&&c.created&&/^\d{8}$/.test(c.updated.trim())&&/^\d{8}$/.test(c.created.trim())&&c.updated.trim()<c.created.trim()&&t.push({level:"error",file:n,line:N(s,i,"updated"),message:`updated ${c.updated.trim()} \u65E9\u4E8E created ${c.created.trim()}\uFF0C\u65F6\u95F4\u7EBF\u77DB\u76FE`});let d=n.match(/^(\d{8})-/);if(Do.test(n)?c.created&&/^\d{8}$/.test(c.created.trim())&&d&&c.created.trim()!==d[1]&&t.push({level:"warn",file:n,message:`\u6587\u4EF6\u540D\u65E5\u671F ${d[1]} \u4E0E created ${c.created.trim()} \u4E0D\u4E00\u81F4`}):t.push({level:"warn",file:n,message:"\u6587\u4EF6\u540D\u4E0D\u7B26\u5408\u89C4\u8303 {YYYYMMDD}-{\u8D1F\u8D23\u4EBA}-{\u7B80\u8FF0}.md"}),c.scope){let a=c.scope.trim(),f=N(s,i,"scope");/[、,,]/.test(a)&&t.push({level:"warn",file:n,line:f,message:`scope\u300C${c.scope}\u300D\u542B\u987F\u53F7/\u9017\u53F7\u7591\u4F3C\u591A\u503C\u5206\u9694\uFF0C\u591A\u503C\u8BF7\u6539\u7528\u534A\u89D2\u52A0\u53F7\u8FDE\u63A5\uFF08\u5982 scope: toolkit+lxgl-web\uFF09`}),/[()()]/.test(a)&&t.push({level:"warn",file:n,line:f,message:`scope\u300C${c.scope}\u300D\u542B\u62EC\u53F7\u7591\u4F3C\u6CE8\u91CA\u6027\u6587\u5B57\uFF0C\u8BF4\u660E\u8BF7\u79FB\u5165\u6B63\u6587`})}let p=Ze(U(o)),h=G("check")?.pendingMarkers!==!1?p.match(on):null;return h&&t.push({level:"warn",file:n,line:cn(s,i,on),message:`\u6B63\u6587\u542B\u672A\u95ED\u5408\u5F85\u529E\u6807\u8BB0\u300C${h[0]}\u300D\uFF0C\u5EFA\u8BAE\u62C6\u5206\u4E3A\u72EC\u7ACB active \u4EFB\u52A1\u6216\u660E\u786E\u95ED\u73AF`}),G("check")?.includeCheckbox!==!1&&No.test(p)&&t.push({level:"warn",file:n,line:cn(s,i,Mo),message:"\u6B63\u6587\u542B\u672A\u52FE\u9009\u5F85\u529E\u9879\u300C- [ ]\u300D\uFF0C\u5EFA\u8BAE\u62C6\u5206\u4E3A\u72EC\u7ACB active \u4EFB\u52A1\u6216\u52FE\u9009\u5B8C\u6210"}),t}function Uo(e){let t=[];if(!Fo(e))return t;for(let n of rn(e,{withFileTypes:!0}))if(!(n.name==="active"||n.name==="archive")){if(n.isFile())n.name.endsWith(".md")&&/^\d{8}-/.test(n.name)&&t.push(n.name);else if(n.isDirectory())for(let r of rn(Ve(e,n.name)))r.endsWith(".md")&&/^\d{8}-/.test(r)&&t.push(`${n.name}/${r}`)}return t}function Wo(e){let t=dt(e);if(!t)return[];let n=O(e,t),r=nt(t,e);return r.state==="not-a-repo"||r.state==="outside-repo"?[]:r.state==="unavailable"?[{level:"warn",file:n,message:`\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u5FFD\u7565\u5224\u5B9A\u4E0D\u53EF\u7528\uFF08${r.detail??"\u672A\u77E5\u539F\u56E0"}\uFF09\uFF0C\u8BF7\u6838\u5B9E git \u73AF\u5883`}]:r.state==="tracked"?[{level:"warn",file:n,message:`\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u5DF2\u88AB\u5FFD\u7565\u89C4\u5219\u8986\u76D6\u4F46\u4ECD\u88AB git \u8DDF\u8E2A\uFF08\u7591\u4F3C\u5386\u53F2 git add -f\uFF09\uFF1A\u6267\u884C git rm --cached ${n} \u540E\u624D\u4F1A\u771F\u6B63\u4E0D\u5165\u5E93`}]:r.state==="ignored"?[]:[{level:"warn",file:n,message:"\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u672A\u88AB gitignore \u8986\u76D6\uFF0C\u53EF\u80FD\u968F git \u63D0\u4EA4\u6CC4\u9732\u4E2A\u4EBA\u914D\u7F6E\uFF1A\u91CD\u8DD1 toolkit init \u53EF\u81EA\u52A8\u8865\u5199\u5FFD\u7565\u884C"}]}function Ho(e,t){let n=[],r=qt(e);r.hasLegacy&&n.push({level:"warn",file:Ae,message:r.hasDir?"\u65E7\u5355\u6587\u4EF6\u89C4\u8303\u8F7D\u4F53\u5DF2\u88AB conventions/ \u76EE\u5F55\u5F62\u6001\u53D6\u4EE3\uFF0C\u5EFA\u8BAE\u6E05\u7406\uFF08\u4E24\u8005\u5E76\u5B58\u65F6\u4EE5\u76EE\u5F55\u5F62\u6001\u4E3A\u51C6\uFF09":"\u65E7\u5355\u6587\u4EF6\u89C4\u8303\u8F7D\u4F53\uFF0C\u5EFA\u8BAE\u8FC1\u79FB\u4E3A conventions/ \u76EE\u5F55\u5F62\u6001\uFF08index.md \u4F5C\u552F\u4E00\u5165\u53E3 + common.md / \u7AEF\u5206\u518C\u6309\u9700\u521B\u5EFA\uFF09"}),r.hasDir&&!r.hasIndex&&n.push({level:"warn",file:`conventions/${le}`,message:"\u89C4\u8303\u8F7D\u4F53\u7F3A index.md\uFF08\u552F\u4E00\u5165\u53E3\u4E0E\u552F\u4E00\u6743\u5A01\uFF09\uFF0C\u8BF7\u8865\u9F50"}),r.form==="abnormal"&&n.push({level:"warn",file:`conventions/${le}`,message:r.markerVersion===ue?`\u89C4\u8303\u8F7D\u4F53\u6807\u4E3A v${ue} \u4F46\u7F3A ${ae} \u6216\u7D22\u5F15\u8868\u9996\u5217\u975E ${Ee}\uFF0C\u8BF7\u8865\u9F50\u6216\u6267\u884C toolkit conventions upgrade`:`\u89C4\u8303\u8F7D\u4F53\u5B58\u5728 ${ae} \u4F46\u7D22\u5F15\u8868\u9996\u5217\u4ECD\u975E ${Ee}\uFF08\u5F62\u6001\u5F02\u5E38\uFF09\uFF0C\u8BF7\u4EBA\u5DE5\u786E\u8BA4`});let o=en(t),s=tt(t,o.map(l=>l.file)),i=[tn(o.filter(l=>l.version!==ne)),nn(o.filter(l=>s.has(l.file)))];for(let l of i)l&&n.push({level:"warn",file:l.file,message:l.message});return n.push(...Wo(t)),n}function zo(e=".tasks",t=process.cwd()){let n=Ve(e,"active"),r=C(n),o=[];for(let c of r)o.push(...an(c)),Oo(c)===n&&o.push({level:"warn",file:fe(c),message:"active \u4EFB\u52A1\u5E94\u653E\u5165 {YYYYMM} \u6708\u4EFD\u5B50\u76EE\u5F55\uFF08\u5F53\u524D\u76F4\u653E active \u6839\u76EE\u5F55\uFF09"});for(let c of Uo(e))o.push({level:"warn",file:c,message:"\u4EFB\u52A1\u6587\u4EF6\u6E38\u79BB\u4E8E active/ \u4E4B\u5916\uFF0Ctasks/check/archive \u5747\u4E0D\u4F1A\u8BFB\u53D6\uFF0C\u5E94\u79FB\u5165 active/{YYYYMM}/ \u6708\u4EFD\u5B50\u76EE\u5F55"});o.push(...Ho(e,t));for(let c of ze(e))o.push({level:"warn",file:c.file,message:c.message});let s=new Map;for(let c of r){let d=fe(c,".md"),p=s.get(d);p?p.push(c):s.set(d,[c])}for(let[c,d]of s)d.length>1&&o.push({level:"warn",file:c,message:`\u5B58\u5728 ${d.length} \u4E2A\u540C\u540D\u4EFB\u52A1\u6587\u4EF6\uFF0C\u7591\u4F3C\u91CD\u590D\u5EFA\u6863`});o.push(...Vo(r,e));let i=o.filter(c=>c.level==="error").length,l=o.length-i;return{issues:o,errorCount:i,warnCount:l}}var ln=new Map;function Po(e){let t=Io(e),n=ln.get(e);if(n&&n.mtimeMs===t.mtimeMs)return n.titles;let r=[],o=new Set;try{for(let s of F(E(e)).blocks)s.title&&!o.has(s.title)&&(o.add(s.title),r.push(s.title))}catch{}return ln.set(e,{mtimeMs:t.mtimeMs,titles:r}),r}function Vo(e,t){let n=[],r=new Set(e.map(u=>fe(u,".md"))),o=new Map,s=u=>u.trim().replace(/\.md$/,"").trim();for(let u of e){let a=fe(u,".md"),f=E(u),g=me(f);o.set(a,be(g.depends_on).map(s))}if(![...o.values()].some(u=>u.length>0))return n;let i=null,l=u=>{if(!i){i=new Map;for(let a of C(Ve(t,"archive")))for(let f of Po(a))i.has(f)||i.set(f,O(t,a))}return i.get(u)};for(let[u,a]of o)for(let f of a)if(!r.has(f)){let g=l(f);n.push({level:"warn",file:u,message:g?`\u4F9D\u8D56\u7684\u4EFB\u52A1\u300C${f}\u300D\u4E0D\u5728 active \u4E2D\uFF08\u5DF2\u5F52\u6863\u4E8E ${g}\uFF0C\u65E0\u9700\u518D\u4F9D\u8D56\uFF09`:`\u4F9D\u8D56\u7684\u4EFB\u52A1\u300C${f}\u300D\u4E0D\u5728 active \u4E2D\uFF08\u53EF\u80FD\u5DF2\u5F52\u6863\u6216\u6587\u4EF6\u540D\u62FC\u5199\u9519\u8BEF\uFF09`})}let c=0,d=1,p=2,m=new Map,h=(u,a)=>{m.set(u,d);for(let f of o.get(u)??[]){if(!r.has(f))continue;let g=m.get(f)??c;if(g===d)return[...a,f];if(g===c){let b=h(f,[...a,f]);if(b)return b}}return m.set(u,p),null};for(let u of o.keys())if((m.get(u)??c)===c){let a=h(u,[u]);if(a){n.push({level:"warn",file:u,message:`depends_on \u5B58\u5728\u5FAA\u73AF\u4F9D\u8D56\uFF1A${a.join(" \u2192 ")}`});break}}return n}var un={breaking:["\u91CD\u5927\uFF1A","Breaking:"],added:["\u65B0\u589E\uFF1A","Added:"],changed:["\u4FEE\u6539\uFF1A","Changed:"],improved:["\u4F18\u5316\uFF1A","Improved:","\u6280\u80FD\uFF1A","skills\uFF1A"],fixed:["\u4FEE\u590D\uFF1A","Fixed:"],docs:["\u6587\u6863\uFF1A","Docs:"],removed:["\u6E05\u7406\uFF1A","Removed:"],deps:["\u4F9D\u8D56\uFF1A"],other:[]},fn={"### \u{1F41B} \u8865\u4E01\u4FEE\u590D":"fixed"},Ge={zh:{groups:[{slot:"breaking",title:"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4"},{slot:"added",title:"### \u2728 \u65B0\u589E\u529F\u80FD"},{slot:"changed",title:"### \u{1F527} \u529F\u80FD\u8C03\u6574"},{slot:"improved",title:"### \u26A1 \u4F18\u5316\u6539\u8FDB"},{slot:"fixed",title:"### \u{1F41B} \u95EE\u9898\u4FEE\u590D"},{slot:"docs",title:"### \u{1F4DD} \u6587\u6863\u66F4\u65B0"},{slot:"removed",title:"### \u{1F9F9} \u6E05\u7406\u79FB\u9664"},{slot:"deps",title:"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4"},{slot:"other",title:"### \u{1F4E6} \u5176\u4ED6\u53D8\u66F4"}],replacements:{"### \u91CD\u5927\u53D8\u66F4":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### \u65B0\u589E\u529F\u80FD":"### \u2728 \u65B0\u589E\u529F\u80FD","### \u8865\u4E01\u4FEE\u590D":"### \u{1F41B} \u95EE\u9898\u4FEE\u590D","- Updated dependencies":"- \u66F4\u65B0\u4F9D\u8D56"},deps:"- \u66F4\u65B0\u4F9D\u8D56",released:"\u53D1\u5E03"},en:{groups:[{slot:"breaking",title:"### \u{1F6A8} Breaking Changes"},{slot:"added",title:"### \u2728 Added"},{slot:"changed",title:"### \u{1F527} Changed"},{slot:"improved",title:"### \u26A1 Improved"},{slot:"fixed",title:"### \u{1F41B} Fixed"},{slot:"docs",title:"### \u{1F4DD} Docs"},{slot:"removed",title:"### \u{1F9F9} Removed"},{slot:"deps",title:"### \u{1F517} Dependency Updates"},{slot:"other",title:"### \u{1F4E6} Other"}],replacements:{},deps:"- Updated dependencies",released:"released"}},qc="zh";function Qc(e,t,n){let r=e[t];return r?{lang:r}:{lang:e[n]??Ge[n],unknown:t}}import{readdirSync as Go}from"fs";import{join as dn}from"path";function Ke(e){let t=[],n=new Set(["node_modules",".git","dist","coverage"]),r=o=>{let s;try{s=Go(o,{withFileTypes:!0})}catch{return}for(let i of s)if(i.isDirectory()){if(n.has(i.name))continue;r(dn(o,i.name))}else i.name==="CHANGELOG.md"&&t.push(dn(o,i.name))};return r(e),t}import{readFileSync as Ko,readdirSync as cl,writeFileSync as Xo}from"fs";var Ce=/^## \d+\.\d+\.\d+/,Xe={"### Major Changes":"breaking","### Minor Changes":"added","### Patch Changes":"other","### Dependent Changes":"deps"},Jo="- Updated dependencies",Zo=Object.values(Ge).map(e=>e.released);function qo(){return wt()}function gn(e,t,n,r=!0,o=!1){let s=Ko(e,"utf8"),i=s.includes(`\r
61
61
  `)?`\r
62
62
  `:`
63
63
  `,l=s.replace(/\r\n/g,`
64
- `),c=ts(l),d=cs(c,n,o),p=fn(c),m=fn(d);m<p&&console.error(`\u26A0\uFE0F ${e}\uFF1A\u5F52\u7C7B\u540E\u6761\u76EE\u6570\u7531 ${p} \u964D\u4E3A ${m}\uFF0C\u7591\u4F3C\u4E22\u5931\u5185\u5BB9\uFF0C\u8BF7\u4EBA\u5DE5\u6838\u5BF9`);let h=d;for(let[I,T]of Object.entries(n.replacements))h=h.replaceAll(I,T);for(;h.includes(`${n.deps}
64
+ `),c=ss(l),d=fs(c,n,o),p=pn(c),m=pn(d);m<p&&console.error(`\u26A0\uFE0F ${e}\uFF1A\u5F52\u7C7B\u540E\u6761\u76EE\u6570\u7531 ${p} \u964D\u4E3A ${m}\uFF0C\u7591\u4F3C\u4E22\u5931\u5185\u5BB9\uFF0C\u8BF7\u4EBA\u5DE5\u6838\u5BF9`);let h=d;for(let[I,T]of Object.entries(n.replacements))h=h.replaceAll(I,T);for(;h.includes(`${n.deps}
65
65
  ${n.deps}`);)h=h.replace(`${n.deps}
66
66
  ${n.deps}`,n.deps);for(;;){let I=h.replace(/^- (.+)\n- \1$/gm,"- $1");if(I===h)break;h=I}let u=h.split(`
67
- `),a=[],f=[n.released,...Go].map(Jo),g=new RegExp(`^> \\d{4}-\\d{2}-\\d{2} (?:${f.join("|")})$`),b=0;for(;b<u.length;){let I=u[b]??"";if(Ee.test(I)){let T=b+1;for(;T<u.length&&(u[T]??"").trim()==="";)T++;let v=u[T]??"";if(v.startsWith("> ")&&g.test(v.trim())){a.push(I,"",v),b=T+1;continue}a.push(I,"",`> ${t} ${n.released}`,""),b=T;continue}a.push(I),b++}let w=a.join(`
68
- `),j=$(w,r);return j!==l?(Po(e,j.replace(/\n/g,i),"utf8"),!0):!1}function Xo(e,t,n,r=!0,o=!1){let s=[];for(let i of Ve(e))pn(i,t,n,r,o)&&s.push(i);if(s.length===0)console.log("\u65E0 CHANGELOG \u9700\u8981\u66F4\u65B0");else for(let i of s)console.log(`changelog \u5DF2\u66F4\u65B0\uFF1A${i}`);return s}function fn(e){return e.split(`
69
- `).filter(t=>t.startsWith("- ")).length}function Jo(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Zo(e){let t=[];for(let n of e)for(let r of n.prefixes??[])t.push([n.slot,r]);return t}function mn(e,t){let n=e.slice(2);for(let[r,o]of Object.entries(ln)){let s=o.find(i=>n.startsWith(i));if(s)return[r,s]}for(let[r,o]of t)if(n.startsWith(o))return[r,o];return null}function qo(e,t){return e.startsWith(Vo)?"deps":mn(e,t)?.[0]??null}function Qo(e,t){let n=mn(e[0]??"",t);if(!n)return e;let r=(e[0]??"").slice(2+n[1].length).trim();return r===""?e:[`- ${r}`,...e.slice(1)]}function es(e){for(let t of e){if(t.startsWith("- "))return!1;if(t.trim()!=="")return!0}return!1}function ts(e){let t=e.replace(/\r\n/g,`
67
+ `),a=[],f=[n.released,...Zo].map(es),g=new RegExp(`^> \\d{4}-\\d{2}-\\d{2} (?:${f.join("|")})$`),b=0;for(;b<u.length;){let I=u[b]??"";if(Ce.test(I)){let T=b+1;for(;T<u.length&&(u[T]??"").trim()==="";)T++;let v=u[T]??"";if(v.startsWith("> ")&&g.test(v.trim())){a.push(I,"",v),b=T+1;continue}a.push(I,"",`> ${t} ${n.released}`,""),b=T;continue}a.push(I),b++}let w=a.join(`
68
+ `),j=$(w,r);return j!==l?(Xo(e,j.replace(/\n/g,i),"utf8"),!0):!1}function Qo(e,t,n,r=!0,o=!1){let s=[];for(let i of Ke(e))gn(i,t,n,r,o)&&s.push(i);if(s.length===0)console.log("\u65E0 CHANGELOG \u9700\u8981\u66F4\u65B0");else for(let i of s)console.log(`changelog \u5DF2\u66F4\u65B0\uFF1A${i}`);return s}function pn(e){return e.split(`
69
+ `).filter(t=>t.startsWith("- ")).length}function es(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ts(e){let t=[];for(let n of e)for(let r of n.prefixes??[])t.push([n.slot,r]);return t}function hn(e,t){let n=e.slice(2);for(let[r,o]of Object.entries(un)){let s=o.find(i=>n.startsWith(i));if(s)return[r,s]}for(let[r,o]of t)if(n.startsWith(o))return[r,o];return null}function ns(e,t){return e.startsWith(Jo)?"deps":hn(e,t)?.[0]??null}function rs(e,t){let n=hn(e[0]??"",t);if(!n)return e;let r=(e[0]??"").slice(2+n[1].length).trim();return r===""?e:[`- ${r}`,...e.slice(1)]}function os(e){for(let t of e){if(t.startsWith("- "))return!1;if(t.trim()!=="")return!0}return!1}function ss(e){let t=e.replace(/\r\n/g,`
70
70
  `);t=t.replace(/^- [0-9a-f]{7}: /gm,"- ");let n=t.split(`
71
71
  `);for(let r=0;r<n.length;r++)if(/^- - .+/.test(n[r]??"")){n[r]=(n[r]??"").replace(/^- - /,"- ");for(let o=r+1;o<n.length&&/^ {2}- /.test(n[o]??"");o++)n[o]=(n[o]??"").slice(2)}return n.join(`
72
- `)}function ns(e){let t=[],n=[],r=0;for(;r<e.length&&!Ee.test(e[r]??"");)t.push(e[r++]??"");for(;r<e.length;){let o=r,s=[];for(;r<e.length&&!(e[r]??"").startsWith("### ")&&!(s.length>0&&Ee.test(e[r]??""));)s.push(e[r++]??"");let i=[];for(;r<e.length&&(e[r]??"").startsWith("### ");){let l=e[r++]??"",c=[];for(;r<e.length&&!(e[r]??"").startsWith("### ")&&!Ee.test(e[r]??"");)c.push(e[r++]??"");for(;c.length>0&&(c[c.length-1]??"").trim()==="";)c.pop();i.push({title:l,body:c})}n.push({lines:e.slice(o,r),header:s,sections:i})}return{lead:t,blocks:n}}function rs(e,t,n){let r=e.sections.filter(a=>Ge[a.title]!==void 0);if(!n&&r.length===0)return e.lines;let o=new Set(t.map(a=>a.slot)),s=Zo(t),i=new Map(t.map(a=>[a.title,a.slot])),l=e.sections.map(a=>({section:a,slot:is(a.title,i)})),c=l.filter(a=>os(a,n));if(c.length===0)return e.lines;let d=new Set(c.map(a=>a.section));if(c.some(a=>es(a.section.body)))return e.lines;let p=new Map;for(let a of c)for(let f of as(a.section.body)){let g=qo(f[0]??"",s)??a.slot,b=Qo(f,s),w=p.get(g);w?w.push(b):p.set(g,[b])}for(let a of p.keys())if(!o.has(a))return e.lines;let m=[];for(let a of t){let f=p.get(a.slot);f&&m.push({title:a.title,body:ls(f)})}let h=[...e.header];for(;h.length>0&&(h[h.length-1]??"").trim()==="";)h.pop();let u=[...h,""];for(let a of m)u.push(...dn(a));for(let a of l)d.has(a.section)||u.push(...dn(ss(a.section)));return u}function os(e,t){return e.slot===null?!1:t||Ge[e.section.title]!==void 0}function ss(e){let t=[...e.body];for(;t.length>0&&(t[0]??"").trim()==="";)t.shift();for(;t.length>0&&(t[t.length-1]??"").trim()==="";)t.pop();return{title:e.title,body:t}}function is(e,t){return t.get(e)??an[e]??Ge[e]??null}function cs(e,t,n){let r=t.groups;if(!r||r.length===0)return e;let{lead:o,blocks:s}=ns(e.split(`
73
- `)),i=[...o];for(let l of s)i.push(...rs(l,r,n));return i.join(`
74
- `)}function ls(e){let t=[];for(let n of e)t.push(...n);return t}function dn(e){return[e.title,"",...e.body,""]}function as(e){let t=[];for(let n of e){if(n.startsWith("- ")){t.push([n]);continue}t[t.length-1]?.push(n)}for(let n of t)for(;n.length>1&&(n[n.length-1]??"").trim()==="";)n.pop();return t}export{re as ALL_STATUSES,Gc as DEFAULT_LANG,P as DONE_STATUSES,fe as FRONTMATTER_KEYS,an as LEGACY_TITLE_SLOTS,ln as SLOT_PREFIXES,qr as archiveTasks,Ft as buildSummary,We as checkArchive,Ve as collectChangelogs,W as dateFromFileName,kr as exportTasks,so as fixArchive,pn as formatChangelog,Xo as formatChangelogs,G as getConfigSection,Hr as importTasks,Pe as languages,Et as listActiveTasks,Ct as listArchivedTasks,C as listTaskFiles,tr as listTasks,Ln as loadToolkitConfig,Ko as localDate,A as normalizeCompleted,It as orderRows,Zr as parseArchiveTasks,ft as parseBool,Y as parseFrontmatter,Ot as printTaskBoard,nr as printTasks,je as queryTasks,$ as redactText,On as resetToolkitConfigCache,dt as resolveEnabled,Kc as resolveLang,U as stripFrontmatter,Nt as toCSV,Mt as toJSON,cn as validateTaskFile,Yo as validateTasks};
72
+ `)}function is(e){let t=[],n=[],r=0;for(;r<e.length&&!Ce.test(e[r]??"");)t.push(e[r++]??"");for(;r<e.length;){let o=r,s=[];for(;r<e.length&&!(e[r]??"").startsWith("### ")&&!(s.length>0&&Ce.test(e[r]??""));)s.push(e[r++]??"");let i=[];for(;r<e.length&&(e[r]??"").startsWith("### ");){let l=e[r++]??"",c=[];for(;r<e.length&&!(e[r]??"").startsWith("### ")&&!Ce.test(e[r]??"");)c.push(e[r++]??"");for(;c.length>0&&(c[c.length-1]??"").trim()==="";)c.pop();i.push({title:l,body:c})}n.push({lines:e.slice(o,r),header:s,sections:i})}return{lead:t,blocks:n}}function cs(e,t,n){let r=e.sections.filter(a=>Xe[a.title]!==void 0);if(!n&&r.length===0)return e.lines;let o=new Set(t.map(a=>a.slot)),s=ts(t),i=new Map(t.map(a=>[a.title,a.slot])),l=e.sections.map(a=>({section:a,slot:us(a.title,i)})),c=l.filter(a=>ls(a,n));if(c.length===0)return e.lines;let d=new Set(c.map(a=>a.section));if(c.some(a=>os(a.section.body)))return e.lines;let p=new Map;for(let a of c)for(let f of ps(a.section.body)){let g=ns(f[0]??"",s)??a.slot,b=rs(f,s),w=p.get(g);w?w.push(b):p.set(g,[b])}for(let a of p.keys())if(!o.has(a))return e.lines;let m=[];for(let a of t){let f=p.get(a.slot);f&&m.push({title:a.title,body:ds(f)})}let h=[...e.header];for(;h.length>0&&(h[h.length-1]??"").trim()==="";)h.pop();let u=[...h,""];for(let a of m)u.push(...mn(a));for(let a of l)d.has(a.section)||u.push(...mn(as(a.section)));return u}function ls(e,t){return e.slot===null?!1:t||Xe[e.section.title]!==void 0}function as(e){let t=[...e.body];for(;t.length>0&&(t[0]??"").trim()==="";)t.shift();for(;t.length>0&&(t[t.length-1]??"").trim()==="";)t.pop();return{title:e.title,body:t}}function us(e,t){return t.get(e)??fn[e]??Xe[e]??null}function fs(e,t,n){let r=t.groups;if(!r||r.length===0)return e;let{lead:o,blocks:s}=is(e.split(`
73
+ `)),i=[...o];for(let l of s)i.push(...cs(l,r,n));return i.join(`
74
+ `)}function ds(e){let t=[];for(let n of e)t.push(...n);return t}function mn(e){return[e.title,"",...e.body,""]}function ps(e){let t=[];for(let n of e){if(n.startsWith("- ")){t.push([n]);continue}t[t.length-1]?.push(n)}for(let n of t)for(;n.length>1&&(n[n.length-1]??"").trim()==="";)n.pop();return t}export{re as ALL_STATUSES,qc as DEFAULT_LANG,P as DONE_STATUSES,de as FRONTMATTER_KEYS,fn as LEGACY_TITLE_SLOTS,un as SLOT_PREFIXES,no as archiveTasks,Ot as buildSummary,ze as checkArchive,Ke as collectChangelogs,W as dateFromFileName,vr as exportTasks,ao as fixArchive,gn as formatChangelog,Qo as formatChangelogs,G as getConfigSection,Kr as importTasks,Ge as languages,Lt as listActiveTasks,It as listArchivedTasks,C as listTaskFiles,sr as listTasks,On as loadToolkitConfig,qo as localDate,A as normalizeCompleted,_t as orderRows,to as parseArchiveTasks,pt as parseBool,Y as parseFrontmatter,Mt as printTaskBoard,ir as printTasks,De as queryTasks,$ as redactText,Bn as resetToolkitConfigCache,mt as resolveEnabled,Qc as resolveLang,U as stripFrontmatter,jt as toCSV,Bt as toJSON,an as validateTaskFile,zo as validateTasks};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fxri/toolkit",
3
- "version": "1.11.2",
3
+ "version": "1.11.4",
4
4
  "description": "专为多人 + AI 跨项目协作打造:任务管理 + 多语言 CHANGELOG。",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -76,7 +76,7 @@
76
76
  "dev": "pnpm build:debug && node ./dist/cli.js",
77
77
  "build": "cross-env NODE_ENV=production tsup",
78
78
  "build:debug": "cross-env NODE_ENV=development tsup --config tsup.dev.config.ts",
79
- "typecheck": "tsc --noEmit",
79
+ "typecheck": "tsc --noEmit -p tsconfig.typecheck.json",
80
80
  "lint": "eslint . --cache",
81
81
  "lint:fix": "eslint . --fix",
82
82
  "test": "vitest run --exclude \"src/__tests__/warn-threshold.test.ts\"",
package/skills/README.md CHANGED
@@ -8,9 +8,9 @@
8
8
 
9
9
  | 技能 | 版本 | 用途 |
10
10
  | --- | --- | --- |
11
- | [fxri-plan-to-task](./fxri-plan-to-task/SKILL.md) | 1.4.4 | 方案落盘:建档评估(先查后写)→ 建档 → 校验 → 归档 → 任务级规范沉淀(能力终点);规范载体迁移与升级 |
12
- | [fxri-release-changelog](./fxri-release-changelog/SKILL.md) | 1.1.4 | changesets 发版与多语言 CHANGELOG 维护 |
13
- | [fxri-session-recap](./fxri-session-recap/SKILL.md) | 1.2.4 | 会话收尾全量沉淀 + 规范沉淀 / 新会话三层恢复 / 历史任务时间批量修正 |
11
+ | [fxri-plan-to-task](./fxri-plan-to-task/SKILL.md) | 1.4.5 | 方案落盘:建档评估(先查后写)→ 建档 → 校验 → 归档 → 任务级规范沉淀(能力终点);规范载体迁移与升级 |
12
+ | [fxri-release-changelog](./fxri-release-changelog/SKILL.md) | 1.1.5 | changesets 发版与多语言 CHANGELOG 维护 |
13
+ | [fxri-session-recap](./fxri-session-recap/SKILL.md) | 1.2.5 | 会话收尾全量沉淀 + 规范沉淀 / 新会话三层恢复 / 历史任务时间批量修正 |
14
14
 
15
15
  版本号取自各 SKILL.md 的 frontmatter `metadata.version`(`toolkit skills status` / `skills install` 打印的真源版本),与正文首部版本声明双写一致。
16
16
 
@@ -23,15 +23,17 @@
23
23
  ```bash
24
24
  pnpm add -g @fxri/toolkit # 1. 装 CLI(npm 用户 npm i -g @fxri/toolkit)
25
25
  toolkit skills install # 2. 把包内技能装到各 agent 的全局技能目录
26
- toolkit skills status # 查现场状态(悬空 / 指向其他版本 / 副本漂移 / 缺失 / 同名冲突)
26
+ # --scope project 换项目面:真源落 <仓库根>/.agents/skills/、其余候选目录落入口薄壳
27
+ toolkit skills status # 查现场状态(悬空 / 指向其他版本 / 副本漂移 / 缺失 / 同名冲突;--scope project 查项目面)
27
28
  # 前四类重跑 toolkit skills install 补齐,同名冲突需 toolkit skills install --force 覆盖
28
- toolkit skills remove # 卸载本包装的产物(只清自己装的,不碰用户自装技能)
29
+ toolkit skills remove # 卸载本包装的产物(只清自己装的,不碰用户自装技能;--scope project 清项目面)
29
30
  ```
30
31
 
31
32
  - 真源唯一:技能取自已装 CLI 包内的 `skills/`;软链锚在 pnpm 稳定入口,升级 CLI 后自动指向新版(副本形式需重跑 `toolkit skills install`)
32
33
  - 目标三层:主目标 `~/.agents/skills/`(多家 agent 共读)→ 内置表内**已安装**的各 agent 全局技能目录 → `--dir <path>` 兜底(可多次指定,给表外 agent 用)
33
34
  - 默认软链(锚在 pnpm 稳定入口,升级不失效);链接创建失败自动降级为副本并打印 ⚠️(如无权限建链);`--copy` 强制副本、`--dry-run` 预演、`--force` 覆盖同名非本包产物(不改本包已登记副本的形态)
34
35
  - 产物记录在状态文件 `~/.agents/.toolkit-skills.json`;卸载 CLI 前先跑 `toolkit skills remove`,避免留下悬空链接(清理后目标目录若已空会一并回收)
36
+ - **项目面(`--scope project`)**:`--scope` 缺省时按 CLI 安装位置自动判定(项目内装 CLI → 项目面)。真源落 `<仓库根>/.agents/skills/`(完整副本),其余**已存在**的候选目录(`.trae/skills/`、`.trae-cn/skills/`、`.cursor/skills/`、`.claude/skills/`)各放每个技能一份入口薄壳指向真源;产物记录在 `<仓库根>/.toolkit/state.json`(与真源、薄壳一并入库)。`toolkit init` 会写入 `prepare` 刷新钩子,`pnpm install` 时自动补齐/刷新,队友 clone 即用;`--copy` 仅全局面生效,项目面恒为副本
35
37
 
36
38
  ### 方式二:上游安装器 `npx skills`(需锁定文件或覆盖表外 agent 时)
37
39
 
@@ -3,14 +3,14 @@ name: fxri-plan-to-task
3
3
  description: 将已确认的实施方案落盘为标准任务文件并跟踪至归档:动手前建档评估(查 active/archive 判同主题)、按模板建档、状态机更新、四级时间源取证、自查校验、任务级规范沉淀与手工归档。当用户确认方案后表达「开始落地/登记记录」的意图,或即将动手改仓库文件时使用——含建档、任务登记、落盘、归档、任务校验、规范载体迁移与升级(conventions 单文件升目录形态、v1 升 v2)等说法及其口语近义表达(如按这个做吧、记一下、建个任务跟踪)均触发。不用于方案未确认的对话、会话收尾整场沉淀(fxri-session-recap 模式一)、与任务记录无关的普通 TODO、issue 管理或日常提交信息撰写。
4
4
  license: MIT
5
5
  metadata:
6
- version: "1.4.4"
6
+ version: "1.4.5"
7
7
  author: fxri
8
8
  source: https://github.com/fxri-net/toolkit
9
9
  ---
10
10
 
11
11
  # 方案落盘:任务建档与归档
12
12
 
13
- > 本技能版本 1.4.4(随 @fxri/toolkit 同批分发)。被问版本时即报此值——不读磁盘、不跑 CLI:报出的值就是本会话上下文里已加载内容的版本,可与 `toolkit skills status` 打印的磁盘基准值对照,不一致即说明会话上下文已过期,开新会话即可。
13
+ > 本技能版本 1.4.5(随 @fxri/toolkit 同批分发)。被问版本时即报此值——不读磁盘、不跑 CLI:报出的值就是本会话上下文里已加载内容的版本,可与 `toolkit skills status` 打印的磁盘基准值对照,不一致即说明会话上下文已过期,开新会话即可。
14
14
 
15
15
  ## 何时使用
16
16
 
@@ -21,7 +21,7 @@
21
21
  - 目录与任务目录同在 `.tasks/` 根层,纯 Markdown 随 git 走;默认 `.tasks` 目录名可随任务区自定而变,内部结构不变
22
22
  - 非任务文件:`toolkit tasks` 各子命令不读其内容,`check` 不因内容告警;仅在**载体形态异常**时给软告警(旧单文件残留、缺 `index.md`、标记与结构不一致);**入口层现场异常**(壳标记与当前 toolkit 不一致、壳被 gitignore 覆盖)另见下段入口壳
23
23
 
24
- 载体可另配套**入口壳(一阶触发面)**:在**已存在的**项目级技能目录(`.agents/skills/`、`.trae/skills/`、`.trae-cn/skills/`、`.cursor/skills/`、`.claude/skills/`;多 agent 混用团队多个并存时**每处各写一份**、互不覆盖,一个都不存在时回落 `.agents/skills/`)下生成 `toolkit-conventions/SKILL.md`,目录名与 frontmatter `name` 同名(Agent Skills 标准要求)。壳只作入口、不承载条文,正文指回任务区 `conventions/index.md`;由 `toolkit init` 幂等生成(可安全删除,重跑补回;已存在壳按标记版本分流——标记不旧于当前版本保持不变,落后或无标记就地更新为当前版本),只在已有目录内落盘、不为使用者未安装的 agent 凭空建目录,本包源仓库自身不生成。壳首部为 frontmatter,故其形态标记 `<!-- toolkit-conventions-entry: v2 -->` 退居其后、须全文件扫描(区别于载体标记只看首行);壳标记与当前 toolkit 不一致、或被 `.gitignore` 覆盖时,`toolkit conventions status` 与 `toolkit tasks check` 软告警——标记不一致可重跑 `toolkit init` 就地更新为当前版本;同类告警在多落点并存时**合并为一条**并内联全部落点路径(仓库根相对路径),不按壳逐条重复。体检只扫上述 5 个内置候选目录(`findEntryShells`):用户手工把壳拷到未收录目录(如 `.windsurf/skills`)不参与体检。
24
+ 载体可另配套**入口壳(一阶触发面)**:在**已存在的**项目级技能目录(`.agents/skills/`、`.trae/skills/`、`.trae-cn/skills/`、`.cursor/skills/`、`.claude/skills/`;多 agent 混用团队多个并存时**每处各写一份**、互不覆盖,一个都不存在时回落 `.agents/skills/`)下生成 `toolkit-conventions/SKILL.md`,目录名与 frontmatter `name` 同名(Agent Skills 标准要求)。壳只作入口、不承载条文,正文指回任务区 `conventions/index.md`;由 `toolkit init` 幂等生成(可安全删除,重跑补回;已存在壳按标记版本分流——标记不旧于当前版本保持不变,落后或无标记就地更新为当前版本),只在已有目录内落盘、不为使用者未安装的 agent 凭空建目录,本包源仓库自身不生成。壳首部为 frontmatter,故其形态标记 `<!-- toolkit-conventions-entry: v2 -->` 退居其后、须全文件扫描(区别于载体标记只看首行);壳标记与当前 toolkit 不一致、或被 `.gitignore` 覆盖时,`toolkit conventions status` 与 `toolkit tasks check` 软告警——标记不一致可重跑 `toolkit init` 就地更新为当前版本;同类告警在多落点并存时**合并为一条**并内联全部落点路径(仓库根相对路径),不按壳逐条重复。体检只扫上述 5 个内置候选目录(`findEntryShells`):用户手工把壳拷到未收录目录(如 `.windsurf/skills`)不参与体检。⚠️ 同一批候选目录还承载**项目面技能薄壳**(`toolkit skills install --scope project` 在真源 `<仓库根>/.agents/skills/` 之外的其他已存在候选目录生成 `fxri-*` 薄壳),与 `toolkit-conventions/` 入口壳**不同名并存、互不覆盖**;两者机制独立——入口壳由 `toolkit init` 生成、技能薄壳由技能分发生成。
25
25
 
26
26
  规范触发面共三层,**任一层可用即可触达**:① 全局技能 `fxri-plan-to-task`(随包分发到各 agent 全局技能目录,其工作流第 1 步即要求读 `conventions/index.md`)——**不依赖项目内任何文件、恒在兜底**;② 上述项目级入口壳(用户不主动发问也能被 agent 读到);③ `AGENTS.md` 指针块(仅在文件已存在时幂等追加,不存在不新建,跳过时提示仍有第 1 层可触达)。三层同时缺席的唯一情形:装包后未跑 `toolkit skills install`(或 agent 不加载全局技能),且项目既无 `AGENTS.md` 又未跑 `toolkit init`——`init` 检测到尚未安装全局技能时会在「下一步」中补一行 `toolkit skills install` 指引(已安装则不重复提示),把这一情形收敛为「用户忽略了 `init` 的提示」。
27
27
 
@@ -3,14 +3,14 @@ name: fxri-release-changelog
3
3
  description: 基于 changesets 的发版与多语言 CHANGELOG 维护流程:创建变更集、消费发版、把分组标题与条目转为项目语言风格、清理变更集、打标签发布;无 changesets 的项目提供同格式手工模式。当用户表达发版或记录变更意图——含创建变更集、changeset、发版、version、CHANGELOG 格式化等说法及其口语近义表达(如发一版、出个版本、记一下这次改动、生成更新日志)时使用。⚠️ 注意区分:用户说「提交个版本 / 先提交一版 / commit」通常指 git 提交当前改动(走任务收尾后提交),**不是发版**。不用于日常 commit message 撰写、git 提交操作或与发版无关的文档修改。
4
4
  license: MIT
5
5
  metadata:
6
- version: "1.1.4"
6
+ version: "1.1.5"
7
7
  author: fxri
8
8
  source: https://github.com/fxri-net/toolkit
9
9
  ---
10
10
 
11
11
  # 发版与 CHANGELOG
12
12
 
13
- > 本技能版本 1.1.4(随 @fxri/toolkit 同批分发)。被问版本时即报此值——不读磁盘、不跑 CLI:报出的值就是本会话上下文里已加载内容的版本,可与 `toolkit skills status` 打印的磁盘基准值对照,不一致即说明会话上下文已过期,开新会话即可。
13
+ > 本技能版本 1.1.5(随 @fxri/toolkit 同批分发)。被问版本时即报此值——不读磁盘、不跑 CLI:报出的值就是本会话上下文里已加载内容的版本,可与 `toolkit skills status` 打印的磁盘基准值对照,不一致即说明会话上下文已过期,开新会话即可。
14
14
 
15
15
  ## 何时使用
16
16
 
@@ -69,4 +69,4 @@ metadata:
69
69
  - `toolkit changelog --lang <语言> …`:切换输出语言(内置 zh / en,其余可配置扩展)
70
70
  - `toolkit tasks check`:扫 `.changeset/` 下待发布变更集并逐文件报出缺前缀条目(流程第 1 步的早期自查入口,归档前的 `tasks check` 即含此项)
71
71
  - ⚠️ `changelog` 域开了选项透传,自有选项(`--lang` / `--history` / `--redact` / `--warn`)必须写在子命令**之前**:`toolkit changelog --history format` 生效,写成 `toolkit changelog format --history` 会被 changesets 静默忽略(表现为「无 CHANGELOG 需要更新」)
72
- - `toolkit skills install` / `toolkit skills status`:把本包 fxri-* 技能分发到各 agent 全局技能目录 / 查看链接与副本现场(技能随包同源分发,与 CLI 同一发布批次;技能内容版本独立编号,`skills status` 会打印各技能真源版本)
72
+ - `toolkit skills install` / `toolkit skills status`:把本包 fxri-* 技能分发到目标技能目录(`--scope` 缺省按 CLI 安装位置自动判定全局面 / 项目面;项目面真源落 `<仓库根>/.agents/skills/`、其余候选目录落入口薄壳,随仓库入库后队友 clone 即用)/ 查看链接、副本与项目面现场(技能随包同源分发,与 CLI 同一发布批次;技能内容版本独立编号,`skills status` 会打印各技能真源版本)