@petercjl/codex-own 0.6.2 → 0.6.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/README.md +16 -0
- package/bin/codex-own.mjs +8 -1
- package/capabilities.json +15 -0
- package/lib/cleanup.mjs +177 -0
- package/lib/npm-assets.mjs +1 -0
- package/package.json +280 -70
- package/release.json +279 -69
- package/skills/codex-own/SKILL.md +6 -0
- package/skills/codex-own/capabilities.json +2 -2
package/README.md
CHANGED
|
@@ -40,8 +40,24 @@ Windows 桌面在启动 Agent 会话时自动检测并验证系统安装的 Git
|
|
|
40
40
|
|
|
41
41
|
带有 npm 更新组件的桌面版本会在启动 15 秒后、以及运行期间每 6 小时检查稳定版。也可以打开菜单“更新 → 检查 codex-own 更新…”。发现新版后点击“下载更新”,下载期间可以继续使用 App。下载完成后结束正在运行的任务,点击“重启并安装”;更新进程会等待 App 退出,备份程序及独立数据,再安装并重新打开。
|
|
42
42
|
|
|
43
|
+
从 0.6.3 起,Mac 菜单栏和 Windows 标题栏的独立“更新”入口会显示提醒:`更新 ↓` 表示有新版可下载,`更新 ✓` 表示已下载、等待重启安装。提醒在关闭更新窗口后保留;菜单重建或 Windows 窗口重新加载后继续显示。自动检查仅在应用运行时进行,下载和重启安装由用户确认。
|
|
44
|
+
|
|
43
45
|
日常应用内更新使用随 App 交付的更新组件,无需手动更新全局 npm 管理工具。API Key、配置、对话和语言偏好会保留。断网时当前 App 保持可用;下载失败可以重试,已校验分片会复用;已准备好的更新会在下次打开时恢复。旧版本首次升级到带更新组件的版本,以及故障恢复,可以使用下文的终端更新命令。
|
|
44
46
|
|
|
47
|
+
## 更新后的自动清理
|
|
48
|
+
|
|
49
|
+
从桌面 0.6.4 起,主界面加载并持续正常运行 30 秒后,codex-own 会确认当前受管理版本,再自动清理已成功安装的完整归档和已退出的更新助手。升级前的程序及配置/对话快照成套保留最近一次完整回滚,更早且有成功事务记录的备份会回收。当前应用、密钥、配置、对话、独立 Node/npm/Python 运行时及手动备份保持完整。
|
|
50
|
+
|
|
51
|
+
已校验分片缓存默认上限为 2 GiB,优先回收长期未使用的分片;待安装或失败更新需要的分片受保护,期间可能暂时超过上限。无法识别的目录、未完成事务、被占用文件和不完整的回滚资料会保留。清理异常不影响当前应用及正常更新;“更新”窗口会显示本次启动回收的空间。清理计划、结果和启动确认记录各保留最近 20 条。
|
|
52
|
+
|
|
53
|
+
可直接发给 Agent:
|
|
54
|
+
|
|
55
|
+
> 请检查 codex-own 的更新文件占用,并预览自动清理范围和保留的回滚备份。
|
|
56
|
+
|
|
57
|
+
> 请通过 @petercjl/codex-own 清理已用完的更新文件和更旧的受管理备份,保留最近一次完整回滚。
|
|
58
|
+
|
|
59
|
+
开发者入口:`codex-own cleanup plan` 只读预览;`codex-own cleanup run --yes` 按相同策略执行。`--cache-limit-mib <0..16384>` 可指定本次清理的缓存上限。清理需要当前桌面已记录成功启动;仅升级 npm 管理工具不会产生这份启动证明。清理使用安装操作锁,原版 Codex 和系统/npm 全局缓存不在范围内。
|
|
60
|
+
|
|
45
61
|
## 增量下载
|
|
46
62
|
|
|
47
63
|
从 0.4.0 起,更新前会扫描已安装的 codex-own 程序,复用与新版相同的内容块,只从 npm 下载缺少的块。支持跳过版本;首次安装仍下载完整资源。进度会显示“复用多少块、需要下载多少 MiB、全量多少 MiB”,结果中的 `transfer` 保留这些统计。少量代码改动通常只影响部分块;上游引擎、大型二进制或签名资源变化时,下载量会相应增加。
|
package/bin/codex-own.mjs
CHANGED
|
@@ -6,16 +6,23 @@ import {pkg,packageRoot,read,fail,paths,doctor,latest,state,install,launch,rollb
|
|
|
6
6
|
import {manifestFor} from '../lib/manager.mjs';
|
|
7
7
|
import {installRuntime,runtimeDoctor,rollbackRuntime,runRuntime,toolEnv} from '../lib/tool-runtime.mjs';
|
|
8
8
|
import {components} from '../lib/binding.mjs';
|
|
9
|
+
import {planCleanup,runCleanup} from '../lib/cleanup.mjs';
|
|
9
10
|
const args=process.argv.slice(2),[command,sub]=args;
|
|
10
11
|
const flag=n=>args.includes('--'+n),value=n=>{const i=args.indexOf('--'+n);return i<0?undefined:args[i+1];};
|
|
11
12
|
const yes=()=>{if(!flag('yes'))fail('CONFIRMATION_REQUIRED','Mutating commands require --yes');};
|
|
12
13
|
function toolSelectionGate(){const p=paths();if(!state(p))return;const file=path.join(p.target,process.platform==='darwin'?'Contents/Resources':'resources','own-updater','desktop-version.json'),meta=fs.existsSync(file)?read(file):null;if(meta?.updaterContract!==2||meta.runtimeContract!==1)fail('INCOMPATIBLE_BINDING','Upgrade the desktop to component contract 2 before independently changing its tools');}
|
|
13
14
|
async function skill(){const source=path.join(packageRoot,'skills','codex-own');if(sub==='source')return {ok:true,source,version:pkg.version};const agent=value('agent')||'codex';if(!['codex','sealseek'].includes(agent))fail('UNSUPPORTED_AGENT',agent);const base=value('target-root')||(agent==='codex'?path.join(os.homedir(),'.codex','skills'):null);if(!base)fail('TARGET_REQUIRED','Provide the configured Agent skill root with --target-root');const dest=path.join(base,'codex-own'),marker=path.join(dest,'.codex-own-managed.json');rejectLinks(base);rejectLinks(dest);const exists=fs.existsSync(dest);const owned=exists&&fs.existsSync(marker)&&read(marker).package===pkg.name;const srcHash=hash(fs.readFileSync(path.join(source,'SKILL.md')));if(sub==='status')return {ok:true,source,destination:dest,installed:exists,managed:owned,current:owned&&hash(fs.readFileSync(path.join(dest,'SKILL.md')))===srcHash};if(!['install','update'].includes(sub))fail('INVALID_COMMAND','skill source/status/install/update');yes();if(exists&&!owned)fail('UNMANAGED_TARGET','Existing skill is not managed');let backup=null;if(exists){backup=dest+'.backup-'+Date.now();fs.cpSync(dest,backup,{recursive:true,force:false,errorOnExist:true});}fs.mkdirSync(dest,{recursive:true});const ui=path.join(dest,'agents','openai.yaml'),customUI=fs.existsSync(ui)?fs.readFileSync(ui):null;fs.cpSync(source,dest,{recursive:true});if(customUI)fs.writeFileSync(ui,customUI);fs.writeFileSync(marker,JSON.stringify({package:pkg.name,version:pkg.version,hash:srcHash}));if(hash(fs.readFileSync(path.join(dest,'SKILL.md')))!==srcHash)fail('VERIFY_FAILED','Skill copy mismatch');return {ok:true,source,destination:dest,backup,version:pkg.version};}
|
|
14
15
|
async function main(){
|
|
15
|
-
if(!command||command==='help'||command==='--help')return {commands:['version','capabilities','doctor','install --yes [--adopt]','configure --api-key-file <file> --yes','update check','update install --yes','runtime install|update|doctor|env|run|rollback','launch','rollback --restore-data --yes','skill source|status|install|update'],note:'Application data and private tools remain outside npm manager packages. Quit the app before desktop updates. Manager, desktop and tool runtime versions are reported separately.'};
|
|
16
|
+
if(!command||command==='help'||command==='--help')return {commands:['version','capabilities','doctor','install --yes [--adopt]','configure --api-key-file <file> --yes','update check','update install --yes','cleanup plan [--cache-limit-mib <0..16384>]','cleanup run --yes [--cache-limit-mib <0..16384>]','runtime install|update|doctor|env|run|rollback','launch','rollback --restore-data --yes','skill source|status|install|update'],note:'Application data and private tools remain outside npm manager packages. Quit the app before desktop updates. Manager, desktop and tool runtime versions are reported separately.'};
|
|
16
17
|
if(command==='version'||command==='--version')return {manager:pkg.version,desktop:state()?.version||null,desktopIdentity:state()?.desktop?.identity||null,runtime:toolEnv.active()?.version||null};
|
|
17
18
|
if(command==='capabilities')return read(path.join(packageRoot,'capabilities.json'));
|
|
18
19
|
if(command==='doctor')return {...doctor(),runtime:runtimeDoctor()};
|
|
20
|
+
if(command==='cleanup'){
|
|
21
|
+
const limit=value('cache-limit-mib'),options={};if(flag('cache-limit-mib')&&limit===undefined)fail('INVALID_ARGUMENT','Provide --cache-limit-mib <0..16384>');if(limit!==undefined){if(!/^\d+$/.test(limit)||Number(limit)>16384)fail('INVALID_ARGUMENT','Cache limit must be an integer from 0 to 16384 MiB');options.cacheLimitBytes=Number(limit)*1048576;}
|
|
22
|
+
if(sub==='plan')return planCleanup(options);
|
|
23
|
+
if(sub==='run'){yes();return runCleanup(options);}
|
|
24
|
+
fail('INVALID_COMMAND','cleanup plan or cleanup run --yes');
|
|
25
|
+
}
|
|
19
26
|
if(command==='runtime'){
|
|
20
27
|
if(sub==='doctor')return runtimeDoctor();
|
|
21
28
|
if(sub==='env'){const env=toolEnv.environment();if(!env)fail('RUNTIME_NOT_INSTALLED','Install private tools first');return {ok:true,contract:1,root:toolEnv.runtimeRoot(),environment:Object.fromEntries(Object.entries(env).filter(([k])=>['PATH','ZDOTDIR','BASH_ENV','CODEX_OWN_NODE','CODEX_OWN_PYTHON','CODEX_OWN_RUNTIME_VERSION','AGENT_WORKBENCH_NPM_CLI'].includes(k)||/^(NPM_CONFIG_|PYTHON|PIP_)/.test(k)))};}
|
package/capabilities.json
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
"configure",
|
|
7
7
|
"update check",
|
|
8
8
|
"update install",
|
|
9
|
+
"cleanup plan",
|
|
10
|
+
"cleanup run",
|
|
9
11
|
"launch",
|
|
10
12
|
"rollback",
|
|
11
13
|
"doctor",
|
|
@@ -27,6 +29,19 @@
|
|
|
27
29
|
"dataPolicy": "independent external directories; preserve credentials and conversations",
|
|
28
30
|
"updatePolicy": "desktop checks npm latest at startup and every six hours; explicit download and restart/install; pinned verified build; backup before switch; CLI remains available for recovery",
|
|
29
31
|
"authentication": "npm install does not grant model access; existing independent credentials remain local",
|
|
32
|
+
"cleanupPolicy": {
|
|
33
|
+
"contract": 1,
|
|
34
|
+
"trigger": "owned main interface loaded and alive for 30 seconds; installed version and component identity must match",
|
|
35
|
+
"defaultCacheLimitMiB": 2048,
|
|
36
|
+
"rollbackCopies": 1,
|
|
37
|
+
"reclaims": ["applied desktop archives", "completed inactive helpers", "superseded complete app/data backup pairs", "least recently used unpinned blocks"],
|
|
38
|
+
"preserves": ["live app and user data", "private tool versions", "latest complete rollback", "pending/failed/unknown updates", "active processes", "manual recovery backups"],
|
|
39
|
+
"temporaryCacheExcess": "pending or unknown receipts pin required blocks; locked files remain available for inspection",
|
|
40
|
+
"diagnosticRecordsPerCategory": 20,
|
|
41
|
+
"preview": "cleanup plan",
|
|
42
|
+
"execute": "cleanup run --yes [--cache-limit-mib <0..16384>]",
|
|
43
|
+
"results": ["reclaimedBytes", "rollbackRetained", "warnings", "cacheLimitExceeded", "report"]
|
|
44
|
+
},
|
|
30
45
|
"windowsAgentShell": {
|
|
31
46
|
"contract": 1,
|
|
32
47
|
"preferred": "verified system Git Bash; explicit exec_command shell selection",
|
package/lib/cleanup.mjs
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import crypto from 'node:crypto';
|
|
4
|
+
import {execFileSync} from 'node:child_process';
|
|
5
|
+
import {paths,state,locked,rejectLinks,exclusive,appIdentity,validateManifest,fail} from './manager.mjs';
|
|
6
|
+
|
|
7
|
+
export const CLEANUP_POLICY=Object.freeze({contract:1,cacheLimitBytes:2*1024**3,rollbackCopies:1,reportLimit:20,healthyStartupSeconds:30});
|
|
8
|
+
const PACKAGE='@petercjl/codex-own',UUID='[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}';
|
|
9
|
+
const json=file=>{rejectLinks(file);try{return JSON.parse(fs.readFileSync(file,'utf8'));}catch{return null;}};
|
|
10
|
+
const norm=file=>process.platform==='win32'?path.resolve(file).toLowerCase():path.resolve(file);
|
|
11
|
+
const same=(a,b)=>typeof a==='string'&&typeof b==='string'&&norm(a)===norm(b);
|
|
12
|
+
const contains=(base,file)=>same(base,file)||norm(file).startsWith(norm(base)+path.sep);
|
|
13
|
+
const version=v=>/^\d+\.\d+\.\d+$/.test(v||'');
|
|
14
|
+
function notNewer(a,b){if(!version(a)||!version(b))return false;const aa=a.split('.').map(Number),bb=b.split('.').map(Number);for(let i=0;i<3;i++){if(aa[i]!==bb[i])return aa[i]<bb[i];}return true;}
|
|
15
|
+
function exists(file){return fs.existsSync(file);}
|
|
16
|
+
function regular(file){rejectLinks(file);return exists(file)&&fs.lstatSync(file).isFile();}
|
|
17
|
+
function names(dir){rejectLinks(dir);return exists(dir)?fs.readdirSync(dir):[];}
|
|
18
|
+
function bytes(file){const s=fs.lstatSync(file);if(s.isSymbolicLink())return s.size;if(s.isDirectory())return fs.readdirSync(file).reduce((n,name)=>n+bytes(path.join(file,name)),0);return s.size;}
|
|
19
|
+
function fingerprint(file){const s=fs.lstatSync(file);return {size:s.size,mtimeMs:s.mtimeMs,ino:s.ino};}
|
|
20
|
+
function unchanged(file,expected){try{const s=fingerprint(file);return s.size===expected.size&&s.mtimeMs===expected.mtimeMs&&s.ino===expected.ino;}catch{return false;}}
|
|
21
|
+
function currentInstall(p,identify){
|
|
22
|
+
rejectLinks(p.manager);rejectLinks(p.target);
|
|
23
|
+
regular(path.join(p.manager,'state.json'));
|
|
24
|
+
const s=state(p),meta=path.join(p.target,p.platform.startsWith('darwin-')?'Contents/Resources':'resources','own-updater','desktop-version.json');
|
|
25
|
+
if(s?.identity!=='local.codex-own'||!same(s.target,p.target)||!version(s.version)||!s.desktop||!/^[a-f0-9]{64}$/.test(s.desktop.identity)||s.desktop.identity!==s.releaseManifest?.platforms?.[p.platform]?.sha256||identify(p.target)!=='local.codex-own'||json(meta)?.version!==s.version)
|
|
26
|
+
fail('UNMANAGED_TARGET','Cleanup requires the matching managed desktop and component identity');
|
|
27
|
+
return s;
|
|
28
|
+
}
|
|
29
|
+
function pendingTransactions(p){return names(p.manager).filter(n=>new RegExp('^transaction-'+UUID+'\\.json$').test(n)&&json(path.join(p.manager,n.replace('.json','.complete.json')))?.ok!==true);}
|
|
30
|
+
function healthFor(p,s){
|
|
31
|
+
const root=path.join(p.manager,'health');
|
|
32
|
+
return names(root).filter(n=>new RegExp('^startup-'+UUID+'\\.json$').test(n)).map(n=>({file:path.join(root,n),value:json(path.join(root,n))})).filter(({value:h})=>h?.schema===1&&h.package===PACKAGE&&h.version===s.version&&h.desktopIdentity===s.desktop.identity&&same(h.target,p.target)).sort((a,b)=>String(b.value.readyAt).localeCompare(String(a.value.readyAt)))[0]||null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Only return matched owned roots, never persist unrelated process arguments.
|
|
36
|
+
export function activeCleanupRoots(roots){
|
|
37
|
+
if(!roots.length)return [];
|
|
38
|
+
if(process.platform==='win32'){
|
|
39
|
+
const quoted=roots.map(r=>"'"+r.replaceAll("'","''")+"'").join(',');
|
|
40
|
+
const ps=`$ErrorActionPreference='Stop';$ProgressPreference='SilentlyContinue';[Console]::OutputEncoding=[Text.UTF8Encoding]::new($false);$roots=@(${quoted});@(Get-CimInstance Win32_Process | ForEach-Object { $f=$_.ExecutablePath;$c=$_.CommandLine; foreach($r in $roots){$prefix=$r+'\\';if(($f -and ($f.Equals($r,[StringComparison]::OrdinalIgnoreCase) -or $f.StartsWith($prefix,[StringComparison]::OrdinalIgnoreCase))) -or ($c -and ($c.IndexOf($prefix,[StringComparison]::OrdinalIgnoreCase) -ge 0))){$r}} }) | ConvertTo-Json -Compress`;
|
|
41
|
+
const text=execFileSync('powershell.exe',['-NoProfile','-NonInteractive','-EncodedCommand',Buffer.from(ps,'utf16le').toString('base64')],{encoding:'utf8',windowsHide:true,timeout:30000});
|
|
42
|
+
const result=text.trim()?JSON.parse(text):[];return [...new Set(Array.isArray(result)?result:[result])];
|
|
43
|
+
}
|
|
44
|
+
const lines=execFileSync('ps',['-axo','command='],{encoding:'utf8',timeout:10000}).split('\n');
|
|
45
|
+
return roots.filter(r=>lines.some(line=>line.includes(r+path.sep)));
|
|
46
|
+
}
|
|
47
|
+
function manifestParts(m,platform){
|
|
48
|
+
validateManifest(m,platform);
|
|
49
|
+
return [m.platforms[platform],...Object.values(m.runtimes?.platforms?.[platform]||{})].flatMap(a=>a.parts||[]).map(a=>a.sha256);
|
|
50
|
+
}
|
|
51
|
+
function helperResult(dir,p){
|
|
52
|
+
const runtime=path.join(dir,'runtime'),meta=json(path.join(runtime,'desktop-version.json')),ready=json(path.join(runtime,'handoff-ready.json'));
|
|
53
|
+
if(meta?.source!=='https://registry.npmjs.org/@petercjl%2fcodex-own/latest'||meta.updaterContract!==2||!ready?.ready)return null;
|
|
54
|
+
if(ready.schema===2){
|
|
55
|
+
if(!Number.isSafeInteger(ready.pid)||ready.pid<1||ready.current!==meta.version||!new RegExp('^update-result-'+UUID+'\\.json$').test(path.basename(ready.resultFile||''))||!same(path.dirname(ready.resultFile),p.manager))return null;
|
|
56
|
+
try{process.kill(ready.pid,0);return null;}catch(e){if(e.code!=='ESRCH')return null;}
|
|
57
|
+
if(typeof ready.receipt!=='string'||path.basename(ready.receipt)!=='receipt.json'||!/^update-[a-zA-Z0-9]+$/.test(path.basename(path.dirname(ready.receipt)))||!same(path.dirname(path.dirname(ready.receipt)),path.join(p.manager,'prepared')))return null;
|
|
58
|
+
const result=json(ready.resultFile),receipt=json(ready.receipt),applied=json(ready.receipt+'.applied.json');
|
|
59
|
+
return result?.version===receipt?.version&&applied?.ok===true&&applied.version===receipt?.version?result:null;
|
|
60
|
+
}
|
|
61
|
+
// Legacy helpers have no PID/result receipt. A completed log plus an owned
|
|
62
|
+
// executable-process scan is required before reclaiming their copied runtime.
|
|
63
|
+
const log=path.join(dir,'install.log');if(!regular(log))return null;
|
|
64
|
+
const fd=fs.openSync(log,'r'),size=fs.fstatSync(fd).size,b=Buffer.alloc(Math.min(size,131072));
|
|
65
|
+
try{fs.readSync(fd,b,0,b.length,Math.max(0,size-b.length));}finally{fs.closeSync(fd);}
|
|
66
|
+
for(const line of b.toString('utf8').split('\n').reverse()){try{const r=JSON.parse(line).result;if(r)return r;}catch{}}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function planCleanup({p=paths(),cacheLimitBytes=CLEANUP_POLICY.cacheLimitBytes,identify=appIdentity,processRoots=activeCleanupRoots,lockHeld=false}={}){
|
|
71
|
+
if(!Number.isSafeInteger(cacheLimitBytes)||cacheLimitBytes<0||cacheLimitBytes>16*1024**3)fail('INVALID_ARGUMENT','Cache limit must be between 0 and 16 GiB');
|
|
72
|
+
const result={ok:true,contract:1,version:null,cacheLimitBytes,actions:[],preserved:[],plannedBytes:0};
|
|
73
|
+
const defer=reason=>({...result,actions:[],plannedBytes:0,deferred:true,reason});
|
|
74
|
+
if(!lockHeld&&exists(path.join(p.manager,'operation.lock')))return defer('BUSY');
|
|
75
|
+
let s;try{s=currentInstall(p,identify);}catch(e){if(e.code==='UNSAFE_PATH')throw e;return defer('UNMANAGED_TARGET');}result.version=s.version;
|
|
76
|
+
if(pendingTransactions(p).length)return defer('INCOMPLETE_TRANSACTION');
|
|
77
|
+
const health=healthFor(p,s);if(!health)return defer('HEALTH_NOT_CONFIRMED');
|
|
78
|
+
if(s.previous){
|
|
79
|
+
const id=typeof s.previous.app==='string'?path.basename(s.previous.app).match(new RegExp('^\\.codex-own-backup-('+UUID+')$'))?.[1]:null;
|
|
80
|
+
if(!id||!same(s.previous.app,path.join(path.dirname(p.target),'.codex-own-backup-'+id))||!same(s.previous.data,path.join(p.manager,'backups',id,'data')))return defer('UNKNOWN_ROLLBACK');
|
|
81
|
+
rejectLinks(s.previous.app);rejectLinks(s.previous.data);
|
|
82
|
+
const j=json(path.join(p.manager,'transaction-'+id+'.json')),done=json(path.join(p.manager,'transaction-'+id+'.complete.json'));
|
|
83
|
+
if(done?.ok!==true||j?.version!==s.version||!same(j?.target,p.target)||!same(j?.old,s.previous.app)||!same(j?.backup,path.dirname(s.previous.data)))return defer('ROLLBACK_INCOMPLETE');
|
|
84
|
+
if(!exists(s.previous.app)||!exists(s.previous.data)||identify(s.previous.app)!=='local.codex-own')return defer('ROLLBACK_INCOMPLETE');
|
|
85
|
+
}
|
|
86
|
+
result.rollbackRetained=!!s.previous;
|
|
87
|
+
const protectedPaths=[p.target,p.core,p.desktop,s.previous?.app,s.previous?.data].filter(Boolean);
|
|
88
|
+
const protects=f=>protectedPaths.some(q=>contains(f,q)||contains(q,f));
|
|
89
|
+
const action=(kind,files,reason)=>{for(const f of files){rejectLinks(f);if(protects(f))fail('UNSAFE_PATH','Cleanup candidate intersects protected application data');}result.actions.push({kind,files,reason,bytes:files.reduce((n,f)=>n+bytes(f),0),fingerprints:files.map(fingerprint)});};
|
|
90
|
+
const pinned=new Set();let pinAll=false;
|
|
91
|
+
const prepared=path.join(p.manager,'prepared');
|
|
92
|
+
for(const name of names(prepared)){
|
|
93
|
+
if(!/^update-[a-zA-Z0-9]+$/.test(name))continue;
|
|
94
|
+
const dir=path.join(prepared,name),receipt=path.join(dir,'receipt.json');rejectLinks(dir);
|
|
95
|
+
const r=regular(receipt)?json(receipt):null,applied=regular(receipt+'.applied.json')?json(receipt+'.applied.json'):null;
|
|
96
|
+
let valid=false;
|
|
97
|
+
try{valid=!!r&&[1,2].includes(r.schema)&&r.platform===p.platform&&r.version===r.manifest?.version&&version(r.version);if(valid)manifestParts(r.manifest,p.platform);}catch{valid=false;}
|
|
98
|
+
const completed=valid&&applied?.ok===true&&applied.version===r.version&¬Newer(r.version,s.version);
|
|
99
|
+
if(!completed){
|
|
100
|
+
if(valid)for(const hash of manifestParts(r.manifest,p.platform))pinned.add(hash);else pinAll=true;
|
|
101
|
+
result.preserved.push({path:dir,reason:valid?'PENDING_OR_FAILED_UPDATE':'UNKNOWN_UPDATE_RECEIPT'});continue;
|
|
102
|
+
}
|
|
103
|
+
const archive=path.join(dir,'desktop.tar.gz');if(regular(archive))action('applied-archive',[archive],'APPLIED_UPDATE_AND_HEALTHY_DESKTOP');
|
|
104
|
+
}
|
|
105
|
+
const backups=[];
|
|
106
|
+
for(const name of names(p.manager)){
|
|
107
|
+
const match=name.match(new RegExp('^transaction-('+UUID+')\\.json$'));if(!match)continue;
|
|
108
|
+
const j=json(path.join(p.manager,name)),done=json(path.join(p.manager,name.replace('.json','.complete.json'))),id=match[1];
|
|
109
|
+
const old=path.join(path.dirname(p.target),'.codex-own-backup-'+id),backup=path.join(p.manager,'backups',id);
|
|
110
|
+
if(done?.ok!==true||!notNewer(j?.version,s.version)||!same(j?.target,p.target)||!same(j?.old,old)||!same(j?.backup,backup))continue;
|
|
111
|
+
const files=[old,backup].filter(exists);if(!files.length)continue;
|
|
112
|
+
if(files.some(protects)){result.preserved.push({path:backup,reason:'LATEST_COMPLETE_ROLLBACK'});continue;}
|
|
113
|
+
for(const f of files)rejectLinks(f);
|
|
114
|
+
let owned=true;try{if(exists(old))owned=identify(old)==='local.codex-own';}catch{owned=false;}
|
|
115
|
+
if(!owned){result.preserved.push({path:old,reason:'UNKNOWN_APP_IDENTITY'});continue;}
|
|
116
|
+
backups.push({old,files});
|
|
117
|
+
}
|
|
118
|
+
const handoffs=[];const helperBase=path.join(p.manager,'handoffs');
|
|
119
|
+
for(const name of names(helperBase)){
|
|
120
|
+
if(!/^apply-[a-zA-Z0-9]+$/.test(name))continue;
|
|
121
|
+
const dir=path.join(helperBase,name);rejectLinks(dir);const r=helperResult(dir,p);
|
|
122
|
+
if(r?.ok===true&&same(r.target,p.target)&¬Newer(r.version,s.version))handoffs.push(dir);
|
|
123
|
+
else result.preserved.push({path:dir,reason:'ACTIVE_FAILED_OR_UNKNOWN_HELPER'});
|
|
124
|
+
}
|
|
125
|
+
let active;try{active=processRoots([...backups.map(b=>b.old),...handoffs]);}catch{return defer('PROCESS_INSPECTION_UNAVAILABLE');}
|
|
126
|
+
for(const b of backups){if(active.some(a=>same(a,b.old))){result.preserved.push({path:b.old,reason:'ACTIVE_OLD_APP'});continue;}action('old-rollback',b.files,'SUPERSEDED_COMPLETE_TRANSACTION');}
|
|
127
|
+
for(const dir of handoffs){if(active.some(a=>same(a,dir))){result.preserved.push({path:dir,reason:'ACTIVE_UPDATE_HELPER'});continue;}action('completed-helper',[dir],'COMPLETED_HELPER_AND_HEALTHY_DESKTOP');}
|
|
128
|
+
const cache=path.join(p.manager,'npm-assets'),blocks=[];
|
|
129
|
+
for(const name of names(cache)){if(!/^[a-f0-9]{64}\.bin$/.test(name))continue;const f=path.join(cache,name);if(!regular(f))continue;const st=fs.statSync(f);blocks.push({file:f,hash:name.slice(0,64),bytes:st.size,used:st.mtimeMs});}
|
|
130
|
+
let total=blocks.reduce((n,b)=>n+b.bytes,0);result.cacheBytesBefore=total;
|
|
131
|
+
for(const b of blocks.sort((a,b)=>a.used-b.used||a.hash.localeCompare(b.hash))){
|
|
132
|
+
if(total<=cacheLimitBytes)break;if(pinAll||pinned.has(b.hash))continue;
|
|
133
|
+
action('cache-block',[b.file],'LEAST_RECENTLY_USED_UNPINNED_BLOCK');total-=b.bytes;
|
|
134
|
+
}
|
|
135
|
+
result.cacheBytesAfter=total;result.cacheLimitExceeded=total>cacheLimitBytes;result.cacheProtection=pinAll?'UNKNOWN_RECEIPT':pinned.size?'PENDING_UPDATE':null;
|
|
136
|
+
for(const [folder,prefix,keep] of [['cleanup-reports','report-',CLEANUP_POLICY.reportLimit-1],['cleanup-intents','intent-',CLEANUP_POLICY.reportLimit-1],['health','startup-',CLEANUP_POLICY.reportLimit]]){
|
|
137
|
+
const dir=path.join(p.manager,folder),records=names(dir).filter(n=>new RegExp('^'+prefix+UUID+'\\.json$').test(n)).map(n=>path.join(dir,n)).filter(regular).filter(f=>{const r=json(f);return r?.schema===1&&r.package===PACKAGE;}).sort((a,b)=>fs.statSync(b).mtimeMs-fs.statSync(a).mtimeMs);
|
|
138
|
+
for(const file of records.slice(keep))if(!same(file,health.file))action('old-report',[file],'BOUNDED_DIAGNOSTIC_HISTORY');
|
|
139
|
+
}
|
|
140
|
+
result.plannedBytes=result.actions.reduce((n,a)=>n+a.bytes,0);return result;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
async function performCleanup(options){
|
|
144
|
+
const p=options.p||paths(),plan=planCleanup({...options,p,lockHeld:true});
|
|
145
|
+
if(plan.deferred)return {...plan,reclaimedBytes:0};
|
|
146
|
+
const intents=path.join(p.manager,'cleanup-intents');rejectLinks(intents);fs.mkdirSync(intents,{recursive:true,mode:0o700});
|
|
147
|
+
exclusive(path.join(intents,'intent-'+crypto.randomUUID()+'.json'),{schema:1,package:PACKAGE,version:plan.version,target:p.target,plannedAt:new Date().toISOString(),actions:plan.actions});
|
|
148
|
+
const removed=[],warnings=[];let reclaimedBytes=0;
|
|
149
|
+
for(const a of plan.actions){
|
|
150
|
+
for(let i=0;i<a.files.length;i++){
|
|
151
|
+
const file=a.files[i];let before;
|
|
152
|
+
try{
|
|
153
|
+
rejectLinks(file);if(!unchanged(file,a.fingerprints[i])){warnings.push({path:file,code:'CANDIDATE_CHANGED'});break;}
|
|
154
|
+
before=bytes(file);await fs.promises.rm(file,{recursive:true,maxRetries:2,retryDelay:100});reclaimedBytes+=before;removed.push({kind:a.kind,path:file,bytes:before});
|
|
155
|
+
}catch(e){let remaining;try{remaining=bytes(file);}catch{}if(Number.isSafeInteger(before)&&Number.isSafeInteger(remaining))reclaimedBytes+=Math.max(0,before-remaining);warnings.push({path:file,code:e.code||'CLEANUP_FAILED'});break;}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const cache=path.join(p.manager,'npm-assets'),cacheBytesAfter=names(cache).filter(n=>/^[a-f0-9]{64}\.bin$/.test(n)).map(n=>path.join(cache,n)).filter(regular).reduce((n,f)=>n+fs.statSync(f).size,0);
|
|
159
|
+
const result={schema:1,package:PACKAGE,ok:true,version:plan.version,completedAt:new Date().toISOString(),reclaimedBytes,removed,warnings,cacheLimitBytes:plan.cacheLimitBytes,cacheBytesAfter,cacheLimitExceeded:cacheBytesAfter>plan.cacheLimitBytes,cacheProtection:plan.cacheProtection,rollbackCopies:CLEANUP_POLICY.rollbackCopies,rollbackRetained:plan.rollbackRetained};
|
|
160
|
+
const dir=path.join(p.manager,'cleanup-reports');rejectLinks(dir);fs.mkdirSync(dir,{recursive:true,mode:0o700});
|
|
161
|
+
const report=path.join(dir,'report-'+crypto.randomUUID()+'.json');exclusive(report,result);
|
|
162
|
+
return {...result,report};
|
|
163
|
+
}
|
|
164
|
+
export async function runCleanup(options={}){const p=options.p||paths();return locked(p,()=>performCleanup({...options,p}));}
|
|
165
|
+
|
|
166
|
+
// Called only by the desktop worker after the controller's main-window health
|
|
167
|
+
// gate. A matching installed component is mandatory; spawning an app is not proof.
|
|
168
|
+
export async function cleanupAfterHealthyStartup(current,options={}){
|
|
169
|
+
const p=options.p||paths(),identify=options.identify||appIdentity;
|
|
170
|
+
return locked(p,()=>{
|
|
171
|
+
const s=currentInstall(p,identify);if(s.version!==current)fail('INSTALLATION_CHANGED','The running desktop differs from its managed installation');
|
|
172
|
+
if(pendingTransactions(p).length)return {ok:true,deferred:true,reason:'INCOMPLETE_TRANSACTION',reclaimedBytes:0};
|
|
173
|
+
const dir=path.join(p.manager,'health');rejectLinks(dir);fs.mkdirSync(dir,{recursive:true,mode:0o700});
|
|
174
|
+
exclusive(path.join(dir,'startup-'+crypto.randomUUID()+'.json'),{schema:1,package:PACKAGE,version:current,target:p.target,desktopIdentity:s.desktop.identity,readyAt:new Date().toISOString(),evidence:'main-window-loaded-and-alive-30s'});
|
|
175
|
+
return performCleanup({...options,p});
|
|
176
|
+
});
|
|
177
|
+
}
|
package/lib/npm-assets.mjs
CHANGED
|
@@ -50,6 +50,7 @@ export async function assembleNpmAsset(asset, dest, cache, tar, {download = veri
|
|
|
50
50
|
const file = path.join(cache, `${part.sha256}.bin`);
|
|
51
51
|
safeCache(file);
|
|
52
52
|
if (cached.has(part.sha256)) {
|
|
53
|
+
const used=new Date();fs.utimesSync(file,used,used);
|
|
53
54
|
report(`[${i+1}/${asset.parts.length}] 复用已校验分片`); return file;
|
|
54
55
|
}
|
|
55
56
|
if (fs.existsSync(file)) fs.unlinkSync(file);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@petercjl/codex-own",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
4
4
|
"description": "Independent codex-own desktop installation and update manager",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"ownDesktopManifest": {
|
|
46
46
|
"schema": 2,
|
|
47
47
|
"repository": "petercjl/codex-own",
|
|
48
|
-
"version": "0.6.
|
|
48
|
+
"version": "0.6.4",
|
|
49
49
|
"platforms": {
|
|
50
50
|
"darwin-arm64": {
|
|
51
51
|
"entry": "codex-own.app",
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"version": "codex-cli 0.156.1-cometix"
|
|
58
58
|
},
|
|
59
59
|
"transport": "canonical-tar-cdc-v1",
|
|
60
|
-
"size":
|
|
61
|
-
"sha256": "
|
|
60
|
+
"size": 2069301248,
|
|
61
|
+
"sha256": "019f7b42dd27ffc1b7b4f417dce15e3805c4be1ae5ff270c6c26f42ce8c41751",
|
|
62
62
|
"parts": [
|
|
63
63
|
{
|
|
64
64
|
"sha256": "0b42f2d545aca8e8255bd5fee043156b6851be1bf123d3c74b9ebb578f3f7d32",
|
|
@@ -404,11 +404,11 @@
|
|
|
404
404
|
"archiveSha256": "c99a078d64811b89c5a6dee82392825acb8fdb4881abf88f8bbc9fda1da67f9e"
|
|
405
405
|
},
|
|
406
406
|
{
|
|
407
|
-
"sha256": "
|
|
408
|
-
"size":
|
|
409
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
410
|
-
"archiveSize":
|
|
411
|
-
"archiveSha256": "
|
|
407
|
+
"sha256": "91c2df3863faacb22a15e40699f613f6bc6734f21c05f7abce6074849baebcf6",
|
|
408
|
+
"size": 59792384,
|
|
409
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.h91c2df3863faacb22a15e40699f613f6bc6734f21c05f7abce6074849baebcf6.tgz",
|
|
410
|
+
"archiveSize": 26456586,
|
|
411
|
+
"archiveSha256": "a9b63d37be08450f47795a6657cfc657811547d819a3e1878b0df35c5d3e20fd"
|
|
412
412
|
},
|
|
413
413
|
{
|
|
414
414
|
"sha256": "7cfeb48649874d23596c06c132aea050773133adc936e5d905966a48916f629b",
|
|
@@ -425,11 +425,11 @@
|
|
|
425
425
|
"archiveSha256": "caa6952e6c00fed43f98c1e5b5eb653ed311f09b35be3aa2afc6d696ff38677b"
|
|
426
426
|
},
|
|
427
427
|
{
|
|
428
|
-
"sha256": "
|
|
428
|
+
"sha256": "eb6cc1ceff2c14c3ace5fd00aaa1413f0c6ed757ae4d5bcba62de883bf7d3a3d",
|
|
429
429
|
"size": 17287710,
|
|
430
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
431
|
-
"archiveSize":
|
|
432
|
-
"archiveSha256": "
|
|
430
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.heb6cc1ceff2c14c3ace5fd00aaa1413f0c6ed757ae4d5bcba62de883bf7d3a3d.tgz",
|
|
431
|
+
"archiveSize": 15691273,
|
|
432
|
+
"archiveSha256": "f4e900216a7193dc1b61387b6314c5f4d47c4caf2017e860948b5f057b22b0f8"
|
|
433
433
|
},
|
|
434
434
|
{
|
|
435
435
|
"sha256": "486eecb966966e046dfade862bdce1b6f29a5d17c1a663832a23b38fece27089",
|
|
@@ -460,11 +460,11 @@
|
|
|
460
460
|
"archiveSha256": "fa3816195cbaaf7fd2f0cb1b61134b6d41363893bf71f91df2421d2976438cd1"
|
|
461
461
|
},
|
|
462
462
|
{
|
|
463
|
-
"sha256": "
|
|
464
|
-
"size":
|
|
465
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
466
|
-
"archiveSize":
|
|
467
|
-
"archiveSha256": "
|
|
463
|
+
"sha256": "5220d2f88d663a3ce9962263647adf342af25ec559c53da94d7b41151ffd7bf6",
|
|
464
|
+
"size": 1779200,
|
|
465
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.h5220d2f88d663a3ce9962263647adf342af25ec559c53da94d7b41151ffd7bf6.tgz",
|
|
466
|
+
"archiveSize": 358530,
|
|
467
|
+
"archiveSha256": "17b78897fa6d4fe5eabd9ed1962b98a3128aa4afb4f7ad2c229aad9bfc7836dc"
|
|
468
468
|
}
|
|
469
469
|
]
|
|
470
470
|
},
|
|
@@ -472,14 +472,14 @@
|
|
|
472
472
|
"entry": "app",
|
|
473
473
|
"probe": {
|
|
474
474
|
"path": "app/resources/codex.exe",
|
|
475
|
-
"offset":
|
|
475
|
+
"offset": 1578081792,
|
|
476
476
|
"size": 184842240,
|
|
477
477
|
"sha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
478
478
|
"version": "codex-cli 0.156.1-cometix"
|
|
479
479
|
},
|
|
480
480
|
"transport": "canonical-tar-cdc-v1",
|
|
481
|
-
"size":
|
|
482
|
-
"sha256": "
|
|
481
|
+
"size": 2288478720,
|
|
482
|
+
"sha256": "caae1ed47193a3ddbf1c2b5fe341819f90579208f64e9672b46cac099a51af8b",
|
|
483
483
|
"parts": [
|
|
484
484
|
{
|
|
485
485
|
"sha256": "308461c5561025640d0ed339cca7c440649e8cb13505d6b6e974f2ac93f5069e",
|
|
@@ -538,11 +538,11 @@
|
|
|
538
538
|
"archiveSha256": "05820fcec6f925b9df6e985d85b6714abf85e73e28c508cec788d61f2f739c97"
|
|
539
539
|
},
|
|
540
540
|
{
|
|
541
|
-
"sha256": "
|
|
542
|
-
"size":
|
|
543
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
544
|
-
"archiveSize":
|
|
545
|
-
"archiveSha256": "
|
|
541
|
+
"sha256": "500fc7ae50d6c369028217786b216dd7ad83247f929613818356e8856eef3abf",
|
|
542
|
+
"size": 22379520,
|
|
543
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.h500fc7ae50d6c369028217786b216dd7ad83247f929613818356e8856eef3abf.tgz",
|
|
544
|
+
"archiveSize": 11368418,
|
|
545
|
+
"archiveSha256": "6b21a76d09ba2d2b4e1c3012a70a63353a983ad0a4c67242c37bdfd50de69a68"
|
|
546
546
|
},
|
|
547
547
|
{
|
|
548
548
|
"sha256": "43ed59166d1d9cdd41ae56a0bcb9aaece2ddc00708f0854f21828494b29315aa",
|
|
@@ -881,11 +881,11 @@
|
|
|
881
881
|
"archiveSha256": "46ce103d3c585317f55a3ddf2d51777c35efd172bdd20542ab530d5f2bc0e821"
|
|
882
882
|
},
|
|
883
883
|
{
|
|
884
|
-
"sha256": "
|
|
885
|
-
"size":
|
|
886
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
887
|
-
"archiveSize":
|
|
888
|
-
"archiveSha256": "
|
|
884
|
+
"sha256": "4c164589fe7dc8d2aeb57146fb9ceb2845ff2e6789121913d095d35c26ab1d49",
|
|
885
|
+
"size": 6004736,
|
|
886
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.h4c164589fe7dc8d2aeb57146fb9ceb2845ff2e6789121913d095d35c26ab1d49.tgz",
|
|
887
|
+
"archiveSize": 2019781,
|
|
888
|
+
"archiveSha256": "789259da99258ee68b6f21c8023a1be5c469bfca3062239954e990ed9f64b9cd"
|
|
889
889
|
},
|
|
890
890
|
{
|
|
891
891
|
"sha256": "15378e38de6292c183145444811610b2bfde8b72bd694127d1a009e020d09859",
|
|
@@ -902,11 +902,11 @@
|
|
|
902
902
|
"archiveSha256": "541098580cb90b6f0ec96267bd3bb987122dfd1e086f02cf1eeb3a7fee531c5a"
|
|
903
903
|
},
|
|
904
904
|
{
|
|
905
|
-
"sha256": "
|
|
905
|
+
"sha256": "e2c6b19fa4cca42d51bf6b1f6cd6ad2e437ad119b28c7690a4e6a029b48de802",
|
|
906
906
|
"size": 34276749,
|
|
907
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
908
|
-
"archiveSize":
|
|
909
|
-
"archiveSha256": "
|
|
907
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.he2c6b19fa4cca42d51bf6b1f6cd6ad2e437ad119b28c7690a4e6a029b48de802.tgz",
|
|
908
|
+
"archiveSize": 27888291,
|
|
909
|
+
"archiveSha256": "4d499d3e13307e96d2fa9d3f2e5329846dd5a91b8ae8b7532b835fded958555f"
|
|
910
910
|
},
|
|
911
911
|
{
|
|
912
912
|
"sha256": "1ed2bf8a8edfa5772517404274b44baf011ec3bbfc89936bc3851d54daee4686",
|
|
@@ -948,42 +948,252 @@
|
|
|
948
948
|
},
|
|
949
949
|
"provenance": {
|
|
950
950
|
"darwin-arm64": {
|
|
951
|
-
"
|
|
952
|
-
|
|
951
|
+
"nativeBase": {
|
|
952
|
+
"version": "0.6.3",
|
|
953
|
+
"identity": "3bec71959e4ee0ebd92722dbf72a28ea1c60e26f61089c44e38ec97eaf68d2c3",
|
|
954
|
+
"source": {
|
|
955
|
+
"darwin-arm64": {
|
|
956
|
+
"nativeBase": {
|
|
957
|
+
"version": "0.6.2",
|
|
958
|
+
"identity": "417962c59809acbe93dcfe2fc39026b921bdf9d2026ce49063b2ea9e6b6e51f6",
|
|
959
|
+
"source": {
|
|
960
|
+
"darwin-arm64": {
|
|
961
|
+
"upstreamCommit": null,
|
|
962
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
963
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
964
|
+
"toolchain": {
|
|
965
|
+
"node": "v24.15.0",
|
|
966
|
+
"platform": "darwin-arm64",
|
|
967
|
+
"image": "20260907.0337.1"
|
|
968
|
+
},
|
|
969
|
+
"originalProgramTree": {
|
|
970
|
+
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
971
|
+
"fileCount": 4012
|
|
972
|
+
},
|
|
973
|
+
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
974
|
+
"cliSource": "upstream-resolved-vendor",
|
|
975
|
+
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
976
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
977
|
+
"optionalMissingBindings": []
|
|
978
|
+
},
|
|
979
|
+
"win32-x64": {
|
|
980
|
+
"upstreamCommit": null,
|
|
981
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
982
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
983
|
+
"toolchain": {
|
|
984
|
+
"node": "v24.15.0",
|
|
985
|
+
"platform": "win32-x64",
|
|
986
|
+
"image": "20261007.264.1"
|
|
987
|
+
},
|
|
988
|
+
"originalProgramTree": {
|
|
989
|
+
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
990
|
+
"fileCount": 3604
|
|
991
|
+
},
|
|
992
|
+
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
993
|
+
"cliSource": "upstream-resolved-vendor",
|
|
994
|
+
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
995
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
996
|
+
"optionalMissingBindings": []
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
},
|
|
1000
|
+
"upgradeNpmUpdater": true,
|
|
1001
|
+
"overlaySource": "702edd41b58974e96628084b20d10d1cf1660a7d",
|
|
1002
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
1003
|
+
"toolchain": {
|
|
1004
|
+
"node": "v24.15.0",
|
|
1005
|
+
"platform": "darwin-arm64",
|
|
1006
|
+
"image": "20260907.0337.1"
|
|
1007
|
+
}
|
|
1008
|
+
},
|
|
1009
|
+
"win32-x64": {
|
|
1010
|
+
"nativeBase": {
|
|
1011
|
+
"version": "0.6.2",
|
|
1012
|
+
"identity": "09d8b6120bb202a7cac8a11f4c247f4fd31e63981aedad930b8f9af18dc796ba",
|
|
1013
|
+
"source": {
|
|
1014
|
+
"darwin-arm64": {
|
|
1015
|
+
"upstreamCommit": null,
|
|
1016
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1017
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
1018
|
+
"toolchain": {
|
|
1019
|
+
"node": "v24.15.0",
|
|
1020
|
+
"platform": "darwin-arm64",
|
|
1021
|
+
"image": "20260907.0337.1"
|
|
1022
|
+
},
|
|
1023
|
+
"originalProgramTree": {
|
|
1024
|
+
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
1025
|
+
"fileCount": 4012
|
|
1026
|
+
},
|
|
1027
|
+
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
1028
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1029
|
+
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
1030
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1031
|
+
"optionalMissingBindings": []
|
|
1032
|
+
},
|
|
1033
|
+
"win32-x64": {
|
|
1034
|
+
"upstreamCommit": null,
|
|
1035
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1036
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
1037
|
+
"toolchain": {
|
|
1038
|
+
"node": "v24.15.0",
|
|
1039
|
+
"platform": "win32-x64",
|
|
1040
|
+
"image": "20261007.264.1"
|
|
1041
|
+
},
|
|
1042
|
+
"originalProgramTree": {
|
|
1043
|
+
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
1044
|
+
"fileCount": 3604
|
|
1045
|
+
},
|
|
1046
|
+
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
1047
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1048
|
+
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
1049
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1050
|
+
"optionalMissingBindings": []
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
},
|
|
1054
|
+
"upgradeNpmUpdater": true,
|
|
1055
|
+
"overlaySource": "702edd41b58974e96628084b20d10d1cf1660a7d",
|
|
1056
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
1057
|
+
"toolchain": {
|
|
1058
|
+
"node": "v24.15.0",
|
|
1059
|
+
"platform": "win32-x64",
|
|
1060
|
+
"image": "20261007.264.1"
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
},
|
|
1065
|
+
"upgradeNpmUpdater": true,
|
|
1066
|
+
"overlaySource": "504a1b3495744eaccb00faaeac06768aa0039970",
|
|
953
1067
|
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
954
1068
|
"toolchain": {
|
|
955
1069
|
"node": "v24.15.0",
|
|
956
1070
|
"platform": "darwin-arm64",
|
|
957
1071
|
"image": "20260907.0337.1"
|
|
958
|
-
}
|
|
959
|
-
"originalProgramTree": {
|
|
960
|
-
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
961
|
-
"fileCount": 4012
|
|
962
|
-
},
|
|
963
|
-
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
964
|
-
"cliSource": "upstream-resolved-vendor",
|
|
965
|
-
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
966
|
-
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
967
|
-
"optionalMissingBindings": []
|
|
1072
|
+
}
|
|
968
1073
|
},
|
|
969
1074
|
"win32-x64": {
|
|
970
|
-
"
|
|
971
|
-
|
|
1075
|
+
"nativeBase": {
|
|
1076
|
+
"version": "0.6.3",
|
|
1077
|
+
"identity": "89e29c17e98085a6b8123796fe9c12da2953098fdcd0b419ac1cb9094c53da4c",
|
|
1078
|
+
"source": {
|
|
1079
|
+
"darwin-arm64": {
|
|
1080
|
+
"nativeBase": {
|
|
1081
|
+
"version": "0.6.2",
|
|
1082
|
+
"identity": "417962c59809acbe93dcfe2fc39026b921bdf9d2026ce49063b2ea9e6b6e51f6",
|
|
1083
|
+
"source": {
|
|
1084
|
+
"darwin-arm64": {
|
|
1085
|
+
"upstreamCommit": null,
|
|
1086
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1087
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
1088
|
+
"toolchain": {
|
|
1089
|
+
"node": "v24.15.0",
|
|
1090
|
+
"platform": "darwin-arm64",
|
|
1091
|
+
"image": "20260907.0337.1"
|
|
1092
|
+
},
|
|
1093
|
+
"originalProgramTree": {
|
|
1094
|
+
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
1095
|
+
"fileCount": 4012
|
|
1096
|
+
},
|
|
1097
|
+
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
1098
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1099
|
+
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
1100
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1101
|
+
"optionalMissingBindings": []
|
|
1102
|
+
},
|
|
1103
|
+
"win32-x64": {
|
|
1104
|
+
"upstreamCommit": null,
|
|
1105
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1106
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
1107
|
+
"toolchain": {
|
|
1108
|
+
"node": "v24.15.0",
|
|
1109
|
+
"platform": "win32-x64",
|
|
1110
|
+
"image": "20261007.264.1"
|
|
1111
|
+
},
|
|
1112
|
+
"originalProgramTree": {
|
|
1113
|
+
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
1114
|
+
"fileCount": 3604
|
|
1115
|
+
},
|
|
1116
|
+
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
1117
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1118
|
+
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
1119
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1120
|
+
"optionalMissingBindings": []
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
},
|
|
1124
|
+
"upgradeNpmUpdater": true,
|
|
1125
|
+
"overlaySource": "702edd41b58974e96628084b20d10d1cf1660a7d",
|
|
1126
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
1127
|
+
"toolchain": {
|
|
1128
|
+
"node": "v24.15.0",
|
|
1129
|
+
"platform": "darwin-arm64",
|
|
1130
|
+
"image": "20260907.0337.1"
|
|
1131
|
+
}
|
|
1132
|
+
},
|
|
1133
|
+
"win32-x64": {
|
|
1134
|
+
"nativeBase": {
|
|
1135
|
+
"version": "0.6.2",
|
|
1136
|
+
"identity": "09d8b6120bb202a7cac8a11f4c247f4fd31e63981aedad930b8f9af18dc796ba",
|
|
1137
|
+
"source": {
|
|
1138
|
+
"darwin-arm64": {
|
|
1139
|
+
"upstreamCommit": null,
|
|
1140
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1141
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
1142
|
+
"toolchain": {
|
|
1143
|
+
"node": "v24.15.0",
|
|
1144
|
+
"platform": "darwin-arm64",
|
|
1145
|
+
"image": "20260907.0337.1"
|
|
1146
|
+
},
|
|
1147
|
+
"originalProgramTree": {
|
|
1148
|
+
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
1149
|
+
"fileCount": 4012
|
|
1150
|
+
},
|
|
1151
|
+
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
1152
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1153
|
+
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
1154
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1155
|
+
"optionalMissingBindings": []
|
|
1156
|
+
},
|
|
1157
|
+
"win32-x64": {
|
|
1158
|
+
"upstreamCommit": null,
|
|
1159
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1160
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
1161
|
+
"toolchain": {
|
|
1162
|
+
"node": "v24.15.0",
|
|
1163
|
+
"platform": "win32-x64",
|
|
1164
|
+
"image": "20261007.264.1"
|
|
1165
|
+
},
|
|
1166
|
+
"originalProgramTree": {
|
|
1167
|
+
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
1168
|
+
"fileCount": 3604
|
|
1169
|
+
},
|
|
1170
|
+
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
1171
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1172
|
+
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
1173
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1174
|
+
"optionalMissingBindings": []
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
},
|
|
1178
|
+
"upgradeNpmUpdater": true,
|
|
1179
|
+
"overlaySource": "702edd41b58974e96628084b20d10d1cf1660a7d",
|
|
1180
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
1181
|
+
"toolchain": {
|
|
1182
|
+
"node": "v24.15.0",
|
|
1183
|
+
"platform": "win32-x64",
|
|
1184
|
+
"image": "20261007.264.1"
|
|
1185
|
+
}
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
},
|
|
1189
|
+
"upgradeNpmUpdater": true,
|
|
1190
|
+
"overlaySource": "504a1b3495744eaccb00faaeac06768aa0039970",
|
|
972
1191
|
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
973
1192
|
"toolchain": {
|
|
974
1193
|
"node": "v24.15.0",
|
|
975
1194
|
"platform": "win32-x64",
|
|
976
1195
|
"image": "20261007.264.1"
|
|
977
|
-
}
|
|
978
|
-
"originalProgramTree": {
|
|
979
|
-
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
980
|
-
"fileCount": 3604
|
|
981
|
-
},
|
|
982
|
-
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
983
|
-
"cliSource": "upstream-resolved-vendor",
|
|
984
|
-
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
985
|
-
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
986
|
-
"optionalMissingBindings": []
|
|
1196
|
+
}
|
|
987
1197
|
}
|
|
988
1198
|
},
|
|
989
1199
|
"runtimes": {
|
|
@@ -1079,26 +1289,26 @@
|
|
|
1079
1289
|
},
|
|
1080
1290
|
"binding": {
|
|
1081
1291
|
"schema": 1,
|
|
1082
|
-
"managerVersion": "0.6.
|
|
1292
|
+
"managerVersion": "0.6.4",
|
|
1083
1293
|
"managerSource": {
|
|
1084
1294
|
"repository": "petercjl/codex-own",
|
|
1085
|
-
"ref": "
|
|
1086
|
-
"run": "
|
|
1295
|
+
"ref": "504a1b3495744eaccb00faaeac06768aa0039970",
|
|
1296
|
+
"run": "39002688773",
|
|
1087
1297
|
"workflow": ".github/workflows/own-release.yml"
|
|
1088
1298
|
},
|
|
1089
1299
|
"managerContract": 2,
|
|
1090
|
-
"releasePolicyFingerprint": "
|
|
1300
|
+
"releasePolicyFingerprint": "95fec8be9585f27c40dcd70750ba850e3bfeb014be6cfe61f4eec4aa3824d643",
|
|
1091
1301
|
"desktop": {
|
|
1092
|
-
"artifactVersion": "0.6.
|
|
1093
|
-
"publishedIn": "0.6.
|
|
1094
|
-
"identity": "
|
|
1095
|
-
"inputFingerprint": "
|
|
1096
|
-
"declaredFingerprint": "
|
|
1302
|
+
"artifactVersion": "0.6.4",
|
|
1303
|
+
"publishedIn": "0.6.4",
|
|
1304
|
+
"identity": "b0125afb9b223af0b943481f7fd47e62ecd16191f06d412d4cd04a4a04cc1f82",
|
|
1305
|
+
"inputFingerprint": "50c2aeabb0ba11b4c2acf49232ddaadcf5c3815d336ec80f7124ea639ff406ae",
|
|
1306
|
+
"declaredFingerprint": "219354ba5cd42791ca3a012517c8c840049efe4665afc19d5d5556e0947e5a58",
|
|
1097
1307
|
"upstreamFingerprint": "534b9cc3c7f2682d02176e3077af87f763058b193d47988b311b9e1b3277cd61",
|
|
1098
1308
|
"source": {
|
|
1099
1309
|
"repository": "petercjl/codex-own",
|
|
1100
|
-
"ref": "
|
|
1101
|
-
"run": "
|
|
1310
|
+
"ref": "504a1b3495744eaccb00faaeac06768aa0039970",
|
|
1311
|
+
"run": "39002688773",
|
|
1102
1312
|
"workflow": ".github/workflows/own-release.yml"
|
|
1103
1313
|
},
|
|
1104
1314
|
"updaterContract": 2,
|
package/release.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": 2,
|
|
3
3
|
"repository": "petercjl/codex-own",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.4",
|
|
5
5
|
"platforms": {
|
|
6
6
|
"darwin-arm64": {
|
|
7
7
|
"entry": "codex-own.app",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"version": "codex-cli 0.156.1-cometix"
|
|
14
14
|
},
|
|
15
15
|
"transport": "canonical-tar-cdc-v1",
|
|
16
|
-
"size":
|
|
17
|
-
"sha256": "
|
|
16
|
+
"size": 2069301248,
|
|
17
|
+
"sha256": "019f7b42dd27ffc1b7b4f417dce15e3805c4be1ae5ff270c6c26f42ce8c41751",
|
|
18
18
|
"parts": [
|
|
19
19
|
{
|
|
20
20
|
"sha256": "0b42f2d545aca8e8255bd5fee043156b6851be1bf123d3c74b9ebb578f3f7d32",
|
|
@@ -360,11 +360,11 @@
|
|
|
360
360
|
"archiveSha256": "c99a078d64811b89c5a6dee82392825acb8fdb4881abf88f8bbc9fda1da67f9e"
|
|
361
361
|
},
|
|
362
362
|
{
|
|
363
|
-
"sha256": "
|
|
364
|
-
"size":
|
|
365
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
366
|
-
"archiveSize":
|
|
367
|
-
"archiveSha256": "
|
|
363
|
+
"sha256": "91c2df3863faacb22a15e40699f613f6bc6734f21c05f7abce6074849baebcf6",
|
|
364
|
+
"size": 59792384,
|
|
365
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.h91c2df3863faacb22a15e40699f613f6bc6734f21c05f7abce6074849baebcf6.tgz",
|
|
366
|
+
"archiveSize": 26456586,
|
|
367
|
+
"archiveSha256": "a9b63d37be08450f47795a6657cfc657811547d819a3e1878b0df35c5d3e20fd"
|
|
368
368
|
},
|
|
369
369
|
{
|
|
370
370
|
"sha256": "7cfeb48649874d23596c06c132aea050773133adc936e5d905966a48916f629b",
|
|
@@ -381,11 +381,11 @@
|
|
|
381
381
|
"archiveSha256": "caa6952e6c00fed43f98c1e5b5eb653ed311f09b35be3aa2afc6d696ff38677b"
|
|
382
382
|
},
|
|
383
383
|
{
|
|
384
|
-
"sha256": "
|
|
384
|
+
"sha256": "eb6cc1ceff2c14c3ace5fd00aaa1413f0c6ed757ae4d5bcba62de883bf7d3a3d",
|
|
385
385
|
"size": 17287710,
|
|
386
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
387
|
-
"archiveSize":
|
|
388
|
-
"archiveSha256": "
|
|
386
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.heb6cc1ceff2c14c3ace5fd00aaa1413f0c6ed757ae4d5bcba62de883bf7d3a3d.tgz",
|
|
387
|
+
"archiveSize": 15691273,
|
|
388
|
+
"archiveSha256": "f4e900216a7193dc1b61387b6314c5f4d47c4caf2017e860948b5f057b22b0f8"
|
|
389
389
|
},
|
|
390
390
|
{
|
|
391
391
|
"sha256": "486eecb966966e046dfade862bdce1b6f29a5d17c1a663832a23b38fece27089",
|
|
@@ -416,11 +416,11 @@
|
|
|
416
416
|
"archiveSha256": "fa3816195cbaaf7fd2f0cb1b61134b6d41363893bf71f91df2421d2976438cd1"
|
|
417
417
|
},
|
|
418
418
|
{
|
|
419
|
-
"sha256": "
|
|
420
|
-
"size":
|
|
421
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
422
|
-
"archiveSize":
|
|
423
|
-
"archiveSha256": "
|
|
419
|
+
"sha256": "5220d2f88d663a3ce9962263647adf342af25ec559c53da94d7b41151ffd7bf6",
|
|
420
|
+
"size": 1779200,
|
|
421
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.h5220d2f88d663a3ce9962263647adf342af25ec559c53da94d7b41151ffd7bf6.tgz",
|
|
422
|
+
"archiveSize": 358530,
|
|
423
|
+
"archiveSha256": "17b78897fa6d4fe5eabd9ed1962b98a3128aa4afb4f7ad2c229aad9bfc7836dc"
|
|
424
424
|
}
|
|
425
425
|
]
|
|
426
426
|
},
|
|
@@ -428,14 +428,14 @@
|
|
|
428
428
|
"entry": "app",
|
|
429
429
|
"probe": {
|
|
430
430
|
"path": "app/resources/codex.exe",
|
|
431
|
-
"offset":
|
|
431
|
+
"offset": 1578081792,
|
|
432
432
|
"size": 184842240,
|
|
433
433
|
"sha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
434
434
|
"version": "codex-cli 0.156.1-cometix"
|
|
435
435
|
},
|
|
436
436
|
"transport": "canonical-tar-cdc-v1",
|
|
437
|
-
"size":
|
|
438
|
-
"sha256": "
|
|
437
|
+
"size": 2288478720,
|
|
438
|
+
"sha256": "caae1ed47193a3ddbf1c2b5fe341819f90579208f64e9672b46cac099a51af8b",
|
|
439
439
|
"parts": [
|
|
440
440
|
{
|
|
441
441
|
"sha256": "308461c5561025640d0ed339cca7c440649e8cb13505d6b6e974f2ac93f5069e",
|
|
@@ -494,11 +494,11 @@
|
|
|
494
494
|
"archiveSha256": "05820fcec6f925b9df6e985d85b6714abf85e73e28c508cec788d61f2f739c97"
|
|
495
495
|
},
|
|
496
496
|
{
|
|
497
|
-
"sha256": "
|
|
498
|
-
"size":
|
|
499
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
500
|
-
"archiveSize":
|
|
501
|
-
"archiveSha256": "
|
|
497
|
+
"sha256": "500fc7ae50d6c369028217786b216dd7ad83247f929613818356e8856eef3abf",
|
|
498
|
+
"size": 22379520,
|
|
499
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.h500fc7ae50d6c369028217786b216dd7ad83247f929613818356e8856eef3abf.tgz",
|
|
500
|
+
"archiveSize": 11368418,
|
|
501
|
+
"archiveSha256": "6b21a76d09ba2d2b4e1c3012a70a63353a983ad0a4c67242c37bdfd50de69a68"
|
|
502
502
|
},
|
|
503
503
|
{
|
|
504
504
|
"sha256": "43ed59166d1d9cdd41ae56a0bcb9aaece2ddc00708f0854f21828494b29315aa",
|
|
@@ -837,11 +837,11 @@
|
|
|
837
837
|
"archiveSha256": "46ce103d3c585317f55a3ddf2d51777c35efd172bdd20542ab530d5f2bc0e821"
|
|
838
838
|
},
|
|
839
839
|
{
|
|
840
|
-
"sha256": "
|
|
841
|
-
"size":
|
|
842
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
843
|
-
"archiveSize":
|
|
844
|
-
"archiveSha256": "
|
|
840
|
+
"sha256": "4c164589fe7dc8d2aeb57146fb9ceb2845ff2e6789121913d095d35c26ab1d49",
|
|
841
|
+
"size": 6004736,
|
|
842
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.h4c164589fe7dc8d2aeb57146fb9ceb2845ff2e6789121913d095d35c26ab1d49.tgz",
|
|
843
|
+
"archiveSize": 2019781,
|
|
844
|
+
"archiveSha256": "789259da99258ee68b6f21c8023a1be5c469bfca3062239954e990ed9f64b9cd"
|
|
845
845
|
},
|
|
846
846
|
{
|
|
847
847
|
"sha256": "15378e38de6292c183145444811610b2bfde8b72bd694127d1a009e020d09859",
|
|
@@ -858,11 +858,11 @@
|
|
|
858
858
|
"archiveSha256": "541098580cb90b6f0ec96267bd3bb987122dfd1e086f02cf1eeb3a7fee531c5a"
|
|
859
859
|
},
|
|
860
860
|
{
|
|
861
|
-
"sha256": "
|
|
861
|
+
"sha256": "e2c6b19fa4cca42d51bf6b1f6cd6ad2e437ad119b28c7690a4e6a029b48de802",
|
|
862
862
|
"size": 34276749,
|
|
863
|
-
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.
|
|
864
|
-
"archiveSize":
|
|
865
|
-
"archiveSha256": "
|
|
863
|
+
"url": "https://registry.npmjs.org/@petercjl/codex-own/-/codex-own-0.0.0-payload.he2c6b19fa4cca42d51bf6b1f6cd6ad2e437ad119b28c7690a4e6a029b48de802.tgz",
|
|
864
|
+
"archiveSize": 27888291,
|
|
865
|
+
"archiveSha256": "4d499d3e13307e96d2fa9d3f2e5329846dd5a91b8ae8b7532b835fded958555f"
|
|
866
866
|
},
|
|
867
867
|
{
|
|
868
868
|
"sha256": "1ed2bf8a8edfa5772517404274b44baf011ec3bbfc89936bc3851d54daee4686",
|
|
@@ -904,42 +904,252 @@
|
|
|
904
904
|
},
|
|
905
905
|
"provenance": {
|
|
906
906
|
"darwin-arm64": {
|
|
907
|
-
"
|
|
908
|
-
|
|
907
|
+
"nativeBase": {
|
|
908
|
+
"version": "0.6.3",
|
|
909
|
+
"identity": "3bec71959e4ee0ebd92722dbf72a28ea1c60e26f61089c44e38ec97eaf68d2c3",
|
|
910
|
+
"source": {
|
|
911
|
+
"darwin-arm64": {
|
|
912
|
+
"nativeBase": {
|
|
913
|
+
"version": "0.6.2",
|
|
914
|
+
"identity": "417962c59809acbe93dcfe2fc39026b921bdf9d2026ce49063b2ea9e6b6e51f6",
|
|
915
|
+
"source": {
|
|
916
|
+
"darwin-arm64": {
|
|
917
|
+
"upstreamCommit": null,
|
|
918
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
919
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
920
|
+
"toolchain": {
|
|
921
|
+
"node": "v24.15.0",
|
|
922
|
+
"platform": "darwin-arm64",
|
|
923
|
+
"image": "20260907.0337.1"
|
|
924
|
+
},
|
|
925
|
+
"originalProgramTree": {
|
|
926
|
+
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
927
|
+
"fileCount": 4012
|
|
928
|
+
},
|
|
929
|
+
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
930
|
+
"cliSource": "upstream-resolved-vendor",
|
|
931
|
+
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
932
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
933
|
+
"optionalMissingBindings": []
|
|
934
|
+
},
|
|
935
|
+
"win32-x64": {
|
|
936
|
+
"upstreamCommit": null,
|
|
937
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
938
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
939
|
+
"toolchain": {
|
|
940
|
+
"node": "v24.15.0",
|
|
941
|
+
"platform": "win32-x64",
|
|
942
|
+
"image": "20261007.264.1"
|
|
943
|
+
},
|
|
944
|
+
"originalProgramTree": {
|
|
945
|
+
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
946
|
+
"fileCount": 3604
|
|
947
|
+
},
|
|
948
|
+
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
949
|
+
"cliSource": "upstream-resolved-vendor",
|
|
950
|
+
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
951
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
952
|
+
"optionalMissingBindings": []
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
},
|
|
956
|
+
"upgradeNpmUpdater": true,
|
|
957
|
+
"overlaySource": "702edd41b58974e96628084b20d10d1cf1660a7d",
|
|
958
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
959
|
+
"toolchain": {
|
|
960
|
+
"node": "v24.15.0",
|
|
961
|
+
"platform": "darwin-arm64",
|
|
962
|
+
"image": "20260907.0337.1"
|
|
963
|
+
}
|
|
964
|
+
},
|
|
965
|
+
"win32-x64": {
|
|
966
|
+
"nativeBase": {
|
|
967
|
+
"version": "0.6.2",
|
|
968
|
+
"identity": "09d8b6120bb202a7cac8a11f4c247f4fd31e63981aedad930b8f9af18dc796ba",
|
|
969
|
+
"source": {
|
|
970
|
+
"darwin-arm64": {
|
|
971
|
+
"upstreamCommit": null,
|
|
972
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
973
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
974
|
+
"toolchain": {
|
|
975
|
+
"node": "v24.15.0",
|
|
976
|
+
"platform": "darwin-arm64",
|
|
977
|
+
"image": "20260907.0337.1"
|
|
978
|
+
},
|
|
979
|
+
"originalProgramTree": {
|
|
980
|
+
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
981
|
+
"fileCount": 4012
|
|
982
|
+
},
|
|
983
|
+
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
984
|
+
"cliSource": "upstream-resolved-vendor",
|
|
985
|
+
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
986
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
987
|
+
"optionalMissingBindings": []
|
|
988
|
+
},
|
|
989
|
+
"win32-x64": {
|
|
990
|
+
"upstreamCommit": null,
|
|
991
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
992
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
993
|
+
"toolchain": {
|
|
994
|
+
"node": "v24.15.0",
|
|
995
|
+
"platform": "win32-x64",
|
|
996
|
+
"image": "20261007.264.1"
|
|
997
|
+
},
|
|
998
|
+
"originalProgramTree": {
|
|
999
|
+
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
1000
|
+
"fileCount": 3604
|
|
1001
|
+
},
|
|
1002
|
+
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
1003
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1004
|
+
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
1005
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1006
|
+
"optionalMissingBindings": []
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
},
|
|
1010
|
+
"upgradeNpmUpdater": true,
|
|
1011
|
+
"overlaySource": "702edd41b58974e96628084b20d10d1cf1660a7d",
|
|
1012
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
1013
|
+
"toolchain": {
|
|
1014
|
+
"node": "v24.15.0",
|
|
1015
|
+
"platform": "win32-x64",
|
|
1016
|
+
"image": "20261007.264.1"
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
},
|
|
1021
|
+
"upgradeNpmUpdater": true,
|
|
1022
|
+
"overlaySource": "504a1b3495744eaccb00faaeac06768aa0039970",
|
|
909
1023
|
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
910
1024
|
"toolchain": {
|
|
911
1025
|
"node": "v24.15.0",
|
|
912
1026
|
"platform": "darwin-arm64",
|
|
913
1027
|
"image": "20260907.0337.1"
|
|
914
|
-
}
|
|
915
|
-
"originalProgramTree": {
|
|
916
|
-
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
917
|
-
"fileCount": 4012
|
|
918
|
-
},
|
|
919
|
-
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
920
|
-
"cliSource": "upstream-resolved-vendor",
|
|
921
|
-
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
922
|
-
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
923
|
-
"optionalMissingBindings": []
|
|
1028
|
+
}
|
|
924
1029
|
},
|
|
925
1030
|
"win32-x64": {
|
|
926
|
-
"
|
|
927
|
-
|
|
1031
|
+
"nativeBase": {
|
|
1032
|
+
"version": "0.6.3",
|
|
1033
|
+
"identity": "89e29c17e98085a6b8123796fe9c12da2953098fdcd0b419ac1cb9094c53da4c",
|
|
1034
|
+
"source": {
|
|
1035
|
+
"darwin-arm64": {
|
|
1036
|
+
"nativeBase": {
|
|
1037
|
+
"version": "0.6.2",
|
|
1038
|
+
"identity": "417962c59809acbe93dcfe2fc39026b921bdf9d2026ce49063b2ea9e6b6e51f6",
|
|
1039
|
+
"source": {
|
|
1040
|
+
"darwin-arm64": {
|
|
1041
|
+
"upstreamCommit": null,
|
|
1042
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1043
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
1044
|
+
"toolchain": {
|
|
1045
|
+
"node": "v24.15.0",
|
|
1046
|
+
"platform": "darwin-arm64",
|
|
1047
|
+
"image": "20260907.0337.1"
|
|
1048
|
+
},
|
|
1049
|
+
"originalProgramTree": {
|
|
1050
|
+
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
1051
|
+
"fileCount": 4012
|
|
1052
|
+
},
|
|
1053
|
+
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
1054
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1055
|
+
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
1056
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1057
|
+
"optionalMissingBindings": []
|
|
1058
|
+
},
|
|
1059
|
+
"win32-x64": {
|
|
1060
|
+
"upstreamCommit": null,
|
|
1061
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1062
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
1063
|
+
"toolchain": {
|
|
1064
|
+
"node": "v24.15.0",
|
|
1065
|
+
"platform": "win32-x64",
|
|
1066
|
+
"image": "20261007.264.1"
|
|
1067
|
+
},
|
|
1068
|
+
"originalProgramTree": {
|
|
1069
|
+
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
1070
|
+
"fileCount": 3604
|
|
1071
|
+
},
|
|
1072
|
+
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
1073
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1074
|
+
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
1075
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1076
|
+
"optionalMissingBindings": []
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
},
|
|
1080
|
+
"upgradeNpmUpdater": true,
|
|
1081
|
+
"overlaySource": "702edd41b58974e96628084b20d10d1cf1660a7d",
|
|
1082
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
1083
|
+
"toolchain": {
|
|
1084
|
+
"node": "v24.15.0",
|
|
1085
|
+
"platform": "darwin-arm64",
|
|
1086
|
+
"image": "20260907.0337.1"
|
|
1087
|
+
}
|
|
1088
|
+
},
|
|
1089
|
+
"win32-x64": {
|
|
1090
|
+
"nativeBase": {
|
|
1091
|
+
"version": "0.6.2",
|
|
1092
|
+
"identity": "09d8b6120bb202a7cac8a11f4c247f4fd31e63981aedad930b8f9af18dc796ba",
|
|
1093
|
+
"source": {
|
|
1094
|
+
"darwin-arm64": {
|
|
1095
|
+
"upstreamCommit": null,
|
|
1096
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1097
|
+
"updaterNodeSha256": "3200fbd9f7fd4410426dd541e10d1ab829d3472f270d743c7fabd1696c03fe32",
|
|
1098
|
+
"toolchain": {
|
|
1099
|
+
"node": "v24.15.0",
|
|
1100
|
+
"platform": "darwin-arm64",
|
|
1101
|
+
"image": "20260907.0337.1"
|
|
1102
|
+
},
|
|
1103
|
+
"originalProgramTree": {
|
|
1104
|
+
"sha256": "39ea65581aaa0159e90153ccd10308de2380e3e584beb9f406615a1dbeab6722",
|
|
1105
|
+
"fileCount": 4012
|
|
1106
|
+
},
|
|
1107
|
+
"originalAsarSha256": "bf9c41fa9770fbfacfba93042ff71c24cb65c82935819377275faac08103383f",
|
|
1108
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1109
|
+
"cliSha256": "bdf26c4f03ab64e57162a2f715d0f5b236f4534e60ca92abb989069280066987",
|
|
1110
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1111
|
+
"optionalMissingBindings": []
|
|
1112
|
+
},
|
|
1113
|
+
"win32-x64": {
|
|
1114
|
+
"upstreamCommit": null,
|
|
1115
|
+
"ownSourceRef": "d432fe03d07a343d75962e1f8b92bffcd68360fb",
|
|
1116
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
1117
|
+
"toolchain": {
|
|
1118
|
+
"node": "v24.15.0",
|
|
1119
|
+
"platform": "win32-x64",
|
|
1120
|
+
"image": "20261007.264.1"
|
|
1121
|
+
},
|
|
1122
|
+
"originalProgramTree": {
|
|
1123
|
+
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
1124
|
+
"fileCount": 3604
|
|
1125
|
+
},
|
|
1126
|
+
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
1127
|
+
"cliSource": "upstream-resolved-vendor",
|
|
1128
|
+
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
1129
|
+
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
1130
|
+
"optionalMissingBindings": []
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
},
|
|
1134
|
+
"upgradeNpmUpdater": true,
|
|
1135
|
+
"overlaySource": "702edd41b58974e96628084b20d10d1cf1660a7d",
|
|
1136
|
+
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
1137
|
+
"toolchain": {
|
|
1138
|
+
"node": "v24.15.0",
|
|
1139
|
+
"platform": "win32-x64",
|
|
1140
|
+
"image": "20261007.264.1"
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
},
|
|
1145
|
+
"upgradeNpmUpdater": true,
|
|
1146
|
+
"overlaySource": "504a1b3495744eaccb00faaeac06768aa0039970",
|
|
928
1147
|
"updaterNodeSha256": "3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5",
|
|
929
1148
|
"toolchain": {
|
|
930
1149
|
"node": "v24.15.0",
|
|
931
1150
|
"platform": "win32-x64",
|
|
932
1151
|
"image": "20261007.264.1"
|
|
933
|
-
}
|
|
934
|
-
"originalProgramTree": {
|
|
935
|
-
"sha256": "c43614b1181aa017272e9cc9e379d523afe28a4901b0d29b8e039c399f5ffbb4",
|
|
936
|
-
"fileCount": 3604
|
|
937
|
-
},
|
|
938
|
-
"originalAsarSha256": "163a18c84db57ad5c50222b313dc4d11d45febc03ec065b516ba9f0380f2eb3f",
|
|
939
|
-
"cliSource": "upstream-resolved-vendor",
|
|
940
|
-
"cliSha256": "8d12293fc75d495ebc1df360b25a05352dbe6ce0521c3456b5c33a3bb92ab014",
|
|
941
|
-
"cliVersion": "codex-cli 0.156.1-cometix",
|
|
942
|
-
"optionalMissingBindings": []
|
|
1152
|
+
}
|
|
943
1153
|
}
|
|
944
1154
|
},
|
|
945
1155
|
"runtimes": {
|
|
@@ -1035,26 +1245,26 @@
|
|
|
1035
1245
|
},
|
|
1036
1246
|
"binding": {
|
|
1037
1247
|
"schema": 1,
|
|
1038
|
-
"managerVersion": "0.6.
|
|
1248
|
+
"managerVersion": "0.6.4",
|
|
1039
1249
|
"managerSource": {
|
|
1040
1250
|
"repository": "petercjl/codex-own",
|
|
1041
|
-
"ref": "
|
|
1042
|
-
"run": "
|
|
1251
|
+
"ref": "504a1b3495744eaccb00faaeac06768aa0039970",
|
|
1252
|
+
"run": "39002688773",
|
|
1043
1253
|
"workflow": ".github/workflows/own-release.yml"
|
|
1044
1254
|
},
|
|
1045
1255
|
"managerContract": 2,
|
|
1046
|
-
"releasePolicyFingerprint": "
|
|
1256
|
+
"releasePolicyFingerprint": "95fec8be9585f27c40dcd70750ba850e3bfeb014be6cfe61f4eec4aa3824d643",
|
|
1047
1257
|
"desktop": {
|
|
1048
|
-
"artifactVersion": "0.6.
|
|
1049
|
-
"publishedIn": "0.6.
|
|
1050
|
-
"identity": "
|
|
1051
|
-
"inputFingerprint": "
|
|
1052
|
-
"declaredFingerprint": "
|
|
1258
|
+
"artifactVersion": "0.6.4",
|
|
1259
|
+
"publishedIn": "0.6.4",
|
|
1260
|
+
"identity": "b0125afb9b223af0b943481f7fd47e62ecd16191f06d412d4cd04a4a04cc1f82",
|
|
1261
|
+
"inputFingerprint": "50c2aeabb0ba11b4c2acf49232ddaadcf5c3815d336ec80f7124ea639ff406ae",
|
|
1262
|
+
"declaredFingerprint": "219354ba5cd42791ca3a012517c8c840049efe4665afc19d5d5556e0947e5a58",
|
|
1053
1263
|
"upstreamFingerprint": "534b9cc3c7f2682d02176e3077af87f763058b193d47988b311b9e1b3277cd61",
|
|
1054
1264
|
"source": {
|
|
1055
1265
|
"repository": "petercjl/codex-own",
|
|
1056
|
-
"ref": "
|
|
1057
|
-
"run": "
|
|
1266
|
+
"ref": "504a1b3495744eaccb00faaeac06768aa0039970",
|
|
1267
|
+
"run": "39002688773",
|
|
1058
1268
|
"workflow": ".github/workflows/own-release.yml"
|
|
1059
1269
|
},
|
|
1060
1270
|
"updaterContract": 2,
|
|
@@ -20,6 +20,12 @@ For installation-only acceptance, verify doctor, version, target and shortcut wi
|
|
|
20
20
|
|
|
21
21
|
Desktop builds with the bundled npm updater check stable latest 15 seconds after startup and every six hours. The user-facing menu is 更新 → 检查 codex-own 更新…. Download runs while the app remains usable; 重启并安装 asks the user to end active tasks, then an independent helper waits for exit, backs up and replaces the app. The helper uses bundled Node and npm payloads, so daily in-app updates do not require updating global npm tooling. Inspect the installed app's own updater version separately from the global CLI version. Retain CLI step 3 for older builds and recovery. Prepared, verified downloads survive restarts; offline checks preserve the current installation. Install logs and unique result records live under the independent manager directory; never delete locks to bypass a failed update.
|
|
22
22
|
|
|
23
|
+
## Update cleanup (contract 1)
|
|
24
|
+
|
|
25
|
+
Desktop 0.6.4+ confirms a matching managed installation only after its main interface loads and remains alive for 30 seconds. It then automatically reclaims applied archives and completed inactive helpers, retires superseded successful app/data backup pairs while preserving the latest complete rollback, and evicts least recently used unpinned content blocks above the default 2 GiB cache limit. Pending or failed updates retain their files and needed blocks; unknown receipts protect the cache conservatively and can temporarily exceed the limit. Live configuration, credentials, conversations and private tool versions remain outside cleanup.
|
|
26
|
+
|
|
27
|
+
For a cleanup request, inspect `codex-own cleanup plan` first. With authorization covering removal of obsolete managed update files and older backups, use `codex-own cleanup run --yes`; the app may remain open. `--cache-limit-mib <0..16384>` optionally changes that invocation's limit. Return to main-line verification with reclaimed bytes, retained rollback, warnings and report path. A deferred result such as HEALTH_NOT_CONFIRMED, INCOMPLETE_TRANSACTION or ROLLBACK_INCOMPLETE is not a cleanup success: inspect the corresponding startup or transaction state and preserve recovery material. BUSY retains the operation lock. Do not substitute broad filesystem deletion or fabricate startup evidence. The update window displays the latest startup's cleanup result; diagnostic records are bounded to 20 per category.
|
|
28
|
+
|
|
23
29
|
## Private tool runtime (contract 1)
|
|
24
30
|
|
|
25
31
|
Desktop installations from 0.5.0 include a separately versioned Node/npm/Python toolchain. The manager's release manifest pins verified npm payloads for macOS ARM64 and Windows x64. Install/update ensures these tools before switching the app. Runtime bytes retain upstream licenses and contain no user configuration. The initial npm manager bootstrap still requires existing Node.js 22+; ordinary app updates use the bundled updater.
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"side_effects": {
|
|
29
29
|
"external_mutation": true,
|
|
30
30
|
"may_cost_money": false,
|
|
31
|
-
"authorization": "Only requested install, update, configuration or
|
|
31
|
+
"authorization": "Only requested install, update, configuration, recovery or managed update cleanup; read-only checks otherwise. Cleanup may retire older backups while preserving the latest complete rollback."
|
|
32
32
|
},
|
|
33
33
|
"errors": [
|
|
34
34
|
"CAPABILITY_UNAVAILABLE",
|
|
@@ -36,4 +36,4 @@
|
|
|
36
36
|
]
|
|
37
37
|
}
|
|
38
38
|
]
|
|
39
|
-
}
|
|
39
|
+
}
|