@wujie-shell/core 0.1.5 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +36 -5
  2. package/bin/wujie-shell.mjs +65 -0
  3. package/dist/bin/wujie-shell.mjs +1 -1
  4. package/dist/src/agents/bundled-agent-skills.mjs +1 -0
  5. package/dist/src/agents/bundled-agents.mjs +1 -0
  6. package/dist/src/chat/media-archive.mjs +1 -0
  7. package/dist/src/chat/queue.mjs +1 -0
  8. package/dist/src/common/diagnostics.mjs +1 -0
  9. package/dist/src/common/logging.mjs +1 -0
  10. package/dist/src/common/runtime-logger.mjs +1 -0
  11. package/dist/src/common/user-events.mjs +1 -0
  12. package/dist/src/common/utils.mjs +1 -0
  13. package/dist/src/config/controller.mjs +1 -0
  14. package/dist/src/connectors/config-utils.mjs +1 -0
  15. package/dist/src/connectors/constants.mjs +1 -0
  16. package/dist/src/connectors/controller.mjs +1 -0
  17. package/dist/src/connectors/kdocs-cli.mjs +1 -0
  18. package/dist/src/electron/main.mjs +1 -1
  19. package/dist/src/electron/preload.mjs +1 -1
  20. package/dist/src/files/generated-files-store.mjs +1 -0
  21. package/dist/src/files/handlers.mjs +1 -0
  22. package/dist/src/gateway/chat-delta.mjs +1 -0
  23. package/dist/src/gateway/controller.mjs +1 -0
  24. package/dist/src/gateway/ws-client.mjs +1 -0
  25. package/dist/src/index.mjs +1 -1
  26. package/dist/src/log-reporting/handlers.mjs +1 -0
  27. package/dist/src/log-reporting/report-logs.mjs +1 -0
  28. package/dist/src/models/handlers.mjs +1 -0
  29. package/dist/src/preferences/store.mjs +1 -0
  30. package/dist/src/runtime/index.mjs +1 -0
  31. package/dist/src/runtime/patch-channel-plugin-runtime.mjs +1 -0
  32. package/dist/src/runtime/patch-chat-history-mixed-tool-content.mjs +1 -0
  33. package/dist/src/runtime/patch-session-store-sqlite.mjs +1 -0
  34. package/dist/src/runtime/plugin-sync.mjs +1 -0
  35. package/dist/src/sessions/agent-sessions-map-store.mjs +1 -0
  36. package/dist/src/sessions/runtime-bridge.mjs +1 -0
  37. package/dist/src/sessions/session-sqlite-store.mjs +1 -0
  38. package/dist/src/sessions/sql/001_init.sql +120 -0
  39. package/dist/src/sessions/sql/002_session_local_metadata.sql +15 -0
  40. package/dist/src/sessions/sql/schema.md +115 -0
  41. package/dist/src/skills/import.mjs +1 -0
  42. package/dist/src/skills/market.mjs +1 -0
  43. package/dist/src/terminal/manager.mjs +1 -0
  44. package/dist/src/updates/controller.mjs +1 -0
  45. package/dist/src/updates/loader.mjs +1 -0
  46. package/package.json +13 -6
  47. package/dist/src/bundled-agent-skills.mjs +0 -1
  48. package/dist/src/bundled-agents.mjs +0 -1
  49. package/dist/src/config-controller.mjs +0 -1
  50. package/dist/src/gateway-controller.mjs +0 -1
  51. package/dist/src/gateway-ws.mjs +0 -1
  52. package/dist/src/logging.mjs +0 -1
  53. package/dist/src/plugin-sync.mjs +0 -1
  54. package/dist/src/runtime-logger.mjs +0 -1
  55. package/dist/src/runtime.mjs +0 -1
  56. package/dist/src/utils.mjs +0 -1
@@ -0,0 +1,120 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ CREATE TABLE IF NOT EXISTS session_store_migrations (
4
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
5
+ version TEXT NOT NULL UNIQUE,
6
+ applied_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
7
+ );
8
+
9
+ CREATE TABLE IF NOT EXISTS session_store_meta (
10
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
11
+ meta_key TEXT NOT NULL UNIQUE,
12
+ meta_value TEXT
13
+ );
14
+
15
+ CREATE TABLE IF NOT EXISTS session_store_legacy_imports (
16
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
17
+ source_path TEXT NOT NULL UNIQUE,
18
+ agent_id TEXT NOT NULL,
19
+ imported_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
20
+ source_mtime_ms INTEGER,
21
+ source_size_bytes INTEGER,
22
+ imported_session_count INTEGER NOT NULL DEFAULT 0
23
+ );
24
+
25
+ CREATE TABLE IF NOT EXISTS session_records (
26
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
27
+ agent_id TEXT NOT NULL,
28
+ session_key TEXT NOT NULL UNIQUE,
29
+ session_id TEXT,
30
+ label TEXT,
31
+ session_file TEXT,
32
+ updated_at INTEGER,
33
+ session_started_at INTEGER,
34
+ last_interaction_at INTEGER,
35
+ system_sent INTEGER,
36
+ aborted_last_run INTEGER,
37
+ chat_type TEXT,
38
+ last_channel TEXT,
39
+ status TEXT,
40
+ started_at INTEGER,
41
+ ended_at INTEGER,
42
+ runtime_ms INTEGER,
43
+ model_provider TEXT,
44
+ model TEXT,
45
+ context_tokens INTEGER,
46
+ input_tokens INTEGER,
47
+ output_tokens INTEGER,
48
+ cache_read INTEGER,
49
+ cache_write INTEGER,
50
+ estimated_cost_usd REAL,
51
+ total_tokens INTEGER,
52
+ total_tokens_fresh INTEGER,
53
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
54
+ updated_row_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
55
+ );
56
+
57
+ CREATE INDEX IF NOT EXISTS session_records_agent_id_idx
58
+ ON session_records (agent_id);
59
+
60
+ CREATE INDEX IF NOT EXISTS session_records_session_id_idx
61
+ ON session_records (session_id);
62
+
63
+ CREATE INDEX IF NOT EXISTS session_records_updated_at_idx
64
+ ON session_records (updated_at DESC);
65
+
66
+ CREATE TABLE IF NOT EXISTS session_local_metadata (
67
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
68
+ session_key TEXT NOT NULL UNIQUE,
69
+ custom_name TEXT,
70
+ pinned INTEGER NOT NULL DEFAULT 0,
71
+ pinned_order INTEGER,
72
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
73
+ updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
74
+ FOREIGN KEY (session_key) REFERENCES session_records(session_key) ON DELETE CASCADE
75
+ );
76
+
77
+ CREATE INDEX IF NOT EXISTS session_local_metadata_pinned_idx
78
+ ON session_local_metadata (pinned, pinned_order);
79
+
80
+ CREATE TABLE IF NOT EXISTS session_sections (
81
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
82
+ session_record_id INTEGER NOT NULL,
83
+ section_name TEXT NOT NULL,
84
+ section_kind TEXT NOT NULL,
85
+ text_value TEXT,
86
+ number_value REAL,
87
+ boolean_value INTEGER,
88
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
89
+ updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
90
+ FOREIGN KEY (session_record_id) REFERENCES session_records(id) ON DELETE CASCADE,
91
+ UNIQUE (session_record_id, section_name)
92
+ );
93
+
94
+ CREATE INDEX IF NOT EXISTS session_sections_record_idx
95
+ ON session_sections (session_record_id);
96
+
97
+ CREATE TABLE IF NOT EXISTS session_section_nodes (
98
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
99
+ section_id INTEGER NOT NULL,
100
+ parent_node_id INTEGER,
101
+ node_key TEXT,
102
+ array_index INTEGER,
103
+ node_kind TEXT NOT NULL,
104
+ text_value TEXT,
105
+ number_value REAL,
106
+ boolean_value INTEGER,
107
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
108
+ updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
109
+ FOREIGN KEY (section_id) REFERENCES session_sections(id) ON DELETE CASCADE,
110
+ FOREIGN KEY (parent_node_id) REFERENCES session_section_nodes(id) ON DELETE CASCADE
111
+ );
112
+
113
+ CREATE INDEX IF NOT EXISTS session_section_nodes_section_idx
114
+ ON session_section_nodes (section_id);
115
+
116
+ CREATE INDEX IF NOT EXISTS session_section_nodes_parent_idx
117
+ ON session_section_nodes (parent_node_id);
118
+
119
+ CREATE INDEX IF NOT EXISTS session_section_nodes_array_idx
120
+ ON session_section_nodes (section_id, parent_node_id, array_index);
@@ -0,0 +1,15 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ CREATE TABLE IF NOT EXISTS session_local_metadata (
4
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
5
+ session_key TEXT NOT NULL UNIQUE,
6
+ custom_name TEXT,
7
+ pinned INTEGER NOT NULL DEFAULT 0,
8
+ pinned_order INTEGER,
9
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
+ updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
11
+ FOREIGN KEY (session_key) REFERENCES session_records(session_key) ON DELETE CASCADE
12
+ );
13
+
14
+ CREATE INDEX IF NOT EXISTS session_local_metadata_pinned_idx
15
+ ON session_local_metadata (pinned, pinned_order);
@@ -0,0 +1,115 @@
1
+ # Session SQLite Schema
2
+
3
+ ## 目标
4
+
5
+ - `session_records` 仅保留运行时热点核心字段。
6
+ - 原 `sessions.json` 的二级及更深层字段不再落 JSON 列,而是进入关联子表。
7
+ - 所有表主键都使用内部 surrogate key,不使用业务字段作为主键。
8
+ - 通过 `sql/*.sql` 增量脚本驱动初始化和升级。
9
+
10
+ ## 表结构
11
+
12
+ ### `session_records`
13
+
14
+ 核心会话摘要表,保留以下热点字段:
15
+
16
+ - `agent_id`
17
+ - `session_key`
18
+ - `session_id`
19
+ - `label`
20
+ - `session_file`
21
+ - `updated_at`
22
+ - `session_started_at`
23
+ - `last_interaction_at`
24
+ - `system_sent`
25
+ - `aborted_last_run`
26
+ - `chat_type`
27
+ - `last_channel`
28
+ - `status`
29
+ - `started_at`
30
+ - `ended_at`
31
+ - `runtime_ms`
32
+ - `model_provider`
33
+ - `model`
34
+ - `context_tokens`
35
+ - `input_tokens`
36
+ - `output_tokens`
37
+ - `cache_read`
38
+ - `cache_write`
39
+ - `estimated_cost_usd`
40
+ - `total_tokens`
41
+ - `total_tokens_fresh`
42
+
43
+ 约束:
44
+
45
+ - `id` 为自增主键
46
+ - `session_key` 唯一索引
47
+ - `agent_id`、`session_id`、`updated_at` 独立索引
48
+
49
+ ### `session_sections`
50
+
51
+ 顶层非核心字段表。每个 `session_records` 可关联多个 section,例如:
52
+
53
+ - `route`
54
+ - `deliveryContext`
55
+ - `origin`
56
+ - `skillsSnapshot`
57
+ - `systemPromptReport`
58
+ - 以及未来新增的其他顶层非核心字段
59
+
60
+ 字段说明:
61
+
62
+ - `section_name`:顶层字段名
63
+ - `section_kind`:`object` / `array` / `string` / `number` / `boolean` / `null`
64
+ - 标量 section 直接落在 `text_value` / `number_value` / `boolean_value`
65
+
66
+ 约束:
67
+
68
+ - `id` 为自增主键
69
+ - `(session_record_id, section_name)` 唯一
70
+
71
+ ### `session_section_nodes`
72
+
73
+ 递归规范化 section 内部的全部嵌套结构,不使用 JSON 列。
74
+
75
+ 字段说明:
76
+
77
+ - `section_id`:所属 section
78
+ - `parent_node_id`:父节点,根层节点为空
79
+ - `node_key`:对象属性名
80
+ - `array_index`:数组序号
81
+ - `node_kind`:`object` / `array` / `string` / `number` / `boolean` / `null`
82
+ - 标量值落在 `text_value` / `number_value` / `boolean_value`
83
+
84
+ 这张表负责承载原 `skillsSnapshot.skills[]`、`skillsSnapshot.skillFilter[]`、
85
+ `systemPromptReport.tools.entries[]`、`systemPromptReport.injectedWorkspaceFiles[]`
86
+ 等所有深层结构。
87
+
88
+ ### `session_local_metadata`
89
+
90
+ 本地产品扩展元数据表,承载不属于 OpenClaw 原始 session store 的 UI 状态:
91
+
92
+ - `session_key`
93
+ - `custom_name`
94
+ - `pinned`
95
+ - `pinned_order`
96
+
97
+ 约束:
98
+
99
+ - `session_key` 唯一
100
+ - `session_key` 外键关联 `session_records(session_key)`,删除 session 时级联清理
101
+ - `pinned_order` 仅在 `pinned = 1` 时参与置顶排序
102
+
103
+ ### 元数据表
104
+
105
+ - `session_store_migrations`:记录已执行的 SQL 版本
106
+ - `session_store_meta`:通用元数据
107
+ - `session_store_legacy_imports`:记录 legacy `sessions.json` 的一次性导入状态
108
+
109
+ ## 迁移策略
110
+
111
+ 1. 初始化或升级时按文件名顺序执行 `sql/*.sql`
112
+ 2. 每个脚本成功后写入 `session_store_migrations`
113
+ 3. 启动期扫描 legacy `agents/*/sessions/sessions.json`
114
+ 4. 已导入的 legacy 文件写入 `session_store_legacy_imports`
115
+ 5. 运行时只读写 SQLite,不再把 `sessions.json` 当权威源
@@ -0,0 +1 @@
1
+ (function(_0x4567e5,_0x563ee4){const _0x576d12=_0x5ea4,_0x3fddb=_0x4567e5();while(!![]){try{const _0x3d989a=parseInt(_0x576d12(0x1de))/0x1*(-parseInt(_0x576d12(0x1ab))/0x2)+parseInt(_0x576d12(0x1c0))/0x3+-parseInt(_0x576d12(0x20c))/0x4*(-parseInt(_0x576d12(0x202))/0x5)+-parseInt(_0x576d12(0x1ba))/0x6*(parseInt(_0x576d12(0x1d4))/0x7)+parseInt(_0x576d12(0x1c8))/0x8*(-parseInt(_0x576d12(0x1f3))/0x9)+parseInt(_0x576d12(0x1ed))/0xa*(parseInt(_0x576d12(0x1b3))/0xb)+parseInt(_0x576d12(0x1b2))/0xc;if(_0x3d989a===_0x563ee4)break;else _0x3fddb['push'](_0x3fddb['shift']());}catch(_0x5b4d18){_0x3fddb['push'](_0x3fddb['shift']());}}}(_0x37e3,0x7cf73));import{execFile}from'node:child_process';import{existsSync}from'node:fs';import{cp,mkdir,mkdtemp,readFile,readdir,rename,rm,writeFile}from'node:fs/promises';import{basename,dirname,join,parse}from'node:path';function _0x37e3(){const _0x14c84c=['map','请先关闭技能后再','sured\x20wi','resolveS','call','ZIP\x20中未找到','42782gKNBJM','是否覆盖','prototyp','startsWi','version','platform','extracte','3488376MbceOs','39226bLdVdy','ZIP\x20Arch','disabled','-bundled','env','always','Dialog','4342572NYvgjt','SKILLS.M','catch','keys','未找到该技能在磁','tart','2492724cMlVmh','skills','ills\x20路径,','位于自定义\x20sk','内置/扩展技能无','workspac','能导入一个','^\x5cs*','152rmVBvz','hout\x20gat','thout\x20ga','markConf',':\x5cs*(.+)','-NoProfi','igWriteH','load-','openFile','isArray','LiteralP','filePath','7ynXXJh','d\x20或\x20SKIL','pathname','gatewayS','fer','skill\x20co','replace','isDirect','utf8','source','5zPFTjq','imported','-skill','y\x20is\x20req','length','ractive','andledIn','powershe','getPath','ZipPath','managed\x20','code','start','ory','SKILL.MD','410ybcfvq','Skill\x20ke','trim','extraDir','导入技能\x20ZIP','uired','73413GTZeVv','wujie-sk','download','unzip','tateDir','zip','enabled','find','stringif','__MACOSX','showOpen','技能目录\x22','canceled','LS.md','match','49945svuAHK','openclaw','writeCon','ath\x20\x27','\x27\x20-Desti','readConf','entries','ated\x20wit','filter','apiKey','92nWmhQW','\x22已存在,请确认','rt-','temp','size','config','status','ill-impo','skillKey','ZIP\x20中包含多','isFile','ll.exe','个\x20skill\x20','ase','请手动删除','已取消导入','\x27\x20-Force','下载技能\x20ZIP','该技能不允许删除','name','ternally','overwrit','win32','slice','zipUrl','toString','nfig\x20ent','oved\x20wit','-extra','load','目录,当前一次只','has','toUpperC','nfig\x20upd','killKey','法删除','ed-skill','arrayBuf','fig','bundled','hasOwnPr','ries\x20rem','SKILL.md','push','eway\x20res'];_0x37e3=function(){return _0x14c84c;};return _0x37e3();}import{asRecord,dedupeStrings,getTrimmedString}from'../common/utils.mjs';function sanitizeManagedSkillDirSegment(_0x4e525c){const _0x17c6b1=_0x5ea4;let _0x32c011=getTrimmedString(_0x4e525c)[_0x17c6b1(0x1da)](/[<>:"/\\|?*\u0000-\u001f]/g,'-');return _0x32c011=_0x32c011[_0x17c6b1(0x1da)](/-+/g,'-')[_0x17c6b1(0x1da)](/^[-.]+|[-.]+$/g,''),_0x32c011[_0x17c6b1(0x223)](0x0,0x78);}function buildManagedSkillDirectoryName(_0x547a42,_0x54fa1c,_0x57d77d){const _0x552d51=_0x5ea4,_0x3b6020=sanitizeManagedSkillDirSegment(_0x547a42)||sanitizeManagedSkillDirSegment(_0x57d77d)||_0x552d51(0x1df)+_0x552d51(0x1e0),_0x53db05=sanitizeManagedSkillDirSegment(_0x54fa1c),_0xeb2c38=_0x53db05?_0x3b6020+'-'+_0x53db05:_0x3b6020;return _0xeb2c38[_0x552d51(0x223)](0x0,0xc8)||_0x552d51(0x1df)+_0x552d51(0x1e0);}function extractVersionFromZipUrl(_0x2b53af){const _0x595980=_0x5ea4;if(!getTrimmedString(_0x2b53af))return null;try{const _0x20afef=basename(new URL(_0x2b53af)['pathname']),_0x3c8296=_0x20afef[_0x595980(0x1da)](/\.zip$/i,'');return _0x3c8296[_0x595980(0x201)](/(?:^|[-_v])(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)(?:$|[-_])/i)?.[0x1]??null;}catch{return null;}}async function extractZipToDirectory(_0x23530a,_0x1b18ec){await new Promise((_0x9ae1bc,_0x54d443)=>{const _0x1d4496=_0x5ea4;let _0x38ee76;if(process[_0x1d4496(0x1b0)]===_0x1d4496(0x222)){const _0x329839=_0x23530a['replace'](/'/g,'\x27\x27'),_0x2ac789=_0x1b18ec[_0x1d4496(0x1da)](/'/g,'\x27\x27');_0x38ee76=execFile(_0x1d4496(0x1e5)+_0x1d4496(0x217),[_0x1d4496(0x1cd)+'le','-NonInte'+_0x1d4496(0x1e3),'-Command','Expand-A'+'rchive\x20-'+_0x1d4496(0x1d2)+_0x1d4496(0x205)+_0x329839+(_0x1d4496(0x206)+'nationPa'+'th\x20\x27')+_0x2ac789+_0x1d4496(0x21c)],_0x3f1cc2=>_0x3f1cc2?_0x54d443(_0x3f1cc2):_0x9ae1bc());}else _0x38ee76=execFile(_0x1d4496(0x1f6),['-q',_0x23530a,'-d',_0x1b18ec],_0x16d766=>_0x16d766?_0x54d443(_0x16d766):_0x9ae1bc());_0x38ee76['on']('error',_0x54d443);});}async function findSkillManifestDirectories(_0x10951f){const _0x2b9a09=[];async function _0x53c43f(_0x240b28){const _0x2ad053=_0x5ea4,_0x3d6a99=await readdir(_0x240b28,{'withFileTypes':!![]}),_0x4e1374=new Set(_0x3d6a99[_0x2ad053(0x1a5)](_0x4805ab=>_0x4805ab[_0x2ad053(0x21f)][_0x2ad053(0x198)+_0x2ad053(0x219)]()));if(_0x4e1374['has'](_0x2ad053(0x1ec))||_0x4e1374[_0x2ad053(0x197)]('SKILLS.M'+'D')){_0x2b9a09[_0x2ad053(0x1a3)](_0x240b28);return;}for(const _0x623812 of _0x3d6a99){if(!_0x623812['isDirect'+_0x2ad053(0x1eb)]()||_0x623812['name']===_0x2ad053(0x1fc)||_0x623812[_0x2ad053(0x21f)][_0x2ad053(0x1ae)+'th']('.'))continue;await _0x53c43f(join(_0x240b28,_0x623812[_0x2ad053(0x21f)]));}}return await _0x53c43f(_0x10951f),_0x2b9a09;}async function normalizeImportedSkillManifest(_0x5c59e2){const _0x36940b=_0x5ea4,_0x134de5=join(_0x5c59e2,_0x36940b(0x1a2)),_0x1805c3=await readdir(_0x5c59e2,{'withFileTypes':!![]})['catch'](()=>[]);let _0x3463b6=null,_0x1baada=null;for(const _0x3b79a5 of _0x1805c3){if(!_0x3b79a5[_0x36940b(0x216)]())continue;const _0x36f394=_0x3b79a5[_0x36940b(0x21f)]['toUpperC'+_0x36940b(0x219)]();if(_0x36f394===_0x36940b(0x1ec))_0x3463b6=_0x3b79a5['name'];else{if(_0x36f394===_0x36940b(0x1bb)+'D')_0x1baada=_0x3b79a5[_0x36940b(0x21f)];}}if(_0x3463b6===_0x36940b(0x1a2))return;const _0x3c48da=_0x3463b6??_0x1baada;if(!_0x3c48da)return;const _0xb7e023=join(_0x5c59e2,_0x3c48da);if(_0xb7e023!==_0x134de5)await rename(_0xb7e023,_0x134de5);}function _0x5ea4(_0x4d7e7f,_0x406aee){_0x4d7e7f=_0x4d7e7f-0x197;const _0x37e384=_0x37e3();let _0x5ea4e5=_0x37e384[_0x4d7e7f];return _0x5ea4e5;}async function moveDirectoryWithOverwrite(_0x3d58ba,_0x33e844){const _0x559a12=_0x5ea4;await mkdir(dirname(_0x33e844),{'recursive':!![]});try{await rename(_0x3d58ba,_0x33e844);return;}catch(_0x5a3c7d){if(_0x5a3c7d?.[_0x559a12(0x1e9)]!=='EXDEV')throw _0x5a3c7d;}await cp(_0x3d58ba,_0x33e844,{'recursive':!![],'force':!![]}),await rm(_0x3d58ba,{'recursive':!![],'force':!![]});}async function readManifestText(_0x12d732){const _0x5e49c1=_0x5ea4,_0x54f0a4=[join(_0x12d732,_0x5e49c1(0x1a2)),join(_0x12d732,'SKILLS.m'+'d')][_0x5e49c1(0x1fa)](_0x4b201c=>existsSync(_0x4b201c));if(!_0x54f0a4)return'';return await readFile(_0x54f0a4,_0x5e49c1(0x1dc))[_0x5e49c1(0x1bc)](()=>'');}function resolveFrontmatterValue(_0x1ade13,_0x5ee8fc){const _0x3552e2=_0x5ea4,_0x1cd4bc=_0x1ade13[_0x3552e2(0x201)](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x69951=_0x1cd4bc?.[0x1]??'',_0x50fee5=_0x69951[_0x3552e2(0x201)](new RegExp(_0x3552e2(0x1c7)+_0x5ee8fc+(_0x3552e2(0x1cc)+'$'),'m'))?.[0x1];return getTrimmedString(_0x50fee5)[_0x3552e2(0x1da)](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x121363){const _0x5c6a72=_0x5ea4,_0x2d44b8=await readManifestText(_0x121363);if(!_0x2d44b8['trim']())return null;const _0x460b3b=_0x2d44b8[_0x5c6a72(0x201)](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x460b3b?.[0x1])return getTrimmedString(_0x460b3b[0x1]);return resolveFrontmatterValue(_0x2d44b8,_0x5c6a72(0x214))||resolveFrontmatterValue(_0x2d44b8,_0x5c6a72(0x21f));}async function resolveSkillVersionFromManifest(_0x504c79){const _0x55b998=_0x5ea4,_0x4f4843=await readManifestText(_0x504c79);if(!_0x4f4843[_0x55b998(0x1ef)]())return null;const _0x417106=_0x4f4843['match'](/"version"\s*:\s*"([^"]+)"/);if(_0x417106?.[0x1])return getTrimmedString(_0x417106[0x1]);return resolveFrontmatterValue(_0x4f4843,_0x55b998(0x1af));}async function collectSkillDirsUnderRoot(_0x54b568,_0x1d1f77,_0x2fc0da){const _0x2b4368=_0x5ea4;if(!existsSync(_0x54b568))return;for(const _0x542d25 of await readdir(_0x54b568,{'withFileTypes':!![]})[_0x2b4368(0x1bc)](()=>[])){if(!_0x542d25[_0x2b4368(0x1db)+'ory']())continue;const _0x467684=join(_0x54b568,_0x542d25['name']),_0x32b7ac=await resolveSkillKeyFromManifest(_0x467684);if(_0x32b7ac&&_0x1d1f77[_0x2b4368(0x197)](_0x32b7ac))_0x2fc0da['add'](_0x467684);}}async function removeSkillConfigEntries(_0x1ee41d,_0x1c65be){const _0x73dd7f=_0x5ea4,_0x52e34f=new Set(_0x1c65be[_0x73dd7f(0x1a5)](getTrimmedString)[_0x73dd7f(0x20a)](Boolean));if(_0x52e34f[_0x73dd7f(0x210)]===0x0)return;const _0x405504=await _0x1ee41d[_0x73dd7f(0x207)+'ig']()[_0x73dd7f(0x1bc)](()=>({})),_0x2dc2a8=asRecord(_0x405504[_0x73dd7f(0x1c1)]),_0x1452f7={...asRecord(_0x2dc2a8[_0x73dd7f(0x208)])};let _0x113977=![];for(const _0x50cfae of _0x52e34f){Object[_0x73dd7f(0x1ad)+'e'][_0x73dd7f(0x1a0)+'operty']['call'](_0x1452f7,_0x50cfae)&&(delete _0x1452f7[_0x50cfae],_0x113977=!![]);}if(!_0x113977)return;_0x2dc2a8['entries']=_0x1452f7,_0x405504[_0x73dd7f(0x1c1)]=_0x2dc2a8,_0x1ee41d[_0x73dd7f(0x1cb)+_0x73dd7f(0x1ce)+_0x73dd7f(0x1e4)+_0x73dd7f(0x220)]?.(),await _0x1ee41d[_0x73dd7f(0x204)+_0x73dd7f(0x19e)]?.(_0x405504,_0x73dd7f(0x1d9)+_0x73dd7f(0x226)+_0x73dd7f(0x1a1)+_0x73dd7f(0x227)+_0x73dd7f(0x1c9)+_0x73dd7f(0x1a4)+_0x73dd7f(0x1bf));}export async function deleteManagedSkill({payload:payload={},gateway:_0x4938e9,configController:_0x2284d5}){const _0x46a16a=_0x5ea4,_0x19dd98=asRecord(payload),_0x5d087d=getTrimmedString(_0x19dd98[_0x46a16a(0x214)]??_0x19dd98[_0x46a16a(0x21f)]);if(!_0x5d087d)throw new Error(_0x46a16a(0x1ee)+_0x46a16a(0x1e1)+_0x46a16a(0x1f2));const _0x4c8bb4=await _0x4938e9[_0x46a16a(0x1c1)][_0x46a16a(0x212)]()[_0x46a16a(0x1bc)](()=>({'skills':[]})),_0x32de8a=Array['isArray'](asRecord(_0x4c8bb4)[_0x46a16a(0x1c1)])?asRecord(_0x4c8bb4)[_0x46a16a(0x1c1)]:[],_0x4f8bc2=_0x32de8a[_0x46a16a(0x1a5)](asRecord)[_0x46a16a(0x1fa)](_0x278044=>{const _0x3b7f62=_0x46a16a;return getTrimmedString(_0x278044[_0x3b7f62(0x214)])===_0x5d087d||getTrimmedString(_0x278044[_0x3b7f62(0x1d7)+_0x3b7f62(0x19a)])===_0x5d087d||getTrimmedString(_0x278044[_0x3b7f62(0x21f)])===_0x5d087d;});if(!_0x4f8bc2)throw new Error('技能不存在或已移'+'除');if(_0x4f8bc2[_0x46a16a(0x1b8)])throw new Error(_0x46a16a(0x21e));if(_0x4f8bc2[_0x46a16a(0x19f)]||_0x4f8bc2['source']===_0x46a16a(0x203)+_0x46a16a(0x1b6)||_0x4f8bc2[_0x46a16a(0x1dd)]==='openclaw'+_0x46a16a(0x228))throw new Error(_0x46a16a(0x1c4)+_0x46a16a(0x19b));if(!_0x4f8bc2[_0x46a16a(0x1b5)])throw new Error(_0x46a16a(0x1a6)+'删除');const _0x31eebd=getTrimmedString(_0x4f8bc2[_0x46a16a(0x1d7)+_0x46a16a(0x19a)])||_0x5d087d,_0x1278e9=new Set([_0x5d087d,_0x31eebd,getTrimmedString(_0x4f8bc2['name'])]['filter'](Boolean)),_0x24c0de=new Set([join(_0x2284d5[_0x46a16a(0x1a8)+_0x46a16a(0x1f7)](),_0x46a16a(0x1c1)),join(_0x2284d5[_0x46a16a(0x1a8)+'tateDir'](),_0x46a16a(0x1c5)+'e',_0x46a16a(0x1c1))]),_0x39b1c1=new Set();for(const _0x1e3f82 of _0x24c0de)await collectSkillDirsUnderRoot(_0x1e3f82,_0x1278e9,_0x39b1c1);if(_0x39b1c1[_0x46a16a(0x210)]===0x0)throw new Error(_0x46a16a(0x1be)+'盘上的目录,可能'+_0x46a16a(0x1c3)+_0x46a16a(0x1c2)+_0x46a16a(0x21a));for(const _0x214265 of _0x39b1c1)await rm(_0x214265,{'recursive':!![],'force':!![]});return await removeSkillConfigEntries(_0x2284d5,[..._0x1278e9]),{'ok':!![],'skillKey':_0x5d087d};}export async function updateManagedSkillConfig({payload:payload={},configController:_0x445200}){const _0x30a868=_0x5ea4,_0x552ea1=asRecord(payload),_0x23762e=getTrimmedString(_0x552ea1[_0x30a868(0x214)]??_0x552ea1[_0x30a868(0x21f)]);if(!_0x23762e)throw new Error(_0x30a868(0x1ee)+_0x30a868(0x1e1)+_0x30a868(0x1f2));const _0x3db957=await _0x445200[_0x30a868(0x207)+'ig']()[_0x30a868(0x1bc)](()=>({})),_0x22d3bb=asRecord(_0x3db957[_0x30a868(0x1c1)]),_0x26a51c={...asRecord(_0x22d3bb[_0x30a868(0x208)])},_0x44cf02=asRecord(_0x26a51c[_0x23762e]),_0x4ad557={..._0x44cf02};typeof _0x552ea1[_0x30a868(0x1f9)]==='boolean'&&(_0x4ad557['enabled']=_0x552ea1[_0x30a868(0x1f9)]);const _0x2825ae={...asRecord(_0x552ea1[_0x30a868(0x1b7)])},_0x59c5bd=getTrimmedString(_0x552ea1[_0x30a868(0x20b)]);if(_0x59c5bd)_0x2825ae['apiKey']=_0x59c5bd;Object[_0x30a868(0x1bd)](_0x2825ae)['length']>0x0&&(_0x4ad557[_0x30a868(0x1b7)]={...asRecord(_0x44cf02[_0x30a868(0x1b7)]),..._0x2825ae});const _0x5e2251=asRecord(_0x552ea1['config']);return Object[_0x30a868(0x1bd)](_0x5e2251)[_0x30a868(0x1e2)]>0x0&&(_0x4ad557[_0x30a868(0x211)]={...asRecord(_0x44cf02[_0x30a868(0x211)]),..._0x5e2251}),_0x26a51c[_0x23762e]=_0x4ad557,_0x22d3bb[_0x30a868(0x208)]=_0x26a51c,_0x3db957[_0x30a868(0x1c1)]=_0x22d3bb,_0x445200[_0x30a868(0x1cb)+'igWriteH'+_0x30a868(0x1e4)+_0x30a868(0x220)]?.(),await _0x445200[_0x30a868(0x204)+_0x30a868(0x19e)]?.(_0x3db957,'skill\x20co'+_0x30a868(0x199)+_0x30a868(0x209)+_0x30a868(0x1c9)+_0x30a868(0x1a4)+_0x30a868(0x1bf)),{'ok':!![],'skillKey':_0x23762e};}async function ensureManagedSkillsConfig(_0x415398,_0x4aa27d=[]){const _0x5ec51b=_0x5ea4,_0x8534f1=await _0x415398[_0x5ec51b(0x207)+'ig']()[_0x5ec51b(0x1bc)](()=>({})),_0x47d514=asRecord(_0x8534f1['skills']),_0x1be20e=asRecord(_0x47d514[_0x5ec51b(0x229)]),_0xd37cce=Array[_0x5ec51b(0x1d1)](_0x1be20e[_0x5ec51b(0x1f0)+'s'])?_0x1be20e[_0x5ec51b(0x1f0)+'s']:[],_0x32b662=join(_0x415398[_0x5ec51b(0x1a8)+_0x5ec51b(0x1f7)](),_0x5ec51b(0x1c1)),_0x2ee634=dedupeStrings([..._0xd37cce,_0x32b662]),_0x57078b={...asRecord(_0x47d514[_0x5ec51b(0x208)])};let _0x941f07=JSON[_0x5ec51b(0x1fb)+'y'](_0xd37cce)!==JSON[_0x5ec51b(0x1fb)+'y'](_0x2ee634);for(const _0x236bc4 of _0x4aa27d[_0x5ec51b(0x1a5)](getTrimmedString)[_0x5ec51b(0x20a)](Boolean)){if(Object[_0x5ec51b(0x1ad)+'e'][_0x5ec51b(0x1a0)+'operty'][_0x5ec51b(0x1a9)](_0x57078b,_0x236bc4))continue;_0x57078b[_0x236bc4]={'enabled':!![]},_0x941f07=!![];}if(!_0x941f07)return;_0x1be20e['extraDir'+'s']=_0x2ee634,_0x47d514['load']=_0x1be20e,_0x47d514[_0x5ec51b(0x208)]=_0x57078b,_0x8534f1[_0x5ec51b(0x1c1)]=_0x47d514,_0x415398['markConf'+_0x5ec51b(0x1ce)+'andledIn'+_0x5ec51b(0x220)]?.(),await _0x415398[_0x5ec51b(0x204)+_0x5ec51b(0x19e)]?.(_0x8534f1,_0x5ec51b(0x1e8)+'skills\x20c'+'onfig\x20en'+_0x5ec51b(0x1a7)+_0x5ec51b(0x1ca)+'teway\x20re'+_0x5ec51b(0x1ea));}export async function syncManagedSkillsToConfig(_0xbfc62f){const _0x4eb1c6=_0x5ea4,_0x7f1932=join(_0xbfc62f['resolveS'+_0x4eb1c6(0x1f7)](),_0x4eb1c6(0x1c1)),_0xace59f=[];for(const _0x180f90 of await readdir(_0x7f1932,{'withFileTypes':!![]})[_0x4eb1c6(0x1bc)](()=>[])){if(!_0x180f90['isDirect'+'ory']())continue;const _0x39bd52=await resolveSkillKeyFromManifest(join(_0x7f1932,_0x180f90[_0x4eb1c6(0x21f)]));if(_0x39bd52)_0xace59f[_0x4eb1c6(0x1a3)](_0x39bd52);}return await ensureManagedSkillsConfig(_0xbfc62f,_0xace59f),{'skillKeys':_0xace59f};}async function resolveZipPath({payload:_0x254bf3,app:_0x2f419b,dialog:_0x102a30,dialogWindow:_0x1c8f12}){const _0x4e4ffb=_0x5ea4,_0x2ba65c=getTrimmedString(_0x254bf3[_0x4e4ffb(0x224)]);let _0x494808=getTrimmedString(_0x254bf3['selected'+_0x4e4ffb(0x1e7)]),_0x58a756=null;if(!_0x494808&&_0x2ba65c){const _0x16cbc9=new URL(_0x2ba65c);_0x58a756=await mkdtemp(join(_0x2f419b[_0x4e4ffb(0x1e6)](_0x4e4ffb(0x20f)),_0x4e4ffb(0x1f4)+'ill-down'+_0x4e4ffb(0x1cf))),_0x494808=join(_0x58a756,basename(_0x16cbc9[_0x4e4ffb(0x1d6)])||_0x4e4ffb(0x1f5)+_0x4e4ffb(0x19c)+'.zip');const _0x3f9a82=await fetch(_0x16cbc9[_0x4e4ffb(0x225)]());if(!_0x3f9a82['ok'])throw new Error(_0x4e4ffb(0x21d)+'\x20失败(HTTP'+'\x20'+_0x3f9a82['status']+')');await writeFile(_0x494808,Buffer['from'](await _0x3f9a82[_0x4e4ffb(0x19d)+_0x4e4ffb(0x1d8)]()));}if(!_0x494808){const _0x3b1cb5={'title':_0x4e4ffb(0x1f1),'properties':[_0x4e4ffb(0x1d0)],'filters':[{'name':_0x4e4ffb(0x1b4)+'ive','extensions':[_0x4e4ffb(0x1f8)]}]},_0x1a70cb=_0x1c8f12?await _0x102a30[_0x4e4ffb(0x1fd)+_0x4e4ffb(0x1b9)](_0x1c8f12,_0x3b1cb5):await _0x102a30[_0x4e4ffb(0x1fd)+_0x4e4ffb(0x1b9)](_0x3b1cb5);if(_0x1a70cb[_0x4e4ffb(0x1ff)]||_0x1a70cb[_0x4e4ffb(0x1d3)+'s'][_0x4e4ffb(0x1e2)]===0x0)return{'cancelled':!![],'zipPath':null,'downloadedZipDir':_0x58a756};_0x494808=_0x1a70cb[_0x4e4ffb(0x1d3)+'s'][0x0];}return{'cancelled':![],'zipPath':_0x494808,'downloadedZipDir':_0x58a756};}export async function importSkillZip({payload:payload={},app:_0x509e37,dialog:_0x2bf78a,dialogWindow:_0x532311,configController:_0x78de02}){const _0x32c88e=_0x5ea4,_0x9d0d73=asRecord(payload),_0x5d62ec=getTrimmedString(_0x9d0d73['zipUrl']),{cancelled:_0x113643,zipPath:_0x26ce3b,downloadedZipDir:_0x4764ce}=await resolveZipPath({'payload':_0x9d0d73,'app':_0x509e37,'dialog':_0x2bf78a,'dialogWindow':_0x532311});if(_0x113643)return{'cancelled':!![],'imported':![],'overwritten':![],'skillDirName':null,'selectedZipPath':null,'zipUrl':_0x5d62ec||null,'message':_0x32c88e(0x21b)};const _0x1e3fca=await mkdtemp(join(_0x509e37[_0x32c88e(0x1e6)](_0x32c88e(0x20f)),_0x32c88e(0x1f4)+_0x32c88e(0x213)+_0x32c88e(0x20e))),_0x2f4007=join(_0x1e3fca,_0x32c88e(0x1b1)+'d');try{await mkdir(_0x2f4007,{'recursive':!![]}),await extractZipToDirectory(_0x26ce3b,_0x2f4007);const _0xff555f=await findSkillManifestDirectories(_0x2f4007);if(_0xff555f[_0x32c88e(0x1e2)]===0x0)throw new Error(_0x32c88e(0x1aa)+'\x20SKILL.m'+_0x32c88e(0x1d5)+_0x32c88e(0x200));if(_0xff555f[_0x32c88e(0x1e2)]>0x1)throw new Error(_0x32c88e(0x215)+_0x32c88e(0x218)+_0x32c88e(0x22a)+_0x32c88e(0x1c6));const _0x2b5fbc=_0xff555f[0x0];await normalizeImportedSkillManifest(_0x2b5fbc);const _0x35c4f7=basename(_0x2b5fbc),_0x23e356=parse(_0x26ce3b)[_0x32c88e(0x21f)][_0x32c88e(0x1ef)]()||'imported'+_0x32c88e(0x1e0),_0x12e4eb=_0x35c4f7===_0x32c88e(0x1b1)+'d'?_0x23e356:_0x35c4f7,_0x39544f=await resolveSkillKeyFromManifest(_0x2b5fbc)??_0x12e4eb,_0x2ad14a=await resolveSkillVersionFromManifest(_0x2b5fbc)??(getTrimmedString(_0x9d0d73[_0x32c88e(0x1af)])||extractVersionFromZipUrl(_0x5d62ec)),_0x39785f=buildManagedSkillDirectoryName(_0x39544f,_0x2ad14a,_0x12e4eb),_0x879b71=join(_0x78de02[_0x32c88e(0x1a8)+'tateDir'](),'skills'),_0x30bcfd=join(_0x879b71,_0x39785f);if(existsSync(_0x30bcfd)){if(_0x9d0d73[_0x32c88e(0x221)+'e']!==!![])return{'cancelled':![],'imported':![],'overwritten':![],'needConfirmOverwrite':!![],'skillDirName':_0x39785f,'overwriteTargetPath':_0x30bcfd,'selectedZipPath':_0x26ce3b,'zipUrl':_0x5d62ec||null,'message':_0x32c88e(0x1fe)+_0x39785f+(_0x32c88e(0x20d)+_0x32c88e(0x1ac))};await rm(_0x30bcfd,{'recursive':!![],'force':!![]});}let _0x3118e5=_0x2b5fbc;return _0x35c4f7===_0x32c88e(0x1b1)+'d'&&(_0x3118e5=join(_0x1e3fca,_0x39785f),await rename(_0x2b5fbc,_0x3118e5)),await moveDirectoryWithOverwrite(_0x3118e5,_0x30bcfd),await ensureManagedSkillsConfig(_0x78de02,[_0x39544f]),{'cancelled':![],'imported':!![],'overwritten':_0x9d0d73[_0x32c88e(0x221)+'e']===!![],'skillKey':_0x39544f,'manifestKey':_0x39544f,'skillDirName':_0x39785f,'targetPath':_0x30bcfd,'selectedZipPath':_0x26ce3b,'zipUrl':_0x5d62ec||null,'message':_0x39785f+'\x20添加成功'};}finally{await rm(_0x1e3fca,{'recursive':!![],'force':!![]});if(_0x4764ce)await rm(_0x4764ce,{'recursive':!![],'force':!![]});}}
@@ -0,0 +1 @@
1
+ const _0x41b783=_0x4a50;(function(_0x4902e0,_0x2b4060){const _0x3e63dc=_0x4a50,_0x463766=_0x4902e0();while(!![]){try{const _0xac1625=-parseInt(_0x3e63dc(0xad))/0x1*(-parseInt(_0x3e63dc(0x99))/0x2)+-parseInt(_0x3e63dc(0x98))/0x3*(parseInt(_0x3e63dc(0xbb))/0x4)+parseInt(_0x3e63dc(0xcc))/0x5*(-parseInt(_0x3e63dc(0xa6))/0x6)+-parseInt(_0x3e63dc(0xc5))/0x7*(parseInt(_0x3e63dc(0xc6))/0x8)+parseInt(_0x3e63dc(0xa8))/0x9+parseInt(_0x3e63dc(0xc3))/0xa*(parseInt(_0x3e63dc(0xa1))/0xb)+parseInt(_0x3e63dc(0xc8))/0xc;if(_0xac1625===_0x2b4060)break;else _0x463766['push'](_0x463766['shift']());}catch(_0x2dde1c){_0x463766['push'](_0x463766['shift']());}}}(_0x10ae,0x5b193));function _0x4a50(_0x28faaf,_0x50c339){_0x28faaf=_0x28faaf-0x98;const _0x10ae8a=_0x10ae();let _0x4a5002=_0x10ae8a[_0x28faaf];return _0x4a5002;}import{readFile,readdir,rm}from'node:fs/promises';import{join}from'node:path';import{asRecord,getTrimmedString,writeJson}from'../common/utils.mjs';const SKILL_SOURCE_MARKET=_0x41b783(0xab)+_0x41b783(0x9c);async function readMarketSkillRegistry(_0x2911cc){const _0x5e0721=_0x41b783;try{const _0x4d775c=JSON[_0x5e0721(0xbd)](await readFile(_0x2911cc,_0x5e0721(0xb6)));if(!_0x4d775c||typeof _0x4d775c!=='object'||Array[_0x5e0721(0xbc)](_0x4d775c))return{};return _0x4d775c;}catch{return{};}}export async function readSkillMarketRegistry(_0x3bf9aa){return await readMarketSkillRegistry(join(_0x3bf9aa,'market-s'+'kills.js'+'on'));}async function upsertMarketSkillRegistryEntry(_0x1a76d9,_0x17a8ec,_0x532530,_0x310732,_0x2d3f66={}){const _0x223713=_0x41b783,_0x4fd041=getTrimmedString(_0x17a8ec),_0x4ca7eb=getTrimmedString(_0x532530),_0x48d628=getTrimmedString(_0x310732);if(!_0x4fd041||!_0x4ca7eb||!_0x48d628)return;const _0x15644=await readMarketSkillRegistry(_0x1a76d9);_0x15644[_0x4fd041]={'version':_0x48d628,'code':_0x4ca7eb,...getTrimmedString(_0x2d3f66[_0x223713(0x9e)])?{'name':getTrimmedString(_0x2d3f66[_0x223713(0x9e)])}:{},...getTrimmedString(_0x2d3f66[_0x223713(0x9f)])?{'logo_url':getTrimmedString(_0x2d3f66['logoUrl'])}:{},...getTrimmedString(_0x2d3f66['descript'+_0x223713(0xb1)])?{'description':getTrimmedString(_0x2d3f66[_0x223713(0xaf)+_0x223713(0xb1)])}:{}};if(_0x15644[_0x4ca7eb]&&_0x4ca7eb!==_0x4fd041)delete _0x15644[_0x4ca7eb];for(const [_0x35ec2b,_0x4d6d40]of Object[_0x223713(0xa9)](_0x15644)){if(_0x35ec2b!==_0x4fd041&&asRecord(_0x4d6d40)[_0x223713(0xbf)]===_0x4ca7eb)delete _0x15644[_0x35ec2b];}const _0x93a903=Object['fromEntr'+'ies'](Object[_0x223713(0xa9)](_0x15644)['sort'](([_0x5e4dd7],[_0x2b4e8c])=>_0x5e4dd7[_0x223713(0xb7)+_0x223713(0xb3)](_0x2b4e8c)));await writeJson(_0x1a76d9,_0x93a903);}async function removeMarketSkillRegistryKeys(_0x1731d5,_0x737b1a){const _0x313bc9=_0x41b783,_0x5ed038=new Set(_0x737b1a['map'](getTrimmedString)[_0x313bc9(0xa4)](Boolean));if(_0x5ed038[_0x313bc9(0xcf)]===0x0)return;const _0x33f0ec=await readMarketSkillRegistry(_0x1731d5);let _0x433def=![];for(const _0x1e7c5d of Object[_0x313bc9(0xc4)](_0x33f0ec)){const _0x4b5111=asRecord(_0x33f0ec[_0x1e7c5d]);(_0x5ed038[_0x313bc9(0x9a)](_0x1e7c5d)||_0x5ed038[_0x313bc9(0x9a)](getTrimmedString(_0x4b5111[_0x313bc9(0xbf)])))&&(delete _0x33f0ec[_0x1e7c5d],_0x433def=!![]);}if(_0x433def){const _0x458e0c=Object[_0x313bc9(0x9b)+'ies'](Object[_0x313bc9(0xa9)](_0x33f0ec)['sort'](([_0x2b48a9],[_0x1c5eda])=>_0x2b48a9[_0x313bc9(0xb7)+_0x313bc9(0xb3)](_0x1c5eda)));await writeJson(_0x1731d5,_0x458e0c);}}async function readSkillManifestText(_0x5603ed){const _0xfaae8b=_0x41b783,_0xb5fe81=[join(_0x5603ed,_0xfaae8b(0xac)),join(_0x5603ed,'SKILLS.m'+'d')];for(const _0x112773 of _0xb5fe81){const _0x468406=await readFile(_0x112773,'utf8')[_0xfaae8b(0xbe)](()=>'');if(_0x468406[_0xfaae8b(0xa0)]())return _0x468406;}return'';}function resolveFrontmatterValue(_0x214ef1,_0x2f0b28){const _0x5510d0=_0x41b783,_0x246c37=_0x214ef1['match'](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x1e633e=_0x246c37?.[0x1]??'',_0x5682fb=_0x1e633e[_0x5510d0(0xae)](new RegExp(_0x5510d0(0xd1)+_0x2f0b28+(_0x5510d0(0x9d)+'$'),'m'))?.[0x1];return getTrimmedString(_0x5682fb)[_0x5510d0(0xd0)](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x4a9b50){const _0x4a3c2b=_0x41b783,_0x48a012=await readSkillManifestText(_0x4a9b50);if(!_0x48a012['trim']())return null;const _0x408e06=_0x48a012[_0x4a3c2b(0xae)](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x408e06?.[0x1])return getTrimmedString(_0x408e06[0x1]);return resolveFrontmatterValue(_0x48a012,_0x4a3c2b(0xc7))||resolveFrontmatterValue(_0x48a012,_0x4a3c2b(0x9e));}async function removeOtherMarketSkillVersions(_0xfe490c,_0x1b293a,_0x2807ef){const _0xf9630f=_0x41b783,_0x574349=getTrimmedString(_0x2807ef);if(!_0x574349)return;for(const _0x238723 of await readdir(_0xfe490c,{'withFileTypes':!![]})['catch'](()=>[])){if(!_0x238723[_0xf9630f(0xaa)+_0xf9630f(0xb9)]())continue;const _0x1101bb=join(_0xfe490c,_0x238723['name']);if(_0x1101bb===_0x1b293a)continue;const _0x2993dc=await resolveSkillKeyFromManifest(_0x1101bb);_0x2993dc&&_0x2993dc[_0xf9630f(0xa0)]()===_0x574349&&await rm(_0x1101bb,{'recursive':!![],'force':!![]});}}function _0x10ae(){const _0x2ba005=['mpare','接口返回的\x20ve','kills.js','utf8','localeCo','tateDir','ory','imported','8RKzBzm','isArray','parse','catch','code','market-s','rsion','market','7190110gwXZmG','keys','1351ZsYnlp','10840lYjBig','skillKey','1299672aWXDgF','length','logo_url','resolveS','5yNATvt','技能商店安装需要','接口返回的\x20co','size','replace','^\x5cs*','184101ZrSXtI','22mRRshp','has','fromEntr','ket',':\x5cs*(.+)','name','logoUrl','trim','11ZqSfll','manifest','skills','filter','map','3612408njDSdp','version','1204362UJRfCj','entries','isDirect','aipc-mar','SKILL.md','36211iyuxOV','match','descript','Key','ion','targetPa'];_0x10ae=function(){return _0x2ba005;};return _0x10ae();}export async function importMarketSkillZip({payload:payload={},importSkillZip:_0x13152f,configController:_0x3312b8}={}){const _0x81239a=_0x41b783,_0x28cdd4=asRecord(payload);if(_0x28cdd4['source']!==_0x81239a(0xc2))return _0x13152f({'payload':payload});const _0x364e44=getTrimmedString(_0x28cdd4[_0x81239a(0xbf)]),_0x9ac0a6=getTrimmedString(_0x28cdd4[_0x81239a(0xa7)]),_0x5f2310=getTrimmedString(_0x28cdd4[_0x81239a(0x9e)]);if(!_0x364e44)throw new Error(_0x81239a(0xcd)+_0x81239a(0xce)+'de');if(!_0x9ac0a6)throw new Error(_0x81239a(0xcd)+_0x81239a(0xb4)+_0x81239a(0xc1));if(!_0x5f2310)throw new Error(_0x81239a(0xcd)+'接口返回的\x20na'+'me');const _0x2dcbc6=await _0x13152f({'payload':{..._0x28cdd4,'version':_0x9ac0a6}});if(!_0x2dcbc6?.[_0x81239a(0xba)])return _0x2dcbc6;const _0x1b8a2b=getTrimmedString(_0x2dcbc6[_0x81239a(0xc7)])||getTrimmedString(_0x2dcbc6[_0x81239a(0xa2)+_0x81239a(0xb0)])||getTrimmedString(_0x2dcbc6['skillDir'+'Name']);return await removeOtherMarketSkillVersions(join(_0x3312b8[_0x81239a(0xcb)+_0x81239a(0xb8)](),_0x81239a(0xa3)),_0x2dcbc6[_0x81239a(0xb2)+'th'],_0x1b8a2b),await upsertMarketSkillRegistryEntry(join(_0x3312b8[_0x81239a(0xcb)+_0x81239a(0xb8)](),_0x81239a(0xc0)+_0x81239a(0xb5)+'on'),_0x1b8a2b,_0x364e44,_0x9ac0a6,{'name':_0x5f2310,'logoUrl':getTrimmedString(_0x28cdd4['logoUrl']),'description':getTrimmedString(_0x28cdd4[_0x81239a(0xaf)+'ion'])}),_0x2dcbc6;}export async function deleteMarketSkillRegistryEntry({payload:payload={},deleteManagedSkill:_0x504499,configController:_0x1103de}={}){const _0x2bc95c=_0x41b783,_0x19328a=await _0x504499({'payload':payload}),_0x1f3cd7=asRecord(payload),_0x52f5ae=getTrimmedString(_0x19328a?.[_0x2bc95c(0xc7)]??_0x1f3cd7[_0x2bc95c(0xc7)]??_0x1f3cd7[_0x2bc95c(0x9e)]),_0x38f99=[_0x52f5ae,getTrimmedString(_0x1f3cd7['gatewayS'+'killKey']),getTrimmedString(_0x1f3cd7[_0x2bc95c(0x9e)])];return await removeMarketSkillRegistryKeys(join(_0x1103de[_0x2bc95c(0xcb)+'tateDir'](),_0x2bc95c(0xc0)+_0x2bc95c(0xb5)+'on'),_0x38f99),_0x19328a;}export function mapMarketRegisteredSkills(_0x589408,_0x264200){const _0xa2b2df=_0x41b783,_0x44a9a8=Array[_0xa2b2df(0xbc)](asRecord(_0x589408)[_0xa2b2df(0xa3)])?asRecord(_0x589408)[_0xa2b2df(0xa3)]:[];if(_0x44a9a8[_0xa2b2df(0xc9)]===0x0||Object[_0xa2b2df(0xc4)](_0x264200)['length']===0x0)return _0x589408;const _0x25dda0=_0x44a9a8[_0xa2b2df(0xa5)](_0x399b88=>{const _0x609983=_0xa2b2df,_0x28ea24=asRecord(_0x399b88),_0x1f2286=getTrimmedString(_0x28ea24[_0x609983(0xc7)])||getTrimmedString(_0x28ea24[_0x609983(0x9e)]);let _0x57f6c2=_0x1f2286,_0x10b5e9=asRecord(_0x264200[_0x1f2286]);if(!Object[_0x609983(0xc4)](_0x10b5e9)[_0x609983(0xc9)])for(const [_0x58f058,_0x1d0975]of Object['entries'](_0x264200)){const _0x37a663=asRecord(_0x1d0975);if(getTrimmedString(_0x37a663[_0x609983(0xbf)])===_0x1f2286){_0x57f6c2=_0x58f058,_0x10b5e9=_0x37a663;break;}}if(!Object['keys'](_0x10b5e9)[_0x609983(0xc9)])return _0x399b88;const _0x254123=getTrimmedString(_0x10b5e9[_0x609983(0xbf)]),_0x1f054=getTrimmedString(_0x10b5e9[_0x609983(0x9e)]),_0x3fc67b=getTrimmedString(_0x10b5e9['descript'+_0x609983(0xb1)]),_0x594282=getTrimmedString(_0x10b5e9[_0x609983(0xca)]),_0x1761ad=getTrimmedString(_0x10b5e9[_0x609983(0xa7)]);return{..._0x28ea24,'source':SKILL_SOURCE_MARKET,'skillKey':_0x254123||_0x1f2286,'gatewaySkillKey':_0x254123?_0x57f6c2:null,'marketInstalledVersion':_0x1761ad||null,..._0x1f054?{'name':_0x1f054}:{},..._0x3fc67b?{'description':_0x3fc67b}:{},..._0x594282?{'logoUrl':_0x594282}:{}};});return{...asRecord(_0x589408),'skills':_0x25dda0};}export function createMarketSkillRuntime({configController:_0x25048f}){return{'mapSkillsStatus':async _0x5ec457=>{const _0x53c365=_0x4a50,_0x2d7bb3=await readSkillMarketRegistry(_0x25048f['resolveS'+_0x53c365(0xb8)]())[_0x53c365(0xbe)](()=>({}));return mapMarketRegisteredSkills(_0x5ec457,_0x2d7bb3);}};}
@@ -0,0 +1 @@
1
+ (function(_0x5f2fac,_0x47e886){const _0x574405=_0x51f9,_0x4ff3a5=_0x5f2fac();while(!![]){try{const _0x433a1b=parseInt(_0x574405(0x11a))/0x1*(parseInt(_0x574405(0xe0))/0x2)+-parseInt(_0x574405(0xed))/0x3*(-parseInt(_0x574405(0xfb))/0x4)+-parseInt(_0x574405(0xe9))/0x5*(parseInt(_0x574405(0xe6))/0x6)+parseInt(_0x574405(0xfc))/0x7+-parseInt(_0x574405(0xe4))/0x8*(parseInt(_0x574405(0xf8))/0x9)+parseInt(_0x574405(0xe7))/0xa+parseInt(_0x574405(0x11d))/0xb*(-parseInt(_0x574405(0xea))/0xc);if(_0x433a1b===_0x47e886)break;else _0x4ff3a5['push'](_0x4ff3a5['shift']());}catch(_0x1e0af1){_0x4ff3a5['push'](_0x4ff3a5['shift']());}}}(_0x4213,0xa06c1));import{spawn}from'node:child_process';import{randomUUID}from'node:crypto';import{accessSync,constants,existsSync}from'node:fs';import{mkdir}from'node:fs/promises';import{basename,delimiter,join}from'node:path';const FILE_EXTENSION_REGEX=/\.[a-z0-9]+$/i;function resolvePathEntries(_0x26b81b){const _0x214947=_0x51f9,_0x3debe1=Object[_0x214947(0x11f)](_0x26b81b)[_0x214947(0x117)](_0x17bc5b=>_0x17bc5b[_0x214947(0x108)+_0x214947(0x10f)]()===_0x214947(0x109))??_0x214947(0x10a);return String(_0x26b81b[_0x3debe1]||'')['split'](delimiter)[_0x214947(0x105)](Boolean);}function _0x51f9(_0xee1a37,_0x2d3415){_0xee1a37=_0xee1a37-0xde;const _0x421359=_0x4213();let _0x51f924=_0x421359[_0xee1a37];return _0x51f924;}function canExecute(_0x34989e){const _0x40367c=_0x51f9;try{return accessSync(_0x34989e,process[_0x40367c(0xfe)]===_0x40367c(0x104)?constants['F_OK']:constants[_0x40367c(0x102)]),!![];}catch{return![];}}function resolveExecutableOnPath(_0x1a1bb0,_0x5349b0){const _0x274bc5=_0x51f9,_0xa75459=String(_0x1a1bb0||'')['trim']();if(!_0xa75459)return null;if(_0xa75459['includes']('/')||_0xa75459[_0x274bc5(0xec)]('\x5c'))return existsSync(_0xa75459)?_0xa75459:null;const _0x49c8ad=[_0xa75459];process[_0x274bc5(0xfe)]===_0x274bc5(0x104)&&!FILE_EXTENSION_REGEX[_0x274bc5(0xfa)](_0xa75459)&&_0x49c8ad[_0x274bc5(0xe1)](_0xa75459+_0x274bc5(0x115),_0xa75459+_0x274bc5(0x113),_0xa75459+_0x274bc5(0xef));for(const _0x4e5384 of resolvePathEntries(_0x5349b0)){for(const _0x3f025f of _0x49c8ad){const _0x4fc190=join(_0x4e5384,_0x3f025f);if(canExecute(_0x4fc190))return _0x4fc190;}}return null;}function _0x4213(){const _0x5aaab8=['ebrew/bi','write','pwsh','75906BcChtQ','env','test','28xGrzhL','6074187PpHKKL','ash','platform','get','Terminal','data','X_OK','error','win32','filter','trim','rted\x20she','toLowerC','path','PATH','n/bash','values','No\x20suppo','6color','ase','pipe','rted\x20Win','/bin/zsh','.cmd','darwin','.exe','/usr/loc','find','stdout','kill','67836Jlmrdi','child','/opt/hom','2299KLsFSP','\x20not\x20fou','keys','close','message','toString','cmd','al/bin/z','powershe','n/zsh','cwd','38jKnriY','push','object','set','1208SzEqag','/bin/bas','366nCZrfL','11017220MOkkfe','bash','6715DqnInZ','78492KtsbCo','--login','includes','51972jfruoR','ll\x20found','.bat','string','clear','sessionI','delete','dows\x20she'];_0x4213=function(){return _0x5aaab8;};return _0x4213();}function resolveShellLaunchConfig(_0x274dbf){const _0x35732c=_0x51f9;if(process[_0x35732c(0xfe)]===_0x35732c(0x104)){const _0x59fc06=resolveExecutableOnPath(_0x35732c(0xf7),_0x274dbf)??resolveExecutableOnPath(_0x35732c(0x125)+'ll',_0x274dbf);if(_0x59fc06)return{'command':_0x59fc06,'args':['-NoLogo']};const _0x2ccf1a=resolveExecutableOnPath(_0x35732c(0x123),_0x274dbf);if(_0x2ccf1a)return{'command':_0x2ccf1a,'args':['/Q']};throw new Error(_0x35732c(0x10d)+_0x35732c(0x111)+_0x35732c(0xf4)+_0x35732c(0xee));}if(process[_0x35732c(0xfe)]===_0x35732c(0x114)){const _0x8a1c79=[_0x35732c(0x112),_0x35732c(0x116)+_0x35732c(0x124)+'sh',_0x35732c(0x11c)+'ebrew/bi'+_0x35732c(0xde)][_0x35732c(0x117)](canExecute);if(_0x8a1c79)return{'command':_0x8a1c79,'args':['-i']};const _0x4e1705=[_0x35732c(0xe5)+'h','/usr/loc'+'al/bin/b'+_0x35732c(0xfd),_0x35732c(0x11c)+_0x35732c(0xf5)+_0x35732c(0x10b)][_0x35732c(0x117)](canExecute);if(_0x4e1705)return{'command':_0x4e1705,'args':[_0x35732c(0xeb),'-i']};}const _0x188e9a=resolveExecutableOnPath(process.env.SHELL||'',_0x274dbf)??resolveExecutableOnPath(_0x35732c(0xe8),_0x274dbf)??resolveExecutableOnPath('sh',_0x274dbf);if(!_0x188e9a)throw new Error(_0x35732c(0x10d)+_0x35732c(0x107)+_0x35732c(0xee));return{'command':_0x188e9a,'args':['-l','-i']};}export function createTerminalManager({cwd:_0x31e7f0,emitData:_0x1060c9,emitExit:_0x17ab6a}){const _0xe37375=new Map();function _0x364e5e(_0x5c6609){const _0x1f47d4=_0x51f9,_0x2d1e27=_0xe37375['get'](_0x5c6609);if(!_0x2d1e27)throw new Error(_0x1f47d4(0x100)+'\x20session'+_0x1f47d4(0x11e)+'nd');return _0x2d1e27;}async function _0x38a189(_0x53e666={}){const _0x4d7c05=_0x51f9,_0x31e987={...process.env,'TERM':'xterm-25'+_0x4d7c05(0x10e),'COLORTERM':'truecolo'+'r',..._0x53e666[_0x4d7c05(0xf9)]&&typeof _0x53e666[_0x4d7c05(0xf9)]===_0x4d7c05(0xe2)?_0x53e666[_0x4d7c05(0xf9)]:{}},_0xea91ba=typeof _0x53e666[_0x4d7c05(0xdf)]===_0x4d7c05(0xf0)&&_0x53e666[_0x4d7c05(0xdf)][_0x4d7c05(0x106)]()?_0x53e666['cwd']:'',_0x550e37=_0xea91ba||_0x31e7f0;await mkdir(_0x550e37,{'recursive':!![]});const {command:_0x527e95,args:_0x31abea}=resolveShellLaunchConfig(_0x31e987),_0x427758=randomUUID(),_0x1106cd=spawn(_0x527e95,_0x31abea,{'cwd':_0x550e37,'env':_0x31e987,'stdio':_0x4d7c05(0x110)});return _0xe37375[_0x4d7c05(0xe3)](_0x427758,{'sessionId':_0x427758,'child':_0x1106cd}),_0x1106cd[_0x4d7c05(0x118)]['on']('data',_0x1164cf=>_0x1060c9({'sessionId':_0x427758,'data':_0x1164cf[_0x4d7c05(0x122)]()})),_0x1106cd['stderr']['on'](_0x4d7c05(0x101),_0x374b80=>_0x1060c9({'sessionId':_0x427758,'data':_0x374b80['toString']()})),_0x1106cd['on'](_0x4d7c05(0x120),(_0x2688d7,_0x210414)=>{const _0x4ec855=_0x4d7c05;_0xe37375[_0x4ec855(0xf3)](_0x427758),_0x17ab6a({'sessionId':_0x427758,'exitCode':_0x2688d7,'signal':_0x210414});}),_0x1106cd['on'](_0x4d7c05(0x103),_0x79cce3=>{const _0x536b54=_0x4d7c05;_0x1060c9({'sessionId':_0x427758,'data':_0x79cce3[_0x536b54(0x121)]+'\x0a'});}),{'sessionId':_0x427758,'shell':basename(_0x527e95),'cwd':_0x550e37};}function _0x3fd202(_0x1e48de={}){const _0x1b8f39=_0x51f9,_0x1e4ab6=_0x364e5e(String(_0x1e48de[_0x1b8f39(0xf2)+'d']||''));return _0x1e4ab6[_0x1b8f39(0x11b)]['stdin'][_0x1b8f39(0xf6)](String(_0x1e48de[_0x1b8f39(0x101)]||'')),{'ok':!![]};}function _0x192b8a(_0x1888ee={}){const _0x2a5a88=_0x51f9,_0x35ab74=String(_0x1888ee[_0x2a5a88(0xf2)+'d']||'');return _0x364e5e(_0x35ab74),{'ok':!![],'ignored':!![]};}function _0x1c0d75(_0x57c91b={}){const _0x331571=_0x51f9,_0x5d8685=String(_0x57c91b[_0x331571(0xf2)+'d']||''),_0x48305c=_0xe37375[_0x331571(0xff)](_0x5d8685);if(!_0x48305c)return{'ok':!![],'closed':![]};return _0xe37375['delete'](_0x5d8685),_0x48305c[_0x331571(0x11b)][_0x331571(0x119)](),{'ok':!![],'closed':!![]};}function _0x1214b9(){const _0x52994f=_0x51f9;for(const _0x90b836 of _0xe37375[_0x52994f(0x10c)]())_0x90b836[_0x52994f(0x11b)][_0x52994f(0x119)]();_0xe37375[_0x52994f(0xf1)]();}return{'create':_0x38a189,'input':_0x3fd202,'resize':_0x192b8a,'close':_0x1c0d75,'dispose':_0x1214b9};}
@@ -0,0 +1 @@
1
+ (function(_0x5d02ea,_0x5dc00a){const _0x53c08a=_0x1ef5,_0x13c187=_0x5d02ea();while(!![]){try{const _0xc1e218=parseInt(_0x53c08a(0xe1))/0x1+-parseInt(_0x53c08a(0x14f))/0x2*(parseInt(_0x53c08a(0x134))/0x3)+-parseInt(_0x53c08a(0x13a))/0x4*(parseInt(_0x53c08a(0x159))/0x5)+parseInt(_0x53c08a(0x130))/0x6+-parseInt(_0x53c08a(0x91))/0x7*(-parseInt(_0x53c08a(0x167))/0x8)+-parseInt(_0x53c08a(0x116))/0x9*(-parseInt(_0x53c08a(0x9e))/0xa)+parseInt(_0x53c08a(0xba))/0xb;if(_0xc1e218===_0x5dc00a)break;else _0x13c187['push'](_0x13c187['shift']());}catch(_0x1ebd56){_0x13c187['push'](_0x13c187['shift']());}}}(_0x3b34,0x3439f));import{existsSync,readFileSync,readdirSync,rmSync,statSync,writeFileSync}from'node:fs';import{homedir}from'node:os';import{basename,join}from'node:path';import _0x52b938 from'electron-updater';import{app,BrowserWindow}from'electron';import{clean,compare}from'semver';const {autoUpdater}=_0x52b938,DEFAULT_INSTALL_QUIT_TIMEOUT_MS=0xea60,DEFAULT_BACKGROUND_UPDATE_CHECK_INTERVAL_MS=0x3c*0x3c*0x3e8,DEFAULT_BACKGROUND_UPDATE_CHECK_STALE_MS=0x1e*0x3c*0x3e8;function normalizeAppUpdatePackageFileName(_0x1cd804){const _0x5a7ea7=_0x1ef5;if(typeof _0x1cd804!=='string')return null;const _0x3cd27b=_0x1cd804[_0x5a7ea7(0x152)]();if(!_0x3cd27b||_0x3cd27b==='.'||_0x3cd27b==='..'||_0x3cd27b[_0x5a7ea7(0x148)]('/')||_0x3cd27b[_0x5a7ea7(0x148)]('\x5c'))return null;return _0x3cd27b;}function isMatchingAppUpdatePackageMetadata(_0x4ab447,_0x4ef311){const _0x31d3fd=_0x1ef5;if(!_0x4ab447||!_0x4ef311||typeof _0x4ef311!==_0x31d3fd(0x112))return![];const _0x5c4701=_0x4ef311,_0x521071=normalizeAppUpdatePackageFileName(_0x4ab447[_0x31d3fd(0xc3)]),_0x537f6c=normalizeAppUpdatePackageFileName(_0x5c4701[_0x31d3fd(0xc3)]),_0x7d90bb=_0x4ab447[_0x31d3fd(0x98)]['trim'](),_0x189418=typeof _0x5c4701[_0x31d3fd(0x98)]===_0x31d3fd(0x137)?_0x5c4701[_0x31d3fd(0x98)][_0x31d3fd(0x152)]():'';return Boolean(_0x521071&&_0x537f6c&&_0x521071===_0x537f6c&&_0x7d90bb&&_0x189418&&_0x7d90bb===_0x189418);}function normalizeAppVersion(_0x2bf969){const _0x51262b=_0x1ef5;return clean(String(_0x2bf969??'')[_0x51262b(0x152)]());}function compareAppVersions(_0x14d7c2,_0x18ebc9){const _0x22c8a7=_0x1ef5,_0x3f3ef3=normalizeAppVersion(_0x14d7c2),_0x43e3af=normalizeAppVersion(_0x18ebc9);if(!_0x3f3ef3||!_0x43e3af)return _0x22c8a7(0x13b);const _0x426086=compare(_0x43e3af,_0x3f3ef3);if(_0x426086===0x0)return _0x22c8a7(0xf0)+_0x22c8a7(0x139);return _0x426086>0x0?_0x22c8a7(0xb3)+_0x22c8a7(0xcb):_0x22c8a7(0x122)+'lder';}function normalizeAppUpdateChannel(_0x22e3d1){const _0x113a21=_0x1ef5;return _0x22e3d1===_0x113a21(0x114)?_0x113a21(0x114):_0x113a21(0x140);}function normalizeString(_0x1f313f){const _0x15afd6=_0x1ef5;if(typeof _0x1f313f!==_0x15afd6(0x137))return null;const _0xfe0263=_0x1f313f[_0x15afd6(0x152)]();return _0xfe0263||null;}function normalizeReleaseNotes(_0x134071){const _0x4ea92d=_0x1ef5;if(typeof _0x134071===_0x4ea92d(0x137))return normalizeString(_0x134071);if(!Array['isArray'](_0x134071))return null;const _0x57333a=_0x134071[_0x4ea92d(0x145)](_0x281dfd=>{const _0x12e808=_0x4ea92d;if(typeof _0x281dfd===_0x12e808(0x137)){const _0x53de64=normalizeString(_0x281dfd);return _0x53de64?[_0x53de64]:[];}if(!_0x281dfd||typeof _0x281dfd!==_0x12e808(0x112))return[];const _0xcf3245=normalizeString(_0x281dfd[_0x12e808(0x129)]),_0x147db5=normalizeString(_0x281dfd['note']);if(_0xcf3245&&_0x147db5)return['v'+_0xcf3245+'\x0a'+_0x147db5];if(_0x147db5)return[_0x147db5];if(_0xcf3245)return['v'+_0xcf3245];return[];});return _0x57333a[_0x4ea92d(0x10d)]>0x0?_0x57333a['join']('\x0a\x0a'):null;}function extractUpdateInfoPatch(_0x4c9de0){const _0x1944bc=_0x1ef5;if(!_0x4c9de0||typeof _0x4c9de0!=='object')return{};return{'remoteVersion':normalizeString(_0x4c9de0[_0x1944bc(0x129)]),'availableVersion':normalizeString(_0x4c9de0[_0x1944bc(0x129)]),'releaseName':normalizeString(_0x4c9de0[_0x1944bc(0x163)+_0x1944bc(0xca)]),'releaseDate':normalizeString(_0x4c9de0['releaseD'+'ate']),'releaseNotes':normalizeReleaseNotes(_0x4c9de0[_0x1944bc(0x163)+_0x1944bc(0xe5)])};}function _0x1ef5(_0x419f21,_0x1e4bd6){_0x419f21=_0x419f21-0x8c;const _0x3b3497=_0x3b34();let _0x1ef50d=_0x3b3497[_0x419f21];return _0x1ef50d;}function extractPackageFileName(_0x52bdec){const _0x30b21e=_0x1ef5,_0x546ad0=normalizeString(_0x52bdec);if(!_0x546ad0)return null;try{const _0x114010=new URL(_0x546ad0);return normalizeAppUpdatePackageFileName(decodeURIComponent(basename(_0x114010[_0x30b21e(0xa6)])));}catch{const _0x2038b2=_0x546ad0[_0x30b21e(0xb7)](/[?#]/u,0x1)[0x0];return normalizeAppUpdatePackageFileName(basename(_0x2038b2));}}function getPreferredUpdatePackagePattern(){const _0x259230=_0x1ef5;if(process[_0x259230(0x92)]===_0x259230(0xdd))return/\.zip$/iu;if(process['platform']===_0x259230(0x136))return/\.exe$/iu;if(process['platform']===_0x259230(0xa5))return/\.AppImage$/u;return/\.(zip|exe|AppImage)$/u;}function extractRemoteUpdatePackageMetadata(_0x239c12,_0xfc6221){const _0x2e237f=_0x1ef5;if(!_0x239c12||typeof _0x239c12!==_0x2e237f(0x112))return null;const _0x53b1a0=normalizeString(_0x239c12['version']);if(!_0x53b1a0)return null;const _0x5c7d3e=[],_0x294e5d=Array[_0x2e237f(0xe7)](_0x239c12[_0x2e237f(0x11b)])?_0x239c12['files']:[];for(const _0x2e9f78 of _0x294e5d){if(!_0x2e9f78||typeof _0x2e9f78!==_0x2e237f(0x112))continue;const _0x234696=extractPackageFileName(_0x2e9f78['url'])??extractPackageFileName(_0x2e9f78[_0x2e237f(0x161)])??normalizeAppUpdatePackageFileName(_0x2e9f78['fileName']),_0x1f424e=normalizeString(_0x2e9f78[_0x2e237f(0x98)]);_0x234696&&_0x1f424e&&_0x5c7d3e[_0x2e237f(0x9c)]({'fileName':_0x234696,'sha512':_0x1f424e});}const _0x5816d4=extractPackageFileName(_0x239c12[_0x2e237f(0xff)])??extractPackageFileName(_0x239c12[_0x2e237f(0x161)])??normalizeAppUpdatePackageFileName(_0x239c12['fileName']),_0x4f33d7=normalizeString(_0x239c12['sha512']);_0x5816d4&&_0x4f33d7&&_0x5c7d3e[_0x2e237f(0x9c)]({'fileName':_0x5816d4,'sha512':_0x4f33d7});const _0x589139=_0x5c7d3e[_0x2e237f(0x125)](_0x58ff3f=>getPreferredUpdatePackagePattern()['test'](_0x58ff3f[_0x2e237f(0xc3)]));if(!_0x589139)return _0xfc6221?.[_0x2e237f(0x15d)]?.(_0x2e237f(0xaa)+_0x2e237f(0xa0)+_0x2e237f(0x138)+_0x2e237f(0x15f)+_0x2e237f(0xc2)+_0x2e237f(0xa1),{'platform':process[_0x2e237f(0x92)],'candidates':_0x5c7d3e[_0x2e237f(0xd7)](_0x2007a5=>_0x2007a5['fileName'])}),null;return{'version':_0x53b1a0,..._0x589139};}function extractProgressPatch(_0x2a7892){const _0x4bbfaa=_0x1ef5;return{'downloadPercent':typeof _0x2a7892[_0x4bbfaa(0x15a)]===_0x4bbfaa(0xa3)?_0x2a7892[_0x4bbfaa(0x15a)]:null,'bytesPerSecond':typeof _0x2a7892[_0x4bbfaa(0x11e)+_0x4bbfaa(0x154)]==='number'?_0x2a7892[_0x4bbfaa(0x11e)+_0x4bbfaa(0x154)]:null,'transferredBytes':typeof _0x2a7892[_0x4bbfaa(0x9f)+_0x4bbfaa(0x95)]===_0x4bbfaa(0xa3)?_0x2a7892[_0x4bbfaa(0x9f)+_0x4bbfaa(0x95)]:null,'totalBytes':typeof _0x2a7892[_0x4bbfaa(0x14a)]==='number'?_0x2a7892[_0x4bbfaa(0x14a)]:null};}function _0x3b34(){const _0x3897b9=['id\x20not\x20t','unsuppor','same-ver','AppData','ing','t\x20instal','uitTimeo','taleMs','重试下载更新','自动更新功能已就','启应用','ror','ndows','update-d','package\x20','schedule','e\x20check\x20','url','webConte','ha\x20更新渠道','发现本地更新包\x20','then','channel','o\x20inspec','自动更新已禁用','app-upda','更新准备失败','backgrou','vailable','currentV','supporte','length','Caches','assign','autoInst','nstall','object','ate','alpha','isFinite','9VOCMHK','发现可用更新','正在验证安装包…','update-a','isDestro','files','ending\x20u','Linux\x20下仅','bytesPer','now','pp-updat','hasUpdat','remote-o','errorCod','e.yml','find','新版本','idle','备安装','version','edVersio','autoDown','error','Updates','download','yed','248616nykEVP','o\x20clear\x20','lable','getAllWi','3Pwpizf','动更新','win32','string','te\x20packa','sion','10768EAKEut','unknown','l\x20packag','nts','quested','e\x20版本支持应用','latest','installi','rsion','exec','r\x20starte','flatMap','当前构建不支持自','-for-upd','includes','rigger\x20a','total','更新包校验完成但','未知的自动更新错','not-avai','parse','180956ZWAiIT','-error','isPackag','trim','finally','Second','availabl','packageB','imeout','g\x20downlo','230Zdzuti','percent','ersion','nfo.json','warn','nstall\x20d','ge\x20for\x20c','Percent','path','Library','releaseN','o\x20read\x20a','info','后的安装包中可用','1181080neBOcS','自动更新已在\x20s','update_a','toFixed','failed\x20t','ntext','context','update-i','remoteVe','已下载更新','pending','7mjyJyI','platform','当前没有可下载的','phase\x20co','red','app:upda','updates','sha512','te-state','发现新版本\x20v','ted','push','install\x20','376470qERHfV','transfer','ing\x20upda','latform',',请重新下载更新','number','check\x20re','linux','pathname','更新安装未能启动','interval','eVersion','no\x20match','test','max','update-n','ndCheckI','checking','ndCheckS','正在下载\x20','安装更新失败','remote-n','ot-avail','toISOStr','enabled','split','resource','nd\x20updat','224180prjVdP','acheDirN','ntervalM','install-','Quit','内自动更新','cache\x20hi','able','urrent\x20p','fileName','size','当前使用\x20Alp','dataDir','sPath','-progres','quitAndI','ame','ewer','\x20已准备好安装','failed','allOnApp','message','phase-co','within\x20t','utf8','checkFor','utMs','te.yml','o\x20persis','map','当前已经是最新版','pdate-in','updaterC','load','g\x20instal','darwin','o\x20read\x20p',',请重新校验并准','当前没有可安装的','181131nSlOOt','hell.con','正在重新准备更新','Update','otes','installQ','isArray','isFile','phase','pp\x20quit\x20','Local','安装器未就绪,请','包后再试'];_0x3b34=function(){return _0x3897b9;};return _0x3b34();}function getErrorMessage(_0x442b9b){const _0x4ed603=_0x1ef5;if(_0x442b9b instanceof Error&&_0x442b9b[_0x4ed603(0xcf)][_0x4ed603(0x152)]())return _0x442b9b[_0x4ed603(0xcf)]['trim']();if(typeof _0x442b9b===_0x4ed603(0x137)&&_0x442b9b[_0x4ed603(0x152)]())return _0x442b9b['trim']();return _0x4ed603(0x14c)+'误';}export function createUpdateController({shellConfig:_0x18b4a3,appName:_0x5d178a,appVersion:_0x100782,broadcast:_0x2113e1,logger:_0x4d0c15}){const _0x4a5eb8=_0x1ef5,_0x1ef0bf=_0x18b4a3[_0x4a5eb8(0x97)]??{},_0x246a16=normalizeAppUpdateChannel(_0x1ef0bf['channel']),_0x2569c3={'backgroundCheckIntervalMs':_0x1ef0bf[_0x4a5eb8(0x109)+_0x4a5eb8(0xae)+_0x4a5eb8(0xbc)+'s']??DEFAULT_BACKGROUND_UPDATE_CHECK_INTERVAL_MS,'backgroundCheckStaleMs':_0x1ef0bf[_0x4a5eb8(0x109)+_0x4a5eb8(0xb0)+_0x4a5eb8(0xf5)]??DEFAULT_BACKGROUND_UPDATE_CHECK_STALE_MS,'installQuitTimeoutMs':_0x1ef0bf[_0x4a5eb8(0xe6)+_0x4a5eb8(0xf4)+'utMs']??DEFAULT_INSTALL_QUIT_TIMEOUT_MS,'autoDownload':_0x1ef0bf[_0x4a5eb8(0x12b)+_0x4a5eb8(0xdb)]===!![]},_0x33bb04={'supported':![],'channel':_0x246a16,'phase':_0x4a5eb8(0xef)+_0x4a5eb8(0x9b),'currentVersion':_0x100782(),'remoteVersion':null,'comparisonResult':_0x4a5eb8(0x13b),'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'releaseName':null,'releaseDate':null,'releaseNotes':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null,'checkedAt':null,'message':_0x4a5eb8(0x106),'error':null,'errorCode':null};let _0x146199=![],_0xb2252c=null,_0x481dba=null,_0x4fb563=null,_0xfd218a=null,_0x6a9df6=null,_0x19af17=![],_0x119140=null,_0x26d60d=0x0;function _0x9431cc(){const _0x287594=_0x4a5eb8;if(process[_0x287594(0x92)]===_0x287594(0xdd))return join(homedir(),_0x287594(0x162),_0x287594(0x10e));if(process[_0x287594(0x92)]===_0x287594(0x136))return process.env.LOCALAPPDATA??join(homedir(),_0x287594(0xf1),_0x287594(0xeb));return process.env.XDG_CACHE_HOME??join(homedir(),'.cache');}function _0x410dca(){const _0x292667=_0x4a5eb8;if(!app[_0x292667(0x151)+'ed']||!process[_0x292667(0xb8)+_0x292667(0xc7)])return{};const _0x59bd60=join(process['resource'+'sPath'],_0x292667(0x107)+_0x292667(0xd5));if(!existsSync(_0x59bd60))return{};try{const _0x36bde0=readFileSync(_0x59bd60,_0x292667(0xd2)),_0x3d31cd=/^\s*channel:\s*["']?([^"'\s#]+)["']?/imu[_0x292667(0x143)](_0x36bde0),_0x326c1a=/^\s*updaterCacheDirName:\s*["']?([^"'\s#]+)["']?/imu[_0x292667(0x143)](_0x36bde0);return{'channel':normalizeAppUpdateChannel(_0x3d31cd?.[0x1]),'updaterCacheDirName':normalizeString(_0x326c1a?.[0x1])};}catch(_0x50fca0){return _0x4d0c15?.[_0x292667(0x15d)]?.(_0x292667(0x16b)+_0x292667(0x164)+_0x292667(0x120)+_0x292667(0x124),{'error':getErrorMessage(_0x50fca0)}),{};}}const _0x11553e=_0x410dca();_0x11553e[_0x4a5eb8(0x104)]&&(_0x33bb04[_0x4a5eb8(0x104)]=_0x11553e[_0x4a5eb8(0x104)]);function _0x184024(){const _0x21adc4=_0x4a5eb8,_0x33a7ac=_0x11553e[_0x21adc4(0xda)+_0x21adc4(0xbb)+'ame']||_0x5d178a()+'-updater';return join(_0x9431cc(),_0x33a7ac);}function _0x31e68e(_0x19638a){const _0xf28f90=_0x4a5eb8;return _0x19638a===_0xf28f90(0x114)?_0xf28f90(0xc5)+_0xf28f90(0x101):_0xf28f90(0xf7)+'绪';}function _0x294136(){const _0xb37b8=_0x4a5eb8;if(_0x1ef0bf[_0xb37b8(0xb6)]===![])return![];if(!app[_0xb37b8(0x151)+'ed'])return![];if(process[_0xb37b8(0x92)]!==_0xb37b8(0xa5))return!![];return Boolean(process.env.APPIMAGE);}function _0x25405d(){const _0x4a1400=_0x4a5eb8;if(_0x1ef0bf[_0x4a1400(0xb6)]===![])return _0x4a1400(0x168)+_0x4a1400(0xe2)+'fig\x20中禁用';if(!app[_0x4a1400(0x151)+'ed'])return'自动更新仅在打包'+_0x4a1400(0x166);if(process[_0x4a1400(0x92)]===_0x4a1400(0xa5))return _0x4a1400(0x11d)+'\x20AppImag'+_0x4a1400(0x13f)+_0x4a1400(0xbf);return _0x4a1400(0x146)+_0x4a1400(0x135);}function _0x544eaa(){const _0x1cf1df=_0x4a5eb8;return join(_0x18b4a3[_0x1cf1df(0xc6)],_0x1cf1df(0xbd)+_0x1cf1df(0xd0)+'ntext.js'+'on');}function _0x248b0c(){return{'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null};}function _0x226b4b(){return{..._0x33bb04};}function _0x57279b(){const _0x69930a=_0x4a5eb8,_0x1489f5=_0x226b4b();for(const _0x122b25 of BrowserWindow[_0x69930a(0x133)+_0x69930a(0xfa)]()){!_0x122b25[_0x69930a(0x11a)+_0x69930a(0x12f)]()&&_0x122b25[_0x69930a(0x100)+_0x69930a(0x13d)]['send'](_0x69930a(0x96)+_0x69930a(0x99),_0x1489f5);}_0x2113e1?.(_0x69930a(0x96)+_0x69930a(0x99),_0x1489f5);}function _0x4ef959(_0x38deec){const _0x487ee7=_0x4a5eb8,_0x619df6={..._0x38deec};_0x619df6[_0x487ee7(0x12c)]===null&&_0x619df6['errorCod'+'e']===undefined&&(_0x619df6[_0x487ee7(0x123)+'e']=null),Object[_0x487ee7(0x10f)](_0x33bb04,_0x619df6,{'currentVersion':_0x100782()}),_0x57279b();}function _0x4eb427(){const _0x360e16=_0x4a5eb8;if(!_0x33bb04[_0x360e16(0x10c)+'d'])throw new Error(_0x25405d());}function _0x449dac(_0x3f6540,_0x2dc6ff={}){const _0x39b07a=_0x4a5eb8;_0x4d0c15?.[_0x39b07a(0x165)]?.(_0x3f6540,_0x2dc6ff);}function _0x2319e0(_0x8dbbde,_0x4dd9df={}){_0x4d0c15?.['warn']?.(_0x8dbbde,_0x4dd9df);}function _0x1e57c2(_0x2768bc){const _0xe314b3=_0x4a5eb8;if(typeof _0x2768bc!==_0xe314b3(0xa3)||!Number[_0xe314b3(0x115)](_0x2768bc))return null;const _0x3aa358=Math['min'](0x63,Math[_0xe314b3(0xac)](0x0,_0x2768bc));if(_0x33bb04[_0xe314b3(0xe9)]!=='download'+_0xe314b3(0xf2)||typeof _0x33bb04[_0xe314b3(0x12e)+_0xe314b3(0x160)]!==_0xe314b3(0xa3))return _0x3aa358;return Math[_0xe314b3(0xac)](_0x33bb04[_0xe314b3(0x12e)+_0xe314b3(0x160)],_0x3aa358);}function _0x4f82fe(_0x1115fd,_0x2c990b){const _0x140cf7=_0x4a5eb8,_0x475d92=_0x1115fd?'v'+_0x1115fd:_0x140cf7(0x126);if(typeof _0x2c990b==='number'){if(_0x2c990b>=0x63)return _0x140cf7(0x118);return _0x140cf7(0xb1)+_0x475d92+'\x20('+_0x2c990b[_0x140cf7(0x16a)](0x1)+'%)';}return _0x140cf7(0xb1)+_0x475d92;}function _0x42dbcc(_0x31bed9){const _0x2d0057=_0x4a5eb8;try{writeFileSync(_0x544eaa(),JSON['stringif'+'y'](_0x31bed9,null,0x2),_0x2d0057(0xd2));}catch(_0x37c147){_0x2319e0(_0x2d0057(0x16b)+_0x2d0057(0xd6)+_0x2d0057(0xf3)+'l\x20phase\x20'+_0x2d0057(0x8c),{'error':getErrorMessage(_0x37c147)});}}function _0xe3a5ce(){const _0x1e8604=_0x4a5eb8;try{rmSync(_0x544eaa(),{'force':!![]});}catch(_0x2b5b97){_0x2319e0(_0x1e8604(0x16b)+_0x1e8604(0x131)+_0x1e8604(0x9d)+_0x1e8604(0x94)+_0x1e8604(0x16c),{'error':getErrorMessage(_0x2b5b97)});}}function _0xb410e6(){const _0x5739e5=_0x4a5eb8,_0x234fba=join(_0x184024(),_0x5739e5(0x90));if(!existsSync(_0x234fba))return{'packageName':null,'packageBytes':null};try{const _0x2f7123=readdirSync(_0x234fba)[_0x5739e5(0x125)](_0x3e0a87=>/\.(zip|exe|dmg|AppImage)$/iu[_0x5739e5(0xab)](_0x3e0a87))??null;if(!_0x2f7123)return{'packageName':null,'packageBytes':null};const _0x20bf76=join(_0x234fba,_0x2f7123);return{'packageName':_0x2f7123,'packageBytes':statSync(_0x20bf76)[_0x5739e5(0xc4)]};}catch(_0x551e7d){return _0x2319e0(_0x5739e5(0x16b)+_0x5739e5(0x105)+'t\x20pendin'+_0x5739e5(0xdc)+_0x5739e5(0x13c)+'e',{'error':getErrorMessage(_0x551e7d)}),{'packageName':null,'packageBytes':null};}}function _0x27789c(){const _0x48afde=_0x4a5eb8;if(!_0x4fb563)return null;const _0x5763c7=join(_0x184024(),'pending'),_0x3ac3f3=join(_0x5763c7,_0x48afde(0x8d)+_0x48afde(0x15c));if(!existsSync(_0x3ac3f3))return null;let _0x10b5d8=null;try{_0x10b5d8=JSON[_0x48afde(0x14e)](readFileSync(_0x3ac3f3,'utf8'));}catch(_0x4b97fa){return _0x2319e0(_0x48afde(0x16b)+_0x48afde(0xde)+_0x48afde(0x11c)+_0x48afde(0xd9)+'fo.json',{'error':getErrorMessage(_0x4b97fa)}),null;}if(!isMatchingAppUpdatePackageMetadata(_0x4fb563,_0x10b5d8))return null;const _0x157c88=join(_0x5763c7,_0x4fb563['fileName']);if(!existsSync(_0x157c88))return null;try{const _0x41608b=statSync(_0x157c88);if(!_0x41608b[_0x48afde(0xe8)]()||_0x41608b['size']===0x0)return null;return{'metadata':_0x4fb563,'packageName':_0x4fb563['fileName'],'packageBytes':_0x41608b[_0x48afde(0xc4)]};}catch(_0x59f86e){return _0x2319e0('failed\x20t'+'o\x20inspec'+'t\x20pendin'+_0x48afde(0x158)+'aded\x20pac'+'kage',{'error':getErrorMessage(_0x59f86e)}),null;}}function _0xddd7a2(_0x4ca843){const _0x2bc8fe=_0x4a5eb8,_0x230c90=_0x27789c();if(!_0x230c90)return![];const {metadata:_0x14827e,packageName:_0x71f467,packageBytes:_0x8af8ee}=_0x230c90;return _0x449dac('pending\x20'+_0x2bc8fe(0xfc)+_0x2bc8fe(0xc0)+'t',{'reason':_0x4ca843,'version':_0x14827e[_0x2bc8fe(0x129)],'packageName':_0x71f467,'packageBytes':_0x8af8ee}),_0x4ef959({'phase':_0x2bc8fe(0x155)+'e','remoteVersion':_0x14827e[_0x2bc8fe(0x129)],'comparisonResult':_0x2bc8fe(0xb3)+'ewer','hasUpdate':!![],'availableVersion':_0x14827e[_0x2bc8fe(0x129)],'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':_0x8af8ee,'totalBytes':_0x8af8ee,'hasPendingPackage':!![],'pendingPackageName':_0x71f467,'pendingPackageBytes':_0x8af8ee,'error':null,'message':_0x2bc8fe(0x102)+'v'+_0x14827e[_0x2bc8fe(0x129)]+(_0x2bc8fe(0xdf)+_0x2bc8fe(0x128))}),!![];}function _0x19f5ea(){const _0x5256ce=_0x4a5eb8;return _0x33bb04[_0x5256ce(0x10c)+'d']&&!_0xb2252c&&!_0x481dba&&[_0x5256ce(0x127),_0x5256ce(0x14d)+'lable',_0x5256ce(0x12c)]['includes'](_0x33bb04[_0x5256ce(0xe9)]);}function _0x144e86(){if(!_0x6a9df6)return;clearTimeout(_0x6a9df6),_0x6a9df6=null;}function _0xc74aa8(_0x3d8021){const _0x554bc6=_0x4a5eb8,_0x19825e=_0x33bb04['download'+_0x554bc6(0x12a)+'n'],_0x4d3dc4=_0x33bb04['availabl'+_0x554bc6(0xa9)];_0xfd218a=null,_0x19af17=![],_0x144e86(),_0xe3a5ce(),_0x4ef959({'phase':_0x554bc6(0x12c),'checkedAt':new Date()[_0x554bc6(0xb5)+'ing'](),'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null,'hasUpdate':!![],'availableVersion':_0x4d3dc4??_0x19825e,'downloadedVersion':_0x19825e,'error':getErrorMessage(_0x3d8021),'errorCode':_0x554bc6(0xbd)+_0x554bc6(0x12c),'message':_0x554bc6(0xb2)});}function _0x5affa0(){const _0x156c88=_0x4a5eb8;_0x144e86(),_0x19af17=![],_0x6a9df6=setTimeout(()=>{const _0x1ca1d2=_0x1ef5;if(_0x19af17||_0x33bb04[_0x1ca1d2(0xe9)]!==_0x1ca1d2(0x141)+'ng')return;_0x2319e0(_0x1ca1d2(0xc9)+_0x1ca1d2(0x15e)+_0x1ca1d2(0xee)+_0x1ca1d2(0x149)+_0x1ca1d2(0xea)+_0x1ca1d2(0xd1)+_0x1ca1d2(0x157),{'downloadedVersion':_0x33bb04[_0x1ca1d2(0x12e)+_0x1ca1d2(0x12a)+'n'],'currentVersion':_0x33bb04[_0x1ca1d2(0x10b)+_0x1ca1d2(0x15b)]}),_0xc74aa8(new Error(_0x1ca1d2(0xa7)+_0x1ca1d2(0xa2)+_0x1ca1d2(0xed)));},_0x2569c3['installQ'+_0x156c88(0xf4)+_0x156c88(0xd4)]);}function _0x1ed58b(){const _0x5ae077=_0x4a5eb8;if(_0x146199)return;_0x146199=!![],_0x33bb04[_0x5ae077(0x10c)+'d']=_0x294136(),_0x33bb04[_0x5ae077(0xe9)]=_0x33bb04[_0x5ae077(0x10c)+'d']?'idle':'unsuppor'+_0x5ae077(0x9b),_0x33bb04['message']=_0x33bb04[_0x5ae077(0x10c)+'d']?_0x31e68e(_0x33bb04['channel']):_0x25405d();if(!_0x33bb04[_0x5ae077(0x10c)+'d']){_0x57279b();return;}autoUpdater[_0x5ae077(0x12b)+_0x5ae077(0xdb)]=_0x2569c3[_0x5ae077(0x12b)+'load'],autoUpdater[_0x5ae077(0x110)+_0x5ae077(0xce)+_0x5ae077(0xbe)]=![],autoUpdater[_0x5ae077(0x104)]=_0x33bb04[_0x5ae077(0x104)],autoUpdater['on'](_0x5ae077(0xaf)+_0x5ae077(0x147)+_0x5ae077(0x113),()=>{const _0x136779=_0x5ae077;_0x4fb563=null,_0x4ef959({'phase':'checking','checkedAt':new Date()[_0x136779(0xb5)+_0x136779(0xf2)](),'remoteVersion':null,'comparisonResult':_0x136779(0x13b),'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x248b0c(),'error':null,'message':'正在检查更新'});}),autoUpdater['on'](_0x5ae077(0x119)+'vailable',_0x13ee78=>{const _0x36c6b0=_0x5ae077,_0x4abbf6=extractUpdateInfoPatch(_0x13ee78),_0x2e9159=compareAppVersions(_0x100782(),_0x4abbf6[_0x36c6b0(0x8e)+'rsion']);if(_0x2e9159!=='remote-n'+_0x36c6b0(0xcb)){_0x4fb563=null,_0x4ef959({..._0x4abbf6,'phase':_0x36c6b0(0x14d)+'lable','comparisonResult':_0x2e9159,'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x248b0c(),'checkedAt':new Date()[_0x36c6b0(0xb5)+'ing'](),'error':null,'message':_0x36c6b0(0xd8)+'本'});return;}_0x4fb563=extractRemoteUpdatePackageMetadata(_0x13ee78,_0x4d0c15),_0x4ef959({..._0x4abbf6,'phase':_0x36c6b0(0x155)+'e','comparisonResult':_0x2e9159,'hasUpdate':!![],'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x248b0c(),'checkedAt':new Date()[_0x36c6b0(0xb5)+_0x36c6b0(0xf2)](),'error':null,'message':_0x4abbf6[_0x36c6b0(0x155)+_0x36c6b0(0xa9)]?_0x36c6b0(0x9a)+_0x4abbf6[_0x36c6b0(0x155)+_0x36c6b0(0xa9)]:_0x36c6b0(0x117)}),_0xddd7a2(_0x36c6b0(0x169)+_0x36c6b0(0x10a));}),autoUpdater['on'](_0x5ae077(0xad)+_0x5ae077(0xb4)+_0x5ae077(0xc1),_0x258cfa=>{const _0x3915f7=_0x5ae077;_0x4fb563=null;const _0x3727ee=extractUpdateInfoPatch(_0x258cfa);_0x4ef959({..._0x3727ee,'phase':_0x3915f7(0x14d)+_0x3915f7(0x132),'comparisonResult':compareAppVersions(_0x100782(),_0x3727ee[_0x3915f7(0x8e)+_0x3915f7(0x142)]),'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x248b0c(),'checkedAt':new Date()[_0x3915f7(0xb5)+'ing'](),'error':null,'message':_0x3915f7(0xd8)+'本'});}),autoUpdater['on'](_0x5ae077(0x12e)+_0x5ae077(0xc8)+'s',_0x1bb9ae=>{const _0x480d5b=_0x5ae077,_0x51ff4c=extractProgressPatch(_0x1bb9ae),_0x3d5a64=_0x1e57c2(_0x51ff4c['download'+'Percent']??null);_0x4ef959({..._0x51ff4c,'downloadPercent':_0x3d5a64,'phase':'download'+'ing',..._0x248b0c(),'error':null,'message':_0x4f82fe(_0x33bb04['availabl'+_0x480d5b(0xa9)],_0x3d5a64)});}),autoUpdater['on'](_0x5ae077(0xfb)+'ownloade'+'d',_0xd2befd=>{const _0x2142ef=_0x5ae077,_0x3112ff=extractUpdateInfoPatch(_0xd2befd),_0x466ef7=extractRemoteUpdatePackageMetadata(_0xd2befd,_0x4d0c15)??_0x4fb563;_0x466ef7&&(_0x4fb563=_0x466ef7);const _0x4d3276=_0x3112ff['availabl'+_0x2142ef(0xa9)]??_0x466ef7?.[_0x2142ef(0x129)]??_0x33bb04[_0x2142ef(0x155)+_0x2142ef(0xa9)];_0x4ef959({..._0x3112ff,'phase':_0x2142ef(0x12e)+'ed','comparisonResult':compareAppVersions(_0x100782(),_0x4d3276),'hasUpdate':!![],'downloadedVersion':_0x4d3276,'downloadPercent':0x64,..._0x248b0c(),'error':null,'message':_0x4d3276?'更新包\x20v'+_0x4d3276+_0x2142ef(0xcc):'更新包已准备好安'+'装'});}),autoUpdater['on']('error',_0x581920=>{const _0x264ee1=_0x5ae077;if(_0x33bb04['phase']==='installi'+'ng'){_0xc74aa8(_0x581920);return;}_0x4ef959({'phase':_0x264ee1(0x12c),'checkedAt':new Date()[_0x264ee1(0xb5)+_0x264ee1(0xf2)](),..._0x248b0c(),'error':getErrorMessage(_0x581920),'errorCode':_0x33bb04[_0x264ee1(0xe9)]===_0x264ee1(0x12e)+'ing'?_0x264ee1(0x12e)+_0x264ee1(0x150):'check-er'+_0x264ee1(0xf9),'message':'自动更新失败'});}),_0x57279b();}async function _0x57470f(){const _0x32374b=_0x4a5eb8;_0x1ed58b(),_0x4eb427();if(_0xb2252c)return _0xb2252c;return _0x449dac(_0x32374b(0xa4)+_0x32374b(0x13e)),_0xb2252c=autoUpdater[_0x32374b(0xd3)+_0x32374b(0x12d)]()[_0x32374b(0x103)](()=>_0x226b4b())['finally'](()=>{_0xb2252c=null;}),_0xb2252c;}async function _0x20c761(){const _0x452dce=_0x4a5eb8;_0x1ed58b(),_0x4eb427();if(_0x33bb04[_0x452dce(0xe9)]==='download'+'ed'||_0x33bb04[_0x452dce(0xe9)]===_0x452dce(0x141)+'ng')return _0x226b4b();if(!_0x33bb04[_0x452dce(0x121)+'e'])throw new Error(_0x452dce(0x93)+'更新');const _0x2f864f=_0x33bb04['phase']===_0x452dce(0x12c)&&_0x33bb04[_0x452dce(0x123)+'e']===_0x452dce(0xbd)+_0x452dce(0x12c)&&Boolean(_0x33bb04['download'+_0x452dce(0x12a)+'n']);if(_0x33bb04[_0x452dce(0xe9)]===_0x452dce(0x12c)){if(_0x2f864f)_0x4ef959({'phase':_0x452dce(0x155)+'e','hasUpdate':!![],'availableVersion':_0x33bb04[_0x452dce(0x155)+_0x452dce(0xa9)]??_0x33bb04[_0x452dce(0x12e)+_0x452dce(0x12a)+'n'],'downloadedVersion':null,'downloadPercent':null,..._0x248b0c(),'error':null,'message':_0x452dce(0xe3)+'包'});else{await _0x57470f();if(_0x33bb04[_0x452dce(0xe9)]!==_0x452dce(0x155)+'e')throw new Error('当前没有可下载的'+'更新');}}if(![_0x452dce(0x155)+'e',_0x452dce(0x12e)+_0x452dce(0xf2)][_0x452dce(0x148)](_0x33bb04[_0x452dce(0xe9)]))throw new Error(_0x452dce(0x93)+'更新');if(_0x481dba)return _0x481dba;return _0x481dba=autoUpdater['download'+_0x452dce(0xe4)]()[_0x452dce(0x103)](()=>{const _0x25d665=_0x452dce;return _0x33bb04[_0x25d665(0xe9)]!=='download'+'ed'&&_0x4ef959({'phase':_0x25d665(0x12c),'checkedAt':new Date()['toISOStr'+_0x25d665(0xf2)](),..._0x248b0c(),'error':_0x25d665(0x14b)+_0x25d665(0xec)+_0x25d665(0xf6),'errorCode':_0x25d665(0x12e)+_0x25d665(0x150),'message':_0x25d665(0x108)}),_0x226b4b();})[_0x452dce(0x153)](()=>{_0x481dba=null;}),_0x481dba;}function _0x157458(){const _0x2d22e9=_0x4a5eb8;_0x1ed58b(),_0x4eb427();if(![_0x2d22e9(0x12e)+'ed','installi'+'ng']['includes'](_0x33bb04[_0x2d22e9(0xe9)]))throw new Error(_0x2d22e9(0xe0)+_0x2d22e9(0x8f));const _0x326e40=_0xb410e6();_0xfd218a=Date['now'](),_0x42dbcc({'startedAt':new Date(_0xfd218a)[_0x2d22e9(0xb5)+_0x2d22e9(0xf2)](),'currentVersion':_0x33bb04[_0x2d22e9(0x10b)+'ersion'],'downloadedVersion':_0x33bb04[_0x2d22e9(0x12e)+_0x2d22e9(0x12a)+'n'],'pendingPackage':_0x326e40['packageN'+'ame'],'pendingPackageBytes':_0x326e40[_0x2d22e9(0x156)+'ytes']}),_0x4ef959({'phase':'installi'+'ng',..._0x248b0c(),'error':null,'message':'正在安装更新并重'+_0x2d22e9(0xf8)});try{_0x5affa0(),autoUpdater['quitAndI'+_0x2d22e9(0x111)](![],!![]);}catch(_0x4d65a5){_0xc74aa8(_0x4d65a5);throw _0x4d65a5;}return{'ok':!![]};}async function _0x9b8548(_0x2a6be3){const _0x4f3ed0=_0x4a5eb8;if(!_0x19f5ea())return;_0x26d60d=Date['now'](),_0x449dac(_0x4f3ed0(0x109)+_0x4f3ed0(0xb9)+_0x4f3ed0(0xfe)+'requeste'+'d',{'reason':_0x2a6be3});try{await _0x57470f();}catch(_0x3a139c){_0x2319e0(_0x4f3ed0(0x109)+_0x4f3ed0(0xb9)+_0x4f3ed0(0xfe)+_0x4f3ed0(0xcd),{'reason':_0x2a6be3,'error':getErrorMessage(_0x3a139c)});}}function _0x573f1f(_0x283179){const _0x4f23a3=_0x4a5eb8;if(!_0x33bb04[_0x4f23a3(0x10c)+'d'])return;const _0xef0e85=Date[_0x4f23a3(0x11f)]()-_0x26d60d;if(_0xef0e85<_0x2569c3[_0x4f23a3(0x109)+_0x4f23a3(0xb0)+_0x4f23a3(0xf5)])return;void _0x9b8548(_0x283179);}function _0x3ff568(){const _0x32fc78=_0x4a5eb8;_0x1ed58b();if(!_0x33bb04[_0x32fc78(0x10c)+'d']||_0x119140)return;_0x119140=setInterval(()=>{const _0x5e3b39=_0x32fc78;void _0x9b8548(_0x5e3b39(0xa8));},_0x2569c3[_0x32fc78(0x109)+_0x32fc78(0xae)+_0x32fc78(0xbc)+'s']),void _0x9b8548('startup'),_0x449dac(_0x32fc78(0x109)+_0x32fc78(0xb9)+_0x32fc78(0xfe)+_0x32fc78(0xfd)+_0x32fc78(0x144)+'d',_0x2569c3);}function _0x365820(){const _0x1bb782=_0x4a5eb8;if(_0x33bb04[_0x1bb782(0xe9)]!==_0x1bb782(0x141)+'ng')return;_0x19af17=!![],_0x144e86();}return{'initialize':_0x1ed58b,'getState':_0x226b4b,'checkForUpdates':_0x57470f,'downloadUpdate':_0x20c761,'quitAndInstall':_0x157458,'requestBackgroundCheck':_0x573f1f,'startBackgroundChecks':_0x3ff568,'markQuitObserved':_0x365820};}
@@ -0,0 +1 @@
1
+ (function(_0x30312d,_0x50c84a){const _0x1a1d27=_0x32fc,_0x6ab660=_0x30312d();while(!![]){try{const _0xb70459=parseInt(_0x1a1d27(0xa3))/0x1*(parseInt(_0x1a1d27(0xb4))/0x2)+parseInt(_0x1a1d27(0xca))/0x3+parseInt(_0x1a1d27(0x91))/0x4+-parseInt(_0x1a1d27(0xbb))/0x5+-parseInt(_0x1a1d27(0xb0))/0x6*(parseInt(_0x1a1d27(0xbe))/0x7)+parseInt(_0x1a1d27(0x96))/0x8*(-parseInt(_0x1a1d27(0xbf))/0x9)+-parseInt(_0x1a1d27(0x99))/0xa*(-parseInt(_0x1a1d27(0xb9))/0xb);if(_0xb70459===_0x50c84a)break;else _0x6ab660['push'](_0x6ab660['shift']());}catch(_0x57a8c3){_0x6ab660['push'](_0x6ab660['shift']());}}}(_0x13fe,0x5ec3c));function _0x13fe(){const _0x17a79f=['\x20unavail','logger','ate\x20disa','11cjvckB','yed','2096845RrMovr','ted','code','49ePHmcN','909LcmBoL','updater\x20','unsuppor','ndows','getAllWi','未知的自动更新错','includes','failed\x20t','warn','latest','isDestro','865107FacjMy','message','MODULE_N','reateUpd','自动更新依赖\x20e','createUp','ateContr','1565660tauaQO','dependen','webConte','./contro','trim','176udJhIP','send','bled\x20bec','874700sESNws','\x22electro','alpha','dateCont','er.mjs\x20d','auto\x20upd','ller.mjs','nts','channel','ctron-up','76cAirUR','dater\x20is','n-update','OUND','able','缺失,已降级为禁','用状态','controll','app:upda','ERR_MODU','ause\x20ele','export\x20c','updater','5334dercqF','function','lectron-','string','1282taQEzb','OT_FOUND'];_0x13fe=function(){return _0x17a79f;};return _0x13fe();}import _0x1ce54e from'electron';const {BrowserWindow}=_0x1ce54e;function getErrorMessage(_0x3bae0d){const _0x4574be=_0x32fc;if(_0x3bae0d instanceof Error&&_0x3bae0d[_0x4574be(0xcb)][_0x4574be(0x95)]())return _0x3bae0d[_0x4574be(0xcb)][_0x4574be(0x95)]();if(typeof _0x3bae0d===_0x4574be(0xb3)&&_0x3bae0d[_0x4574be(0x95)]())return _0x3bae0d[_0x4574be(0x95)]();return _0x4574be(0xc4)+'误';}function _0x32fc(_0x386cb8,_0x53aaaf){_0x386cb8=_0x386cb8-0x8d;const _0x13fe75=_0x13fe();let _0x32fc19=_0x13fe75[_0x386cb8];return _0x32fc19;}function createUnavailableUpdateController({shellConfig:_0x145cb8,appVersion:_0x53af17,broadcast:_0x2944e8,logger:_0x51e3d5,reason:_0x4b47d4}){const _0x272283=_0x32fc,_0x314cbc=_0x145cb8['updates']??{},_0x91243d={'supported':![],'channel':_0x314cbc[_0x272283(0xa1)]===_0x272283(0x9b)?_0x272283(0x9b):_0x272283(0xc8),'phase':_0x272283(0xc1)+_0x272283(0xbc),'currentVersion':_0x53af17(),'remoteVersion':null,'comparisonResult':'unknown','hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'releaseName':null,'releaseDate':null,'releaseNotes':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null,'checkedAt':null,'message':_0x4b47d4,'error':null,'errorCode':'missing-'+_0x272283(0x92)+'cy'};let _0x21ee34=![];function _0x799bdc(){return{..._0x91243d,'currentVersion':_0x53af17()};}function _0x5cef0e(){const _0x271381=_0x272283,_0x456a69=_0x799bdc();for(const _0x22fb24 of BrowserWindow?.[_0x271381(0xc3)+_0x271381(0xc2)]?.()??[]){!_0x22fb24[_0x271381(0xc9)+_0x271381(0xba)]()&&_0x22fb24[_0x271381(0x93)+_0x271381(0xa0)][_0x271381(0x97)](_0x271381(0xab)+'te-state',_0x456a69);}_0x2944e8?.(_0x271381(0xab)+'te-state',_0x456a69);}function _0x2d5be4(){const _0x2405b3=_0x272283;if(_0x21ee34)return;_0x21ee34=!![],_0x51e3d5?.[_0x2405b3(0xc7)]?.(_0x2405b3(0x9e)+_0x2405b3(0xb8)+_0x2405b3(0x98)+_0x2405b3(0xad)+_0x2405b3(0xa2)+_0x2405b3(0xa4)+_0x2405b3(0xb6)+_0x2405b3(0xa7),{'reason':_0x4b47d4}),_0x5cef0e();}function _0x2846f9(){throw new Error(_0x4b47d4);}async function _0x3193ab(){_0x2d5be4(),_0x2846f9();}async function _0x26f60d(){_0x2d5be4(),_0x2846f9();}async function _0x4431c9(){_0x2d5be4(),_0x2846f9();}function _0x2879bf(){}function _0x456589(){_0x2d5be4();}function _0x5861d0(){}return{'initialize':_0x2d5be4,'getState':_0x799bdc,'checkForUpdates':_0x3193ab,'downloadUpdate':_0x26f60d,'quitAndInstall':_0x4431c9,'requestBackgroundCheck':_0x2879bf,'startBackgroundChecks':_0x456589,'markQuitObserved':_0x5861d0};}function isElectronUpdaterMissingError(_0x364bf2){const _0x48bdf7=_0x32fc;if(!_0x364bf2)return![];if(_0x364bf2&&typeof _0x364bf2==='object'&&'code'in _0x364bf2&&(_0x364bf2[_0x48bdf7(0xbd)]===_0x48bdf7(0xac)+'LE_NOT_F'+_0x48bdf7(0xa6)||_0x364bf2[_0x48bdf7(0xbd)]===_0x48bdf7(0xcc)+_0x48bdf7(0xb5))){const _0x3c868f=getErrorMessage(_0x364bf2);return _0x3c868f[_0x48bdf7(0xc5)]('\x27electro'+_0x48bdf7(0xa5)+'r\x27')||_0x3c868f['includes'](_0x48bdf7(0x9a)+_0x48bdf7(0xa5)+'r\x22');}return![];}export async function loadCreateUpdateController({logger:_0x2abc3e,importer:importer=_0x4ec800=>import(_0x4ec800)}={}){const _0x1beff8=_0x32fc;try{const _0x46cd4b=await importer(_0x1beff8(0x94)+_0x1beff8(0x9f));if(typeof _0x46cd4b[_0x1beff8(0x8f)+_0x1beff8(0x9c)+'roller']!==_0x1beff8(0xb1))throw new TypeError('updates/'+_0x1beff8(0xaa)+_0x1beff8(0x9d)+'oes\x20not\x20'+_0x1beff8(0xae)+_0x1beff8(0x8d)+_0x1beff8(0x90)+'oller');return _0x46cd4b[_0x1beff8(0x8f)+_0x1beff8(0x9c)+'roller'];}catch(_0x90f63e){if(!isElectronUpdaterMissingError(_0x90f63e))throw _0x90f63e;const _0xfd942e=_0x1beff8(0x8e)+_0x1beff8(0xb2)+_0x1beff8(0xc0)+_0x1beff8(0xa8)+_0x1beff8(0xa9);return _0x2abc3e?.[_0x1beff8(0xc7)]?.(_0x1beff8(0xc6)+'o\x20load\x20e'+_0x1beff8(0xb2)+_0x1beff8(0xaf),{'error':getErrorMessage(_0x90f63e),'reason':_0xfd942e}),_0x2650f3=>createUnavailableUpdateController({..._0x2650f3,'logger':_0x2650f3?.[_0x1beff8(0xb7)]??_0x2abc3e,'reason':_0xfd942e});}}export const __test__={'createUnavailableUpdateController':createUnavailableUpdateController,'isElectronUpdaterMissingError':isElectronUpdaterMissingError};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wujie-shell/core",
3
- "version": "0.1.5",
3
+ "version": "1.0.1",
4
4
  "type": "module",
5
5
  "main": "dist/src/index.mjs",
6
6
  "exports": {
@@ -13,22 +13,29 @@
13
13
  "default": "./dist/src/electron/main.mjs"
14
14
  },
15
15
  "./runtime": {
16
- "wujie-source": "./src/runtime.mjs",
17
- "default": "./dist/src/runtime.mjs"
16
+ "wujie-source": "./src/runtime/index.mjs",
17
+ "default": "./dist/src/runtime/index.mjs"
18
+ },
19
+ "./sessions": {
20
+ "wujie-source": "./src/sessions/session-sqlite-store.mjs",
21
+ "default": "./dist/src/sessions/session-sqlite-store.mjs"
18
22
  }
19
23
  },
20
24
  "bin": {
21
- "wujie-shell": "dist/bin/wujie-shell.mjs"
25
+ "wujie-shell": "bin/wujie-shell.mjs"
22
26
  },
23
27
  "files": [
28
+ "bin",
24
29
  "dist",
25
30
  "README.md"
26
31
  ],
27
32
  "dependencies": {
33
+ "electron-updater": "^6.8.3",
28
34
  "get-port": "^7.2.0",
35
+ "semver": "^7.8.3",
29
36
  "ws": "^8.20.0",
30
- "@wujie-shell/logger": "0.1.5",
31
- "@wujie-shell/config": "0.1.5"
37
+ "@wujie-shell/config": "1.0.1",
38
+ "@wujie-shell/logger": "1.0.1"
32
39
  },
33
40
  "scripts": {
34
41
  "build": "node ../../scripts/build-packages.mjs --package @wujie-shell/core"
@@ -1 +0,0 @@
1
- (function(_0x21725c,_0x15d903){const _0x50205e=_0x2b3f,_0x49bfb5=_0x21725c();while(!![]){try{const _0x4643e3=parseInt(_0x50205e(0x8e))/0x1*(parseInt(_0x50205e(0x80))/0x2)+parseInt(_0x50205e(0x7e))/0x3+parseInt(_0x50205e(0x9e))/0x4*(parseInt(_0x50205e(0x9d))/0x5)+parseInt(_0x50205e(0x85))/0x6+parseInt(_0x50205e(0x82))/0x7+-parseInt(_0x50205e(0xa1))/0x8+-parseInt(_0x50205e(0x90))/0x9*(parseInt(_0x50205e(0x98))/0xa);if(_0x4643e3===_0x15d903)break;else _0x49bfb5['push'](_0x49bfb5['shift']());}catch(_0x1dec81){_0x49bfb5['push'](_0x49bfb5['shift']());}}}(_0x1ebc,0x8e05f));import{existsSync}from'node:fs';function _0x1ebc(){const _0x3dfb90=['filter','skills','led\x20to\x20r','main','isArray','1PxMPxz','trim','823869RtHbTc','object','startsWi','ead\x20skil','push','lls]\x20fai','agents','ory','200zUnwCi','stringif','list','has','load','610FExZbR','15364xcnPHc','utf8','extraDir','6536624IzPgtP','876264kYeesA','name','2252800aMVcXF','entries','7819553eZAEPH','hell:ski','agentAll','1352736JuAwEu','find','length','map'];_0x1ebc=function(){return _0x3dfb90;};return _0x1ebc();}function _0x2b3f(_0x1c1615,_0x1f39c1){_0x1c1615=_0x1c1615-0x7e;const _0x1ebc90=_0x1ebc();let _0x2b3f60=_0x1ebc90[_0x1c1615];return _0x2b3f60;}import{readdir}from'node:fs/promises';import{join}from'node:path';import{asRecord,asStringArray,dedupeStrings,getTrimmedString}from'./utils.mjs';async function listValidSkillKeys(_0x57892b,_0x3fee07){const _0x3f7ad1=_0x2b3f;if(!existsSync(_0x57892b))return[];let _0x3c42fb=[];try{_0x3c42fb=await readdir(_0x57892b,{'withFileTypes':!![],'encoding':_0x3f7ad1(0x9f)});}catch(_0x3158e5){return console['warn']('[wujie-s'+_0x3f7ad1(0x83)+_0x3f7ad1(0x95)+_0x3f7ad1(0x8b)+_0x3f7ad1(0x93)+'ls\x20dir\x20a'+'gent='+_0x3fee07,_0x3158e5),[];}const _0x6d6ee3=[];for(const _0x1151ff of _0x3c42fb){if(!_0x1151ff['isDirect'+_0x3f7ad1(0x97)]())continue;const _0x8aae6e=_0x1151ff[_0x3f7ad1(0x7f)][_0x3f7ad1(0x8f)]();if(!_0x8aae6e||_0x8aae6e[_0x3f7ad1(0x92)+'th']('_'))continue;if(existsSync(join(_0x57892b,_0x8aae6e,'SKILL.md')))_0x6d6ee3['push'](_0x8aae6e);}return _0x6d6ee3;}export async function discoverBundledAgentSkills(_0x2d27bd,_0x48dacd){const _0x357be5=_0x2b3f,_0x2adb12=[],_0x16cf88={},_0xd951c8={};for(const _0x1f6be5 of _0x2d27bd){const _0xaa953=_0x48dacd(_0x1f6be5),_0x238a1a=await listValidSkillKeys(_0xaa953,_0x1f6be5);_0xd951c8[_0x1f6be5]=_0x238a1a,_0x238a1a['length']>0x0&&(_0x2adb12[_0x357be5(0x94)](_0xaa953),_0x16cf88[_0x1f6be5]=_0xaa953);}return{'extraDirs':_0x2adb12,'extraDirByAgent':_0x16cf88,'agentAllowlist':_0xd951c8};}export async function syncBundledAgentSkillsToConfig({agentIds:_0x18a978,resolveSkillsDir:_0x93fd61,readConfig:_0x3797bf,writeConfig:_0xa0a835,markConfigWriteHandledInternally:_0x4afcd9}){const _0xd8cff4=_0x2b3f,_0x4ef429=await discoverBundledAgentSkills(_0x18a978,_0x93fd61);if(_0x18a978[_0xd8cff4(0x87)]===0x0)return{'discovery':_0x4ef429,'changed':![]};const _0x2bed85=await _0x3797bf();let _0xe52d=![];const _0x19197c=asRecord(_0x2bed85['skills']),_0x276f1e=asRecord(_0x19197c[_0xd8cff4(0x9c)]),_0x5ee61d=asStringArray(_0x276f1e[_0xd8cff4(0xa0)+'s']),_0x32730c=dedupeStrings([..._0x5ee61d,..._0x4ef429['extraDir'+'s']]);JSON[_0xd8cff4(0x99)+'y'](_0x5ee61d)!==JSON[_0xd8cff4(0x99)+'y'](_0x32730c)&&(_0x276f1e[_0xd8cff4(0xa0)+'s']=_0x32730c,_0x19197c[_0xd8cff4(0x9c)]=_0x276f1e,_0x2bed85[_0xd8cff4(0x8a)]=_0x19197c,_0xe52d=!![]);const _0xddd61a=asRecord(_0x2bed85[_0xd8cff4(0x96)]),_0x492b34=Array[_0xd8cff4(0x8d)](_0xddd61a[_0xd8cff4(0x9a)])?_0xddd61a[_0xd8cff4(0x9a)]:[];if(_0x492b34[_0xd8cff4(0x87)]>0x0){const _0x331929=_0x492b34[_0xd8cff4(0x88)](_0x2ef3cc=>_0x2ef3cc&&typeof _0x2ef3cc===_0xd8cff4(0x91)?{..._0x2ef3cc}:_0x2ef3cc);let _0x8f112d=![];for(const [_0x1c8a6f,_0x141d0a]of Object[_0xd8cff4(0x81)](_0x4ef429[_0xd8cff4(0x84)+'owlist'])){if(_0x1c8a6f===_0xd8cff4(0x8c))continue;const _0x27d42b=_0x331929[_0xd8cff4(0x86)](_0x50ee14=>asRecord(_0x50ee14)['id']===_0x1c8a6f);if(!_0x27d42b)continue;const _0x350375=Array[_0xd8cff4(0x8d)](_0x27d42b[_0xd8cff4(0x8a)])?_0x27d42b[_0xd8cff4(0x8a)]:null;(!_0x350375||JSON[_0xd8cff4(0x99)+'y'](_0x350375)!==JSON[_0xd8cff4(0x99)+'y'](_0x141d0a))&&(_0x27d42b[_0xd8cff4(0x8a)]=_0x141d0a,_0x8f112d=!![]);}_0x8f112d&&(_0xddd61a[_0xd8cff4(0x9a)]=_0x331929,_0x2bed85[_0xd8cff4(0x96)]=_0xddd61a,_0xe52d=!![]);}return _0xe52d&&(_0x4afcd9?.(),await _0xa0a835(_0x2bed85)),{'discovery':_0x4ef429,'changed':_0xe52d};}export function filterSkillsForAgent(_0x5ebfd3,_0x3051c5,_0x3ed5b5=''){const _0x3352a2=_0x2b3f,_0x1bf6a6=Array['isArray'](asRecord(_0x5ebfd3)[_0x3352a2(0x8a)])?asRecord(_0x5ebfd3)[_0x3352a2(0x8a)]:[],_0x559c77=getTrimmedString(_0x3ed5b5)||_0x3352a2(0x8c),_0x30cd63=Array[_0x3352a2(0x8d)](asRecord(asRecord(_0x3051c5)[_0x3352a2(0x96)])[_0x3352a2(0x9a)])?asRecord(asRecord(_0x3051c5)[_0x3352a2(0x96)])['list']:[],_0x1ada21=_0x30cd63['map'](asRecord)['find'](_0x5b6bb7=>getTrimmedString(_0x5b6bb7['id'])===_0x559c77),_0x37271b=_0x1ada21&&Array[_0x3352a2(0x8d)](_0x1ada21[_0x3352a2(0x8a)])?new Set(asStringArray(_0x1ada21[_0x3352a2(0x8a)])):null;if(!_0x37271b)return _0x5ebfd3;return{...asRecord(_0x5ebfd3),'skills':_0x1bf6a6[_0x3352a2(0x89)](_0x5daf80=>_0x37271b[_0x3352a2(0x9b)](getTrimmedString(asRecord(_0x5daf80)[_0x3352a2(0x7f)])))};}
@@ -1 +0,0 @@
1
- (function(_0x4778a7,_0x353e1b){const _0x2caacd=_0xa985,_0x717dcb=_0x4778a7();while(!![]){try{const _0x10d803=parseInt(_0x2caacd(0x1e6))/0x1+parseInt(_0x2caacd(0x1bd))/0x2+-parseInt(_0x2caacd(0x1e0))/0x3+parseInt(_0x2caacd(0x1c9))/0x4+-parseInt(_0x2caacd(0x1c2))/0x5+-parseInt(_0x2caacd(0x1c0))/0x6*(-parseInt(_0x2caacd(0x1b7))/0x7)+parseInt(_0x2caacd(0x1e3))/0x8*(-parseInt(_0x2caacd(0x1c6))/0x9);if(_0x10d803===_0x353e1b)break;else _0x717dcb['push'](_0x717dcb['shift']());}catch(_0xbe4176){_0x717dcb['push'](_0x717dcb['shift']());}}}(_0x1f4b,0xa0b7b));import{existsSync}from'node:fs';import{cp,mkdir,readFile,readdir,rm}from'node:fs/promises';function _0x1f4b(){const _0x104c56=['parse','includes','1289226LiiFqR','error','6232680RFXMpL','nts]\x20fai','tyDomain','agents','2684754muwTdF','filter','trim','1258284LYHnlO','main','capabili','some','isArray','ync\x20bund','emoji','[wujie-s','managedP','aths','relPath','avatar','afe\x20mana','toolDoma','version','map','led\x20to\x20s','son','absPath','ory','icon','name','cnName','1513998wSfDPo','workspac','readme.j','8XYHbXa','led\x20agen','agentId','498346ZdENxF','all','length','startsWi','warn','35uhzMfW','model','find','nts]\x20ski','hell:age','isDirect','1641070zFPRPJ'];_0x1f4b=function(){return _0x104c56;};return _0x1f4b();}import{dirname,join,resolve,sep}from'node:path';import{asRecord,asStringArray,getTrimmedString,readJson}from'./utils.mjs';function toOptionalString(_0x3a7b83){const _0x361aae=getTrimmedString(_0x3a7b83);return _0x361aae||undefined;}export async function loadBundledAgents(_0x355382){const _0x2b60e2=_0xa985;let _0x2dece7=[];try{_0x2dece7=await readdir(_0x355382,{'withFileTypes':!![],'encoding':'utf8'});}catch{return[];}const _0x5e2a32=await Promise[_0x2b60e2(0x1e7)](_0x2dece7[_0x2b60e2(0x1c7)](_0x19780d=>_0x19780d[_0x2b60e2(0x1bc)+_0x2b60e2(0x1dc)]())[_0x2b60e2(0x1d8)](async _0xfffbfa=>{const _0x1ce901=_0x2b60e2,_0x39a5b3=_0xfffbfa[_0x1ce901(0x1de)][_0x1ce901(0x1c8)]();if(!_0x39a5b3)return null;const _0x466702=await readJson(join(_0x355382,_0x39a5b3,'readme.j'+_0x1ce901(0x1da)),{}),_0x32961f=asRecord(_0x466702),_0x20d280=toOptionalString(_0x32961f[_0x1ce901(0x1de)])??_0x39a5b3;if(!_0x20d280)return null;return{'name':_0x20d280,'cnName':toOptionalString(_0x32961f[_0x1ce901(0x1df)]),'avatar':toOptionalString(_0x32961f[_0x1ce901(0x1d4)]),'icon':toOptionalString(_0x32961f[_0x1ce901(0x1dd)]),'emoji':toOptionalString(_0x32961f[_0x1ce901(0x1cf)]),'model':toOptionalString(_0x32961f[_0x1ce901(0x1b8)]),'version':toOptionalString(_0x32961f['version']),'capabilityDomains':asStringArray(_0x32961f[_0x1ce901(0x1cb)+_0x1ce901(0x1c4)+'s']??_0x32961f[_0x1ce901(0x1d6)+'ins']),'managedPaths':asStringArray(_0x32961f[_0x1ce901(0x1d1)+_0x1ce901(0x1d2)])};}));return _0x5e2a32[_0x2b60e2(0x1c7)](Boolean);}async function readJsonVersion(_0x5d7781){const _0x2408f8=_0xa985;try{const _0x4bc657=JSON[_0x2408f8(0x1be)](await readFile(_0x5d7781,'utf8'));return getTrimmedString(asRecord(_0x4bc657)[_0x2408f8(0x1d7)])||null;}catch{return null;}}function assertSafeManagedPath(_0x3ddd90,_0x29cf3e){const _0x2c06ab=_0xa985,_0x28cdf5=getTrimmedString(_0x29cf3e);if(!_0x28cdf5||_0x28cdf5[_0x2c06ab(0x1e9)+'th']('/')||_0x28cdf5[_0x2c06ab(0x1bf)]('..'))return null;const _0x5e9c3b=resolve(_0x3ddd90),_0x580f0a=resolve(join(_0x3ddd90,_0x28cdf5));if(_0x580f0a!==_0x5e9c3b&&!_0x580f0a[_0x2c06ab(0x1e9)+'th'](_0x5e9c3b+sep))return null;return{'relPath':_0x28cdf5,'absPath':_0x580f0a};}async function copyManagedPaths(_0x304c87,_0x2e1e85,_0x29adb1){const _0x2ee365=_0xa985;if(_0x29adb1[_0x2ee365(0x1e8)]===0x0){await cp(_0x304c87,_0x2e1e85,{'recursive':!![]});return;}for(const _0x819f3b of _0x29adb1){const _0x3d85ab=assertSafeManagedPath(_0x2e1e85,_0x819f3b);if(!_0x3d85ab){console[_0x2ee365(0x1b6)](_0x2ee365(0x1d0)+_0x2ee365(0x1bb)+_0x2ee365(0x1ba)+'pped\x20uns'+_0x2ee365(0x1d5)+'gedPath:'+'\x20'+_0x819f3b);continue;}const _0x31547e=join(_0x304c87,_0x3d85ab[_0x2ee365(0x1d3)]);if(!existsSync(_0x31547e)){await rm(_0x3d85ab['absPath'],{'recursive':!![],'force':!![]});continue;}await rm(_0x3d85ab['absPath'],{'recursive':!![],'force':!![]}),await mkdir(dirname(_0x3d85ab[_0x2ee365(0x1db)]),{'recursive':!![]}),await cp(_0x31547e,_0x3d85ab[_0x2ee365(0x1db)],{'recursive':!![]});}}function _0xa985(_0x29d612,_0x424e36){_0x29d612=_0x29d612-0x1b6;const _0x1f4b9e=_0x1f4b();let _0xa9856f=_0x1f4b9e[_0x29d612];return _0xa9856f;}export async function ensureBundledAgents({runtimeBundledAgentsDir:_0x1c6db4,stateDir:_0x2a84bc,listAgents:_0x226e27,createAgent:_0x36e80c,updateAgent:_0x5e3242,syncSkills:_0x592932}){const _0x1e807b=_0xa985;let _0x528c6d=![];const _0x3960c5=await _0x226e27(),_0x23702f=Array[_0x1e807b(0x1cd)](_0x3960c5[_0x1e807b(0x1c5)])?_0x3960c5[_0x1e807b(0x1c5)]:[],_0x49c622=_0x23702f[_0x1e807b(0x1b9)](_0x462d7a=>_0x462d7a?.['id']==='main'),_0x28d618=getTrimmedString(_0x49c622?.[_0x1e807b(0x1e1)+'e'])||join(_0x2a84bc,_0x1e807b(0x1e1)+'e'),_0x5402b3=await loadBundledAgents(_0x1c6db4);for(const _0x123003 of _0x5402b3){const {name:_0x32e676,cnName:_0x444d5d,avatar:_0x5cf8c5,emoji:_0x181ae1,version:_0x191712,managedPaths:_0x20ec0b}=_0x123003,_0x50f41f=_0x32e676===_0x1e807b(0x1ca),_0x3d67b8=_0x50f41f?_0x28d618:join(dirname(_0x28d618),_0x1e807b(0x1e1)+'e-'+_0x32e676),_0x345a3a=join(_0x1c6db4,_0x32e676);if(!existsSync(_0x345a3a))continue;try{const _0x143cde=_0x50f41f||_0x23702f[_0x1e807b(0x1cc)](_0x537329=>_0x537329?.['id']===_0x32e676);if(_0x143cde){const _0x147df4=await readJsonVersion(join(_0x3d67b8,_0x1e807b(0x1e2)+'son'));if(_0x191712&&_0x147df4&&_0x191712===_0x147df4)continue;await mkdir(_0x3d67b8,{'recursive':!![]}),await copyManagedPaths(_0x345a3a,_0x3d67b8,_0x20ec0b);}else await rm(_0x3d67b8,{'recursive':!![],'force':!![]}),await mkdir(_0x3d67b8,{'recursive':!![]}),await cp(_0x345a3a,_0x3d67b8,{'recursive':!![]});_0x528c6d=!![];if(_0x50f41f)continue;if(_0x143cde){const _0x1984cc={'agentId':_0x32e676,'workspace':_0x3d67b8};if(_0x444d5d)_0x1984cc[_0x1e807b(0x1de)]=_0x444d5d;if(_0x5cf8c5)_0x1984cc[_0x1e807b(0x1d4)]=_0x5cf8c5;if(_0x181ae1)_0x1984cc['emoji']=_0x181ae1;await _0x5e3242(_0x1984cc);}else{const _0x32355c={'name':_0x32e676,'workspace':_0x3d67b8};if(_0x5cf8c5)_0x32355c[_0x1e807b(0x1d4)]=_0x5cf8c5;if(_0x181ae1)_0x32355c[_0x1e807b(0x1cf)]=_0x181ae1;const _0xd76a4c=asRecord(await _0x36e80c(_0x32355c));_0x444d5d&&await _0x5e3242({'agentId':getTrimmedString(_0xd76a4c[_0x1e807b(0x1e5)])||_0x32e676,'name':_0x444d5d});}}catch(_0x56523c){console[_0x1e807b(0x1c1)]('[wujie-s'+_0x1e807b(0x1bb)+_0x1e807b(0x1c3)+_0x1e807b(0x1d9)+_0x1e807b(0x1ce)+_0x1e807b(0x1e4)+'t\x20\x22'+_0x32e676+'\x22',_0x56523c);}}return await _0x592932?.({'agentIds':_0x5402b3[_0x1e807b(0x1d8)](_0x54de8e=>_0x54de8e['name']),'mainWorkspace':_0x28d618}),{'didUpdate':_0x528c6d,'bundledAgents':_0x5402b3};}
@@ -1 +0,0 @@
1
- const _0x382e09=_0x4756;(function(_0x3233bc,_0x2d16cd){const _0x4afdf9=_0x4756,_0x17263b=_0x3233bc();while(!![]){try{const _0x59748b=-parseInt(_0x4afdf9(0x99))/0x1*(parseInt(_0x4afdf9(0xcb))/0x2)+-parseInt(_0x4afdf9(0xf5))/0x3*(parseInt(_0x4afdf9(0xa3))/0x4)+-parseInt(_0x4afdf9(0xae))/0x5+parseInt(_0x4afdf9(0x100))/0x6*(-parseInt(_0x4afdf9(0x105))/0x7)+parseInt(_0x4afdf9(0xc7))/0x8*(-parseInt(_0x4afdf9(0xec))/0x9)+parseInt(_0x4afdf9(0xfe))/0xa*(parseInt(_0x4afdf9(0xd3))/0xb)+parseInt(_0x4afdf9(0xc4))/0xc*(parseInt(_0x4afdf9(0xb7))/0xd);if(_0x59748b===_0x2d16cd)break;else _0x17263b['push'](_0x17263b['shift']());}catch(_0x25e5c3){_0x17263b['push'](_0x17263b['shift']());}}}(_0x2ad1,0x8fe5f));import{randomBytes}from'node:crypto';import{existsSync,unwatchFile,watchFile}from'node:fs';import{mkdir,writeFile}from'node:fs/promises';function _0x2ad1(){const _0x19f648=['anthropi','ompleted','1353HoXAFH','per-chan','map','pdated','gateway\x20','exists','image','stringif','\x20for\x20con','error','session','mtimeMs','ced','her\x20obse','ConfigPa','idle','ync','onfig\x20ch','runtimeR','memory','nfig\x20syn','last-goo','push','c-messag','256kb','5068899ODAJPD','configPa','modelNam','openclaw','ready\x20cu','openai-c','ent\x20ensu','compat','g\x20writte','24pDclEK','now','config\x20s','rnal\x20wri','nto\x20open','ompletio','mode','models','persiste','46910LtFDAX','dmScope','1767732GixVmA','logsDir','gatewayS','config','Key','21TsjPpw','fig\x20chan','info\x20loa','defaults','ttings\x20u','manifest','info','nel-peer','tarted','ensure\x20i','workspac','hex','penclaw\x20','fig','ange','\x20config\x20','model\x20se','skills','deviceId','extraDir','text','product\x20','config\x20c','onfig\x20al','yName','length','memory-c','odel','baseUrl','-questio','utf8','provider','config\x20f','tart','eady\x20cur','plugins','entries','nitial\x20o','her\x20igno','8KJnlkt','ing','toString','ports','primary','emory','oot','modelBas','initial\x20','plugins\x20','160632IWumGR','eUrl','reload\x20s','full','self-ope','filter','ated','model','agents','protocol','model\x20co','4344865OAfexQ','nfig\x20alr','rrent','aw\x20confi','pluginId','runtime\x20','plugin\x20c','merge','stateDir','4886102sLadWU','isArray','ailed','slice','imageMod','red','allow','local','projectR','toISOStr','changed','hange','red\x20inte','96FeFEkP','apiKey','defaultM','8ElLbUY','lastGood','indexOf','nChange','89276UkIyDW','d\x20opencl','ask-user','written','rved\x20ext','active-m'];_0x2ad1=function(){return _0x19f648;};return _0x2ad1();}import{dirname,join}from'node:path';function _0x4756(_0x210d88,_0x4cb2f9){_0x210d88=_0x210d88-0x8f;const _0x2ad19f=_0x2ad1();let _0x47567a=_0x2ad19f[_0x210d88];return _0x47567a;}import _0x5e04fc,{portNumbers}from'get-port';import{ensureShellStateDirs,getConfigPaths,readJsonFile,writeJsonFile}from'@wujie-shell/config';import{asRecord,dedupeStrings,getTrimmedString,writeJson}from'./utils.mjs';import{loadRuntimeInfo}from'./runtime.mjs';import{createRuntimeLogger,summarizeRuntimeManifest}from'./runtime-logger.mjs';import{syncRuntimeManifestPlugins}from'./plugin-sync.mjs';const MEMORY_CORE_PLUGIN_ID=_0x382e09(0x11f)+'ore',ACTIVE_MEMORY_PLUGIN_ID=_0x382e09(0xd0)+_0x382e09(0x9e),ASK_USER_QUESTION_PLUGIN_ID=_0x382e09(0xcd)+_0x382e09(0x8f)+'n';function createToken(){const _0x47af4f=_0x382e09;return randomBytes(0x18)[_0x47af4f(0x9b)](_0x47af4f(0x110));}function createProviderModelConfig(_0x34fd0d,_0x535b70=![]){const _0xad7efe=_0x382e09;return{'id':_0x34fd0d,'name':_0x34fd0d,'reasoning':!![],'input':_0x535b70?[_0xad7efe(0x119),_0xad7efe(0xd9)]:['text'],'cost':{'input':0x0,'output':0x0,'cacheRead':0x0,'cacheWrite':0x0},'contextWindow':0x3e800,'maxTokens':0x3e800};}function createProviderConfig(_0x467ade){const _0x3e08e5=_0x382e09;return{'apiKey':_0x467ade[_0x3e08e5(0xc5)],'api':_0x467ade[_0x3e08e5(0xac)]===_0x3e08e5(0xd1)+'c'?_0x3e08e5(0xd1)+_0x3e08e5(0xea)+'es':_0x3e08e5(0xf1)+_0x3e08e5(0xfa)+'ns',..._0x467ade[_0x3e08e5(0x121)]?{'baseUrl':_0x467ade[_0x3e08e5(0x121)]}:{},'models':[createProviderModelConfig(_0x467ade[_0x3e08e5(0xee)+'e'])]};}function createRuntimePluginBootstrap(_0x373a98){const _0x15e4c9=_0x382e09,_0xbe4663={},_0xff34e1=[];for(const _0x3a5be9 of _0x373a98??[]){const _0x3d7575=getTrimmedString(_0x3a5be9[_0x15e4c9(0xb2)]);if(!_0x3d7575)continue;_0xbe4663[_0x3d7575]={'enabled':!![]},_0xff34e1[_0x15e4c9(0xe9)](_0x3d7575);}return!_0xbe4663[MEMORY_CORE_PLUGIN_ID]&&(_0xbe4663[MEMORY_CORE_PLUGIN_ID]={'enabled':!![],'config':{'dreaming':{'enabled':!![]}}}),!_0xbe4663[ACTIVE_MEMORY_PLUGIN_ID]&&(_0xbe4663[ACTIVE_MEMORY_PLUGIN_ID]={'enabled':!![]}),{'entries':_0xbe4663,'allow':dedupeStrings([..._0xff34e1,MEMORY_CORE_PLUGIN_ID,ACTIVE_MEMORY_PLUGIN_ID]),'bundledDiscovery':_0x15e4c9(0xf3)};}function createInitialOpenClawConfig(_0x6ec7e0,_0x3a5a73){const _0x29b916=_0x382e09,_0x43bd14=new Date()[_0x29b916(0xc0)+_0x29b916(0x9a)](),_0x512d9e=join(_0x6ec7e0['dataDir'],_0x29b916(0x10f)+'e'),_0x1f9670=asRecord(_0x6ec7e0['models']),_0x5c6ea9=getTrimmedString(_0x1f9670[_0x29b916(0xc6)+_0x29b916(0x120)]),_0x180c65={'workspace':_0x512d9e,'memorySearch':{'enabled':!![],'sources':[_0x29b916(0xe6)],'provider':'auto'},'compaction':{'memoryFlush':{'enabled':!![],'forceFlushTranscriptBytes':_0x29b916(0xeb),'softThresholdTokens':0x30d40}}};return _0x5c6ea9&&(_0x180c65[_0x29b916(0xaa)]={'primary':_0x5c6ea9}),{'meta':{'lastTouchedVersion':_0x3a5a73[_0x29b916(0xef)+'Version'],'lastTouchedAt':_0x43bd14},'wizard':{'lastRunAt':_0x43bd14,'lastRunVersion':_0x3a5a73['openclaw'+'Version'],'lastRunCommand':'onboard','lastRunMode':_0x29b916(0xbe)},'models':{'mode':_0x29b916(0xb5),'providers':asRecord(_0x1f9670[_0x29b916(0x91)+'s'])},'agents':{'defaults':_0x180c65},'tools':{'profile':_0x29b916(0xa6)},'plugins':createRuntimePluginBootstrap(_0x3a5a73['plugins']),'skills':{'load':{'extraDirs':['skills']}},'session':{'dmScope':_0x29b916(0xd4)+_0x29b916(0x10c),'reset':{'mode':_0x29b916(0xe2)}}};}function hasMeaningfulProductModels(_0x21dcc4){const _0xa10f64=_0x382e09,_0x902f3=asRecord(_0x21dcc4[_0xa10f64(0xfc)]);return Object['keys'](asRecord(_0x902f3[_0xa10f64(0x91)+'s']))[_0xa10f64(0x11e)]>0x0||Boolean(getTrimmedString(_0x902f3[_0xa10f64(0xc6)+_0xa10f64(0x120)]));}function summarizeOpenClawConfig(_0x5eeb74){const _0x143956=_0x382e09,_0x488566=asRecord(_0x5eeb74[_0x143956(0xfc)]),_0x264ad9=asRecord(_0x488566['provider'+'s']),_0x33f295=asRecord(_0x5eeb74[_0x143956(0xab)]),_0x395072=asRecord(_0x33f295[_0x143956(0x108)]),_0x2f53b3=asRecord(_0x395072['model']),_0x2fc840=asRecord(_0x5eeb74['plugins']),_0x49aa7a=asRecord(_0x2fc840[_0x143956(0x96)]),_0x5b6585=asRecord(_0x5eeb74[_0x143956(0x116)]),_0x43f553=asRecord(_0x5b6585['load']),_0x53a048=asRecord(_0x5eeb74[_0x143956(0xdd)]),_0x5c749b=Array['isArray'](_0x43f553[_0x143956(0x118)+'s'])?_0x43f553[_0x143956(0x118)+'s']:[];return{'providerCount':Object['keys'](_0x264ad9)[_0x143956(0x11e)],'defaultModel':getTrimmedString(_0x2f53b3[_0x143956(0x9d)]),'pluginEntryCount':Object['keys'](_0x49aa7a)[_0x143956(0x11e)],'pluginAllowCount':Array['isArray'](_0x2fc840[_0x143956(0xbd)])?_0x2fc840['allow'][_0x143956(0x11e)]:0x0,'skillExtraDirCount':_0x5c749b[_0x143956(0x11e)],'sessionDmScope':getTrimmedString(_0x53a048[_0x143956(0xff)])};}function syncProductModels(_0x3e9a39,_0x15786b){const _0x51ab2e=_0x382e09;if(!hasMeaningfulProductModels(_0x15786b))return{'config':_0x3e9a39,'changed':![]};let _0x51966f=![];const _0x481e66=asRecord(_0x15786b[_0x51ab2e(0xfc)]),_0xc8ad18=asRecord(_0x481e66[_0x51ab2e(0x91)+'s']),_0x33e31b=getTrimmedString(_0x481e66[_0x51ab2e(0xc6)+_0x51ab2e(0x120)]),_0x44462f=asRecord(_0x3e9a39['models']),_0x1a3655=asRecord(_0x44462f[_0x51ab2e(0x91)+'s']);for(const [_0x43b7ea,_0x42676c]of Object['entries'](_0xc8ad18)){const _0x5b23ef=asRecord(_0x1a3655[_0x43b7ea]),_0x1287bd=asRecord(_0x42676c);JSON[_0x51ab2e(0xda)+'y'](_0x5b23ef)!==JSON['stringif'+'y'](_0x1287bd)&&(_0x1a3655[_0x43b7ea]=_0x1287bd,_0x51966f=!![]);}_0x44462f[_0x51ab2e(0xfb)]!==_0x51ab2e(0xb5)&&(_0x44462f[_0x51ab2e(0xfb)]=_0x51ab2e(0xb5),_0x51966f=!![]);_0x44462f['provider'+'s']!==_0x1a3655&&(_0x44462f[_0x51ab2e(0x91)+'s']=_0x1a3655,_0x51966f=!![]);_0x3e9a39[_0x51ab2e(0xfc)]!==_0x44462f&&(_0x3e9a39[_0x51ab2e(0xfc)]=_0x44462f,_0x51966f=!![]);if(_0x33e31b){const _0x510239=asRecord(_0x3e9a39[_0x51ab2e(0xab)]),_0x4983ea=asRecord(_0x510239[_0x51ab2e(0x108)]),_0x3da56d=asRecord(_0x4983ea[_0x51ab2e(0xaa)]);_0x3da56d['primary']!==_0x33e31b&&(_0x4983ea[_0x51ab2e(0xaa)]={..._0x3da56d,'primary':_0x33e31b},_0x510239[_0x51ab2e(0x108)]=_0x4983ea,_0x3e9a39[_0x51ab2e(0xab)]=_0x510239,_0x51966f=!![]);}return{'config':_0x3e9a39,'changed':_0x51966f};}export function createConfigController(_0x3cda29){const _0x27feac=_0x382e09,_0x52d9f2=getConfigPaths(_0x3cda29),_0x29b4a0=createRuntimeLogger(_0x52d9f2,'config');let _0x27aa30=![],_0x22f32c=0x0,_0x26c575=null,_0x1f1b52=null;function _0x3bcafb(){return _0x52d9f2['configPa'+'th'];}function _0x2bfe6f(){const _0x284c17=_0x4756;return _0x52d9f2[_0x284c17(0xb6)];}function _0x9df177(){const _0x54d7e6=_0x4756;return _0x52d9f2[_0x54d7e6(0x117)+'entityPa'+'th'];}async function _0x16578d(){const _0x33a19d=_0x4756;await ensureShellStateDirs(_0x3cda29),process.env.OPENCLAW_STATE_DIR=_0x52d9f2[_0x33a19d(0xb6)],process.env.OPENCLAW_CONFIG_PATH=_0x52d9f2[_0x33a19d(0xed)+'th'],_0x29b4a0?.[_0x33a19d(0x10b)]('openclaw'+_0x33a19d(0x114)+'environm'+_0x33a19d(0xf2)+_0x33a19d(0xbc),{'stateDir':_0x52d9f2[_0x33a19d(0xb6)],'configPath':_0x52d9f2[_0x33a19d(0xed)+'th'],'logsDir':_0x52d9f2[_0x33a19d(0x101)]});}async function _0x49612c(){const _0x59e26c=_0x4756,_0x26687d=Date[_0x59e26c(0xf6)]();_0x29b4a0?.['info']('ensure\x20i'+_0x59e26c(0x97)+_0x59e26c(0x111)+'config\x20s'+_0x59e26c(0x10d),{'configPath':_0x52d9f2[_0x59e26c(0xed)+'th'],'stateDir':_0x52d9f2[_0x59e26c(0xb6)]});try{await _0x16578d();const _0x48a743=await loadRuntimeInfo(_0x3cda29[_0x59e26c(0xbf)+'oot']);_0x29b4a0?.['info'](_0x59e26c(0xb3)+_0x59e26c(0x107)+'ded\x20for\x20'+_0x59e26c(0xf7)+_0x59e26c(0xe3),{'runtimeRoot':_0x48a743[_0x59e26c(0xe5)+_0x59e26c(0x9f)],'manifest':summarizeRuntimeManifest(_0x48a743[_0x59e26c(0x10a)])});if(!existsSync(_0x52d9f2[_0x59e26c(0xed)+'th'])){const _0x221635=createInitialOpenClawConfig(_0x3cda29,_0x48a743);_0x29b4a0?.['info'](_0x59e26c(0xa1)+_0x59e26c(0xef)+_0x59e26c(0x114)+'missing;'+'\x20creatin'+'g',{'configPath':_0x52d9f2[_0x59e26c(0xed)+'th'],'config':summarizeOpenClawConfig(_0x221635)}),_0x7b32bd(),await _0x574c39(_0x221635,_0x59e26c(0xa1)+_0x59e26c(0xef)+_0x59e26c(0x114)+'created'),await writeJson(_0x52d9f2[_0x59e26c(0xc8)+'ConfigPa'+'th'],_0x221635),_0x29b4a0?.[_0x59e26c(0x10b)](_0x59e26c(0xe8)+'d\x20opencl'+_0x59e26c(0xb1)+_0x59e26c(0xf4)+'n',{'path':_0x52d9f2[_0x59e26c(0xc8)+_0x59e26c(0xe1)+'th'],'reason':_0x59e26c(0xa1)+'openclaw'+_0x59e26c(0x114)+'created'});}else _0x29b4a0?.[_0x59e26c(0x10b)](_0x59e26c(0xa1)+_0x59e26c(0xef)+'\x20config\x20'+_0x59e26c(0xd8),{'configPath':_0x52d9f2[_0x59e26c(0xed)+'th']});await _0x1416f3(),await _0x3f9c43(),_0x29b4a0?.[_0x59e26c(0x10b)]('ensure\x20i'+_0x59e26c(0x97)+_0x59e26c(0x111)+_0x59e26c(0x11b)+_0x59e26c(0xd2),{'durationMs':Date[_0x59e26c(0xf6)]()-_0x26687d});}catch(_0x46f70d){_0x29b4a0?.[_0x59e26c(0xdc)](_0x59e26c(0x10e)+_0x59e26c(0x97)+_0x59e26c(0x111)+'config\x20f'+_0x59e26c(0xb9),{'durationMs':Date[_0x59e26c(0xf6)]()-_0x26687d,'error':_0x46f70d});throw _0x46f70d;}}async function _0x43fe50(){const _0x35bbd4=_0x4756;return await _0x49612c(),readJsonFile(_0x52d9f2[_0x35bbd4(0xed)+'th'],{});}async function _0x4147ff(){return readJsonFile(_0x52d9f2['configPa'+'th'],{});}async function _0x574c39(_0x15cf7f,_0x592d8a=_0x27feac(0xef)+_0x27feac(0x114)+_0x27feac(0xce)){const _0x49a5e9=_0x27feac;await mkdir(dirname(_0x52d9f2[_0x49a5e9(0xed)+'th']),{'recursive':!![]}),await writeFile(_0x52d9f2[_0x49a5e9(0xed)+'th'],JSON[_0x49a5e9(0xda)+'y'](_0x15cf7f,null,0x2)+'\x0a',_0x49a5e9(0x90)),_0x29b4a0?.[_0x49a5e9(0x10b)](_0x592d8a,{'configPath':_0x52d9f2[_0x49a5e9(0xed)+'th'],'config':summarizeOpenClawConfig(_0x15cf7f)});}async function _0x3f9c43(){const _0x4cdcf4=_0x27feac,_0xa03578=await loadRuntimeInfo(_0x3cda29['projectR'+_0x4cdcf4(0x9f)]),_0x144aaf=await _0x4147ff(),_0x12d228=syncRuntimeManifestPlugins(_0x144aaf['plugins'],_0xa03578[_0x4cdcf4(0x95)]);_0x12d228[_0x4cdcf4(0xc1)]||!_0x144aaf[_0x4cdcf4(0x95)]?(_0x144aaf[_0x4cdcf4(0x95)]=_0x12d228[_0x4cdcf4(0x95)],_0x7b32bd(),await _0x574c39(_0x144aaf,_0x4cdcf4(0xb3)+_0x4cdcf4(0xa2)+'synced\x20i'+_0x4cdcf4(0xf9)+'claw\x20con'+_0x4cdcf4(0x112)),_0x29b4a0?.[_0x4cdcf4(0x10b)]('runtime\x20'+_0x4cdcf4(0xb4)+_0x4cdcf4(0xe4)+'anged',{'runtimePluginCount':_0xa03578[_0x4cdcf4(0x95)][_0x4cdcf4(0x11e)],'config':summarizeOpenClawConfig(_0x144aaf)})):_0x29b4a0?.['info'](_0x4cdcf4(0xb3)+_0x4cdcf4(0xb4)+_0x4cdcf4(0x11c)+_0x4cdcf4(0xf0)+_0x4cdcf4(0xb0),{'runtimePluginCount':_0xa03578['plugins']['length']});}async function _0x1416f3(){const _0x40b2c3=_0x27feac,_0x2c4f02=await _0x4147ff(),_0x133dd8=syncProductModels(_0x2c4f02,_0x3cda29);_0x133dd8[_0x40b2c3(0xc1)]?(await _0xeedc9(_0x133dd8[_0x40b2c3(0x103)],_0x40b2c3(0x11a)+_0x40b2c3(0xad)+'nfig\x20upd'+_0x40b2c3(0xa9)),_0x29b4a0?.[_0x40b2c3(0x10b)](_0x40b2c3(0x11a)+_0x40b2c3(0xad)+_0x40b2c3(0xe7)+_0x40b2c3(0xdf),{'config':summarizeOpenClawConfig(_0x133dd8['config'])})):_0x29b4a0?.[_0x40b2c3(0x10b)](_0x40b2c3(0x11a)+_0x40b2c3(0xad)+_0x40b2c3(0xaf)+_0x40b2c3(0x94)+'rent',{'hasProductModels':hasMeaningfulProductModels(_0x3cda29)});}async function _0x47d650(){const _0x19cf99=_0x27feac;await _0x49612c();const _0x38c86a=await _0x5e04fc({'port':portNumbers(_0x3cda29[_0x19cf99(0x9c)][_0x19cf99(0x102)+_0x19cf99(0x93)],_0x3cda29[_0x19cf99(0x9c)][_0x19cf99(0x102)+_0x19cf99(0x93)]+0x63)});return{'token':createToken(),'port':_0x38c86a};}async function _0x354a61(){const _0x378c4b=_0x27feac,_0x25258a=await _0x43fe50(),_0x147fbf=asRecord(_0x25258a[_0x378c4b(0xab)]),_0x2ee768=asRecord(_0x147fbf[_0x378c4b(0x108)]),_0x582e3=asRecord(_0x2ee768[_0x378c4b(0xaa)]),_0x13ab79=getTrimmedString(_0x582e3[_0x378c4b(0x9d)]),_0x147f2f=_0x13ab79[_0x378c4b(0xc9)]('/'),_0x39bf1a=_0x147f2f>0x0?_0x13ab79[_0x378c4b(0xba)](0x0,_0x147f2f):_0x13ab79,_0xb963b0=_0x147f2f>0x0?_0x13ab79[_0x378c4b(0xba)](_0x147f2f+0x1):'',_0xb5cda4=asRecord(asRecord(_0x25258a[_0x378c4b(0xfc)])[_0x378c4b(0x91)+'s']),_0x1ca865=asRecord(_0xb5cda4[_0x39bf1a]);return{'provider':_0x39bf1a||'','apiKey':getTrimmedString(_0x1ca865[_0x378c4b(0xc5)]),'modelName':_0xb963b0,'modelBaseUrl':getTrimmedString(_0x1ca865['baseUrl'])};}async function _0x4c21b7(_0x5d8d23,_0x4bac4c={}){const _0x26ae10=_0x27feac,_0x38aaa5=await _0x43fe50(),_0x394c22=_0x5d8d23[_0x26ae10(0x91)]||'default',_0x26240e=_0x394c22+'/'+_0x5d8d23[_0x26ae10(0xee)+'e'],_0x20505b=asRecord(_0x38aaa5[_0x26ae10(0xfc)]),_0x4cba22=asRecord(_0x20505b['provider'+'s']);_0x4cba22[_0x394c22]={...asRecord(_0x4cba22[_0x394c22]),...createProviderConfig({'apiKey':_0x5d8d23[_0x26ae10(0xc5)]||'','protocol':_0x5d8d23[_0x26ae10(0xac)]||'openai','baseUrl':_0x5d8d23[_0x26ae10(0xa0)+_0x26ae10(0xa4)]||_0x5d8d23[_0x26ae10(0x121)]||'','modelName':_0x5d8d23[_0x26ae10(0xee)+'e']})},_0x20505b['provider'+'s']=_0x4cba22,_0x38aaa5[_0x26ae10(0xfc)]=_0x20505b;const _0x883caa=asRecord(_0x38aaa5[_0x26ae10(0xab)]),_0x212906=asRecord(_0x883caa['defaults']);return _0x212906[_0x26ae10(0xaa)]={...asRecord(_0x212906[_0x26ae10(0xaa)]),'primary':_0x26240e},_0x212906[_0x26ae10(0xfc)]={...asRecord(_0x212906[_0x26ae10(0xfc)]),[_0x26240e]:asRecord(asRecord(_0x212906[_0x26ae10(0xfc)])[_0x26240e])},_0x883caa[_0x26ae10(0x108)]=_0x212906,_0x38aaa5[_0x26ae10(0xab)]=_0x883caa,_0x38aaa5['session']={...asRecord(_0x38aaa5[_0x26ae10(0xdd)]),'dmScope':_0x26ae10(0xd4)+'nel-peer'},await _0xeedc9(_0x38aaa5,_0x4bac4c['restartO'+_0x26ae10(0xca)]?_0x26ae10(0x115)+_0x26ae10(0x109)+_0x26ae10(0xd6):''),{'ok':!![]};}async function _0x1c58b1(_0x45d21b){const _0x137f3e=_0x27feac,_0x2a3225=await _0x43fe50(),_0x25b74e=_0x45d21b[_0x137f3e(0x91)+_0x137f3e(0x104)],_0x4d5af6=asRecord(_0x2a3225[_0x137f3e(0xfc)]),_0x39c70f=asRecord(_0x4d5af6[_0x137f3e(0x91)+'s']);_0x39c70f[_0x25b74e]={...asRecord(_0x39c70f[_0x25b74e]),'apiKey':_0x45d21b[_0x137f3e(0xc5)],'api':'openai-c'+_0x137f3e(0xfa)+'ns','baseUrl':_0x45d21b['baseUrl'],'models':(_0x45d21b[_0x137f3e(0xee)+'es']??[])[_0x137f3e(0xd5)](_0x2572bc=>createProviderModelConfig(_0x2572bc,_0x2572bc===_0x45d21b['imageMod'+'elPrimar'+_0x137f3e(0x11d)]))},_0x4d5af6[_0x137f3e(0x91)+'s']=_0x39c70f,_0x2a3225[_0x137f3e(0xfc)]=_0x4d5af6;if(_0x45d21b['imageMod'+'elPrimar'+'yName']){const _0x4aeb41=asRecord(_0x2a3225['agents']),_0x41f509=asRecord(_0x4aeb41[_0x137f3e(0x108)]);_0x41f509[_0x137f3e(0xbb)+'el']={...asRecord(_0x41f509['imageMod'+'el']),'primary':_0x25b74e+'/'+_0x45d21b[_0x137f3e(0xbb)+'elPrimar'+'yName']},_0x4aeb41[_0x137f3e(0x108)]=_0x41f509,_0x2a3225[_0x137f3e(0xab)]=_0x4aeb41;}return await _0xeedc9(_0x2a3225,_0x137f3e(0xa7)+'rated\x20mo'+'dels\x20upd'+'ated'),{'ok':!![]};}async function _0x5f3c2f({callbackUrl:_0x54b9fb,secret:_0x1eb700}){const _0x17ad26=_0x27feac,_0x8a33f1=await _0x43fe50(),_0x26a5f6=asRecord(_0x8a33f1['plugins']),_0x35c532=asRecord(_0x26a5f6[_0x17ad26(0x96)]),_0x2ee2fe=asRecord(_0x35c532[ASK_USER_QUESTION_PLUGIN_ID]);return _0x35c532[ASK_USER_QUESTION_PLUGIN_ID]={..._0x2ee2fe,'enabled':!![],'config':{...asRecord(_0x2ee2fe[_0x17ad26(0x103)]),'callbackUrl':_0x54b9fb,'secret':_0x1eb700}},_0x26a5f6['entries']=_0x35c532,_0x26a5f6[_0x17ad26(0xbd)]=dedupeStrings([...(Array[_0x17ad26(0xb8)](_0x26a5f6[_0x17ad26(0xbd)])?_0x26a5f6['allow']:[])[_0x17ad26(0xa8)](Boolean),ASK_USER_QUESTION_PLUGIN_ID]),_0x8a33f1[_0x17ad26(0x95)]=_0x26a5f6,await _0xeedc9(_0x8a33f1,''),{'ok':!![]};}async function _0xeedc9(_0x336500,_0x106958=''){const _0x4c5315=_0x27feac;_0x7b32bd(),await _0x574c39(_0x336500,_0x106958||_0x4c5315(0xef)+_0x4c5315(0x114)+'persiste'+'d'),await writeJsonFile(_0x52d9f2['lastGood'+_0x4c5315(0xe1)+'th'],_0x336500),_0x29b4a0?.[_0x4c5315(0x10b)](_0x4c5315(0xe8)+_0x4c5315(0xcc)+'aw\x20confi'+_0x4c5315(0xf4)+'n',{'path':_0x52d9f2[_0x4c5315(0xc8)+_0x4c5315(0xe1)+'th'],'reason':_0x106958||_0x4c5315(0xef)+'\x20config\x20'+_0x4c5315(0xfd)+'d'});if(_0x106958)_0x428b8d(_0x106958);}function _0x7b32bd(){if(_0x27aa30)_0x22f32c+=0x1;}function _0x3a6f35(_0x41ccfc){_0x1f1b52=_0x41ccfc;}function _0x428b8d(_0x42ca19){const _0x54ddd6=_0x27feac;if(!_0x1f1b52)return;if(_0x26c575)clearTimeout(_0x26c575);_0x29b4a0?.[_0x54ddd6(0x10b)](_0x54ddd6(0xd7)+_0x54ddd6(0xa5)+'cheduled'+_0x54ddd6(0xdb)+_0x54ddd6(0x106)+'ge',{'reason':_0x42ca19,'debounceMs':0xfa}),_0x26c575=setTimeout(()=>_0x1f1b52(_0x42ca19),0xfa);}function _0x515b61(){const _0x1f6d07=_0x27feac;unwatchFile(_0x52d9f2[_0x1f6d07(0xed)+'th']),_0x27aa30=!![],watchFile(_0x52d9f2[_0x1f6d07(0xed)+'th'],{'interval':0x3e8},(_0x15a0ff,_0x38abba)=>{const _0x5203e9=_0x1f6d07;if(_0x15a0ff[_0x5203e9(0xde)]===_0x38abba[_0x5203e9(0xde)])return;if(_0x22f32c>0x0){_0x22f32c-=0x1,_0x29b4a0?.['info'](_0x5203e9(0x92)+'ile\x20watc'+_0x5203e9(0x98)+_0x5203e9(0xc3)+_0x5203e9(0xf8)+'te',{'configPath':_0x52d9f2[_0x5203e9(0xed)+'th'],'ignoredConfigWatchReloads':_0x22f32c});return;}_0x29b4a0?.['info']('config\x20f'+'ile\x20watc'+_0x5203e9(0xe0)+_0x5203e9(0xcf)+'ernal\x20ch'+_0x5203e9(0x113),{'configPath':_0x52d9f2['configPa'+'th']}),_0x428b8d(_0x5203e9(0x11b)+_0x5203e9(0xc2));});}function _0x4a8373(){const _0x16729f=_0x27feac;if(_0x26c575)clearTimeout(_0x26c575);unwatchFile(_0x52d9f2[_0x16729f(0xed)+'th']),_0x27aa30=![],_0x22f32c=0x0;}return{'paths':_0x52d9f2,'resolveConfigPath':_0x3bcafb,'resolveStateDir':_0x2bfe6f,'resolveDeviceIdentityPath':_0x9df177,'ensureConfigPathEnv':_0x16578d,'ensureInitialConfig':_0x49612c,'ensureGatewaySettings':_0x47d650,'readConfig':_0x43fe50,'writeConfig':_0x574c39,'syncRuntimePlugins':_0x3f9c43,'getModelSettings':_0x354a61,'setModelSettings':_0x4c21b7,'setSelfOperatedModels':_0x1c58b1,'ensureAskUserQuestionPluginConfig':_0x5f3c2f,'markConfigWriteHandledInternally':_0x7b32bd,'setGatewayRestartHandler':_0x3a6f35,'watchConfigChanges':_0x515b61,'dispose':_0x4a8373};}