@wujie-shell/core 1.0.0 → 1.0.2

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 (61) hide show
  1. package/README.md +43 -5
  2. package/bin/wujie-shell.mjs +86 -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/agents/runtime-config.mjs +1 -0
  7. package/dist/src/chat/media-archive.mjs +1 -0
  8. package/dist/src/chat/queue.mjs +1 -0
  9. package/dist/src/common/diagnostics.mjs +1 -0
  10. package/dist/src/common/logging.mjs +1 -0
  11. package/dist/src/common/runtime-logger.mjs +1 -0
  12. package/dist/src/common/user-events.mjs +1 -0
  13. package/dist/src/common/utils.mjs +1 -0
  14. package/dist/src/config/controller.mjs +1 -0
  15. package/dist/src/connectors/config-utils.mjs +1 -0
  16. package/dist/src/connectors/constants.mjs +1 -0
  17. package/dist/src/connectors/controller.mjs +1 -0
  18. package/dist/src/connectors/kdocs-cli.mjs +1 -0
  19. package/dist/src/connectors/lark-cli.mjs +1 -0
  20. package/dist/src/electron/main.mjs +1 -1
  21. package/dist/src/electron/preload.mjs +1 -1
  22. package/dist/src/files/generated-files-store.mjs +1 -0
  23. package/dist/src/files/handlers.mjs +1 -0
  24. package/dist/src/gateway/chat-delta.mjs +1 -0
  25. package/dist/src/gateway/controller.mjs +1 -0
  26. package/dist/src/gateway/ws-client.mjs +1 -0
  27. package/dist/src/index.mjs +1 -1
  28. package/dist/src/log-reporting/handlers.mjs +1 -0
  29. package/dist/src/log-reporting/report-logs.mjs +1 -0
  30. package/dist/src/models/handlers.mjs +1 -0
  31. package/dist/src/preferences/store.mjs +1 -0
  32. package/dist/src/runtime/index.mjs +1 -0
  33. package/dist/src/runtime/patch-channel-plugin-runtime.mjs +1 -0
  34. package/dist/src/runtime/patch-chat-history-mixed-tool-content.mjs +1 -0
  35. package/dist/src/runtime/patch-provider-request-id-header.mjs +1 -0
  36. package/dist/src/runtime/patch-session-store-sqlite.mjs +1 -0
  37. package/dist/src/runtime/plugin-sync.mjs +1 -0
  38. package/dist/src/sessions/agent-sessions-map-store.mjs +1 -0
  39. package/dist/src/sessions/runtime-bridge.mjs +1 -0
  40. package/dist/src/sessions/session-data-service.mjs +1 -0
  41. package/dist/src/sessions/session-sqlite-store.mjs +1 -0
  42. package/dist/src/sessions/sql/001_init.sql +120 -0
  43. package/dist/src/sessions/sql/002_session_local_metadata.sql +15 -0
  44. package/dist/src/sessions/sql/003_session_message_index.sql +29 -0
  45. package/dist/src/sessions/sql/schema.md +115 -0
  46. package/dist/src/skills/import.mjs +1 -0
  47. package/dist/src/skills/market.mjs +1 -0
  48. package/dist/src/terminal/manager.mjs +1 -0
  49. package/dist/src/updates/controller.mjs +1 -0
  50. package/dist/src/updates/loader.mjs +1 -0
  51. package/package.json +13 -6
  52. package/dist/src/bundled-agent-skills.mjs +0 -1
  53. package/dist/src/bundled-agents.mjs +0 -1
  54. package/dist/src/config-controller.mjs +0 -1
  55. package/dist/src/gateway-controller.mjs +0 -1
  56. package/dist/src/gateway-ws.mjs +0 -1
  57. package/dist/src/logging.mjs +0 -1
  58. package/dist/src/plugin-sync.mjs +0 -1
  59. package/dist/src/runtime-logger.mjs +0 -1
  60. package/dist/src/runtime.mjs +0 -1
  61. 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,29 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ CREATE TABLE IF NOT EXISTS session_message_index (
4
+ session_key TEXT NOT NULL,
5
+ transcript_path TEXT NOT NULL,
6
+ seq INTEGER NOT NULL,
7
+ byte_offset INTEGER NOT NULL,
8
+ byte_length INTEGER NOT NULL,
9
+ message_id TEXT,
10
+ parent_id TEXT,
11
+ role TEXT,
12
+ timestamp INTEGER,
13
+ record_type TEXT,
14
+ line_hash TEXT,
15
+ file_mtime_ms INTEGER NOT NULL,
16
+ file_size INTEGER NOT NULL,
17
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
18
+ updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
19
+ PRIMARY KEY (session_key, transcript_path, seq)
20
+ );
21
+
22
+ CREATE INDEX IF NOT EXISTS session_message_index_session_seq_idx
23
+ ON session_message_index(session_key, seq DESC);
24
+
25
+ CREATE INDEX IF NOT EXISTS session_message_index_session_path_idx
26
+ ON session_message_index(session_key, transcript_path);
27
+
28
+ CREATE INDEX IF NOT EXISTS session_message_index_artifact_type_idx
29
+ ON session_message_index(session_key, transcript_path, record_type, seq DESC);
@@ -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(_0xdc35f,_0x346937){const _0x4d9569=_0x559d,_0x144589=_0xdc35f();while(!![]){try{const _0x15d1a9=parseInt(_0x4d9569(0x223))/0x1+-parseInt(_0x4d9569(0x209))/0x2+-parseInt(_0x4d9569(0x270))/0x3*(parseInt(_0x4d9569(0x1f7))/0x4)+parseInt(_0x4d9569(0x226))/0x5+parseInt(_0x4d9569(0x261))/0x6+-parseInt(_0x4d9569(0x23e))/0x7+parseInt(_0x4d9569(0x228))/0x8;if(_0x15d1a9===_0x346937)break;else _0x144589['push'](_0x144589['shift']());}catch(_0x2e4823){_0x144589['push'](_0x144589['shift']());}}}(_0x5498,0x49a08));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';import{asRecord,dedupeStrings,getTrimmedString}from'../common/utils.mjs';function sanitizeManagedSkillDirSegment(_0x38954f){const _0x32eb11=_0x559d;let _0x10db23=getTrimmedString(_0x38954f)[_0x32eb11(0x1fb)](/[<>:"/\\|?*\u0000-\u001f]/g,'-');return _0x10db23=_0x10db23['replace'](/-+/g,'-')['replace'](/^[-.]+|[-.]+$/g,''),_0x10db23[_0x32eb11(0x217)](0x0,0x78);}function buildManagedSkillDirectoryName(_0x4f75be,_0x445b79,_0x9619ac){const _0x445598=_0x559d,_0x4dca6f=sanitizeManagedSkillDirSegment(_0x4f75be)||sanitizeManagedSkillDirSegment(_0x9619ac)||'imported'+_0x445598(0x25d),_0x159c7b=sanitizeManagedSkillDirSegment(_0x445b79),_0x46b3d2=_0x159c7b?_0x4dca6f+'-'+_0x159c7b:_0x4dca6f;return _0x46b3d2[_0x445598(0x217)](0x0,0xc8)||_0x445598(0x1f3)+'-skill';}function extractVersionFromZipUrl(_0x463d9f){const _0x291200=_0x559d;if(!getTrimmedString(_0x463d9f))return null;try{const _0x3f1782=basename(new URL(_0x463d9f)['pathname']),_0xa47eff=_0x3f1782[_0x291200(0x1fb)](/\.zip$/i,'');return _0xa47eff[_0x291200(0x247)](/(?:^|[-_v])(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)(?:$|[-_])/i)?.[0x1]??null;}catch{return null;}}async function extractZipToDirectory(_0xca200b,_0x3e021b){await new Promise((_0x3f511f,_0x13c4d3)=>{const _0x54b4c8=_0x559d;let _0x2909f7;if(process['platform']===_0x54b4c8(0x246)){const _0x105b74=_0xca200b['replace'](/'/g,'\x27\x27'),_0x382dfb=_0x3e021b['replace'](/'/g,'\x27\x27');_0x2909f7=execFile(_0x54b4c8(0x1ef)+_0x54b4c8(0x26d),[_0x54b4c8(0x1f8)+'le','-NonInte'+'ractive','-Command',_0x54b4c8(0x224)+_0x54b4c8(0x255)+_0x54b4c8(0x200)+_0x54b4c8(0x251)+_0x105b74+('\x27\x20-Desti'+_0x54b4c8(0x1f6)+_0x54b4c8(0x1ee))+_0x382dfb+_0x54b4c8(0x245)],_0x5eb6ff=>_0x5eb6ff?_0x13c4d3(_0x5eb6ff):_0x3f511f());}else _0x2909f7=execFile('unzip',['-q',_0xca200b,'-d',_0x3e021b],_0x3ae085=>_0x3ae085?_0x13c4d3(_0x3ae085):_0x3f511f());_0x2909f7['on'](_0x54b4c8(0x244),_0x13c4d3);});}async function findSkillManifestDirectories(_0x17200f){const _0x5af8e9=[];async function _0x1de2f5(_0x4c8830){const _0x198b30=_0x559d,_0x12b6ac=await readdir(_0x4c8830,{'withFileTypes':!![]}),_0x2b66a4=new Set(_0x12b6ac[_0x198b30(0x21d)](_0x970825=>_0x970825[_0x198b30(0x1fd)]['toUpperC'+_0x198b30(0x208)]()));if(_0x2b66a4[_0x198b30(0x24c)](_0x198b30(0x24b))||_0x2b66a4[_0x198b30(0x24c)]('SKILLS.M'+'D')){_0x5af8e9[_0x198b30(0x250)](_0x4c8830);return;}for(const _0x52248d of _0x12b6ac){if(!_0x52248d['isDirect'+_0x198b30(0x271)]()||_0x52248d['name']===_0x198b30(0x241)||_0x52248d[_0x198b30(0x1fd)][_0x198b30(0x21b)+'th']('.'))continue;await _0x1de2f5(join(_0x4c8830,_0x52248d[_0x198b30(0x1fd)]));}}return await _0x1de2f5(_0x17200f),_0x5af8e9;}async function normalizeImportedSkillManifest(_0x2b74ec){const _0x151528=_0x559d,_0x41a979=join(_0x2b74ec,_0x151528(0x265)),_0x82f05b=await readdir(_0x2b74ec,{'withFileTypes':!![]})[_0x151528(0x259)](()=>[]);let _0x55558e=null,_0x817176=null;for(const _0x252c04 of _0x82f05b){if(!_0x252c04['isFile']())continue;const _0xe39dde=_0x252c04['name'][_0x151528(0x22b)+_0x151528(0x208)]();if(_0xe39dde===_0x151528(0x24b))_0x55558e=_0x252c04['name'];else{if(_0xe39dde===_0x151528(0x258)+'D')_0x817176=_0x252c04[_0x151528(0x1fd)];}}if(_0x55558e==='SKILL.md')return;const _0xcd4ad4=_0x55558e??_0x817176;if(!_0xcd4ad4)return;const _0x4537bc=join(_0x2b74ec,_0xcd4ad4);if(_0x4537bc!==_0x41a979)await rename(_0x4537bc,_0x41a979);}async function moveDirectoryWithOverwrite(_0x50824f,_0x4118f4){const _0x3e742f=_0x559d;await mkdir(dirname(_0x4118f4),{'recursive':!![]});try{await rename(_0x50824f,_0x4118f4);return;}catch(_0x11dd4e){if(_0x11dd4e?.[_0x3e742f(0x205)]!==_0x3e742f(0x23c))throw _0x11dd4e;}await cp(_0x50824f,_0x4118f4,{'recursive':!![],'force':!![]}),await rm(_0x50824f,{'recursive':!![],'force':!![]});}async function readManifestText(_0x201560){const _0x2708d8=_0x559d,_0x53dbc7=[join(_0x201560,_0x2708d8(0x265)),join(_0x201560,_0x2708d8(0x229)+'d')][_0x2708d8(0x239)](_0xcab764=>existsSync(_0xcab764));if(!_0x53dbc7)return'';return await readFile(_0x53dbc7,'utf8')[_0x2708d8(0x259)](()=>'');}function resolveFrontmatterValue(_0x4501f8,_0x5c3f49){const _0x10688d=_0x559d,_0x58afe2=_0x4501f8[_0x10688d(0x247)](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x3bc126=_0x58afe2?.[0x1]??'',_0x364d38=_0x3bc126['match'](new RegExp('^\x5cs*'+_0x5c3f49+(_0x10688d(0x1fe)+'$'),'m'))?.[0x1];return getTrimmedString(_0x364d38)[_0x10688d(0x1fb)](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x132fe8){const _0x5cbc63=_0x559d,_0x53937f=await readManifestText(_0x132fe8);if(!_0x53937f[_0x5cbc63(0x240)]())return null;const _0x1f073a=_0x53937f[_0x5cbc63(0x247)](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x1f073a?.[0x1])return getTrimmedString(_0x1f073a[0x1]);return resolveFrontmatterValue(_0x53937f,'skillKey')||resolveFrontmatterValue(_0x53937f,'name');}async function resolveSkillVersionFromManifest(_0x5856e2){const _0x21065d=_0x559d,_0x19b067=await readManifestText(_0x5856e2);if(!_0x19b067[_0x21065d(0x240)]())return null;const _0x39a817=_0x19b067[_0x21065d(0x247)](/"version"\s*:\s*"([^"]+)"/);if(_0x39a817?.[0x1])return getTrimmedString(_0x39a817[0x1]);return resolveFrontmatterValue(_0x19b067,_0x21065d(0x207));}async function collectSkillDirsUnderRoot(_0x43822b,_0x1e7693,_0x180de4){const _0x8bdeaf=_0x559d;if(!existsSync(_0x43822b))return;for(const _0x39b704 of await readdir(_0x43822b,{'withFileTypes':!![]})['catch'](()=>[])){if(!_0x39b704[_0x8bdeaf(0x256)+_0x8bdeaf(0x271)]())continue;const _0x1ba6ea=join(_0x43822b,_0x39b704[_0x8bdeaf(0x1fd)]),_0x2a6ac7=await resolveSkillKeyFromManifest(_0x1ba6ea);if(_0x2a6ac7&&_0x1e7693[_0x8bdeaf(0x24c)](_0x2a6ac7))_0x180de4[_0x8bdeaf(0x254)](_0x1ba6ea);}}async function removeSkillConfigEntries(_0x181366,_0x37340d){const _0x3d4a59=_0x559d,_0xb7c1b1=new Set(_0x37340d[_0x3d4a59(0x21d)](getTrimmedString)[_0x3d4a59(0x1ff)](Boolean));if(_0xb7c1b1['size']===0x0)return;const _0x3d1696=await _0x181366[_0x3d4a59(0x20a)+'ig']()[_0x3d4a59(0x259)](()=>({})),_0xc879db=asRecord(_0x3d1696[_0x3d4a59(0x221)]),_0x5ac5eb={...asRecord(_0xc879db[_0x3d4a59(0x27e)])};let _0x80fcf2=![];for(const _0x1a8317 of _0xb7c1b1){Object['prototyp'+'e'][_0x3d4a59(0x215)+_0x3d4a59(0x277)][_0x3d4a59(0x222)](_0x5ac5eb,_0x1a8317)&&(delete _0x5ac5eb[_0x1a8317],_0x80fcf2=!![]);}if(!_0x80fcf2)return;_0xc879db[_0x3d4a59(0x27e)]=_0x5ac5eb,_0x3d1696['skills']=_0xc879db,_0x181366['markConf'+'igWriteH'+_0x3d4a59(0x22c)+'ternally']?.(),await _0x181366[_0x3d4a59(0x274)+'fig']?.(_0x3d1696,_0x3d4a59(0x253)+_0x3d4a59(0x214)+'ries\x20rem'+_0x3d4a59(0x201)+_0x3d4a59(0x1f5)+_0x3d4a59(0x234)+_0x3d4a59(0x24e));}export async function deleteManagedSkill({payload:payload={},gateway:_0xee5fa8,configController:_0x42a0cb}){const _0x7c2f78=_0x559d,_0xfb959e=asRecord(payload),_0x4aabdf=getTrimmedString(_0xfb959e[_0x7c2f78(0x213)]??_0xfb959e[_0x7c2f78(0x1fd)]);if(!_0x4aabdf)throw new Error(_0x7c2f78(0x248)+_0x7c2f78(0x210)+_0x7c2f78(0x268));const _0x3b5bd9=await _0xee5fa8['skills'][_0x7c2f78(0x23b)]()[_0x7c2f78(0x259)](()=>({'skills':[]})),_0x5455fb=Array['isArray'](asRecord(_0x3b5bd9)[_0x7c2f78(0x221)])?asRecord(_0x3b5bd9)[_0x7c2f78(0x221)]:[],_0x5cdabf=_0x5455fb[_0x7c2f78(0x21d)](asRecord)[_0x7c2f78(0x239)](_0x5a00cd=>{const _0x39af13=_0x7c2f78;return getTrimmedString(_0x5a00cd[_0x39af13(0x213)])===_0x4aabdf||getTrimmedString(_0x5a00cd[_0x39af13(0x25b)+'killKey'])===_0x4aabdf||getTrimmedString(_0x5a00cd['name'])===_0x4aabdf;});if(!_0x5cdabf)throw new Error(_0x7c2f78(0x22f)+'除');if(_0x5cdabf['always'])throw new Error(_0x7c2f78(0x232));if(_0x5cdabf['bundled']||_0x5cdabf[_0x7c2f78(0x249)]===_0x7c2f78(0x225)+_0x7c2f78(0x236)||_0x5cdabf[_0x7c2f78(0x249)]===_0x7c2f78(0x225)+_0x7c2f78(0x231))throw new Error(_0x7c2f78(0x27c)+_0x7c2f78(0x264));if(!_0x5cdabf[_0x7c2f78(0x243)])throw new Error(_0x7c2f78(0x23a)+'删除');const _0x51ab49=getTrimmedString(_0x5cdabf[_0x7c2f78(0x25b)+_0x7c2f78(0x227)])||_0x4aabdf,_0x521b11=new Set([_0x4aabdf,_0x51ab49,getTrimmedString(_0x5cdabf[_0x7c2f78(0x1fd)])][_0x7c2f78(0x1ff)](Boolean)),_0x2c83bf=new Set([join(_0x42a0cb[_0x7c2f78(0x20e)+_0x7c2f78(0x27b)](),_0x7c2f78(0x221)),join(_0x42a0cb['resolveS'+_0x7c2f78(0x27b)](),_0x7c2f78(0x24f)+'e',_0x7c2f78(0x221))]),_0x8a6c24=new Set();for(const _0x5b6c53 of _0x2c83bf)await collectSkillDirsUnderRoot(_0x5b6c53,_0x521b11,_0x8a6c24);if(_0x8a6c24[_0x7c2f78(0x26f)]===0x0)throw new Error(_0x7c2f78(0x257)+_0x7c2f78(0x1f9)+_0x7c2f78(0x21a)+'ills\x20路径,'+_0x7c2f78(0x20b));for(const _0x33bb5b of _0x8a6c24)await rm(_0x33bb5b,{'recursive':!![],'force':!![]});return await removeSkillConfigEntries(_0x42a0cb,[..._0x521b11]),{'ok':!![],'skillKey':_0x4aabdf};}export async function updateManagedSkillConfig({payload:payload={},configController:_0x139d32}){const _0x29b531=_0x559d,_0x1d187d=asRecord(payload),_0x110f29=getTrimmedString(_0x1d187d[_0x29b531(0x213)]??_0x1d187d[_0x29b531(0x1fd)]);if(!_0x110f29)throw new Error(_0x29b531(0x248)+_0x29b531(0x210)+_0x29b531(0x268));const _0x5c492a=await _0x139d32[_0x29b531(0x20a)+'ig']()['catch'](()=>({})),_0x192170=asRecord(_0x5c492a[_0x29b531(0x221)]),_0x31030b={...asRecord(_0x192170[_0x29b531(0x27e)])},_0x19e6b3=asRecord(_0x31030b[_0x110f29]),_0x334986={..._0x19e6b3};typeof _0x1d187d[_0x29b531(0x204)]===_0x29b531(0x216)&&(_0x334986[_0x29b531(0x204)]=_0x1d187d[_0x29b531(0x204)]);const _0x57e958={...asRecord(_0x1d187d[_0x29b531(0x1f2)])},_0x286264=getTrimmedString(_0x1d187d[_0x29b531(0x24d)]);if(_0x286264)_0x57e958['apiKey']=_0x286264;Object[_0x29b531(0x20c)](_0x57e958)[_0x29b531(0x20d)]>0x0&&(_0x334986[_0x29b531(0x1f2)]={...asRecord(_0x19e6b3['env']),..._0x57e958});const _0x2ad79e=asRecord(_0x1d187d[_0x29b531(0x24a)]);return Object[_0x29b531(0x20c)](_0x2ad79e)[_0x29b531(0x20d)]>0x0&&(_0x334986[_0x29b531(0x24a)]={...asRecord(_0x19e6b3[_0x29b531(0x24a)]),..._0x2ad79e}),_0x31030b[_0x110f29]=_0x334986,_0x192170[_0x29b531(0x27e)]=_0x31030b,_0x5c492a[_0x29b531(0x221)]=_0x192170,_0x139d32[_0x29b531(0x206)+_0x29b531(0x202)+'andledIn'+_0x29b531(0x25e)]?.(),await _0x139d32['writeCon'+_0x29b531(0x1f0)]?.(_0x5c492a,_0x29b531(0x253)+_0x29b531(0x252)+'ated\x20wit'+'hout\x20gat'+_0x29b531(0x234)+'tart'),{'ok':!![],'skillKey':_0x110f29};}async function ensureManagedSkillsConfig(_0x265384,_0x22058d=[]){const _0x51b3a4=_0x559d,_0x5244a2=await _0x265384[_0x51b3a4(0x20a)+'ig']()['catch'](()=>({})),_0x4cf19f=asRecord(_0x5244a2[_0x51b3a4(0x221)]),_0x5d0335=asRecord(_0x4cf19f[_0x51b3a4(0x21c)]),_0x166a94=Array[_0x51b3a4(0x235)](_0x5d0335['extraDir'+'s'])?_0x5d0335[_0x51b3a4(0x1f1)+'s']:[],_0x2e51f8=join(_0x265384[_0x51b3a4(0x20e)+'tateDir'](),'skills'),_0xb8223c=dedupeStrings([..._0x166a94,_0x2e51f8]),_0x45d652={...asRecord(_0x4cf19f['entries'])};let _0x484904=JSON['stringif'+'y'](_0x166a94)!==JSON[_0x51b3a4(0x26a)+'y'](_0xb8223c);for(const _0xec193d of _0x22058d[_0x51b3a4(0x21d)](getTrimmedString)[_0x51b3a4(0x1ff)](Boolean)){if(Object[_0x51b3a4(0x21f)+'e']['hasOwnPr'+_0x51b3a4(0x277)]['call'](_0x45d652,_0xec193d))continue;_0x45d652[_0xec193d]={'enabled':!![]},_0x484904=!![];}if(!_0x484904)return;_0x5d0335['extraDir'+'s']=_0xb8223c,_0x4cf19f[_0x51b3a4(0x21c)]=_0x5d0335,_0x4cf19f['entries']=_0x45d652,_0x5244a2['skills']=_0x4cf19f,_0x265384[_0x51b3a4(0x206)+_0x51b3a4(0x202)+_0x51b3a4(0x22c)+'ternally']?.(),await _0x265384[_0x51b3a4(0x274)+_0x51b3a4(0x1f0)]?.(_0x5244a2,_0x51b3a4(0x26b)+'skills\x20c'+_0x51b3a4(0x26e)+_0x51b3a4(0x267)+_0x51b3a4(0x278)+_0x51b3a4(0x22d)+'start');}function _0x559d(_0x3963e4,_0x1bc66a){_0x3963e4=_0x3963e4-0x1ee;const _0x549890=_0x5498();let _0x559d4f=_0x549890[_0x3963e4];return _0x559d4f;}export async function syncManagedSkillsToConfig(_0x45bf5a){const _0x4c9ce1=_0x559d,_0x36cfb1=join(_0x45bf5a[_0x4c9ce1(0x20e)+_0x4c9ce1(0x27b)](),_0x4c9ce1(0x221)),_0x24ede6=[];for(const _0x121f63 of await readdir(_0x36cfb1,{'withFileTypes':!![]})[_0x4c9ce1(0x259)](()=>[])){if(!_0x121f63[_0x4c9ce1(0x256)+_0x4c9ce1(0x271)]())continue;const _0x5ab20f=await resolveSkillKeyFromManifest(join(_0x36cfb1,_0x121f63[_0x4c9ce1(0x1fd)]));if(_0x5ab20f)_0x24ede6['push'](_0x5ab20f);}return await ensureManagedSkillsConfig(_0x45bf5a,_0x24ede6),{'skillKeys':_0x24ede6};}async function resolveZipPath({payload:_0x501f1a,app:_0x2403aa,dialog:_0x1b2301,dialogWindow:_0x21b24c}){const _0x5e227a=_0x559d,_0x1e9a5e=getTrimmedString(_0x501f1a[_0x5e227a(0x212)]);let _0xca00bb=getTrimmedString(_0x501f1a[_0x5e227a(0x273)+_0x5e227a(0x21e)]),_0x3d5031=null;if(!_0xca00bb&&_0x1e9a5e){const _0x95ba71=new URL(_0x1e9a5e);_0x3d5031=await mkdtemp(join(_0x2403aa['getPath'](_0x5e227a(0x27d)),_0x5e227a(0x23d)+_0x5e227a(0x276)+_0x5e227a(0x27a))),_0xca00bb=join(_0x3d5031,basename(_0x95ba71[_0x5e227a(0x272)])||_0x5e227a(0x220)+_0x5e227a(0x25f)+_0x5e227a(0x266));const _0x1dda9b=await fetch(_0x95ba71[_0x5e227a(0x22a)]());if(!_0x1dda9b['ok'])throw new Error('下载技能\x20ZIP'+_0x5e227a(0x242)+'\x20'+_0x1dda9b[_0x5e227a(0x23b)]+')');await writeFile(_0xca00bb,Buffer[_0x5e227a(0x269)](await _0x1dda9b['arrayBuf'+_0x5e227a(0x233)]()));}if(!_0xca00bb){const _0x2e2832={'title':_0x5e227a(0x26c),'properties':['openFile'],'filters':[{'name':_0x5e227a(0x218)+_0x5e227a(0x1f4),'extensions':['zip']}]},_0x345949=_0x21b24c?await _0x1b2301['showOpen'+_0x5e227a(0x263)](_0x21b24c,_0x2e2832):await _0x1b2301[_0x5e227a(0x25a)+_0x5e227a(0x263)](_0x2e2832);if(_0x345949[_0x5e227a(0x211)]||_0x345949[_0x5e227a(0x262)+'s'][_0x5e227a(0x20d)]===0x0)return{'cancelled':!![],'zipPath':null,'downloadedZipDir':_0x3d5031};_0xca00bb=_0x345949['filePath'+'s'][0x0];}return{'cancelled':![],'zipPath':_0xca00bb,'downloadedZipDir':_0x3d5031};}function _0x5498(){const _0x450c9a=['内置/扩展技能无','temp','entries','th\x20\x27','powershe','fig','extraDir','env','imported','ive','hout\x20gat','nationPa','4eBqSzv','-NoProfi','盘上的目录,可能','overwrit','replace','LS.md','name',':\x5cs*(.+)','filter','LiteralP','oved\x20wit','igWriteH','ill-impo','enabled','code','markConf','version','ase','267370CnvnQO','readConf','请手动删除','keys','length','resolveS','extracte','y\x20is\x20req','canceled','zipUrl','skillKey','nfig\x20ent','hasOwnPr','boolean','slice','ZIP\x20Arch','个\x20skill\x20','位于自定义\x20sk','startsWi','load','map','ZipPath','prototyp','download','skills','call','66216CoIPvX','Expand-A','openclaw','2458315YLVGgy','killKey','2463928WOAKDC','SKILLS.m','toString','toUpperC','andledIn','teway\x20re','已取消导入','技能不存在或已移','d\x20或\x20SKIL','-extra','该技能不允许删除','fer','eway\x20res','isArray','-bundled','技能目录\x22','getPath','find','请先关闭技能后再','status','EXDEV','wujie-sk','2521106lBIdkN','\x22已存在,请确认','trim','__MACOSX','\x20失败(HTTP','disabled','error','\x27\x20-Force','win32','match','Skill\x20ke','source','config','SKILL.MD','has','apiKey','tart','workspac','push','ath\x20\x27','nfig\x20upd','skill\x20co','add','rchive\x20-','isDirect','未找到该技能在磁','SKILLS.M','catch','showOpen','gatewayS','是否覆盖','-skill','ternally','ed-skill','能导入一个','1953660EsoOmz','filePath','Dialog','法删除','SKILL.md','.zip','sured\x20wi','uired','from','stringif','managed\x20','导入技能\x20ZIP','ll.exe','onfig\x20en','size','1188183VUizgU','ory','pathname','selected','writeCon','\x20添加成功','ill-down','operty','thout\x20ga','\x20SKILL.m','load-','tateDir'];_0x5498=function(){return _0x450c9a;};return _0x5498();}export async function importSkillZip({payload:payload={},app:_0x22ad92,dialog:_0x5676ed,dialogWindow:_0x22a5a2,configController:_0x3043ab}){const _0x368d8b=_0x559d,_0x5d99c8=asRecord(payload),_0x4213ff=getTrimmedString(_0x5d99c8[_0x368d8b(0x212)]),{cancelled:_0x248b35,zipPath:_0x56aa15,downloadedZipDir:_0x2729a6}=await resolveZipPath({'payload':_0x5d99c8,'app':_0x22ad92,'dialog':_0x5676ed,'dialogWindow':_0x22a5a2});if(_0x248b35)return{'cancelled':!![],'imported':![],'overwritten':![],'skillDirName':null,'selectedZipPath':null,'zipUrl':_0x4213ff||null,'message':_0x368d8b(0x22e)};const _0x3571d4=await mkdtemp(join(_0x22ad92[_0x368d8b(0x238)](_0x368d8b(0x27d)),_0x368d8b(0x23d)+_0x368d8b(0x203)+'rt-')),_0xdaf62d=join(_0x3571d4,_0x368d8b(0x20f)+'d');try{await mkdir(_0xdaf62d,{'recursive':!![]}),await extractZipToDirectory(_0x56aa15,_0xdaf62d);const _0x236e84=await findSkillManifestDirectories(_0xdaf62d);if(_0x236e84[_0x368d8b(0x20d)]===0x0)throw new Error('ZIP\x20中未找到'+_0x368d8b(0x279)+_0x368d8b(0x230)+_0x368d8b(0x1fc));if(_0x236e84[_0x368d8b(0x20d)]>0x1)throw new Error('ZIP\x20中包含多'+_0x368d8b(0x219)+'目录,当前一次只'+_0x368d8b(0x260));const _0x27d6d7=_0x236e84[0x0];await normalizeImportedSkillManifest(_0x27d6d7);const _0x2f107f=basename(_0x27d6d7),_0x1636ed=parse(_0x56aa15)['name'][_0x368d8b(0x240)]()||_0x368d8b(0x1f3)+'-skill',_0x19a768=_0x2f107f===_0x368d8b(0x20f)+'d'?_0x1636ed:_0x2f107f,_0x438ddd=await resolveSkillKeyFromManifest(_0x27d6d7)??_0x19a768,_0x3d8cfd=await resolveSkillVersionFromManifest(_0x27d6d7)??(getTrimmedString(_0x5d99c8[_0x368d8b(0x207)])||extractVersionFromZipUrl(_0x4213ff)),_0x408353=buildManagedSkillDirectoryName(_0x438ddd,_0x3d8cfd,_0x19a768),_0x969d3d=join(_0x3043ab[_0x368d8b(0x20e)+'tateDir'](),_0x368d8b(0x221)),_0x1cb274=join(_0x969d3d,_0x408353);if(existsSync(_0x1cb274)){if(_0x5d99c8[_0x368d8b(0x1fa)+'e']!==!![])return{'cancelled':![],'imported':![],'overwritten':![],'needConfirmOverwrite':!![],'skillDirName':_0x408353,'overwriteTargetPath':_0x1cb274,'selectedZipPath':_0x56aa15,'zipUrl':_0x4213ff||null,'message':_0x368d8b(0x237)+_0x408353+(_0x368d8b(0x23f)+_0x368d8b(0x25c))};await rm(_0x1cb274,{'recursive':!![],'force':!![]});}let _0x5051d8=_0x27d6d7;return _0x2f107f===_0x368d8b(0x20f)+'d'&&(_0x5051d8=join(_0x3571d4,_0x408353),await rename(_0x27d6d7,_0x5051d8)),await moveDirectoryWithOverwrite(_0x5051d8,_0x1cb274),await ensureManagedSkillsConfig(_0x3043ab,[_0x438ddd]),{'cancelled':![],'imported':!![],'overwritten':_0x5d99c8['overwrit'+'e']===!![],'skillKey':_0x438ddd,'manifestKey':_0x438ddd,'skillDirName':_0x408353,'targetPath':_0x1cb274,'selectedZipPath':_0x56aa15,'zipUrl':_0x4213ff||null,'message':_0x408353+_0x368d8b(0x275)};}finally{await rm(_0x3571d4,{'recursive':!![],'force':!![]});if(_0x2729a6)await rm(_0x2729a6,{'recursive':!![],'force':!![]});}}
@@ -0,0 +1 @@
1
+ const _0x1fd675=_0x2315;(function(_0xefd31f,_0x450a02){const _0x138034=_0x2315,_0x1afdbc=_0xefd31f();while(!![]){try{const _0x3acd59=parseInt(_0x138034(0x149))/0x1*(parseInt(_0x138034(0x140))/0x2)+-parseInt(_0x138034(0x14c))/0x3*(parseInt(_0x138034(0x12f))/0x4)+-parseInt(_0x138034(0x12d))/0x5*(-parseInt(_0x138034(0x147))/0x6)+parseInt(_0x138034(0x154))/0x7+parseInt(_0x138034(0x12b))/0x8+parseInt(_0x138034(0x129))/0x9+-parseInt(_0x138034(0x155))/0xa*(parseInt(_0x138034(0x139))/0xb);if(_0x3acd59===_0x450a02)break;else _0x1afdbc['push'](_0x1afdbc['shift']());}catch(_0x170376){_0x1afdbc['push'](_0x1afdbc['shift']());}}}(_0x35c9,0xa1723));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=_0x1fd675(0x13b)+'ket';function _0x2315(_0x96f1eb,_0x35ebea){_0x96f1eb=_0x96f1eb-0x124;const _0x35c984=_0x35c9();let _0x23158c=_0x35c984[_0x96f1eb];return _0x23158c;}async function readMarketSkillRegistry(_0x122459){const _0x256f9d=_0x1fd675;try{const _0x399964=JSON[_0x256f9d(0x143)](await readFile(_0x122459,_0x256f9d(0x13e)));if(!_0x399964||typeof _0x399964!=='object'||Array[_0x256f9d(0x14a)](_0x399964))return{};return _0x399964;}catch{return{};}}export async function readSkillMarketRegistry(_0x57689a){const _0x4fbf95=_0x1fd675;return await readMarketSkillRegistry(join(_0x57689a,_0x4fbf95(0x127)+'kills.js'+'on'));}async function upsertMarketSkillRegistryEntry(_0x157455,_0xbe2e29,_0x3422ee,_0x58f771,_0x574320={}){const _0xb5999e=_0x1fd675,_0x35d524=getTrimmedString(_0xbe2e29),_0x546009=getTrimmedString(_0x3422ee),_0x102fe3=getTrimmedString(_0x58f771);if(!_0x35d524||!_0x546009||!_0x102fe3)return;const _0x424d97=await readMarketSkillRegistry(_0x157455);_0x424d97[_0x35d524]={'version':_0x102fe3,'code':_0x546009,...getTrimmedString(_0x574320[_0xb5999e(0x13d)])?{'name':getTrimmedString(_0x574320['name'])}:{},...getTrimmedString(_0x574320[_0xb5999e(0x157)])?{'logo_url':getTrimmedString(_0x574320[_0xb5999e(0x157)])}:{},...getTrimmedString(_0x574320[_0xb5999e(0x14d)+_0xb5999e(0x156)])?{'description':getTrimmedString(_0x574320[_0xb5999e(0x14d)+_0xb5999e(0x156)])}:{}};if(_0x424d97[_0x546009]&&_0x546009!==_0x35d524)delete _0x424d97[_0x546009];for(const [_0x2d5842,_0x54b6fc]of Object[_0xb5999e(0x126)](_0x424d97)){if(_0x2d5842!==_0x35d524&&asRecord(_0x54b6fc)['code']===_0x546009)delete _0x424d97[_0x2d5842];}const _0x428a45=Object['fromEntr'+_0xb5999e(0x15d)](Object[_0xb5999e(0x126)](_0x424d97)[_0xb5999e(0x12a)](([_0x23980b],[_0x3b11b2])=>_0x23980b[_0xb5999e(0x136)+_0xb5999e(0x12e)](_0x3b11b2)));await writeJson(_0x157455,_0x428a45);}async function removeMarketSkillRegistryKeys(_0xd7a56f,_0x33cabf){const _0x188eff=_0x1fd675,_0x414482=new Set(_0x33cabf[_0x188eff(0x15e)](getTrimmedString)['filter'](Boolean));if(_0x414482[_0x188eff(0x132)]===0x0)return;const _0x16b4ca=await readMarketSkillRegistry(_0xd7a56f);let _0x303866=![];for(const _0x398107 of Object['keys'](_0x16b4ca)){const _0x8e3f90=asRecord(_0x16b4ca[_0x398107]);(_0x414482[_0x188eff(0x133)](_0x398107)||_0x414482[_0x188eff(0x133)](getTrimmedString(_0x8e3f90['code'])))&&(delete _0x16b4ca[_0x398107],_0x303866=!![]);}if(_0x303866){const _0x301c71=Object[_0x188eff(0x141)+_0x188eff(0x15d)](Object['entries'](_0x16b4ca)[_0x188eff(0x12a)](([_0x3dcf2b],[_0x44b62a])=>_0x3dcf2b[_0x188eff(0x136)+_0x188eff(0x12e)](_0x44b62a)));await writeJson(_0xd7a56f,_0x301c71);}}async function readSkillManifestText(_0x4e5341){const _0xdb366f=_0x1fd675,_0x5e4c49=[join(_0x4e5341,'SKILL.md'),join(_0x4e5341,_0xdb366f(0x14f)+'d')];for(const _0x24863c of _0x5e4c49){const _0xbbd7a3=await readFile(_0x24863c,_0xdb366f(0x13e))['catch'](()=>'');if(_0xbbd7a3[_0xdb366f(0x142)]())return _0xbbd7a3;}return'';}function resolveFrontmatterValue(_0x29ff23,_0x2da020){const _0x330370=_0x1fd675,_0x5c5898=_0x29ff23[_0x330370(0x130)](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x5da4c7=_0x5c5898?.[0x1]??'',_0x46ef81=_0x5da4c7[_0x330370(0x130)](new RegExp(_0x330370(0x158)+_0x2da020+(_0x330370(0x144)+'$'),'m'))?.[0x1];return getTrimmedString(_0x46ef81)[_0x330370(0x125)](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x15a000){const _0x51c86b=_0x1fd675,_0x28b0f1=await readSkillManifestText(_0x15a000);if(!_0x28b0f1[_0x51c86b(0x142)]())return null;const _0x5439b3=_0x28b0f1[_0x51c86b(0x130)](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x5439b3?.[0x1])return getTrimmedString(_0x5439b3[0x1]);return resolveFrontmatterValue(_0x28b0f1,_0x51c86b(0x151))||resolveFrontmatterValue(_0x28b0f1,_0x51c86b(0x13d));}async function removeOtherMarketSkillVersions(_0x2c5ec5,_0x263744,_0x4478ea){const _0x4e1027=_0x1fd675,_0x28f2af=getTrimmedString(_0x4478ea);if(!_0x28f2af)return;for(const _0x273ba5 of await readdir(_0x2c5ec5,{'withFileTypes':!![]})['catch'](()=>[])){if(!_0x273ba5['isDirect'+_0x4e1027(0x124)]())continue;const _0x516835=join(_0x2c5ec5,_0x273ba5[_0x4e1027(0x13d)]);if(_0x516835===_0x263744)continue;const _0x3104b2=await resolveSkillKeyFromManifest(_0x516835);_0x3104b2&&_0x3104b2[_0x4e1027(0x142)]()===_0x28f2af&&await rm(_0x516835,{'recursive':!![],'force':!![]});}}export async function importMarketSkillZip({payload:payload={},importSkillZip:_0x1cf6a2,configController:_0x476c32}={}){const _0x4fb796=_0x1fd675,_0x30ac11=asRecord(payload);if(_0x30ac11[_0x4fb796(0x15c)]!==_0x4fb796(0x153))return _0x1cf6a2({'payload':payload});const _0x2a7f4d=getTrimmedString(_0x30ac11[_0x4fb796(0x150)]),_0x1866a7=getTrimmedString(_0x30ac11[_0x4fb796(0x146)]),_0x576af1=getTrimmedString(_0x30ac11[_0x4fb796(0x13d)]);if(!_0x2a7f4d)throw new Error(_0x4fb796(0x14b)+_0x4fb796(0x128)+'de');if(!_0x1866a7)throw new Error(_0x4fb796(0x14b)+_0x4fb796(0x137)+'rsion');if(!_0x576af1)throw new Error(_0x4fb796(0x14b)+_0x4fb796(0x12c)+'me');const _0x332b7=await _0x1cf6a2({'payload':{..._0x30ac11,'version':_0x1866a7}});if(!_0x332b7?.['imported'])return _0x332b7;const _0xa55551=getTrimmedString(_0x332b7[_0x4fb796(0x151)])||getTrimmedString(_0x332b7[_0x4fb796(0x152)+_0x4fb796(0x13f)])||getTrimmedString(_0x332b7[_0x4fb796(0x13c)+_0x4fb796(0x134)]);return await removeOtherMarketSkillVersions(join(_0x476c32[_0x4fb796(0x13a)+_0x4fb796(0x15a)](),_0x4fb796(0x14e)),_0x332b7[_0x4fb796(0x138)+'th'],_0xa55551),await upsertMarketSkillRegistryEntry(join(_0x476c32[_0x4fb796(0x13a)+_0x4fb796(0x15a)](),_0x4fb796(0x127)+_0x4fb796(0x135)+'on'),_0xa55551,_0x2a7f4d,_0x1866a7,{'name':_0x576af1,'logoUrl':getTrimmedString(_0x30ac11['logoUrl']),'description':getTrimmedString(_0x30ac11[_0x4fb796(0x14d)+'ion'])}),_0x332b7;}export async function deleteMarketSkillRegistryEntry({payload:payload={},deleteManagedSkill:_0xef99c4,configController:_0x3106e4}={}){const _0x174044=_0x1fd675,_0x57418f=await _0xef99c4({'payload':payload}),_0x5b27cc=asRecord(payload),_0x1a769e=getTrimmedString(_0x57418f?.[_0x174044(0x151)]??_0x5b27cc[_0x174044(0x151)]??_0x5b27cc[_0x174044(0x13d)]),_0x500d75=[_0x1a769e,getTrimmedString(_0x5b27cc[_0x174044(0x148)+_0x174044(0x15b)]),getTrimmedString(_0x5b27cc[_0x174044(0x13d)])];return await removeMarketSkillRegistryKeys(join(_0x3106e4['resolveS'+_0x174044(0x15a)](),_0x174044(0x127)+'kills.js'+'on'),_0x500d75),_0x57418f;}export function mapMarketRegisteredSkills(_0x1658a7,_0x5b081f){const _0x4cb49a=_0x1fd675,_0x4b4179=Array['isArray'](asRecord(_0x1658a7)['skills'])?asRecord(_0x1658a7)[_0x4cb49a(0x14e)]:[];if(_0x4b4179[_0x4cb49a(0x145)]===0x0||Object['keys'](_0x5b081f)[_0x4cb49a(0x145)]===0x0)return _0x1658a7;const _0xb4562=_0x4b4179[_0x4cb49a(0x15e)](_0x4da45d=>{const _0x5b54f5=_0x4cb49a,_0x1230a7=asRecord(_0x4da45d),_0x3b483d=getTrimmedString(_0x1230a7[_0x5b54f5(0x151)])||getTrimmedString(_0x1230a7[_0x5b54f5(0x13d)]);let _0xdf9524=_0x3b483d,_0x584bc3=asRecord(_0x5b081f[_0x3b483d]);if(!Object['keys'](_0x584bc3)['length'])for(const [_0x167e40,_0x5b2692]of Object[_0x5b54f5(0x126)](_0x5b081f)){const _0xa9e154=asRecord(_0x5b2692);if(getTrimmedString(_0xa9e154[_0x5b54f5(0x150)])===_0x3b483d){_0xdf9524=_0x167e40,_0x584bc3=_0xa9e154;break;}}if(!Object['keys'](_0x584bc3)[_0x5b54f5(0x145)])return _0x4da45d;const _0x18320=getTrimmedString(_0x584bc3[_0x5b54f5(0x150)]),_0x44dce6=getTrimmedString(_0x584bc3['name']),_0x2cc69d=getTrimmedString(_0x584bc3[_0x5b54f5(0x14d)+_0x5b54f5(0x156)]),_0x4820be=getTrimmedString(_0x584bc3[_0x5b54f5(0x131)]),_0x10a700=getTrimmedString(_0x584bc3[_0x5b54f5(0x146)]);return{..._0x1230a7,'source':SKILL_SOURCE_MARKET,'skillKey':_0x18320||_0x3b483d,'gatewaySkillKey':_0x18320?_0xdf9524:null,'marketInstalledVersion':_0x10a700||null,..._0x44dce6?{'cnName':_0x44dce6}:{},..._0x2cc69d?{'description':_0x2cc69d}:{},..._0x4820be?{'logoUrl':_0x4820be}:{}};});return{...asRecord(_0x1658a7),'skills':_0xb4562};}export function createMarketSkillRuntime({configController:_0x1a33d5}){return{'mapSkillsStatus':async _0x420aee=>{const _0xadd09d=_0x2315,_0x13e150=await readSkillMarketRegistry(_0x1a33d5[_0xadd09d(0x13a)+_0xadd09d(0x15a)]())[_0xadd09d(0x159)](()=>({}));return mapMarketRegisteredSkills(_0x420aee,_0x13e150);}};}function _0x35c9(){const _0x1e3085=['trim','parse',':\x5cs*(.+)','length','version','1995546IGJHNa','gatewayS','66541zJUoIK','isArray','技能商店安装需要','3JEapQA','descript','skills','SKILLS.m','code','skillKey','manifest','market','3479063BUEIxK','2214010JXgThX','ion','logoUrl','^\x5cs*','catch','tateDir','killKey','source','ies','map','ory','replace','entries','market-s','接口返回的\x20co','808740zUfNCN','sort','8428816mpjERW','接口返回的\x20na','15ofAzDt','mpare','4815472GfBwjP','match','logo_url','size','has','Name','kills.js','localeCo','接口返回的\x20ve','targetPa','88JZWxCO','resolveS','aipc-mar','skillDir','name','utf8','Key','30jtlgdD','fromEntr'];_0x35c9=function(){return _0x1e3085;};return _0x35c9();}
@@ -0,0 +1 @@
1
+ (function(_0x648d6,_0x1b5e5a){const _0x35788a=_0x3ace,_0x5036f4=_0x648d6();while(!![]){try{const _0x357bdb=-parseInt(_0x35788a(0x10f))/0x1+-parseInt(_0x35788a(0xfd))/0x2*(parseInt(_0x35788a(0xff))/0x3)+-parseInt(_0x35788a(0x114))/0x4*(-parseInt(_0x35788a(0xf3))/0x5)+parseInt(_0x35788a(0x10c))/0x6*(-parseInt(_0x35788a(0x105))/0x7)+parseInt(_0x35788a(0xf7))/0x8+-parseInt(_0x35788a(0xf0))/0x9*(-parseInt(_0x35788a(0xe7))/0xa)+parseInt(_0x35788a(0xdd))/0xb;if(_0x357bdb===_0x1b5e5a)break;else _0x5036f4['push'](_0x5036f4['shift']());}catch(_0x242725){_0x5036f4['push'](_0x5036f4['shift']());}}}(_0x370c,0x25925));import{spawn}from'node:child_process';import{randomUUID}from'node:crypto';function _0x3ace(_0xff10a3,_0x3adc45){_0xff10a3=_0xff10a3-0xda;const _0x370c9c=_0x370c();let _0x3acebe=_0x370c9c[_0xff10a3];return _0x3acebe;}import{accessSync,constants,existsSync}from'node:fs';function _0x370c(){const _0x209587=['xterm-25','ll\x20found','.bat','2980UfFqLq','truecolo','al/bin/z','set','child','message','env','pipe','\x20not\x20fou','420145PvWLuH','find','powershe','test','/bin/bas','close','al/bin/b','bash','object','n/bash','90ICDHtt','cmd','PATH','stderr','keys','.cmd','sessionI','/opt/hom','darwin','150723heWKPZ','ase','stdout','580DGnftt','includes','/bin/zsh','toLowerC','1746776PNihWV','Terminal','/usr/loc','rted\x20Win','clear','data','498zpTgxw','win32','2892brMCHK','get','rted\x20she','kill','ebrew/bi','cwd','7kvykJc','-NoLogo','filter','X_OK','toString','platform','trim','103638TlqKxs','F_OK','\x20session','82483afMExF','push'];_0x370c=function(){return _0x209587;};return _0x370c();}import{mkdir}from'node:fs/promises';import{basename,delimiter,join}from'node:path';const FILE_EXTENSION_REGEX=/\.[a-z0-9]+$/i;function resolvePathEntries(_0x3649b3){const _0x5bde1e=_0x3ace,_0x2ee718=Object[_0x5bde1e(0xeb)](_0x3649b3)['find'](_0x30e080=>_0x30e080[_0x5bde1e(0xf6)+_0x5bde1e(0xf1)]()==='path')??_0x5bde1e(0xe9);return String(_0x3649b3[_0x2ee718]||'')['split'](delimiter)[_0x5bde1e(0x107)](Boolean);}function canExecute(_0x3bcdf6){const _0x29b845=_0x3ace;try{return accessSync(_0x3bcdf6,process['platform']===_0x29b845(0xfe)?constants[_0x29b845(0x10d)]:constants[_0x29b845(0x108)]),!![];}catch{return![];}}function resolveExecutableOnPath(_0x3d29a4,_0x4b543f){const _0x1683fa=_0x3ace,_0x466abf=String(_0x3d29a4||'')['trim']();if(!_0x466abf)return null;if(_0x466abf[_0x1683fa(0xf4)]('/')||_0x466abf['includes']('\x5c'))return existsSync(_0x466abf)?_0x466abf:null;const _0x50c027=[_0x466abf];process[_0x1683fa(0x10a)]==='win32'&&!FILE_EXTENSION_REGEX[_0x1683fa(0xe0)](_0x466abf)&&_0x50c027[_0x1683fa(0x110)](_0x466abf+'.exe',_0x466abf+_0x1683fa(0xec),_0x466abf+_0x1683fa(0x113));for(const _0xbc1a94 of resolvePathEntries(_0x4b543f)){for(const _0x51d48b of _0x50c027){const _0x4ea83d=join(_0xbc1a94,_0x51d48b);if(canExecute(_0x4ea83d))return _0x4ea83d;}}return null;}function resolveShellLaunchConfig(_0xb3cb8d){const _0x205ab1=_0x3ace;if(process[_0x205ab1(0x10a)]===_0x205ab1(0xfe)){const _0x318a46=resolveExecutableOnPath('pwsh',_0xb3cb8d)??resolveExecutableOnPath(_0x205ab1(0xdf)+'ll',_0xb3cb8d);if(_0x318a46)return{'command':_0x318a46,'args':[_0x205ab1(0x106)]};const _0x39f0a0=resolveExecutableOnPath(_0x205ab1(0xe8),_0xb3cb8d);if(_0x39f0a0)return{'command':_0x39f0a0,'args':['/Q']};throw new Error('No\x20suppo'+_0x205ab1(0xfa)+'dows\x20she'+'ll\x20found');}if(process['platform']===_0x205ab1(0xef)){const _0x276540=[_0x205ab1(0xf5),'/usr/loc'+_0x205ab1(0x116)+'sh',_0x205ab1(0xee)+'ebrew/bi'+'n/zsh'][_0x205ab1(0xde)](canExecute);if(_0x276540)return{'command':_0x276540,'args':['-i']};const _0x4aed1e=[_0x205ab1(0xe1)+'h',_0x205ab1(0xf9)+_0x205ab1(0xe3)+'ash','/opt/hom'+_0x205ab1(0x103)+_0x205ab1(0xe6)]['find'](canExecute);if(_0x4aed1e)return{'command':_0x4aed1e,'args':['--login','-i']};}const _0x283f00=resolveExecutableOnPath(process.env.SHELL||'',_0xb3cb8d)??resolveExecutableOnPath(_0x205ab1(0xe4),_0xb3cb8d)??resolveExecutableOnPath('sh',_0xb3cb8d);if(!_0x283f00)throw new Error('No\x20suppo'+_0x205ab1(0x101)+_0x205ab1(0x112));return{'command':_0x283f00,'args':['-l','-i']};}export function createTerminalManager({cwd:_0x474a6a,emitData:_0x590f79,emitExit:_0x3875af}){const _0x207adc=new Map();function _0x3e7c9e(_0x509dbc){const _0x49f2ec=_0x3ace,_0x546a42=_0x207adc[_0x49f2ec(0x100)](_0x509dbc);if(!_0x546a42)throw new Error(_0x49f2ec(0xf8)+_0x49f2ec(0x10e)+_0x49f2ec(0xdc)+'nd');return _0x546a42;}async function _0x30110a(_0x484ebd={}){const _0x262f0e=_0x3ace,_0x4df631={...process.env,'TERM':_0x262f0e(0x111)+'6color','COLORTERM':_0x262f0e(0x115)+'r',..._0x484ebd[_0x262f0e(0xda)]&&typeof _0x484ebd[_0x262f0e(0xda)]===_0x262f0e(0xe5)?_0x484ebd[_0x262f0e(0xda)]:{}},_0x2c5987=typeof _0x484ebd[_0x262f0e(0x104)]==='string'&&_0x484ebd[_0x262f0e(0x104)][_0x262f0e(0x10b)]()?_0x484ebd[_0x262f0e(0x104)]:'',_0x4ce923=_0x2c5987||_0x474a6a;await mkdir(_0x4ce923,{'recursive':!![]});const {command:_0x5239b8,args:_0x3d2f10}=resolveShellLaunchConfig(_0x4df631),_0x2eca0c=randomUUID(),_0x2a3439=spawn(_0x5239b8,_0x3d2f10,{'cwd':_0x4ce923,'env':_0x4df631,'stdio':_0x262f0e(0xdb)});return _0x207adc[_0x262f0e(0x117)](_0x2eca0c,{'sessionId':_0x2eca0c,'child':_0x2a3439}),_0x2a3439[_0x262f0e(0xf2)]['on']('data',_0x34ba75=>_0x590f79({'sessionId':_0x2eca0c,'data':_0x34ba75['toString']()})),_0x2a3439[_0x262f0e(0xea)]['on']('data',_0x2237df=>_0x590f79({'sessionId':_0x2eca0c,'data':_0x2237df[_0x262f0e(0x109)]()})),_0x2a3439['on'](_0x262f0e(0xe2),(_0x5f516c,_0x6d7037)=>{_0x207adc['delete'](_0x2eca0c),_0x3875af({'sessionId':_0x2eca0c,'exitCode':_0x5f516c,'signal':_0x6d7037});}),_0x2a3439['on']('error',_0x1191e7=>{const _0x9ce21b=_0x262f0e;_0x590f79({'sessionId':_0x2eca0c,'data':_0x1191e7[_0x9ce21b(0x119)]+'\x0a'});}),{'sessionId':_0x2eca0c,'shell':basename(_0x5239b8),'cwd':_0x4ce923};}function _0x4a4b9e(_0x21b4e8={}){const _0x31fb75=_0x3ace,_0x331770=_0x3e7c9e(String(_0x21b4e8['sessionI'+'d']||''));return _0x331770[_0x31fb75(0x118)]['stdin']['write'](String(_0x21b4e8[_0x31fb75(0xfc)]||'')),{'ok':!![]};}function _0x3260fa(_0x190895={}){const _0x4f2516=_0x3ace,_0x3ae8da=String(_0x190895[_0x4f2516(0xed)+'d']||'');return _0x3e7c9e(_0x3ae8da),{'ok':!![],'ignored':!![]};}function _0x221d03(_0x1f5c23={}){const _0x537213=_0x3ace,_0x5f34df=String(_0x1f5c23[_0x537213(0xed)+'d']||''),_0x3b582b=_0x207adc[_0x537213(0x100)](_0x5f34df);if(!_0x3b582b)return{'ok':!![],'closed':![]};return _0x207adc['delete'](_0x5f34df),_0x3b582b['child'][_0x537213(0x102)](),{'ok':!![],'closed':!![]};}function _0x1dbc87(){const _0x4608c8=_0x3ace;for(const _0x315343 of _0x207adc['values']())_0x315343[_0x4608c8(0x118)]['kill']();_0x207adc[_0x4608c8(0xfb)]();}return{'create':_0x30110a,'input':_0x4a4b9e,'resize':_0x3260fa,'close':_0x221d03,'dispose':_0x1dbc87};}
@@ -0,0 +1 @@
1
+ (function(_0x253bf9,_0x371ac3){const _0x4411d5=_0x50c1,_0x458326=_0x253bf9();while(!![]){try{const _0x1adb24=-parseInt(_0x4411d5(0x29b))/0x1*(parseInt(_0x4411d5(0x1f4))/0x2)+-parseInt(_0x4411d5(0x22f))/0x3+parseInt(_0x4411d5(0x218))/0x4+parseInt(_0x4411d5(0x1e2))/0x5*(-parseInt(_0x4411d5(0x241))/0x6)+-parseInt(_0x4411d5(0x22a))/0x7*(-parseInt(_0x4411d5(0x27f))/0x8)+parseInt(_0x4411d5(0x1d6))/0x9+-parseInt(_0x4411d5(0x1e9))/0xa*(-parseInt(_0x4411d5(0x296))/0xb);if(_0x1adb24===_0x371ac3)break;else _0x458326['push'](_0x458326['shift']());}catch(_0x3094fe){_0x458326['push'](_0x458326['shift']());}}}(_0x1a51,0x79752));import{existsSync,readFileSync,readdirSync,rmSync,statSync,writeFileSync}from'node:fs';function _0x50c1(_0x3cbaea,_0xee23d6){_0x3cbaea=_0x3cbaea-0x1cc;const _0x1a5139=_0x1a51();let _0x50c11a=_0x1a5139[_0x3cbaea];return _0x50c11a;}import{homedir}from'node:os';import{basename,join}from'node:path';import _0x48b37a from'electron-updater';import{app,BrowserWindow}from'electron';import{clean,compare}from'semver';const {autoUpdater}=_0x48b37a,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(_0x4ba568){const _0xd29454=_0x50c1;if(typeof _0x4ba568!==_0xd29454(0x1d8))return null;const _0x564442=_0x4ba568[_0xd29454(0x215)]();if(!_0x564442||_0x564442==='.'||_0x564442==='..'||_0x564442[_0xd29454(0x1da)]('/')||_0x564442[_0xd29454(0x1da)]('\x5c'))return null;return _0x564442;}function isMatchingAppUpdatePackageMetadata(_0x3fb68a,_0x1f5c89){const _0x969259=_0x50c1;if(!_0x3fb68a||!_0x1f5c89||typeof _0x1f5c89!==_0x969259(0x27a))return![];const _0x54ce27=_0x1f5c89,_0x543e0b=normalizeAppUpdatePackageFileName(_0x3fb68a[_0x969259(0x225)]),_0x2e12dc=normalizeAppUpdatePackageFileName(_0x54ce27[_0x969259(0x225)]),_0x20c7e8=_0x3fb68a[_0x969259(0x262)][_0x969259(0x215)](),_0x1d1e32=typeof _0x54ce27[_0x969259(0x262)]===_0x969259(0x1d8)?_0x54ce27[_0x969259(0x262)][_0x969259(0x215)]():'';return Boolean(_0x543e0b&&_0x2e12dc&&_0x543e0b===_0x2e12dc&&_0x20c7e8&&_0x1d1e32&&_0x20c7e8===_0x1d1e32);}function normalizeAppVersion(_0x29b328){const _0xcd015b=_0x50c1;return clean(String(_0x29b328??'')[_0xcd015b(0x215)]());}function compareAppVersions(_0x231683,_0x521afe){const _0x5e5b2c=_0x50c1,_0x484ff8=normalizeAppVersion(_0x231683),_0x21efeb=normalizeAppVersion(_0x521afe);if(!_0x484ff8||!_0x21efeb)return _0x5e5b2c(0x201);const _0x37910f=compare(_0x21efeb,_0x484ff8);if(_0x37910f===0x0)return'same-ver'+'sion';return _0x37910f>0x0?_0x5e5b2c(0x1d5)+'ewer':_0x5e5b2c(0x1f2)+'lder';}function normalizeAppUpdateChannel(_0x48d73b){const _0x2367b6=_0x50c1;return _0x48d73b===_0x2367b6(0x23a)?_0x2367b6(0x23a):_0x2367b6(0x1d9);}function normalizeString(_0x3c977f){const _0x20c72e=_0x50c1;if(typeof _0x3c977f!=='string')return null;const _0xea6110=_0x3c977f[_0x20c72e(0x215)]();return _0xea6110||null;}function normalizeReleaseNotes(_0x19c31b){const _0x114229=_0x50c1;if(typeof _0x19c31b===_0x114229(0x1d8))return normalizeString(_0x19c31b);if(!Array[_0x114229(0x29c)](_0x19c31b))return null;const _0x55d789=_0x19c31b[_0x114229(0x265)](_0x1bb777=>{const _0x50286e=_0x114229;if(typeof _0x1bb777==='string'){const _0x1c9f26=normalizeString(_0x1bb777);return _0x1c9f26?[_0x1c9f26]:[];}if(!_0x1bb777||typeof _0x1bb777!==_0x50286e(0x27a))return[];const _0x591d59=normalizeString(_0x1bb777[_0x50286e(0x28e)]),_0x74cd4d=normalizeString(_0x1bb777['note']);if(_0x591d59&&_0x74cd4d)return['v'+_0x591d59+'\x0a'+_0x74cd4d];if(_0x74cd4d)return[_0x74cd4d];if(_0x591d59)return['v'+_0x591d59];return[];});return _0x55d789['length']>0x0?_0x55d789[_0x114229(0x280)]('\x0a\x0a'):null;}function extractUpdateInfoPatch(_0x5ba61c){const _0x29b0bb=_0x50c1;if(!_0x5ba61c||typeof _0x5ba61c!==_0x29b0bb(0x27a))return{};return{'remoteVersion':normalizeString(_0x5ba61c[_0x29b0bb(0x28e)]),'availableVersion':normalizeString(_0x5ba61c[_0x29b0bb(0x28e)]),'releaseName':normalizeString(_0x5ba61c[_0x29b0bb(0x278)+_0x29b0bb(0x281)]),'releaseDate':normalizeString(_0x5ba61c[_0x29b0bb(0x25c)+'ate']),'releaseNotes':normalizeReleaseNotes(_0x5ba61c['releaseN'+_0x29b0bb(0x27e)])};}function extractPackageFileName(_0x1420a3){const _0x18c739=_0x50c1,_0x43c9e1=normalizeString(_0x1420a3);if(!_0x43c9e1)return null;try{const _0x146815=new URL(_0x43c9e1);return normalizeAppUpdatePackageFileName(decodeURIComponent(basename(_0x146815['pathname'])));}catch{const _0x5e3fa0=_0x43c9e1[_0x18c739(0x20b)](/[?#]/u,0x1)[0x0];return normalizeAppUpdatePackageFileName(basename(_0x5e3fa0));}}function _0x1a51(){const _0x27efd1=['alpha','url','utf8','isPackag','-for-upd','自动更新已禁用','webConte','86424zNWKet','发现新版本\x20v','utMs','files','max','edVersio','stringif','pending','当前使用\x20Alp','正在检查更新','自动更新仅在打包','lable','Quit','未知的自动更新错','kage','新版本','context','Library','currentV','更新包\x20v','warn','exec','platform','t\x20instal','eVersion','自动更新已在\x20s','\x20AppImag','releaseD',',请重新下载更新','vailable','startup','total','nstall','sha512','hell.con','app:upda','flatMap','ndows','ndCheckI','sPath','ersion','ewer','win32','AppData','ndCheckS','ge\x20for\x20c','ror','supporte','updaterC','bytesPer','install-','failed\x20t','发现可用更新','te.yml','info','releaseN','acheDirN','object','darwin','assign','getAllWi','otes','48HeChCp','join','ame','error','te-state','find','ownloade','id\x20not\x20t','enabled','l\x20packag','resource','t\x20pendin','phase','update-d','正在重新准备更新','version','able','finally','更新包已准备好安','o\x20persis','check\x20re','包后再试','自动更新功能已就','407QthjuH','push','isDestro','toISOStr','ate','81274eyGRWt','isArray','l\x20phase\x20','idle','ntervalM','phase\x20co','not-avai','download','-updater','within\x20t','Update','quitAndI','hasUpdat','.cache','remote-n','5418369rnGvyD','dataDir','string','latest','includes','备安装','checkFor','Local','update-i','size','transfer','自动更新失败','15xVWGWC','message','unsuppor','-error','ing','ha\x20更新渠道','正在下载\x20','185370yBQneo','pp\x20quit\x20','percent','启应用','errorCod','schedule','map','remoteVe','number','remote-o','o\x20read\x20a','24RHfePv','updates','ted','check-er','channel','g\x20downlo','内自动更新','autoInst','Caches','toFixed','更新准备失败','\x20已准备好安装','rigger\x20a','unknown','当前没有可下载的','aded\x20pac','正在安装更新并重','正在验证安装包…','no\x20match','installi','当前已经是最新版','ing\x20upda','path','split','Second','fo.json','pdate-in','安装器未就绪,请','更新包校验完成但','linux','interval','load','pending\x20','trim','then','o\x20inspec','93572UomGYw','ending\x20u','test','nfo.json','send','packageN','min','e.yml','requeste','nd\x20updat','latform','checking','ntext','fileName','taleMs','autoDown','availabl','now','370384jGbEFN','package\x20','urrent\x20p','e\x20check\x20','发现本地更新包\x20','338355KASfQn','te\x20packa','allOnApp','backgrou','Percent','installQ','r\x20starte',',请重新校验并准','-progres','nts','red'];_0x1a51=function(){return _0x27efd1;};return _0x1a51();}function getPreferredUpdatePackagePattern(){const _0xb2e03=_0x50c1;if(process['platform']==='darwin')return/\.zip$/iu;if(process[_0xb2e03(0x257)]===_0xb2e03(0x26b))return/\.exe$/iu;if(process['platform']===_0xb2e03(0x211))return/\.AppImage$/u;return/\.(zip|exe|AppImage)$/u;}function extractRemoteUpdatePackageMetadata(_0x72b24e,_0x261f86){const _0xd444b1=_0x50c1;if(!_0x72b24e||typeof _0x72b24e!==_0xd444b1(0x27a))return null;const _0x5a720c=normalizeString(_0x72b24e[_0xd444b1(0x28e)]);if(!_0x5a720c)return null;const _0x3ac028=[],_0x3245eb=Array['isArray'](_0x72b24e['files'])?_0x72b24e[_0xd444b1(0x244)]:[];for(const _0x2c9ef5 of _0x3245eb){if(!_0x2c9ef5||typeof _0x2c9ef5!=='object')continue;const _0x233b58=extractPackageFileName(_0x2c9ef5[_0xd444b1(0x23b)])??extractPackageFileName(_0x2c9ef5[_0xd444b1(0x20a)])??normalizeAppUpdatePackageFileName(_0x2c9ef5['fileName']),_0x4af448=normalizeString(_0x2c9ef5[_0xd444b1(0x262)]);_0x233b58&&_0x4af448&&_0x3ac028['push']({'fileName':_0x233b58,'sha512':_0x4af448});}const _0x320cd5=extractPackageFileName(_0x72b24e[_0xd444b1(0x23b)])??extractPackageFileName(_0x72b24e[_0xd444b1(0x20a)])??normalizeAppUpdatePackageFileName(_0x72b24e[_0xd444b1(0x225)]),_0x2a6231=normalizeString(_0x72b24e[_0xd444b1(0x262)]);_0x320cd5&&_0x2a6231&&_0x3ac028[_0xd444b1(0x297)]({'fileName':_0x320cd5,'sha512':_0x2a6231});const _0x557807=_0x3ac028[_0xd444b1(0x284)](_0x368023=>getPreferredUpdatePackagePattern()[_0xd444b1(0x21a)](_0x368023[_0xd444b1(0x225)]));if(!_0x557807)return _0x261f86?.[_0xd444b1(0x255)]?.(_0xd444b1(0x206)+_0xd444b1(0x209)+_0xd444b1(0x230)+_0xd444b1(0x26e)+_0xd444b1(0x22c)+_0xd444b1(0x222),{'platform':process[_0xd444b1(0x257)],'candidates':_0x3ac028[_0xd444b1(0x1ef)](_0xcccdae=>_0xcccdae['fileName'])}),null;return{'version':_0x5a720c,..._0x557807};}function extractProgressPatch(_0x1c2170){const _0x51364f=_0x50c1;return{'downloadPercent':typeof _0x1c2170[_0x51364f(0x1eb)]===_0x51364f(0x1f1)?_0x1c2170[_0x51364f(0x1eb)]:null,'bytesPerSecond':typeof _0x1c2170[_0x51364f(0x272)+_0x51364f(0x20c)]===_0x51364f(0x1f1)?_0x1c2170[_0x51364f(0x272)+_0x51364f(0x20c)]:null,'transferredBytes':typeof _0x1c2170['transfer'+_0x51364f(0x239)]===_0x51364f(0x1f1)?_0x1c2170[_0x51364f(0x1e0)+_0x51364f(0x239)]:null,'totalBytes':typeof _0x1c2170[_0x51364f(0x260)]===_0x51364f(0x1f1)?_0x1c2170[_0x51364f(0x260)]:null};}function getErrorMessage(_0x1d9112){const _0x1df56e=_0x50c1;if(_0x1d9112 instanceof Error&&_0x1d9112[_0x1df56e(0x1e3)][_0x1df56e(0x215)]())return _0x1d9112[_0x1df56e(0x1e3)][_0x1df56e(0x215)]();if(typeof _0x1d9112==='string'&&_0x1d9112['trim']())return _0x1d9112[_0x1df56e(0x215)]();return _0x1df56e(0x24e)+'误';}export function createUpdateController({shellConfig:_0x39c231,appName:_0x5c16eb,appVersion:_0x1c525e,broadcast:_0x1f0f41,logger:_0xc6941b}){const _0x46b3fa=_0x50c1,_0x6a5e13=_0x39c231[_0x46b3fa(0x1f5)]??{},_0x5a85bd=normalizeAppUpdateChannel(_0x6a5e13['channel']),_0x10d5d6={'backgroundCheckIntervalMs':_0x6a5e13[_0x46b3fa(0x232)+'ndCheckI'+_0x46b3fa(0x29f)+'s']??DEFAULT_BACKGROUND_UPDATE_CHECK_INTERVAL_MS,'backgroundCheckStaleMs':_0x6a5e13[_0x46b3fa(0x232)+_0x46b3fa(0x26d)+'taleMs']??DEFAULT_BACKGROUND_UPDATE_CHECK_STALE_MS,'installQuitTimeoutMs':_0x6a5e13[_0x46b3fa(0x234)+'uitTimeo'+_0x46b3fa(0x243)]??DEFAULT_INSTALL_QUIT_TIMEOUT_MS,'autoDownload':_0x6a5e13['autoDown'+_0x46b3fa(0x213)]===!![]},_0x209764={'supported':![],'channel':_0x5a85bd,'phase':_0x46b3fa(0x1e4)+_0x46b3fa(0x1f6),'currentVersion':_0x1c525e(),'remoteVersion':null,'comparisonResult':_0x46b3fa(0x201),'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':_0x46b3fa(0x23f),'error':null,'errorCode':null};let _0x1b00f4=![],_0x54dc58=null,_0x46c1c7=null,_0x113a25=null,_0x4b8a36=null,_0x19505f=null,_0x1ba904=![],_0x506d20=null,_0x477ede=0x0;function _0xca69f(){const _0x5e417f=_0x46b3fa;if(process[_0x5e417f(0x257)]===_0x5e417f(0x27b))return join(homedir(),_0x5e417f(0x252),_0x5e417f(0x1fc));if(process[_0x5e417f(0x257)]===_0x5e417f(0x26b))return process.env.LOCALAPPDATA??join(homedir(),_0x5e417f(0x26c),_0x5e417f(0x1dd));return process.env.XDG_CACHE_HOME??join(homedir(),_0x5e417f(0x1d4));}function _0x135a64(){const _0x5db8b8=_0x46b3fa;if(!app[_0x5db8b8(0x23d)+'ed']||!process[_0x5db8b8(0x289)+_0x5db8b8(0x268)])return{};const _0x2af596=join(process[_0x5db8b8(0x289)+_0x5db8b8(0x268)],'app-upda'+_0x5db8b8(0x276));if(!existsSync(_0x2af596))return{};try{const _0x1d44be=readFileSync(_0x2af596,_0x5db8b8(0x23c)),_0x268a41=/^\s*channel:\s*["']?([^"'\s#]+)["']?/imu[_0x5db8b8(0x256)](_0x1d44be),_0x7a36e7=/^\s*updaterCacheDirName:\s*["']?([^"'\s#]+)["']?/imu[_0x5db8b8(0x256)](_0x1d44be);return{'channel':normalizeAppUpdateChannel(_0x268a41?.[0x1]),'updaterCacheDirName':normalizeString(_0x7a36e7?.[0x1])};}catch(_0x2be2e6){return _0xc6941b?.[_0x5db8b8(0x255)]?.('failed\x20t'+_0x5db8b8(0x1f3)+'pp-updat'+_0x5db8b8(0x21f),{'error':getErrorMessage(_0x2be2e6)}),{};}}const _0x1f8e09=_0x135a64();_0x1f8e09['channel']&&(_0x209764[_0x46b3fa(0x1f8)]=_0x1f8e09[_0x46b3fa(0x1f8)]);function _0x246b57(){const _0x4860f2=_0x46b3fa,_0x38ac2f=_0x1f8e09[_0x4860f2(0x271)+_0x4860f2(0x279)+_0x4860f2(0x281)]||_0x5c16eb()+_0x4860f2(0x1cf);return join(_0xca69f(),_0x38ac2f);}function _0x50272c(_0x1b533c){const _0x3a589b=_0x46b3fa;return _0x1b533c===_0x3a589b(0x23a)?_0x3a589b(0x249)+_0x3a589b(0x1e7):_0x3a589b(0x295)+'绪';}function _0x586afe(){const _0x298a02=_0x46b3fa;if(_0x6a5e13[_0x298a02(0x287)]===![])return![];if(!app[_0x298a02(0x23d)+'ed'])return![];if(process[_0x298a02(0x257)]!==_0x298a02(0x211))return!![];return Boolean(process.env.APPIMAGE);}function _0x7590ec(){const _0x39aab0=_0x46b3fa;if(_0x6a5e13[_0x39aab0(0x287)]===![])return _0x39aab0(0x25a)+_0x39aab0(0x263)+'fig\x20中禁用';if(!app[_0x39aab0(0x23d)+'ed'])return _0x39aab0(0x24b)+'后的安装包中可用';if(process['platform']===_0x39aab0(0x211))return'Linux\x20下仅'+_0x39aab0(0x25b)+'e\x20版本支持应用'+_0x39aab0(0x1fa);return'当前构建不支持自'+'动更新';}function _0x3a5d51(){const _0x1c20af=_0x46b3fa;return join(_0x39c231[_0x1c20af(0x1d7)],_0x1c20af(0x273)+'phase-co'+'ntext.js'+'on');}function _0x58486f(){return{'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null};}function _0x46455e(){return{..._0x209764};}function _0x3ea3be(){const _0x5c041c=_0x46b3fa,_0x2401ad=_0x46455e();for(const _0x3001fd of BrowserWindow[_0x5c041c(0x27d)+_0x5c041c(0x266)]()){!_0x3001fd[_0x5c041c(0x298)+'yed']()&&_0x3001fd[_0x5c041c(0x240)+_0x5c041c(0x238)][_0x5c041c(0x21c)](_0x5c041c(0x264)+_0x5c041c(0x283),_0x2401ad);}_0x1f0f41?.('app:upda'+_0x5c041c(0x283),_0x2401ad);}function _0x351d87(_0x4085c5){const _0x3657da=_0x46b3fa,_0x809e84={..._0x4085c5};_0x809e84['error']===null&&_0x809e84[_0x3657da(0x1ed)+'e']===undefined&&(_0x809e84['errorCod'+'e']=null),Object[_0x3657da(0x27c)](_0x209764,_0x809e84,{'currentVersion':_0x1c525e()}),_0x3ea3be();}function _0x3c18b4(){const _0x1e04e0=_0x46b3fa;if(!_0x209764[_0x1e04e0(0x270)+'d'])throw new Error(_0x7590ec());}function _0x45ecef(_0x305943,_0x394361={}){const _0x28454f=_0x46b3fa;_0xc6941b?.[_0x28454f(0x277)]?.(_0x305943,_0x394361);}function _0x3ab9fa(_0x4c2ba3,_0x217ad9={}){const _0x5bea46=_0x46b3fa;_0xc6941b?.[_0x5bea46(0x255)]?.(_0x4c2ba3,_0x217ad9);}function _0x301cdb(_0x1d672a){const _0x53cbd5=_0x46b3fa;if(typeof _0x1d672a!==_0x53cbd5(0x1f1)||!Number['isFinite'](_0x1d672a))return null;const _0x78a580=Math[_0x53cbd5(0x21e)](0x63,Math[_0x53cbd5(0x245)](0x0,_0x1d672a));if(_0x209764['phase']!=='download'+_0x53cbd5(0x1e6)||typeof _0x209764[_0x53cbd5(0x1ce)+_0x53cbd5(0x233)]!==_0x53cbd5(0x1f1))return _0x78a580;return Math[_0x53cbd5(0x245)](_0x209764[_0x53cbd5(0x1ce)+'Percent'],_0x78a580);}function _0x1fd228(_0x532126,_0x157275){const _0x50b024=_0x46b3fa,_0x21a79a=_0x532126?'v'+_0x532126:_0x50b024(0x250);if(typeof _0x157275==='number'){if(_0x157275>=0x63)return _0x50b024(0x205);return _0x50b024(0x1e8)+_0x21a79a+'\x20('+_0x157275[_0x50b024(0x1fd)](0x1)+'%)';}return _0x50b024(0x1e8)+_0x21a79a;}function _0xce5e13(_0x173917){const _0x4ddf2c=_0x46b3fa;try{writeFileSync(_0x3a5d51(),JSON[_0x4ddf2c(0x247)+'y'](_0x173917,null,0x2),_0x4ddf2c(0x23c));}catch(_0x2d7dfa){_0x3ab9fa(_0x4ddf2c(0x274)+_0x4ddf2c(0x292)+_0x4ddf2c(0x258)+_0x4ddf2c(0x29d)+_0x4ddf2c(0x251),{'error':getErrorMessage(_0x2d7dfa)});}}function _0x4bd0bb(){const _0x4f0c93=_0x46b3fa;try{rmSync(_0x3a5d51(),{'force':!![]});}catch(_0x38b07){_0x3ab9fa('failed\x20t'+'o\x20clear\x20'+'install\x20'+_0x4f0c93(0x1cc)+_0x4f0c93(0x224),{'error':getErrorMessage(_0x38b07)});}}function _0x9bf74f(){const _0x10fd52=_0x46b3fa,_0x2c35ae=join(_0x246b57(),_0x10fd52(0x248));if(!existsSync(_0x2c35ae))return{'packageName':null,'packageBytes':null};try{const _0x40b87f=readdirSync(_0x2c35ae)[_0x10fd52(0x284)](_0x27a418=>/\.(zip|exe|dmg|AppImage)$/iu[_0x10fd52(0x21a)](_0x27a418))??null;if(!_0x40b87f)return{'packageName':null,'packageBytes':null};const _0x35e9bf=join(_0x2c35ae,_0x40b87f);return{'packageName':_0x40b87f,'packageBytes':statSync(_0x35e9bf)['size']};}catch(_0x437aab){return _0x3ab9fa(_0x10fd52(0x274)+_0x10fd52(0x217)+_0x10fd52(0x28a)+'g\x20instal'+_0x10fd52(0x288)+'e',{'error':getErrorMessage(_0x437aab)}),{'packageName':null,'packageBytes':null};}}function _0x4bc13e(){const _0x1b5897=_0x46b3fa;if(!_0x113a25)return null;const _0x237b44=join(_0x246b57(),_0x1b5897(0x248)),_0x5e1809=join(_0x237b44,_0x1b5897(0x1de)+_0x1b5897(0x21b));if(!existsSync(_0x5e1809))return null;let _0x563890=null;try{_0x563890=JSON['parse'](readFileSync(_0x5e1809,'utf8'));}catch(_0xbba152){return _0x3ab9fa(_0x1b5897(0x274)+'o\x20read\x20p'+_0x1b5897(0x219)+_0x1b5897(0x20e)+_0x1b5897(0x20d),{'error':getErrorMessage(_0xbba152)}),null;}if(!isMatchingAppUpdatePackageMetadata(_0x113a25,_0x563890))return null;const _0x580be3=join(_0x237b44,_0x113a25['fileName']);if(!existsSync(_0x580be3))return null;try{const _0x329e3e=statSync(_0x580be3);if(!_0x329e3e['isFile']()||_0x329e3e[_0x1b5897(0x1df)]===0x0)return null;return{'metadata':_0x113a25,'packageName':_0x113a25[_0x1b5897(0x225)],'packageBytes':_0x329e3e[_0x1b5897(0x1df)]};}catch(_0x555c98){return _0x3ab9fa(_0x1b5897(0x274)+_0x1b5897(0x217)+_0x1b5897(0x28a)+_0x1b5897(0x1f9)+_0x1b5897(0x203)+_0x1b5897(0x24f),{'error':getErrorMessage(_0x555c98)}),null;}}function _0x506822(_0x6fe68f){const _0x420851=_0x46b3fa,_0x1faa7f=_0x4bc13e();if(!_0x1faa7f)return![];const {metadata:_0x40e941,packageName:_0x37081c,packageBytes:_0x1744c1}=_0x1faa7f;return _0x45ecef(_0x420851(0x214)+_0x420851(0x22b)+'cache\x20hi'+'t',{'reason':_0x6fe68f,'version':_0x40e941[_0x420851(0x28e)],'packageName':_0x37081c,'packageBytes':_0x1744c1}),_0x351d87({'phase':_0x420851(0x228)+'e','remoteVersion':_0x40e941[_0x420851(0x28e)],'comparisonResult':_0x420851(0x1d5)+_0x420851(0x26a),'hasUpdate':!![],'availableVersion':_0x40e941['version'],'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':_0x1744c1,'totalBytes':_0x1744c1,'hasPendingPackage':!![],'pendingPackageName':_0x37081c,'pendingPackageBytes':_0x1744c1,'error':null,'message':_0x420851(0x22e)+'v'+_0x40e941['version']+(_0x420851(0x236)+_0x420851(0x1db))}),!![];}function _0x456c3c(){const _0x233e61=_0x46b3fa;return _0x209764[_0x233e61(0x270)+'d']&&!_0x54dc58&&!_0x46c1c7&&[_0x233e61(0x29e),_0x233e61(0x1cd)+'lable',_0x233e61(0x282)][_0x233e61(0x1da)](_0x209764[_0x233e61(0x28b)]);}function _0x4531a2(){if(!_0x19505f)return;clearTimeout(_0x19505f),_0x19505f=null;}function _0x15b38a(_0x42a0c0){const _0x3cc9c1=_0x46b3fa,_0x2f5d45=_0x209764[_0x3cc9c1(0x1ce)+'edVersio'+'n'],_0x4c5a6e=_0x209764[_0x3cc9c1(0x228)+_0x3cc9c1(0x259)];_0x4b8a36=null,_0x1ba904=![],_0x4531a2(),_0x4bd0bb(),_0x351d87({'phase':_0x3cc9c1(0x282),'checkedAt':new Date()[_0x3cc9c1(0x299)+_0x3cc9c1(0x1e6)](),'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null,'hasUpdate':!![],'availableVersion':_0x4c5a6e??_0x2f5d45,'downloadedVersion':_0x2f5d45,'error':getErrorMessage(_0x42a0c0),'errorCode':_0x3cc9c1(0x273)+_0x3cc9c1(0x282),'message':'安装更新失败'});}function _0x19d63a(){const _0x5bc67f=_0x46b3fa;_0x4531a2(),_0x1ba904=![],_0x19505f=setTimeout(()=>{const _0x2aac82=_0x50c1;if(_0x1ba904||_0x209764['phase']!==_0x2aac82(0x207)+'ng')return;_0x3ab9fa(_0x2aac82(0x1d2)+'nstall\x20d'+_0x2aac82(0x286)+_0x2aac82(0x200)+_0x2aac82(0x1ea)+_0x2aac82(0x1d0)+'imeout',{'downloadedVersion':_0x209764[_0x2aac82(0x1ce)+_0x2aac82(0x246)+'n'],'currentVersion':_0x209764[_0x2aac82(0x253)+_0x2aac82(0x269)]}),_0x15b38a(new Error('更新安装未能启动'+_0x2aac82(0x25d)+_0x2aac82(0x294)));},_0x10d5d6['installQ'+'uitTimeo'+_0x5bc67f(0x243)]);}function _0x190e9f(){const _0x57a3b4=_0x46b3fa;if(_0x1b00f4)return;_0x1b00f4=!![],_0x209764[_0x57a3b4(0x270)+'d']=_0x586afe(),_0x209764[_0x57a3b4(0x28b)]=_0x209764['supporte'+'d']?_0x57a3b4(0x29e):'unsuppor'+_0x57a3b4(0x1f6),_0x209764[_0x57a3b4(0x1e3)]=_0x209764['supporte'+'d']?_0x50272c(_0x209764[_0x57a3b4(0x1f8)]):_0x7590ec();if(!_0x209764[_0x57a3b4(0x270)+'d']){_0x3ea3be();return;}autoUpdater[_0x57a3b4(0x227)+_0x57a3b4(0x213)]=_0x10d5d6[_0x57a3b4(0x227)+_0x57a3b4(0x213)],autoUpdater[_0x57a3b4(0x1fb)+_0x57a3b4(0x231)+_0x57a3b4(0x24d)]=![],autoUpdater[_0x57a3b4(0x1f8)]=_0x209764[_0x57a3b4(0x1f8)],autoUpdater['on'](_0x57a3b4(0x223)+_0x57a3b4(0x23e)+_0x57a3b4(0x29a),()=>{const _0x4508b6=_0x57a3b4;_0x113a25=null,_0x351d87({'phase':_0x4508b6(0x223),'checkedAt':new Date()[_0x4508b6(0x299)+_0x4508b6(0x1e6)](),'remoteVersion':null,'comparisonResult':_0x4508b6(0x201),'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x58486f(),'error':null,'message':_0x4508b6(0x24a)});}),autoUpdater['on']('update-a'+_0x57a3b4(0x25e),_0x490a48=>{const _0x310ef7=_0x57a3b4,_0x10dbd9=extractUpdateInfoPatch(_0x490a48),_0xecfb1=compareAppVersions(_0x1c525e(),_0x10dbd9['remoteVe'+'rsion']);if(_0xecfb1!==_0x310ef7(0x1d5)+_0x310ef7(0x26a)){_0x113a25=null,_0x351d87({..._0x10dbd9,'phase':_0x310ef7(0x1cd)+_0x310ef7(0x24c),'comparisonResult':_0xecfb1,'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x58486f(),'checkedAt':new Date()['toISOStr'+_0x310ef7(0x1e6)](),'error':null,'message':_0x310ef7(0x208)+'本'});return;}_0x113a25=extractRemoteUpdatePackageMetadata(_0x490a48,_0xc6941b),_0x351d87({..._0x10dbd9,'phase':'availabl'+'e','comparisonResult':_0xecfb1,'hasUpdate':!![],'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x58486f(),'checkedAt':new Date()['toISOStr'+_0x310ef7(0x1e6)](),'error':null,'message':_0x10dbd9[_0x310ef7(0x228)+_0x310ef7(0x259)]?_0x310ef7(0x242)+_0x10dbd9['availabl'+'eVersion']:_0x310ef7(0x275)}),_0x506822('update_a'+_0x310ef7(0x25e));}),autoUpdater['on']('update-n'+'ot-avail'+_0x57a3b4(0x28f),_0x284aba=>{const _0x35432a=_0x57a3b4;_0x113a25=null;const _0x4a33d3=extractUpdateInfoPatch(_0x284aba);_0x351d87({..._0x4a33d3,'phase':_0x35432a(0x1cd)+_0x35432a(0x24c),'comparisonResult':compareAppVersions(_0x1c525e(),_0x4a33d3[_0x35432a(0x1f0)+'rsion']),'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x58486f(),'checkedAt':new Date()[_0x35432a(0x299)+_0x35432a(0x1e6)](),'error':null,'message':_0x35432a(0x208)+'本'});}),autoUpdater['on']('download'+_0x57a3b4(0x237)+'s',_0xb2cb5=>{const _0x4e1740=_0x57a3b4,_0x586d4b=extractProgressPatch(_0xb2cb5),_0x41b171=_0x301cdb(_0x586d4b[_0x4e1740(0x1ce)+'Percent']??null);_0x351d87({..._0x586d4b,'downloadPercent':_0x41b171,'phase':_0x4e1740(0x1ce)+_0x4e1740(0x1e6),..._0x58486f(),'error':null,'message':_0x1fd228(_0x209764['availabl'+_0x4e1740(0x259)],_0x41b171)});}),autoUpdater['on'](_0x57a3b4(0x28c)+_0x57a3b4(0x285)+'d',_0x193e6d=>{const _0x53365d=_0x57a3b4,_0xa6a851=extractUpdateInfoPatch(_0x193e6d),_0x307fb5=extractRemoteUpdatePackageMetadata(_0x193e6d,_0xc6941b)??_0x113a25;_0x307fb5&&(_0x113a25=_0x307fb5);const _0x45ff4d=_0xa6a851[_0x53365d(0x228)+_0x53365d(0x259)]??_0x307fb5?.[_0x53365d(0x28e)]??_0x209764['availabl'+_0x53365d(0x259)];_0x351d87({..._0xa6a851,'phase':_0x53365d(0x1ce)+'ed','comparisonResult':compareAppVersions(_0x1c525e(),_0x45ff4d),'hasUpdate':!![],'downloadedVersion':_0x45ff4d,'downloadPercent':0x64,..._0x58486f(),'error':null,'message':_0x45ff4d?_0x53365d(0x254)+_0x45ff4d+_0x53365d(0x1ff):_0x53365d(0x291)+'装'});}),autoUpdater['on']('error',_0x548de4=>{const _0x3dd00e=_0x57a3b4;if(_0x209764[_0x3dd00e(0x28b)]===_0x3dd00e(0x207)+'ng'){_0x15b38a(_0x548de4);return;}_0x351d87({'phase':_0x3dd00e(0x282),'checkedAt':new Date()[_0x3dd00e(0x299)+_0x3dd00e(0x1e6)](),..._0x58486f(),'error':getErrorMessage(_0x548de4),'errorCode':_0x209764[_0x3dd00e(0x28b)]==='download'+_0x3dd00e(0x1e6)?_0x3dd00e(0x1ce)+'-error':_0x3dd00e(0x1f7)+_0x3dd00e(0x26f),'message':_0x3dd00e(0x1e1)});}),_0x3ea3be();}async function _0x356820(){const _0x430012=_0x46b3fa;_0x190e9f(),_0x3c18b4();if(_0x54dc58)return _0x54dc58;return _0x45ecef(_0x430012(0x293)+'quested'),_0x54dc58=autoUpdater[_0x430012(0x1dc)+'Updates']()['then'](()=>_0x46455e())[_0x430012(0x290)](()=>{_0x54dc58=null;}),_0x54dc58;}async function _0x5ada69(){const _0x27fac1=_0x46b3fa;_0x190e9f(),_0x3c18b4();if(_0x209764[_0x27fac1(0x28b)]===_0x27fac1(0x1ce)+'ed'||_0x209764['phase']===_0x27fac1(0x207)+'ng')return _0x46455e();if(!_0x209764[_0x27fac1(0x1d3)+'e'])throw new Error(_0x27fac1(0x202)+'更新');const _0x512f51=_0x209764['phase']===_0x27fac1(0x282)&&_0x209764[_0x27fac1(0x1ed)+'e']===_0x27fac1(0x273)+_0x27fac1(0x282)&&Boolean(_0x209764[_0x27fac1(0x1ce)+_0x27fac1(0x246)+'n']);if(_0x209764[_0x27fac1(0x28b)]===_0x27fac1(0x282)){if(_0x512f51)_0x351d87({'phase':_0x27fac1(0x228)+'e','hasUpdate':!![],'availableVersion':_0x209764['availabl'+_0x27fac1(0x259)]??_0x209764['download'+_0x27fac1(0x246)+'n'],'downloadedVersion':null,'downloadPercent':null,..._0x58486f(),'error':null,'message':_0x27fac1(0x28d)+'包'});else{await _0x356820();if(_0x209764[_0x27fac1(0x28b)]!==_0x27fac1(0x228)+'e')throw new Error('当前没有可下载的'+'更新');}}if(![_0x27fac1(0x228)+'e',_0x27fac1(0x1ce)+_0x27fac1(0x1e6)]['includes'](_0x209764[_0x27fac1(0x28b)]))throw new Error(_0x27fac1(0x202)+'更新');if(_0x46c1c7)return _0x46c1c7;return _0x46c1c7=autoUpdater['download'+_0x27fac1(0x1d1)]()[_0x27fac1(0x216)](()=>{const _0x151f2c=_0x27fac1;return _0x209764[_0x151f2c(0x28b)]!=='download'+'ed'&&_0x351d87({'phase':_0x151f2c(0x282),'checkedAt':new Date()[_0x151f2c(0x299)+_0x151f2c(0x1e6)](),..._0x58486f(),'error':_0x151f2c(0x210)+_0x151f2c(0x20f)+'重试下载更新','errorCode':_0x151f2c(0x1ce)+_0x151f2c(0x1e5),'message':_0x151f2c(0x1fe)}),_0x46455e();})[_0x27fac1(0x290)](()=>{_0x46c1c7=null;}),_0x46c1c7;}function _0x420d2f(){const _0x31a4b2=_0x46b3fa;_0x190e9f(),_0x3c18b4();if(![_0x31a4b2(0x1ce)+'ed',_0x31a4b2(0x207)+'ng'][_0x31a4b2(0x1da)](_0x209764['phase']))throw new Error('当前没有可安装的'+'已下载更新');const _0x205a92=_0x9bf74f();_0x4b8a36=Date['now'](),_0xce5e13({'startedAt':new Date(_0x4b8a36)[_0x31a4b2(0x299)+'ing'](),'currentVersion':_0x209764[_0x31a4b2(0x253)+'ersion'],'downloadedVersion':_0x209764[_0x31a4b2(0x1ce)+'edVersio'+'n'],'pendingPackage':_0x205a92[_0x31a4b2(0x21d)+'ame'],'pendingPackageBytes':_0x205a92['packageB'+'ytes']}),_0x351d87({'phase':'installi'+'ng',..._0x58486f(),'error':null,'message':_0x31a4b2(0x204)+_0x31a4b2(0x1ec)});try{_0x19d63a(),autoUpdater['quitAndI'+_0x31a4b2(0x261)](![],!![]);}catch(_0x3b2cb2){_0x15b38a(_0x3b2cb2);throw _0x3b2cb2;}return{'ok':!![]};}async function _0x146a38(_0x27d851){const _0x518a4d=_0x46b3fa;if(!_0x456c3c())return;_0x477ede=Date[_0x518a4d(0x229)](),_0x45ecef(_0x518a4d(0x232)+_0x518a4d(0x221)+_0x518a4d(0x22d)+_0x518a4d(0x220)+'d',{'reason':_0x27d851});try{await _0x356820();}catch(_0x5b5091){_0x3ab9fa(_0x518a4d(0x232)+_0x518a4d(0x221)+'e\x20check\x20'+'failed',{'reason':_0x27d851,'error':getErrorMessage(_0x5b5091)});}}function _0x1a732b(_0x948662){const _0x1c83dd=_0x46b3fa;if(!_0x209764[_0x1c83dd(0x270)+'d'])return;const _0x5ce1d7=Date['now']()-_0x477ede;if(_0x5ce1d7<_0x10d5d6[_0x1c83dd(0x232)+_0x1c83dd(0x26d)+_0x1c83dd(0x226)])return;void _0x146a38(_0x948662);}function _0x1bc2d8(){const _0x20ec60=_0x46b3fa;_0x190e9f();if(!_0x209764[_0x20ec60(0x270)+'d']||_0x506d20)return;_0x506d20=setInterval(()=>{const _0x51e0d7=_0x20ec60;void _0x146a38(_0x51e0d7(0x212));},_0x10d5d6['backgrou'+_0x20ec60(0x267)+'ntervalM'+'s']),void _0x146a38(_0x20ec60(0x25f)),_0x45ecef(_0x20ec60(0x232)+_0x20ec60(0x221)+'e\x20check\x20'+_0x20ec60(0x1ee)+_0x20ec60(0x235)+'d',_0x10d5d6);}function _0x4f2640(){const _0x1e1ac5=_0x46b3fa;if(_0x209764[_0x1e1ac5(0x28b)]!==_0x1e1ac5(0x207)+'ng')return;_0x1ba904=!![],_0x4531a2();}return{'initialize':_0x190e9f,'getState':_0x46455e,'checkForUpdates':_0x356820,'downloadUpdate':_0x5ada69,'quitAndInstall':_0x420d2f,'requestBackgroundCheck':_0x1a732b,'startBackgroundChecks':_0x1bc2d8,'markQuitObserved':_0x4f2640};}
@@ -0,0 +1 @@
1
+ (function(_0xc6f1f4,_0x559ff2){const _0x2bd1b2=_0x3944,_0x57a0d7=_0xc6f1f4();while(!![]){try{const _0x3df1fe=-parseInt(_0x2bd1b2(0xd5))/0x1+-parseInt(_0x2bd1b2(0xaa))/0x2+parseInt(_0x2bd1b2(0xc1))/0x3*(-parseInt(_0x2bd1b2(0xc0))/0x4)+parseInt(_0x2bd1b2(0xd0))/0x5*(parseInt(_0x2bd1b2(0xb7))/0x6)+-parseInt(_0x2bd1b2(0xd7))/0x7*(parseInt(_0x2bd1b2(0xc9))/0x8)+-parseInt(_0x2bd1b2(0xa6))/0x9*(-parseInt(_0x2bd1b2(0xb4))/0xa)+parseInt(_0x2bd1b2(0xce))/0xb;if(_0x3df1fe===_0x559ff2)break;else _0x57a0d7['push'](_0x57a0d7['shift']());}catch(_0x351131){_0x57a0d7['push'](_0x57a0d7['shift']());}}}(_0x79f3,0xacf15));import _0x3a1924 from'electron';function _0x3944(_0xaf2efe,_0x19f755){_0xaf2efe=_0xaf2efe-0xa0;const _0x79f3eb=_0x79f3();let _0x39448c=_0x79f3eb[_0xaf2efe];return _0x39448c;}const {BrowserWindow}=_0x3a1924;function getErrorMessage(_0x45a932){const _0x2b19f6=_0x3944;if(_0x45a932 instanceof Error&&_0x45a932[_0x2b19f6(0xa0)][_0x2b19f6(0xb5)]())return _0x45a932[_0x2b19f6(0xa0)][_0x2b19f6(0xb5)]();if(typeof _0x45a932===_0x2b19f6(0xc4)&&_0x45a932['trim']())return _0x45a932[_0x2b19f6(0xb5)]();return _0x2b19f6(0xdc)+'误';}function createUnavailableUpdateController({shellConfig:_0x478397,appVersion:_0x1c63ba,broadcast:_0x260ce8,logger:_0x405026,reason:_0x53c7a4}){const _0x5a3426=_0x3944,_0x215fec=_0x478397[_0x5a3426(0xdf)]??{},_0x19fb4b={'supported':![],'channel':_0x215fec[_0x5a3426(0xc3)]===_0x5a3426(0xa2)?_0x5a3426(0xa2):_0x5a3426(0xdb),'phase':_0x5a3426(0xca)+'ted','currentVersion':_0x1c63ba(),'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':_0x53c7a4,'error':null,'errorCode':_0x5a3426(0xbc)+_0x5a3426(0xc6)+'cy'};let _0x2611ee=![];function _0x59a6e0(){return{..._0x19fb4b,'currentVersion':_0x1c63ba()};}function _0x58565a(){const _0x2a2fd9=_0x5a3426,_0xe92c39=_0x59a6e0();for(const _0x487f11 of BrowserWindow?.[_0x2a2fd9(0xa3)+_0x2a2fd9(0xac)]?.()??[]){!_0x487f11[_0x2a2fd9(0xd8)+'yed']()&&_0x487f11[_0x2a2fd9(0xbe)+_0x2a2fd9(0xda)][_0x2a2fd9(0xb0)]('app:upda'+_0x2a2fd9(0xb1),_0xe92c39);}_0x260ce8?.(_0x2a2fd9(0xcf)+'te-state',_0xe92c39);}function _0x3772f7(){const _0x2c146a=_0x5a3426;if(_0x2611ee)return;_0x2611ee=!![],_0x405026?.[_0x2c146a(0xcd)]?.(_0x2c146a(0xbf)+'ate\x20disa'+_0x2c146a(0xa7)+_0x2c146a(0xb8)+'ctron-up'+'dater\x20is'+_0x2c146a(0xc7)+'able',{'reason':_0x53c7a4}),_0x58565a();}function _0x187a51(){throw new Error(_0x53c7a4);}async function _0x4f48b5(){_0x3772f7(),_0x187a51();}async function _0x2035a3(){_0x3772f7(),_0x187a51();}async function _0x41d4e0(){_0x3772f7(),_0x187a51();}function _0x29241d(){}function _0x1cf126(){_0x3772f7();}function _0x3dc030(){}return{'initialize':_0x3772f7,'getState':_0x59a6e0,'checkForUpdates':_0x4f48b5,'downloadUpdate':_0x2035a3,'quitAndInstall':_0x41d4e0,'requestBackgroundCheck':_0x29241d,'startBackgroundChecks':_0x1cf126,'markQuitObserved':_0x3dc030};}function isElectronUpdaterMissingError(_0x271105){const _0x461256=_0x3944;if(!_0x271105)return![];if(_0x271105&&typeof _0x271105===_0x461256(0xa8)&&_0x461256(0xab)in _0x271105&&(_0x271105[_0x461256(0xab)]===_0x461256(0xae)+_0x461256(0xbb)+_0x461256(0xa9)||_0x271105[_0x461256(0xab)]===_0x461256(0xc2)+_0x461256(0xd9))){const _0x3ead1f=getErrorMessage(_0x271105);return _0x3ead1f[_0x461256(0xd3)](_0x461256(0xcb)+_0x461256(0xbd)+'r\x27')||_0x3ead1f[_0x461256(0xd3)](_0x461256(0xde)+_0x461256(0xbd)+'r\x22');}return![];}export async function loadCreateUpdateController({logger:_0x55fb13,importer:importer=_0x2f3f38=>import(_0x2f3f38)}={}){const _0x9c2567=_0x3944;try{const _0xe75537=await importer(_0x9c2567(0xb2)+'ller.mjs');if(typeof _0xe75537['createUp'+_0x9c2567(0xc8)+_0x9c2567(0xb3)]!==_0x9c2567(0xb6))throw new TypeError('updates/'+_0x9c2567(0xdd)+'er.mjs\x20d'+_0x9c2567(0xba)+_0x9c2567(0xd2)+_0x9c2567(0xcc)+_0x9c2567(0xd1)+'oller');return _0xe75537[_0x9c2567(0xd6)+_0x9c2567(0xc8)+_0x9c2567(0xb3)];}catch(_0x371894){if(!isElectronUpdaterMissingError(_0x371894))throw _0x371894;const _0x5b754f=_0x9c2567(0xc5)+'lectron-'+_0x9c2567(0xa4)+'缺失,已降级为禁'+_0x9c2567(0xd4);return _0x55fb13?.['warn']?.(_0x9c2567(0xaf)+_0x9c2567(0xad)+_0x9c2567(0xa1)+_0x9c2567(0xb9),{'error':getErrorMessage(_0x371894),'reason':_0x5b754f}),_0xe40129=>createUnavailableUpdateController({..._0xe40129,'logger':_0xe40129?.[_0x9c2567(0xa5)]??_0x55fb13,'reason':_0x5b754f});}}export const __test__={'createUnavailableUpdateController':createUnavailableUpdateController,'isElectronUpdaterMissingError':isElectronUpdaterMissingError};function _0x79f3(){const _0x5ba8a0=['latest','未知的自动更新错','controll','\x22electro','updates','message','lectron-','alpha','getAllWi','updater\x20','logger','3762828hyVtDT','bled\x20bec','object','OUND','2798342azraSO','code','ndows','o\x20load\x20e','ERR_MODU','failed\x20t','send','te-state','./contro','roller','20xUNYxw','trim','function','3570942vLvfrY','ause\x20ele','updater','oes\x20not\x20','LE_NOT_F','missing-','n-update','webConte','auto\x20upd','31028ZENaLK','387myGOLo','MODULE_N','channel','string','自动更新依赖\x20e','dependen','\x20unavail','dateCont','16DQPEOX','unsuppor','\x27electro','reateUpd','warn','37999665ddPqTc','app:upda','5xfUfWF','ateContr','export\x20c','includes','用状态','1283831KtBAEA','createUp','1728398hRWDIG','isDestro','OT_FOUND','nts'];_0x79f3=function(){return _0x5ba8a0;};return _0x79f3();}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wujie-shell/core",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
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/config": "1.0.0",
31
- "@wujie-shell/logger": "1.0.0"
37
+ "@wujie-shell/logger": "1.0.2",
38
+ "@wujie-shell/config": "1.0.2"
32
39
  },
33
40
  "scripts": {
34
41
  "build": "node ../../scripts/build-packages.mjs --package @wujie-shell/core"
@@ -1 +0,0 @@
1
- (function(_0xe70346,_0x4e2fb3){const _0x4002e8=_0x2db2,_0x5c0e82=_0xe70346();while(!![]){try{const _0xa6f469=-parseInt(_0x4002e8(0x17d))/0x1*(parseInt(_0x4002e8(0x176))/0x2)+-parseInt(_0x4002e8(0x16c))/0x3*(-parseInt(_0x4002e8(0x174))/0x4)+-parseInt(_0x4002e8(0x161))/0x5+-parseInt(_0x4002e8(0x183))/0x6+parseInt(_0x4002e8(0x160))/0x7*(parseInt(_0x4002e8(0x17f))/0x8)+-parseInt(_0x4002e8(0x179))/0x9+-parseInt(_0x4002e8(0x16a))/0xa*(-parseInt(_0x4002e8(0x171))/0xb);if(_0xa6f469===_0x4e2fb3)break;else _0x5c0e82['push'](_0x5c0e82['shift']());}catch(_0x229402){_0x5c0e82['push'](_0x5c0e82['shift']());}}}(_0xbe9c,0xdf256));import{existsSync}from'node:fs';function _0x2db2(_0x457527,_0x34cdcd){_0x457527=_0x457527-0x15e;const _0xbe9cc7=_0xbe9c();let _0x2db2d2=_0xbe9cc7[_0x457527];return _0x2db2d2;}import{readdir}from'node:fs/promises';import{join}from'node:path';import{asRecord,asStringArray,dedupeStrings,getTrimmedString}from'./utils.mjs';async function listValidSkillKeys(_0x263a24,_0x39c0d3){const _0x3078bf=_0x2db2;if(!existsSync(_0x263a24))return[];let _0x4a7fda=[];try{_0x4a7fda=await readdir(_0x263a24,{'withFileTypes':!![],'encoding':_0x3078bf(0x17b)});}catch(_0x758b4b){return console['warn'](_0x3078bf(0x166)+_0x3078bf(0x181)+'lls]\x20fai'+_0x3078bf(0x172)+_0x3078bf(0x164)+_0x3078bf(0x16e)+_0x3078bf(0x165)+_0x39c0d3,_0x758b4b),[];}const _0x4f5e5e=[];for(const _0x2e6fc5 of _0x4a7fda){if(!_0x2e6fc5[_0x3078bf(0x169)+_0x3078bf(0x15e)]())continue;const _0x114bd0=_0x2e6fc5['name'][_0x3078bf(0x168)]();if(!_0x114bd0||_0x114bd0[_0x3078bf(0x182)+'th']('_'))continue;if(existsSync(join(_0x263a24,_0x114bd0,'SKILL.md')))_0x4f5e5e[_0x3078bf(0x16f)](_0x114bd0);}return _0x4f5e5e;}export async function discoverBundledAgentSkills(_0x16e995,_0x1d39c7){const _0x37b8e1=_0x2db2,_0x242951=[],_0x283a33={},_0x5d7c33={};for(const _0x23ccc9 of _0x16e995){const _0x463673=_0x1d39c7(_0x23ccc9),_0x1ac170=await listValidSkillKeys(_0x463673,_0x23ccc9);_0x5d7c33[_0x23ccc9]=_0x1ac170,_0x1ac170['length']>0x0&&(_0x242951[_0x37b8e1(0x16f)](_0x463673),_0x283a33[_0x23ccc9]=_0x463673);}return{'extraDirs':_0x242951,'extraDirByAgent':_0x283a33,'agentAllowlist':_0x5d7c33};}function _0xbe9c(){const _0x32f6ee=['isDirect','10dVAOKw','agents','94206OPMGoM','stringif','ls\x20dir\x20a','push','load','18008353CEEPJp','led\x20to\x20r','length','44RzYUKs','list','1502aOxAmX','name','isArray','2851929RSxfkX','skills','utf8','filter','467ajmtYa','object','34792HgPmTU','map','hell:ski','startsWi','3139068AylgQQ','has','ory','find','2009zsoPbD','5629630ivdUvG','main','entries','ead\x20skil','gent=','[wujie-s','extraDir','trim'];_0xbe9c=function(){return _0x32f6ee;};return _0xbe9c();}export async function syncBundledAgentSkillsToConfig({agentIds:_0x1093a8,resolveSkillsDir:_0x175417,readConfig:_0x42bc41,writeConfig:_0x1f25ce,markConfigWriteHandledInternally:_0x19cbf5}){const _0x32f7e8=_0x2db2,_0x4d1227=await discoverBundledAgentSkills(_0x1093a8,_0x175417);if(_0x1093a8[_0x32f7e8(0x173)]===0x0)return{'discovery':_0x4d1227,'changed':![]};const _0x39371d=await _0x42bc41();let _0x1546e4=![];const _0x26fc97=asRecord(_0x39371d[_0x32f7e8(0x17a)]),_0x4c52a2=asRecord(_0x26fc97[_0x32f7e8(0x170)]),_0x5d0449=asStringArray(_0x4c52a2[_0x32f7e8(0x167)+'s']),_0x163fe8=dedupeStrings([..._0x5d0449,..._0x4d1227[_0x32f7e8(0x167)+'s']]);JSON[_0x32f7e8(0x16d)+'y'](_0x5d0449)!==JSON['stringif'+'y'](_0x163fe8)&&(_0x4c52a2['extraDir'+'s']=_0x163fe8,_0x26fc97[_0x32f7e8(0x170)]=_0x4c52a2,_0x39371d['skills']=_0x26fc97,_0x1546e4=!![]);const _0x149d8c=asRecord(_0x39371d['agents']),_0x2d9391=Array[_0x32f7e8(0x178)](_0x149d8c[_0x32f7e8(0x175)])?_0x149d8c[_0x32f7e8(0x175)]:[];if(_0x2d9391[_0x32f7e8(0x173)]>0x0){const _0x10411f=_0x2d9391['map'](_0x1c83e7=>_0x1c83e7&&typeof _0x1c83e7===_0x32f7e8(0x17e)?{..._0x1c83e7}:_0x1c83e7);let _0x5c567c=![];for(const [_0x2d27ac,_0x371d7d]of Object[_0x32f7e8(0x163)](_0x4d1227['agentAll'+'owlist'])){if(_0x2d27ac==='main')continue;const _0x2d250b=_0x10411f[_0x32f7e8(0x15f)](_0x547169=>asRecord(_0x547169)['id']===_0x2d27ac);if(!_0x2d250b)continue;const _0x1f29c5=Array[_0x32f7e8(0x178)](_0x2d250b[_0x32f7e8(0x17a)])?_0x2d250b[_0x32f7e8(0x17a)]:null;(!_0x1f29c5||JSON[_0x32f7e8(0x16d)+'y'](_0x1f29c5)!==JSON[_0x32f7e8(0x16d)+'y'](_0x371d7d))&&(_0x2d250b[_0x32f7e8(0x17a)]=_0x371d7d,_0x5c567c=!![]);}_0x5c567c&&(_0x149d8c[_0x32f7e8(0x175)]=_0x10411f,_0x39371d[_0x32f7e8(0x16b)]=_0x149d8c,_0x1546e4=!![]);}return _0x1546e4&&(_0x19cbf5?.(),await _0x1f25ce(_0x39371d)),{'discovery':_0x4d1227,'changed':_0x1546e4};}export function filterSkillsForAgent(_0x265dba,_0x44e25c,_0x29bdff=''){const _0x17c947=_0x2db2,_0x48221b=Array['isArray'](asRecord(_0x265dba)[_0x17c947(0x17a)])?asRecord(_0x265dba)[_0x17c947(0x17a)]:[],_0x2766a4=getTrimmedString(_0x29bdff)||_0x17c947(0x162),_0x39a46d=Array[_0x17c947(0x178)](asRecord(asRecord(_0x44e25c)['agents'])[_0x17c947(0x175)])?asRecord(asRecord(_0x44e25c)['agents'])[_0x17c947(0x175)]:[],_0x545406=_0x39a46d[_0x17c947(0x180)](asRecord)[_0x17c947(0x15f)](_0x5beba6=>getTrimmedString(_0x5beba6['id'])===_0x2766a4),_0x42c194=_0x545406&&Array[_0x17c947(0x178)](_0x545406[_0x17c947(0x17a)])?new Set(asStringArray(_0x545406[_0x17c947(0x17a)])):null;if(!_0x42c194)return _0x265dba;return{...asRecord(_0x265dba),'skills':_0x48221b[_0x17c947(0x17c)](_0x319bd3=>_0x42c194[_0x17c947(0x184)](getTrimmedString(asRecord(_0x319bd3)[_0x17c947(0x177)])))};}
@@ -1 +0,0 @@
1
- (function(_0x30beac,_0x5c15a3){const _0x10a295=_0x68de,_0x928b56=_0x30beac();while(!![]){try{const _0x33ac7e=parseInt(_0x10a295(0xa5))/0x1+-parseInt(_0x10a295(0xa1))/0x2+parseInt(_0x10a295(0x8e))/0x3+-parseInt(_0x10a295(0x82))/0x4+-parseInt(_0x10a295(0x94))/0x5*(-parseInt(_0x10a295(0x98))/0x6)+-parseInt(_0x10a295(0x87))/0x7+-parseInt(_0x10a295(0x89))/0x8*(-parseInt(_0x10a295(0x9d))/0x9);if(_0x33ac7e===_0x5c15a3)break;else _0x928b56['push'](_0x928b56['shift']());}catch(_0x5af1c5){_0x928b56['push'](_0x928b56['shift']());}}}(_0x373b,0x1e8ab));function _0x68de(_0x46c7cb,_0x53a9a2){_0x46c7cb=_0x46c7cb-0x79;const _0x373b1c=_0x373b();let _0x68dea8=_0x373b1c[_0x46c7cb];return _0x68dea8;}import{existsSync}from'node:fs';import{cp,mkdir,readFile,readdir,rm}from'node:fs/promises';import{dirname,join,resolve,sep}from'node:path';function _0x373b(){const _0x4f13c5=['12gSxuMy','workspac','version','utf8','main','900jKOOkH','isArray','agentId','startsWi','233310qGqRsA','gedPath:','led\x20agen','tyDomain','202995zwPfXp','hell:age','parse','model','icon','capabili','managedP','all','ory','pped\x20uns','aths','emoji','ins','led\x20to\x20s','360404TjKmtS','isDirect','agents','map','trim','871381LTvDJP','readme.j','392qTGfWy','name','length','error','absPath','268605sfesHw','nts]\x20ski','includes','afe\x20mana','some','filter','397270NdEufX','avatar','nts]\x20fai','[wujie-s'];_0x373b=function(){return _0x4f13c5;};return _0x373b();}import{asRecord,asStringArray,getTrimmedString,readJson}from'./utils.mjs';function toOptionalString(_0x8e0161){const _0x52b395=getTrimmedString(_0x8e0161);return _0x52b395||undefined;}export async function loadBundledAgents(_0x276b8d){const _0x5d9a66=_0x68de;let _0x26206d=[];try{_0x26206d=await readdir(_0x276b8d,{'withFileTypes':!![],'encoding':'utf8'});}catch{return[];}const _0x1717df=await Promise[_0x5d9a66(0x7b)](_0x26206d[_0x5d9a66(0x93)](_0x2fa7ff=>_0x2fa7ff[_0x5d9a66(0x83)+_0x5d9a66(0x7c)]())['map'](async _0x1f695f=>{const _0x6c0e24=_0x5d9a66,_0x46593b=_0x1f695f[_0x6c0e24(0x8a)][_0x6c0e24(0x86)]();if(!_0x46593b)return null;const _0x1c7e0f=await readJson(join(_0x276b8d,_0x46593b,_0x6c0e24(0x88)+'son'),{}),_0x34a2cb=asRecord(_0x1c7e0f),_0x1ebbc0=toOptionalString(_0x34a2cb[_0x6c0e24(0x8a)])??_0x46593b;if(!_0x1ebbc0)return null;return{'name':_0x1ebbc0,'cnName':toOptionalString(_0x34a2cb['cnName']),'avatar':toOptionalString(_0x34a2cb[_0x6c0e24(0x95)]),'icon':toOptionalString(_0x34a2cb[_0x6c0e24(0xa9)]),'emoji':toOptionalString(_0x34a2cb[_0x6c0e24(0x7f)]),'model':toOptionalString(_0x34a2cb[_0x6c0e24(0xa8)]),'version':toOptionalString(_0x34a2cb['version']),'capabilityDomains':asStringArray(_0x34a2cb[_0x6c0e24(0x79)+_0x6c0e24(0xa4)+'s']??_0x34a2cb['toolDoma'+_0x6c0e24(0x80)]),'managedPaths':asStringArray(_0x34a2cb[_0x6c0e24(0x7a)+_0x6c0e24(0x7e)])};}));return _0x1717df[_0x5d9a66(0x93)](Boolean);}async function readJsonVersion(_0x3521d6){const _0x1671c8=_0x68de;try{const _0x28e923=JSON[_0x1671c8(0xa7)](await readFile(_0x3521d6,_0x1671c8(0x9b)));return getTrimmedString(asRecord(_0x28e923)[_0x1671c8(0x9a)])||null;}catch{return null;}}function assertSafeManagedPath(_0xff1aa8,_0x528245){const _0x19252c=_0x68de,_0x494b47=getTrimmedString(_0x528245);if(!_0x494b47||_0x494b47[_0x19252c(0xa0)+'th']('/')||_0x494b47[_0x19252c(0x90)]('..'))return null;const _0x37ec8d=resolve(_0xff1aa8),_0x404f6a=resolve(join(_0xff1aa8,_0x494b47));if(_0x404f6a!==_0x37ec8d&&!_0x404f6a[_0x19252c(0xa0)+'th'](_0x37ec8d+sep))return null;return{'relPath':_0x494b47,'absPath':_0x404f6a};}async function copyManagedPaths(_0x1dfe7f,_0x5be2f7,_0x419e04){const _0x5debbd=_0x68de;if(_0x419e04[_0x5debbd(0x8b)]===0x0){await cp(_0x1dfe7f,_0x5be2f7,{'recursive':!![]});return;}for(const _0x42d4e3 of _0x419e04){const _0x3b4376=assertSafeManagedPath(_0x5be2f7,_0x42d4e3);if(!_0x3b4376){console['warn'](_0x5debbd(0x97)+'hell:age'+_0x5debbd(0x8f)+_0x5debbd(0x7d)+_0x5debbd(0x91)+_0x5debbd(0xa2)+'\x20'+_0x42d4e3);continue;}const _0x443a43=join(_0x1dfe7f,_0x3b4376['relPath']);if(!existsSync(_0x443a43)){await rm(_0x3b4376[_0x5debbd(0x8d)],{'recursive':!![],'force':!![]});continue;}await rm(_0x3b4376[_0x5debbd(0x8d)],{'recursive':!![],'force':!![]}),await mkdir(dirname(_0x3b4376[_0x5debbd(0x8d)]),{'recursive':!![]}),await cp(_0x443a43,_0x3b4376[_0x5debbd(0x8d)],{'recursive':!![]});}}export async function ensureBundledAgents({runtimeBundledAgentsDir:_0x26f18d,stateDir:_0x2bf127,listAgents:_0x2d66f6,createAgent:_0x5e08f2,updateAgent:_0x4cf3be,syncSkills:_0x360f51}){const _0x5e89bc=_0x68de;let _0x4dc6b2=![];const _0x390501=await _0x2d66f6(),_0x43984a=Array[_0x5e89bc(0x9e)](_0x390501[_0x5e89bc(0x84)])?_0x390501[_0x5e89bc(0x84)]:[],_0x577321=_0x43984a['find'](_0x35c6f9=>_0x35c6f9?.['id']===_0x5e89bc(0x9c)),_0x16234b=getTrimmedString(_0x577321?.[_0x5e89bc(0x99)+'e'])||join(_0x2bf127,'workspac'+'e'),_0x46e2e0=await loadBundledAgents(_0x26f18d);for(const _0x28e1e9 of _0x46e2e0){const {name:_0x52a9da,cnName:_0x252197,avatar:_0x4f733c,emoji:_0x23b8c9,version:_0xa2149,managedPaths:_0x2acb66}=_0x28e1e9,_0x338b90=_0x52a9da===_0x5e89bc(0x9c),_0x318196=_0x338b90?_0x16234b:join(dirname(_0x16234b),_0x5e89bc(0x99)+'e-'+_0x52a9da),_0x2ea009=join(_0x26f18d,_0x52a9da);if(!existsSync(_0x2ea009))continue;try{const _0x1168a7=_0x338b90||_0x43984a[_0x5e89bc(0x92)](_0x3c67cc=>_0x3c67cc?.['id']===_0x52a9da);if(_0x1168a7){const _0xa2b58c=await readJsonVersion(join(_0x318196,_0x5e89bc(0x88)+'son'));if(_0xa2149&&_0xa2b58c&&_0xa2149===_0xa2b58c)continue;await mkdir(_0x318196,{'recursive':!![]}),await copyManagedPaths(_0x2ea009,_0x318196,_0x2acb66);}else await rm(_0x318196,{'recursive':!![],'force':!![]}),await mkdir(_0x318196,{'recursive':!![]}),await cp(_0x2ea009,_0x318196,{'recursive':!![]});_0x4dc6b2=!![];if(_0x338b90)continue;if(_0x1168a7){const _0xa690d4={'agentId':_0x52a9da,'workspace':_0x318196};if(_0x252197)_0xa690d4['name']=_0x252197;if(_0x4f733c)_0xa690d4['avatar']=_0x4f733c;if(_0x23b8c9)_0xa690d4[_0x5e89bc(0x7f)]=_0x23b8c9;await _0x4cf3be(_0xa690d4);}else{const _0x4a806c={'name':_0x52a9da,'workspace':_0x318196};if(_0x4f733c)_0x4a806c['avatar']=_0x4f733c;if(_0x23b8c9)_0x4a806c['emoji']=_0x23b8c9;const _0x41876b=asRecord(await _0x5e08f2(_0x4a806c));_0x252197&&await _0x4cf3be({'agentId':getTrimmedString(_0x41876b[_0x5e89bc(0x9f)])||_0x52a9da,'name':_0x252197});}}catch(_0x4797d8){console[_0x5e89bc(0x8c)]('[wujie-s'+_0x5e89bc(0xa6)+_0x5e89bc(0x96)+_0x5e89bc(0x81)+'ync\x20bund'+_0x5e89bc(0xa3)+'t\x20\x22'+_0x52a9da+'\x22',_0x4797d8);}}return await _0x360f51?.({'agentIds':_0x46e2e0[_0x5e89bc(0x85)](_0x5c9ffd=>_0x5c9ffd[_0x5e89bc(0x8a)]),'mainWorkspace':_0x16234b}),{'didUpdate':_0x4dc6b2,'bundledAgents':_0x46e2e0};}
@@ -1 +0,0 @@
1
- const _0x4f2af3=_0x2089;(function(_0x191cd4,_0x22981c){const _0x67a73e=_0x2089,_0xcc5d2c=_0x191cd4();while(!![]){try{const _0x56af98=parseInt(_0x67a73e(0x1c4))/0x1*(parseInt(_0x67a73e(0x202))/0x2)+-parseInt(_0x67a73e(0x1b5))/0x3+-parseInt(_0x67a73e(0x1fd))/0x4+-parseInt(_0x67a73e(0x1ad))/0x5*(-parseInt(_0x67a73e(0x1ce))/0x6)+-parseInt(_0x67a73e(0x1ff))/0x7+-parseInt(_0x67a73e(0x1c5))/0x8+-parseInt(_0x67a73e(0x1f8))/0x9;if(_0x56af98===_0x22981c)break;else _0xcc5d2c['push'](_0xcc5d2c['shift']());}catch(_0x2e00e8){_0xcc5d2c['push'](_0xcc5d2c['shift']());}}}(_0x1ec7,0x26ac8));import{randomBytes}from'node:crypto';import{existsSync,unwatchFile,watchFile}from'node:fs';import{mkdir,writeFile}from'node:fs/promises';import{dirname,join}from'node:path';import _0x4b8a4c,{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='memory-c'+_0x4f2af3(0x1f9),ACTIVE_MEMORY_PLUGIN_ID=_0x4f2af3(0x197)+_0x4f2af3(0x18c),ASK_USER_QUESTION_PLUGIN_ID=_0x4f2af3(0x1fa)+'-questio'+'n';function _0x1ec7(){const _0x1deab2=['tart','557754dJLdsm','primary','Version','dmScope','info\x20loa','elPrimar','plugin\x20c','load','workspac','merge','indexOf','tarted','last-goo','session','stateDir','imageMod','product\x20','written','nfig\x20alr','apiKey','config\x20f','config\x20s','ync','initial\x20','fig\x20chan','ailed','emory','logsDir','\x20config\x20','gatewayS','toString','her\x20obse','rrent','created','keys','anthropi','onfig\x20ch','active-m','utf8','anged','per-chan','ompletio','config','eady\x20cur','rnal\x20wri','rved\x20ext','text','info','manifest','modelBas','aw\x20confi','nfig\x20syn','memory','entries','ensure\x20i','error','now','ernal\x20ch','push','15ehyjzU','plugins\x20','ready\x20cu','mtimeMs','openai','rent','runtime\x20','skills','60402mzBEVP','model','model\x20co','openai-c','nfig\x20upd','map','full','red\x20inte','nChange','modelNam','rated\x20mo','yName','nto\x20open','filter','ated','1afgkBS','657496tiudlP','provider','odel','mode','g\x20writte','onboard','allow','exists','ent\x20ensu','450594ECyUmh','reload\x20s','defaults','auto','ConfigPa','ange','protocol','gateway\x20','stringif','ompleted','Key','c-messag','length','red','entityPa','\x20creatin','persiste','cheduled','nel-peer','ports','agents','environm','ile\x20watc','nitial\x20o','\x20for\x20con','ttings\x20u','ded\x20for\x20','d\x20opencl','lastGood','openclaw','eUrl','hex','plugins','oot','restartO','configPa','deviceId','models','synced\x20i','defaultM','extraDir','baseUrl','37548AxaCDj','ore','ask-user','dataDir','missing;','785296uiXVXj','penclaw\x20','300643lkNozp','isArray'];_0x1ec7=function(){return _0x1deab2;};return _0x1ec7();}function _0x2089(_0x404f54,_0x46d373){_0x404f54=_0x404f54-0x176;const _0x1ec7ae=_0x1ec7();let _0x2089fa=_0x1ec7ae[_0x404f54];return _0x2089fa;}function createToken(){const _0x3e9269=_0x4f2af3;return randomBytes(0x18)[_0x3e9269(0x190)](_0x3e9269(0x1ed));}function createProviderModelConfig(_0x45ca41,_0x27c029=![]){const _0x29675b=_0x4f2af3;return{'id':_0x45ca41,'name':_0x45ca41,'reasoning':!![],'input':_0x27c029?[_0x29675b(0x1a0),'image']:[_0x29675b(0x1a0)],'cost':{'input':0x0,'output':0x0,'cacheRead':0x0,'cacheWrite':0x0},'contextWindow':0x3e800,'maxTokens':0x3e800};}function createProviderConfig(_0x2a058e){const _0x4c25db=_0x4f2af3;return{'apiKey':_0x2a058e[_0x4c25db(0x185)],'api':_0x2a058e[_0x4c25db(0x1d4)]===_0x4c25db(0x195)+'c'?_0x4c25db(0x195)+_0x4c25db(0x1d9)+'es':_0x4c25db(0x1b8)+_0x4c25db(0x19b)+'ns',..._0x2a058e['baseUrl']?{'baseUrl':_0x2a058e[_0x4c25db(0x1f7)]}:{},'models':[createProviderModelConfig(_0x2a058e[_0x4c25db(0x1be)+'e'])]};}function createRuntimePluginBootstrap(_0x21ed72){const _0x5db1fb=_0x4f2af3,_0x233b1a={},_0x12e00a=[];for(const _0x3298ac of _0x21ed72??[]){const _0x1ab8d0=getTrimmedString(_0x3298ac['pluginId']);if(!_0x1ab8d0)continue;_0x233b1a[_0x1ab8d0]={'enabled':!![]},_0x12e00a[_0x5db1fb(0x1ac)](_0x1ab8d0);}return!_0x233b1a[MEMORY_CORE_PLUGIN_ID]&&(_0x233b1a[MEMORY_CORE_PLUGIN_ID]={'enabled':!![],'config':{'dreaming':{'enabled':!![]}}}),!_0x233b1a[ACTIVE_MEMORY_PLUGIN_ID]&&(_0x233b1a[ACTIVE_MEMORY_PLUGIN_ID]={'enabled':!![]}),{'entries':_0x233b1a,'allow':dedupeStrings([..._0x12e00a,MEMORY_CORE_PLUGIN_ID,ACTIVE_MEMORY_PLUGIN_ID]),'bundledDiscovery':'compat'};}function createInitialOpenClawConfig(_0x32fe91,_0x2317a8){const _0x9d9ef5=_0x4f2af3,_0x379451=new Date()['toISOStr'+'ing'](),_0x2e43e8=join(_0x32fe91[_0x9d9ef5(0x1fb)],_0x9d9ef5(0x17a)+'e'),_0xce1a10=asRecord(_0x32fe91[_0x9d9ef5(0x1f3)]),_0x13decb=getTrimmedString(_0xce1a10['defaultM'+'odel']),_0x1fc860={'workspace':_0x2e43e8,'memorySearch':{'enabled':!![],'sources':[_0x9d9ef5(0x1a6)],'provider':_0x9d9ef5(0x1d1)},'compaction':{'memoryFlush':{'enabled':!![],'forceFlushTranscriptBytes':'256kb','softThresholdTokens':0x30d40}}};return _0x13decb&&(_0x1fc860[_0x9d9ef5(0x1b6)]={'primary':_0x13decb}),{'meta':{'lastTouchedVersion':_0x2317a8[_0x9d9ef5(0x1eb)+_0x9d9ef5(0x204)],'lastTouchedAt':_0x379451},'wizard':{'lastRunAt':_0x379451,'lastRunVersion':_0x2317a8[_0x9d9ef5(0x1eb)+'Version'],'lastRunCommand':_0x9d9ef5(0x1ca),'lastRunMode':'local'},'models':{'mode':'merge','providers':asRecord(_0xce1a10[_0x9d9ef5(0x1c6)+'s'])},'agents':{'defaults':_0x1fc860},'tools':{'profile':_0x9d9ef5(0x1bb)},'plugins':createRuntimePluginBootstrap(_0x2317a8[_0x9d9ef5(0x1ee)]),'skills':{'load':{'extraDirs':['skills']}},'session':{'dmScope':_0x9d9ef5(0x19a)+_0x9d9ef5(0x1e0),'reset':{'mode':'idle'}}};}function hasMeaningfulProductModels(_0x15e7fe){const _0x5c1771=_0x4f2af3,_0x5e95b9=asRecord(_0x15e7fe[_0x5c1771(0x1f3)]);return Object[_0x5c1771(0x194)](asRecord(_0x5e95b9[_0x5c1771(0x1c6)+'s']))[_0x5c1771(0x1da)]>0x0||Boolean(getTrimmedString(_0x5e95b9[_0x5c1771(0x1f5)+_0x5c1771(0x1c7)]));}function summarizeOpenClawConfig(_0x5c67b8){const _0x5e04b2=_0x4f2af3,_0x4ccc2a=asRecord(_0x5c67b8[_0x5e04b2(0x1f3)]),_0x5d9ba6=asRecord(_0x4ccc2a[_0x5e04b2(0x1c6)+'s']),_0x237ab9=asRecord(_0x5c67b8[_0x5e04b2(0x1e2)]),_0x14daab=asRecord(_0x237ab9[_0x5e04b2(0x1d0)]),_0x5a2ad0=asRecord(_0x14daab[_0x5e04b2(0x1b6)]),_0x2c3ba9=asRecord(_0x5c67b8['plugins']),_0x1595a8=asRecord(_0x2c3ba9[_0x5e04b2(0x1a7)]),_0x115bd1=asRecord(_0x5c67b8[_0x5e04b2(0x1b4)]),_0x3bcd58=asRecord(_0x115bd1[_0x5e04b2(0x179)]),_0x309722=asRecord(_0x5c67b8[_0x5e04b2(0x17f)]),_0x49991c=Array[_0x5e04b2(0x200)](_0x3bcd58['extraDir'+'s'])?_0x3bcd58[_0x5e04b2(0x1f6)+'s']:[];return{'providerCount':Object[_0x5e04b2(0x194)](_0x5d9ba6)[_0x5e04b2(0x1da)],'defaultModel':getTrimmedString(_0x5a2ad0[_0x5e04b2(0x203)]),'pluginEntryCount':Object['keys'](_0x1595a8)['length'],'pluginAllowCount':Array[_0x5e04b2(0x200)](_0x2c3ba9['allow'])?_0x2c3ba9[_0x5e04b2(0x1cb)]['length']:0x0,'skillExtraDirCount':_0x49991c['length'],'sessionDmScope':getTrimmedString(_0x309722[_0x5e04b2(0x205)])};}function syncProductModels(_0x174e62,_0x2a25cb){const _0x1fa93c=_0x4f2af3;if(!hasMeaningfulProductModels(_0x2a25cb))return{'config':_0x174e62,'changed':![]};let _0x5a03fe=![];const _0x3034ee=asRecord(_0x2a25cb['models']),_0x413420=asRecord(_0x3034ee[_0x1fa93c(0x1c6)+'s']),_0x2c2769=getTrimmedString(_0x3034ee[_0x1fa93c(0x1f5)+_0x1fa93c(0x1c7)]),_0x49fa28=asRecord(_0x174e62[_0x1fa93c(0x1f3)]),_0x1a568d=asRecord(_0x49fa28['provider'+'s']);for(const [_0x52a004,_0x1771e4]of Object[_0x1fa93c(0x1a7)](_0x413420)){const _0x2530f5=asRecord(_0x1a568d[_0x52a004]),_0x8e0121=asRecord(_0x1771e4);JSON['stringif'+'y'](_0x2530f5)!==JSON['stringif'+'y'](_0x8e0121)&&(_0x1a568d[_0x52a004]=_0x8e0121,_0x5a03fe=!![]);}_0x49fa28[_0x1fa93c(0x1c8)]!=='merge'&&(_0x49fa28[_0x1fa93c(0x1c8)]=_0x1fa93c(0x17b),_0x5a03fe=!![]);_0x49fa28[_0x1fa93c(0x1c6)+'s']!==_0x1a568d&&(_0x49fa28[_0x1fa93c(0x1c6)+'s']=_0x1a568d,_0x5a03fe=!![]);_0x174e62[_0x1fa93c(0x1f3)]!==_0x49fa28&&(_0x174e62[_0x1fa93c(0x1f3)]=_0x49fa28,_0x5a03fe=!![]);if(_0x2c2769){const _0x3773b0=asRecord(_0x174e62[_0x1fa93c(0x1e2)]),_0x4376d4=asRecord(_0x3773b0[_0x1fa93c(0x1d0)]),_0x2c2ebe=asRecord(_0x4376d4[_0x1fa93c(0x1b6)]);_0x2c2ebe[_0x1fa93c(0x203)]!==_0x2c2769&&(_0x4376d4[_0x1fa93c(0x1b6)]={..._0x2c2ebe,'primary':_0x2c2769},_0x3773b0['defaults']=_0x4376d4,_0x174e62['agents']=_0x3773b0,_0x5a03fe=!![]);}return{'config':_0x174e62,'changed':_0x5a03fe};}export function createConfigController(_0xe7a3c1){const _0x47a0b3=_0x4f2af3,_0x53b9d4=getConfigPaths(_0xe7a3c1),_0x275fcb=createRuntimeLogger(_0x53b9d4,'config');let _0x48fdee=![],_0x384568=0x0,_0x2aa25a=null,_0x44d184=null;function _0x1a57c6(){const _0x3750ce=_0x2089;return _0x53b9d4[_0x3750ce(0x1f1)+'th'];}function _0x2b3b8f(){const _0x412527=_0x2089;return _0x53b9d4[_0x412527(0x180)];}function _0x44ad41(){const _0x16ea34=_0x2089;return _0x53b9d4[_0x16ea34(0x1f2)+_0x16ea34(0x1dc)+'th'];}async function _0x10a6cf(){const _0x56e5d8=_0x2089;await ensureShellStateDirs(_0xe7a3c1),process.env.OPENCLAW_STATE_DIR=_0x53b9d4[_0x56e5d8(0x180)],process.env.OPENCLAW_CONFIG_PATH=_0x53b9d4['configPa'+'th'],_0x275fcb?.[_0x56e5d8(0x1a1)](_0x56e5d8(0x1eb)+_0x56e5d8(0x18e)+_0x56e5d8(0x1e3)+_0x56e5d8(0x1cd)+_0x56e5d8(0x1db),{'stateDir':_0x53b9d4[_0x56e5d8(0x180)],'configPath':_0x53b9d4['configPa'+'th'],'logsDir':_0x53b9d4[_0x56e5d8(0x18d)]});}async function _0x253909(){const _0x2da500=_0x2089,_0x4f4659=Date['now']();_0x275fcb?.[_0x2da500(0x1a1)]('ensure\x20i'+'nitial\x20o'+_0x2da500(0x1fe)+_0x2da500(0x187)+_0x2da500(0x17d),{'configPath':_0x53b9d4[_0x2da500(0x1f1)+'th'],'stateDir':_0x53b9d4[_0x2da500(0x180)]});try{await _0x10a6cf();const _0x410710=await loadRuntimeInfo(_0xe7a3c1['projectR'+'oot']);_0x275fcb?.[_0x2da500(0x1a1)](_0x2da500(0x1b3)+_0x2da500(0x176)+_0x2da500(0x1e8)+_0x2da500(0x187)+_0x2da500(0x188),{'runtimeRoot':_0x410710['runtimeR'+'oot'],'manifest':summarizeRuntimeManifest(_0x410710[_0x2da500(0x1a2)])});if(!existsSync(_0x53b9d4[_0x2da500(0x1f1)+'th'])){const _0x71b245=createInitialOpenClawConfig(_0xe7a3c1,_0x410710);_0x275fcb?.[_0x2da500(0x1a1)](_0x2da500(0x189)+_0x2da500(0x1eb)+_0x2da500(0x18e)+_0x2da500(0x1fc)+_0x2da500(0x1dd)+'g',{'configPath':_0x53b9d4[_0x2da500(0x1f1)+'th'],'config':summarizeOpenClawConfig(_0x71b245)}),_0x3d7f20(),await _0x24bd40(_0x71b245,_0x2da500(0x189)+_0x2da500(0x1eb)+_0x2da500(0x18e)+_0x2da500(0x193)),await writeJson(_0x53b9d4[_0x2da500(0x1ea)+_0x2da500(0x1d2)+'th'],_0x71b245),_0x275fcb?.[_0x2da500(0x1a1)](_0x2da500(0x17e)+_0x2da500(0x1e9)+_0x2da500(0x1a4)+_0x2da500(0x1c9)+'n',{'path':_0x53b9d4[_0x2da500(0x1ea)+_0x2da500(0x1d2)+'th'],'reason':_0x2da500(0x189)+_0x2da500(0x1eb)+_0x2da500(0x18e)+_0x2da500(0x193)});}else _0x275fcb?.[_0x2da500(0x1a1)](_0x2da500(0x189)+_0x2da500(0x1eb)+_0x2da500(0x18e)+_0x2da500(0x1cc),{'configPath':_0x53b9d4['configPa'+'th']});await _0x46a9d5(),await _0x1063b5(),_0x275fcb?.[_0x2da500(0x1a1)]('ensure\x20i'+_0x2da500(0x1e5)+_0x2da500(0x1fe)+'config\x20c'+_0x2da500(0x1d7),{'durationMs':Date[_0x2da500(0x1aa)]()-_0x4f4659});}catch(_0x480fec){_0x275fcb?.[_0x2da500(0x1a9)](_0x2da500(0x1a8)+'nitial\x20o'+'penclaw\x20'+_0x2da500(0x186)+_0x2da500(0x18b),{'durationMs':Date['now']()-_0x4f4659,'error':_0x480fec});throw _0x480fec;}}async function _0x10a669(){const _0x16d2a5=_0x2089;return await _0x253909(),readJsonFile(_0x53b9d4[_0x16d2a5(0x1f1)+'th'],{});}async function _0x5a29f7(){return readJsonFile(_0x53b9d4['configPa'+'th'],{});}async function _0x24bd40(_0x3cb25a,_0x19e91f=_0x47a0b3(0x1eb)+_0x47a0b3(0x18e)+_0x47a0b3(0x183)){const _0x4f9c26=_0x47a0b3;await mkdir(dirname(_0x53b9d4[_0x4f9c26(0x1f1)+'th']),{'recursive':!![]}),await writeFile(_0x53b9d4[_0x4f9c26(0x1f1)+'th'],JSON[_0x4f9c26(0x1d6)+'y'](_0x3cb25a,null,0x2)+'\x0a',_0x4f9c26(0x198)),_0x275fcb?.['info'](_0x19e91f,{'configPath':_0x53b9d4[_0x4f9c26(0x1f1)+'th'],'config':summarizeOpenClawConfig(_0x3cb25a)});}async function _0x1063b5(){const _0x19db82=_0x47a0b3,_0x5a4bcd=await loadRuntimeInfo(_0xe7a3c1['projectR'+_0x19db82(0x1ef)]),_0x332314=await _0x5a29f7(),_0x54c35f=syncRuntimeManifestPlugins(_0x332314[_0x19db82(0x1ee)],_0x5a4bcd[_0x19db82(0x1ee)]);_0x54c35f['changed']||!_0x332314[_0x19db82(0x1ee)]?(_0x332314['plugins']=_0x54c35f[_0x19db82(0x1ee)],_0x3d7f20(),await _0x24bd40(_0x332314,'runtime\x20'+_0x19db82(0x1ae)+_0x19db82(0x1f4)+_0x19db82(0x1c1)+'claw\x20con'+'fig'),_0x275fcb?.[_0x19db82(0x1a1)]('runtime\x20'+'plugin\x20c'+_0x19db82(0x196)+_0x19db82(0x199),{'runtimePluginCount':_0x5a4bcd[_0x19db82(0x1ee)][_0x19db82(0x1da)],'config':summarizeOpenClawConfig(_0x332314)})):_0x275fcb?.['info']('runtime\x20'+_0x19db82(0x178)+'onfig\x20al'+_0x19db82(0x1af)+_0x19db82(0x192),{'runtimePluginCount':_0x5a4bcd[_0x19db82(0x1ee)][_0x19db82(0x1da)]});}async function _0x46a9d5(){const _0x2d8d1c=_0x47a0b3,_0x337d90=await _0x5a29f7(),_0x773e27=syncProductModels(_0x337d90,_0xe7a3c1);_0x773e27['changed']?(await _0x5956fb(_0x773e27[_0x2d8d1c(0x19c)],_0x2d8d1c(0x182)+_0x2d8d1c(0x1b7)+_0x2d8d1c(0x1b9)+_0x2d8d1c(0x1c3)),_0x275fcb?.['info']('product\x20'+_0x2d8d1c(0x1b7)+_0x2d8d1c(0x1a5)+'ced',{'config':summarizeOpenClawConfig(_0x773e27[_0x2d8d1c(0x19c)])})):_0x275fcb?.[_0x2d8d1c(0x1a1)]('product\x20'+_0x2d8d1c(0x1b7)+_0x2d8d1c(0x184)+_0x2d8d1c(0x19d)+_0x2d8d1c(0x1b2),{'hasProductModels':hasMeaningfulProductModels(_0xe7a3c1)});}async function _0x341d54(){const _0x3023a7=_0x47a0b3;await _0x253909();const _0x1f2ccc=await _0x4b8a4c({'port':portNumbers(_0xe7a3c1[_0x3023a7(0x1e1)][_0x3023a7(0x18f)+'tart'],_0xe7a3c1['ports'][_0x3023a7(0x18f)+_0x3023a7(0x201)]+0x63)});return{'token':createToken(),'port':_0x1f2ccc};}async function _0x46f207(){const _0x36548d=_0x47a0b3,_0x1f5e26=await _0x10a669(),_0x3ea305=asRecord(_0x1f5e26[_0x36548d(0x1e2)]),_0x10e54b=asRecord(_0x3ea305['defaults']),_0x2ddc35=asRecord(_0x10e54b[_0x36548d(0x1b6)]),_0x17d826=getTrimmedString(_0x2ddc35['primary']),_0x1806a8=_0x17d826[_0x36548d(0x17c)]('/'),_0x297bbc=_0x1806a8>0x0?_0x17d826['slice'](0x0,_0x1806a8):_0x17d826,_0x59c6e4=_0x1806a8>0x0?_0x17d826['slice'](_0x1806a8+0x1):'',_0x557108=asRecord(asRecord(_0x1f5e26[_0x36548d(0x1f3)])[_0x36548d(0x1c6)+'s']),_0x25efc0=asRecord(_0x557108[_0x297bbc]);return{'provider':_0x297bbc||'','apiKey':getTrimmedString(_0x25efc0['apiKey']),'modelName':_0x59c6e4,'modelBaseUrl':getTrimmedString(_0x25efc0[_0x36548d(0x1f7)])};}async function _0x3d606d(_0xe61cb5,_0x259b86={}){const _0x2e6142=_0x47a0b3,_0x3e1c7c=await _0x10a669(),_0x5b1eff=_0xe61cb5[_0x2e6142(0x1c6)]||'default',_0x46bef1=_0x5b1eff+'/'+_0xe61cb5[_0x2e6142(0x1be)+'e'],_0x38d0=asRecord(_0x3e1c7c[_0x2e6142(0x1f3)]),_0x541b25=asRecord(_0x38d0[_0x2e6142(0x1c6)+'s']);_0x541b25[_0x5b1eff]={...asRecord(_0x541b25[_0x5b1eff]),...createProviderConfig({'apiKey':_0xe61cb5['apiKey']||'','protocol':_0xe61cb5['protocol']||_0x2e6142(0x1b1),'baseUrl':_0xe61cb5[_0x2e6142(0x1a3)+_0x2e6142(0x1ec)]||_0xe61cb5[_0x2e6142(0x1f7)]||'','modelName':_0xe61cb5[_0x2e6142(0x1be)+'e']})},_0x38d0['provider'+'s']=_0x541b25,_0x3e1c7c[_0x2e6142(0x1f3)]=_0x38d0;const _0x2dad50=asRecord(_0x3e1c7c[_0x2e6142(0x1e2)]),_0x542346=asRecord(_0x2dad50[_0x2e6142(0x1d0)]);return _0x542346[_0x2e6142(0x1b6)]={...asRecord(_0x542346[_0x2e6142(0x1b6)]),'primary':_0x46bef1},_0x542346[_0x2e6142(0x1f3)]={...asRecord(_0x542346[_0x2e6142(0x1f3)]),[_0x46bef1]:asRecord(asRecord(_0x542346['models'])[_0x46bef1])},_0x2dad50[_0x2e6142(0x1d0)]=_0x542346,_0x3e1c7c[_0x2e6142(0x1e2)]=_0x2dad50,_0x3e1c7c[_0x2e6142(0x17f)]={...asRecord(_0x3e1c7c[_0x2e6142(0x17f)]),'dmScope':_0x2e6142(0x19a)+_0x2e6142(0x1e0)},await _0x5956fb(_0x3e1c7c,_0x259b86[_0x2e6142(0x1f0)+_0x2e6142(0x1bd)]?'model\x20se'+_0x2e6142(0x1e7)+'pdated':''),{'ok':!![]};}async function _0x3f4934(_0x5f3408){const _0x34d3d2=_0x47a0b3,_0x297750=await _0x10a669(),_0x4efac4=_0x5f3408['provider'+_0x34d3d2(0x1d8)],_0x5f0170=asRecord(_0x297750[_0x34d3d2(0x1f3)]),_0x2d49ff=asRecord(_0x5f0170[_0x34d3d2(0x1c6)+'s']);_0x2d49ff[_0x4efac4]={...asRecord(_0x2d49ff[_0x4efac4]),'apiKey':_0x5f3408[_0x34d3d2(0x185)],'api':_0x34d3d2(0x1b8)+_0x34d3d2(0x19b)+'ns','baseUrl':_0x5f3408[_0x34d3d2(0x1f7)],'models':(_0x5f3408[_0x34d3d2(0x1be)+'es']??[])[_0x34d3d2(0x1ba)](_0x4636b4=>createProviderModelConfig(_0x4636b4,_0x4636b4===_0x5f3408[_0x34d3d2(0x181)+_0x34d3d2(0x177)+_0x34d3d2(0x1c0)]))},_0x5f0170['provider'+'s']=_0x2d49ff,_0x297750['models']=_0x5f0170;if(_0x5f3408[_0x34d3d2(0x181)+_0x34d3d2(0x177)+_0x34d3d2(0x1c0)]){const _0x32e9f9=asRecord(_0x297750['agents']),_0x292c1f=asRecord(_0x32e9f9[_0x34d3d2(0x1d0)]);_0x292c1f[_0x34d3d2(0x181)+'el']={...asRecord(_0x292c1f[_0x34d3d2(0x181)+'el']),'primary':_0x4efac4+'/'+_0x5f3408[_0x34d3d2(0x181)+_0x34d3d2(0x177)+_0x34d3d2(0x1c0)]},_0x32e9f9[_0x34d3d2(0x1d0)]=_0x292c1f,_0x297750[_0x34d3d2(0x1e2)]=_0x32e9f9;}return await _0x5956fb(_0x297750,'self-ope'+_0x34d3d2(0x1bf)+'dels\x20upd'+_0x34d3d2(0x1c3)),{'ok':!![]};}async function _0x264f7c({callbackUrl:_0x1a1888,secret:_0xa0424c}){const _0x373fa7=_0x47a0b3,_0x38e3a3=await _0x10a669(),_0x2b8e08=asRecord(_0x38e3a3['plugins']),_0x10ebab=asRecord(_0x2b8e08[_0x373fa7(0x1a7)]),_0x25d8e1=asRecord(_0x10ebab[ASK_USER_QUESTION_PLUGIN_ID]);return _0x10ebab[ASK_USER_QUESTION_PLUGIN_ID]={..._0x25d8e1,'enabled':!![],'config':{...asRecord(_0x25d8e1[_0x373fa7(0x19c)]),'callbackUrl':_0x1a1888,'secret':_0xa0424c}},_0x2b8e08[_0x373fa7(0x1a7)]=_0x10ebab,_0x2b8e08[_0x373fa7(0x1cb)]=dedupeStrings([...(Array[_0x373fa7(0x200)](_0x2b8e08[_0x373fa7(0x1cb)])?_0x2b8e08[_0x373fa7(0x1cb)]:[])[_0x373fa7(0x1c2)](Boolean),ASK_USER_QUESTION_PLUGIN_ID]),_0x38e3a3[_0x373fa7(0x1ee)]=_0x2b8e08,await _0x5956fb(_0x38e3a3,''),{'ok':!![]};}async function _0x5956fb(_0x90f01b,_0x2b559a=''){const _0x112790=_0x47a0b3;_0x3d7f20(),await _0x24bd40(_0x90f01b,_0x2b559a||_0x112790(0x1eb)+'\x20config\x20'+_0x112790(0x1de)+'d'),await writeJsonFile(_0x53b9d4[_0x112790(0x1ea)+'ConfigPa'+'th'],_0x90f01b),_0x275fcb?.[_0x112790(0x1a1)](_0x112790(0x17e)+_0x112790(0x1e9)+_0x112790(0x1a4)+_0x112790(0x1c9)+'n',{'path':_0x53b9d4['lastGood'+_0x112790(0x1d2)+'th'],'reason':_0x2b559a||_0x112790(0x1eb)+_0x112790(0x18e)+_0x112790(0x1de)+'d'});if(_0x2b559a)_0x1543d6(_0x2b559a);}function _0x3d7f20(){if(_0x48fdee)_0x384568+=0x1;}function _0x576db5(_0x557a3b){_0x44d184=_0x557a3b;}function _0x1543d6(_0x2c6ffd){const _0xd30180=_0x47a0b3;if(!_0x44d184)return;if(_0x2aa25a)clearTimeout(_0x2aa25a);_0x275fcb?.[_0xd30180(0x1a1)](_0xd30180(0x1d5)+_0xd30180(0x1cf)+_0xd30180(0x1df)+_0xd30180(0x1e6)+_0xd30180(0x18a)+'ge',{'reason':_0x2c6ffd,'debounceMs':0xfa}),_0x2aa25a=setTimeout(()=>_0x44d184(_0x2c6ffd),0xfa);}function _0x4359fd(){const _0x455b37=_0x47a0b3;unwatchFile(_0x53b9d4['configPa'+'th']),_0x48fdee=!![],watchFile(_0x53b9d4[_0x455b37(0x1f1)+'th'],{'interval':0x3e8},(_0x3b1814,_0x200b3b)=>{const _0x37b86d=_0x455b37;if(_0x3b1814[_0x37b86d(0x1b0)]===_0x200b3b['mtimeMs'])return;if(_0x384568>0x0){_0x384568-=0x1,_0x275fcb?.[_0x37b86d(0x1a1)](_0x37b86d(0x186)+_0x37b86d(0x1e4)+'her\x20igno'+_0x37b86d(0x1bc)+_0x37b86d(0x19e)+'te',{'configPath':_0x53b9d4[_0x37b86d(0x1f1)+'th'],'ignoredConfigWatchReloads':_0x384568});return;}_0x275fcb?.[_0x37b86d(0x1a1)](_0x37b86d(0x186)+_0x37b86d(0x1e4)+_0x37b86d(0x191)+_0x37b86d(0x19f)+_0x37b86d(0x1ab)+_0x37b86d(0x1d3),{'configPath':_0x53b9d4['configPa'+'th']}),_0x1543d6('config\x20c'+'hange');});}function _0x5bf41f(){const _0x26fd66=_0x47a0b3;if(_0x2aa25a)clearTimeout(_0x2aa25a);unwatchFile(_0x53b9d4[_0x26fd66(0x1f1)+'th']),_0x48fdee=![],_0x384568=0x0;}return{'paths':_0x53b9d4,'resolveConfigPath':_0x1a57c6,'resolveStateDir':_0x2b3b8f,'resolveDeviceIdentityPath':_0x44ad41,'ensureConfigPathEnv':_0x10a6cf,'ensureInitialConfig':_0x253909,'ensureGatewaySettings':_0x341d54,'readConfig':_0x10a669,'writeConfig':_0x24bd40,'syncRuntimePlugins':_0x1063b5,'getModelSettings':_0x46f207,'setModelSettings':_0x3d606d,'setSelfOperatedModels':_0x3f4934,'ensureAskUserQuestionPluginConfig':_0x264f7c,'markConfigWriteHandledInternally':_0x3d7f20,'setGatewayRestartHandler':_0x576db5,'watchConfigChanges':_0x4359fd,'dispose':_0x5bf41f};}