@gatanot/qualia_web 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/_app/immutable/chunks/B3Tl-glk.js +3 -0
- package/build/client/_app/immutable/chunks/B3Tl-glk.js.br +0 -0
- package/build/client/_app/immutable/chunks/B3Tl-glk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CxmPiQW9.js → CSQL0SK4.js} +1 -1
- package/build/client/_app/immutable/chunks/CSQL0SK4.js.br +0 -0
- package/build/client/_app/immutable/chunks/CSQL0SK4.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CodIJQI8.js +1 -0
- package/build/client/_app/immutable/chunks/CodIJQI8.js.br +2 -0
- package/build/client/_app/immutable/chunks/CodIJQI8.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.CAKAEcgA.js → app.sztFHSFr.js} +2 -2
- package/build/client/_app/immutable/entry/app.sztFHSFr.js.br +0 -0
- package/build/client/_app/immutable/entry/app.sztFHSFr.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.vm6ptYk8.js +1 -0
- package/build/client/_app/immutable/entry/start.vm6ptYk8.js.br +1 -0
- package/build/client/_app/immutable/entry/start.vm6ptYk8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.fnpvsEAN.js → 0.DS0qNAWW.js} +1 -1
- package/build/client/_app/immutable/nodes/0.DS0qNAWW.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DS0qNAWW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.CLtaTeie.js → 1.CbWQK0pS.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CbWQK0pS.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CbWQK0pS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.BwxFyRtn.js → 2.BQRorALz.js} +1 -1
- package/build/client/_app/immutable/nodes/2.BQRorALz.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BQRorALz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.D2KZBL5g.js → 3.D62SyLQS.js} +1 -1
- package/build/client/_app/immutable/nodes/3.D62SyLQS.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D62SyLQS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.B6LN5K9i.js → 4.BoU1LLAs.js} +1 -1
- package/build/client/_app/immutable/nodes/4.BoU1LLAs.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BoU1LLAs.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/handler.js +3 -3
- package/build/index.js +3 -3
- package/build/server/chunks/{0-CF_dr3E0.js → 0-DVj7JuQM.js} +3 -3
- package/build/server/chunks/{0-CF_dr3E0.js.map → 0-DVj7JuQM.js.map} +1 -1
- package/build/server/chunks/{1-CVoEVbhQ.js → 1-Bd5Vu8m_.js} +3 -3
- package/build/server/chunks/{1-CVoEVbhQ.js.map → 1-Bd5Vu8m_.js.map} +1 -1
- package/build/server/chunks/{2-BzhQC8cX.js → 2-DgtygtE8.js} +5 -5
- package/build/server/chunks/{2-BzhQC8cX.js.map → 2-DgtygtE8.js.map} +1 -1
- package/build/server/chunks/{3-CukYFw9L.js → 3-BrzeknZB.js} +3 -3
- package/build/server/chunks/{3-CukYFw9L.js.map → 3-BrzeknZB.js.map} +1 -1
- package/build/server/chunks/4-C6g5vipV.js +9 -0
- package/build/server/chunks/{4-4e_Gaah7.js.map → 4-C6g5vipV.js.map} +1 -1
- package/build/server/chunks/{5-B4fCEv4c.js → 5-Bc-Iv5NV.js} +2 -2
- package/build/server/chunks/{5-B4fCEv4c.js.map → 5-Bc-Iv5NV.js.map} +1 -1
- package/build/server/chunks/{ChatInput-GWTgCE1t.js → ChatInput-GPXQG-DJ.js} +2 -2
- package/build/server/chunks/{ChatInput-GWTgCE1t.js.map → ChatInput-GPXQG-DJ.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-MrMdtdjr.js → _layout.svelte-BrIFiFxT.js} +5 -5
- package/build/server/chunks/{_layout.svelte-MrMdtdjr.js.map → _layout.svelte-BrIFiFxT.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-OC4xDCWu.js → _page.svelte-CtaGhRdz.js} +5 -5
- package/build/server/chunks/{_page.svelte-OC4xDCWu.js.map → _page.svelte-CtaGhRdz.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CfQFFres.js → _page.svelte-DgAwNHKm.js} +5 -5
- package/build/server/chunks/{_page.svelte-CfQFFres.js.map → _page.svelte-DgAwNHKm.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CgTaVEr0.js → _page.svelte-DpfcGY3P.js} +3 -3
- package/build/server/chunks/{_page.svelte-CgTaVEr0.js.map → _page.svelte-DpfcGY3P.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DEDJBB4D.js → _page.svelte-g3xR2V1m.js} +7 -7
- package/build/server/chunks/{_page.svelte-DEDJBB4D.js.map → _page.svelte-g3xR2V1m.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D6NGuqud.js → _server.ts-1Qey6gUs.js} +3 -3
- package/build/server/chunks/{_server.ts-D6NGuqud.js.map → _server.ts-1Qey6gUs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CJOrsy4y.js → _server.ts-B8muK7Tl.js} +3 -3
- package/build/server/chunks/{_server.ts-CJOrsy4y.js.map → _server.ts-B8muK7Tl.js.map} +1 -1
- package/build/server/chunks/{_server.ts-K359HUPL.js → _server.ts-BydeSZjf.js} +3 -3
- package/build/server/chunks/{_server.ts-K359HUPL.js.map → _server.ts-BydeSZjf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DiHyx5ij.js → _server.ts-DQkvzHwv.js} +4 -4
- package/build/server/chunks/{_server.ts-DiHyx5ij.js.map → _server.ts-DQkvzHwv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-e4VKCo3M.js → _server.ts-DamX-ESD.js} +3 -3
- package/build/server/chunks/{_server.ts-e4VKCo3M.js.map → _server.ts-DamX-ESD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-nr6qwbTw.js → _server.ts-_IHmtcF8.js} +3 -3
- package/build/server/chunks/{_server.ts-nr6qwbTw.js.map → _server.ts-_IHmtcF8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-GB-Qo389.js → _server.ts-eiimbDQG.js} +3 -3
- package/build/server/chunks/{_server.ts-GB-Qo389.js.map → _server.ts-eiimbDQG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BG3v883h.js → _server.ts-ouWIsxXX.js} +3 -3
- package/build/server/chunks/{_server.ts-BG3v883h.js.map → _server.ts-ouWIsxXX.js.map} +1 -1
- package/build/server/chunks/{client-BoLIct8q.js → client-Cv79hrZo.js} +2 -2
- package/build/server/chunks/{client-BoLIct8q.js.map → client-Cv79hrZo.js.map} +1 -1
- package/build/server/chunks/{config-d3FC8naq.js → config-DS5dPt9_.js} +2 -2
- package/build/server/chunks/{config-d3FC8naq.js.map → config-DS5dPt9_.js.map} +1 -1
- package/build/server/chunks/{error.svelte-BpxjjtfZ.js → error.svelte-B153hSeK.js} +3 -3
- package/build/server/chunks/{error.svelte-BpxjjtfZ.js.map → error.svelte-B153hSeK.js.map} +1 -1
- package/build/server/chunks/{gateway-DWcUFfHo.js → gateway-0QMjPPVX.js} +3 -3
- package/build/server/chunks/{gateway-DWcUFfHo.js.map → gateway-0QMjPPVX.js.map} +1 -1
- package/build/server/chunks/{handler-BAQYBQgy.js → handler-BqMzY9sS.js} +3 -3
- package/build/server/chunks/{handler-BAQYBQgy.js.map → handler-BqMzY9sS.js.map} +1 -1
- package/build/server/chunks/{hooks.server-C6heBR7o.js → hooks.server-CctbZs5A.js} +4 -4
- package/build/server/chunks/{hooks.server-C6heBR7o.js.map → hooks.server-CctbZs5A.js.map} +1 -1
- package/build/server/chunks/{index.js-N7Sh42pC.js → index.js-CJZab21L.js} +3 -3
- package/build/server/chunks/index.js-CJZab21L.js.map +1 -0
- package/build/server/chunks/{manifest.js-D2rH2GXr.js → manifest.js-fLXWPs35.js} +16 -16
- package/build/server/chunks/{manifest.js-D2rH2GXr.js.map → manifest.js-fLXWPs35.js.map} +1 -1
- package/build/server/chunks/{markdown-BYqQ8bKF.js → markdown-YyE7dFVj.js} +2 -2
- package/build/server/chunks/{markdown-BYqQ8bKF.js.map → markdown-YyE7dFVj.js.map} +1 -1
- package/build/server/chunks/{session-store-B1Aop0Qn.js → session-store-DFVI78g2.js} +2 -2
- package/build/server/chunks/{session-store-B1Aop0Qn.js.map → session-store-DFVI78g2.js.map} +1 -1
- package/build/server/chunks/{stores-D_6JNTkz.js → stores-HHI1779R.js} +3 -3
- package/build/server/chunks/{stores-D_6JNTkz.js.map → stores-HHI1779R.js.map} +1 -1
- package/package.json +2 -2
- package/build/client/_app/immutable/chunks/BMcRbUT8.js +0 -3
- package/build/client/_app/immutable/chunks/BMcRbUT8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BMcRbUT8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BVDlhZK_.js +0 -1
- package/build/client/_app/immutable/chunks/BVDlhZK_.js.br +0 -2
- package/build/client/_app/immutable/chunks/BVDlhZK_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CxmPiQW9.js.br +0 -0
- package/build/client/_app/immutable/chunks/CxmPiQW9.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CAKAEcgA.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CAKAEcgA.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BSM2k8tg.js +0 -1
- package/build/client/_app/immutable/entry/start.BSM2k8tg.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BSM2k8tg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.fnpvsEAN.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.fnpvsEAN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CLtaTeie.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CLtaTeie.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BwxFyRtn.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BwxFyRtn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.D2KZBL5g.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D2KZBL5g.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.B6LN5K9i.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.B6LN5K9i.js.gz +0 -0
- package/build/server/chunks/4-4e_Gaah7.js +0 -9
- package/build/server/chunks/index.js-N7Sh42pC.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-d3FC8naq.js","sources":["../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../node_modules/file-uri-to-path/index.js","../../../../../node_modules/bindings/bindings.js","../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../node_modules/better-sqlite3/lib/index.js","../../../.svelte-kit/output/server/chunks/config.js"],"sourcesContent":["'use strict';\n\nexports.getBooleanOption = (options, key) => {\n\tlet value = false;\n\tif (key in options && typeof (value = options[key]) !== 'boolean') {\n\t\tthrow new TypeError(`Expected the \"${key}\" option to be a boolean`);\n\t}\n\treturn value;\n};\n\nexports.cppdb = Symbol();\nexports.inspect = Symbol.for('nodejs.util.inspect.custom');\n","'use strict';\nconst descriptor = { value: 'SqliteError', writable: true, enumerable: false, configurable: true };\n\nfunction SqliteError(message, code) {\n\tif (new.target !== SqliteError) {\n\t\treturn new SqliteError(message, code);\n\t}\n\tif (typeof code !== 'string') {\n\t\tthrow new TypeError('Expected second argument to be a string');\n\t}\n\tError.call(this, message);\n\tdescriptor.value = '' + message;\n\tObject.defineProperty(this, 'message', descriptor);\n\tError.captureStackTrace(this, SqliteError);\n\tthis.code = code;\n}\nObject.setPrototypeOf(SqliteError, Error);\nObject.setPrototypeOf(SqliteError.prototype, Error.prototype);\nObject.defineProperty(SqliteError.prototype, 'name', descriptor);\nmodule.exports = SqliteError;\n","\n/**\n * Module dependencies.\n */\n\nvar sep = require('path').sep || '/';\n\n/**\n * Module exports.\n */\n\nmodule.exports = fileUriToPath;\n\n/**\n * File URI to Path function.\n *\n * @param {String} uri\n * @return {String} path\n * @api public\n */\n\nfunction fileUriToPath (uri) {\n if ('string' != typeof uri ||\n uri.length <= 7 ||\n 'file://' != uri.substring(0, 7)) {\n throw new TypeError('must pass in a file:// URI to convert to a file path');\n }\n\n var rest = decodeURI(uri.substring(7));\n var firstSlash = rest.indexOf('/');\n var host = rest.substring(0, firstSlash);\n var path = rest.substring(firstSlash + 1);\n\n // 2. Scheme Definition\n // As a special case, <host> can be the string \"localhost\" or the empty\n // string; this is interpreted as \"the machine from which the URL is\n // being interpreted\".\n if ('localhost' == host) host = '';\n\n if (host) {\n host = sep + sep + host;\n }\n\n // 3.2 Drives, drive letters, mount points, file system root\n // Drive letters are mapped into the top of a file URI in various ways,\n // depending on the implementation; some applications substitute\n // vertical bar (\"|\") for the colon after the drive letter, yielding\n // \"file:///c|/tmp/test.txt\". In some cases, the colon is left\n // unchanged, as in \"file:///c:/tmp/test.txt\". In other cases, the\n // colon is simply omitted, as in \"file:///c/tmp/test.txt\".\n path = path.replace(/^(.+)\\|/, '$1:');\n\n // for Windows, we need to invert the path separators from what a URI uses\n if (sep == '\\\\') {\n path = path.replace(/\\//g, '\\\\');\n }\n\n if (/^.+\\:/.test(path)) {\n // has Windows drive at beginning of path\n } else {\n // unix path…\n path = sep + path;\n }\n\n return host + path;\n}\n","/**\n * Module dependencies.\n */\n\nvar fs = require('fs'),\n path = require('path'),\n fileURLToPath = require('file-uri-to-path'),\n join = path.join,\n dirname = path.dirname,\n exists =\n (fs.accessSync &&\n function(path) {\n try {\n fs.accessSync(path);\n } catch (e) {\n return false;\n }\n return true;\n }) ||\n fs.existsSync ||\n path.existsSync,\n defaults = {\n arrow: process.env.NODE_BINDINGS_ARROW || ' → ',\n compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled',\n platform: process.platform,\n arch: process.arch,\n nodePreGyp:\n 'node-v' +\n process.versions.modules +\n '-' +\n process.platform +\n '-' +\n process.arch,\n version: process.versions.node,\n bindings: 'bindings.node',\n try: [\n // node-gyp's linked version in the \"build\" dir\n ['module_root', 'build', 'bindings'],\n // node-waf and gyp_addon (a.k.a node-gyp)\n ['module_root', 'build', 'Debug', 'bindings'],\n ['module_root', 'build', 'Release', 'bindings'],\n // Debug files, for development (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Debug', 'bindings'],\n ['module_root', 'Debug', 'bindings'],\n // Release files, but manually compiled (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Release', 'bindings'],\n ['module_root', 'Release', 'bindings'],\n // Legacy from node-waf, node <= 0.4.x\n ['module_root', 'build', 'default', 'bindings'],\n // Production \"Release\" buildtype binary (meh...)\n ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],\n // node-qbs builds\n ['module_root', 'addon-build', 'release', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'default', 'install-root', 'bindings'],\n // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}\n ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']\n ]\n };\n\n/**\n * The main `bindings()` function loads the compiled bindings for a given module.\n * It uses V8's Error API to determine the parent filename that this function is\n * being invoked from, which is then used to find the root directory.\n */\n\nfunction bindings(opts) {\n // Argument surgery\n if (typeof opts == 'string') {\n opts = { bindings: opts };\n } else if (!opts) {\n opts = {};\n }\n\n // maps `defaults` onto `opts` object\n Object.keys(defaults).map(function(i) {\n if (!(i in opts)) opts[i] = defaults[i];\n });\n\n // Get the module root\n if (!opts.module_root) {\n opts.module_root = exports.getRoot(exports.getFileName());\n }\n\n // Ensure the given bindings name ends with .node\n if (path.extname(opts.bindings) != '.node') {\n opts.bindings += '.node';\n }\n\n // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035\n var requireFunc =\n typeof __webpack_require__ === 'function'\n ? __non_webpack_require__\n : require;\n\n var tries = [],\n i = 0,\n l = opts.try.length,\n n,\n b,\n err;\n\n for (; i < l; i++) {\n n = join.apply(\n null,\n opts.try[i].map(function(p) {\n return opts[p] || p;\n })\n );\n tries.push(n);\n try {\n b = opts.path ? requireFunc.resolve(n) : requireFunc(n);\n if (!opts.path) {\n b.path = n;\n }\n return b;\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND' &&\n e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&\n !/not find/i.test(e.message)) {\n throw e;\n }\n }\n }\n\n err = new Error(\n 'Could not locate the bindings file. Tried:\\n' +\n tries\n .map(function(a) {\n return opts.arrow + a;\n })\n .join('\\n')\n );\n err.tries = tries;\n throw err;\n}\nmodule.exports = exports = bindings;\n\n/**\n * Gets the filename of the JavaScript file that invokes this function.\n * Used to help find the root directory of a module.\n * Optionally accepts an filename argument to skip when searching for the invoking filename\n */\n\nexports.getFileName = function getFileName(calling_file) {\n var origPST = Error.prepareStackTrace,\n origSTL = Error.stackTraceLimit,\n dummy = {},\n fileName;\n\n Error.stackTraceLimit = 10;\n\n Error.prepareStackTrace = function(e, st) {\n for (var i = 0, l = st.length; i < l; i++) {\n fileName = st[i].getFileName();\n if (fileName !== __filename) {\n if (calling_file) {\n if (fileName !== calling_file) {\n return;\n }\n } else {\n return;\n }\n }\n }\n };\n\n // run the 'prepareStackTrace' function above\n Error.captureStackTrace(dummy);\n dummy.stack;\n\n // cleanup\n Error.prepareStackTrace = origPST;\n Error.stackTraceLimit = origSTL;\n\n // handle filename that starts with \"file://\"\n var fileSchema = 'file://';\n if (fileName.indexOf(fileSchema) === 0) {\n fileName = fileURLToPath(fileName);\n }\n\n return fileName;\n};\n\n/**\n * Gets the root directory of a module, given an arbitrary filename\n * somewhere in the module tree. The \"root directory\" is the directory\n * containing the `package.json` file.\n *\n * In: /home/nate/node-native-module/lib/index.js\n * Out: /home/nate/node-native-module\n */\n\nexports.getRoot = function getRoot(file) {\n var dir = dirname(file),\n prev;\n while (true) {\n if (dir === '.') {\n // Avoids an infinite loop in rare cases, like the REPL\n dir = process.cwd();\n }\n if (\n exists(join(dir, 'package.json')) ||\n exists(join(dir, 'node_modules'))\n ) {\n // Found the 'package.json' file or 'node_modules' dir; we're done\n return dir;\n }\n if (prev === dir) {\n // Got to the top\n throw new Error(\n 'Could not find module root given file: \"' +\n file +\n '\". Do you have a `package.json` file? '\n );\n }\n // Try the parent dir next\n prev = dir;\n dir = join(dir, '..');\n }\n};\n","'use strict';\nconst { cppdb } = require('../util');\n\nexports.prepare = function prepare(sql) {\n\treturn this[cppdb].prepare(sql, this, false);\n};\n\nexports.exec = function exec(sql) {\n\tthis[cppdb].exec(sql);\n\treturn this;\n};\n\nexports.close = function close() {\n\tthis[cppdb].close();\n\treturn this;\n};\n\nexports.loadExtension = function loadExtension(...args) {\n\tthis[cppdb].loadExtension(...args);\n\treturn this;\n};\n\nexports.defaultSafeIntegers = function defaultSafeIntegers(...args) {\n\tthis[cppdb].defaultSafeIntegers(...args);\n\treturn this;\n};\n\nexports.unsafeMode = function unsafeMode(...args) {\n\tthis[cppdb].unsafeMode(...args);\n\treturn this;\n};\n\nexports.getters = {\n\tname: {\n\t\tget: function name() { return this[cppdb].name; },\n\t\tenumerable: true,\n\t},\n\topen: {\n\t\tget: function open() { return this[cppdb].open; },\n\t\tenumerable: true,\n\t},\n\tinTransaction: {\n\t\tget: function inTransaction() { return this[cppdb].inTransaction; },\n\t\tenumerable: true,\n\t},\n\treadonly: {\n\t\tget: function readonly() { return this[cppdb].readonly; },\n\t\tenumerable: true,\n\t},\n\tmemory: {\n\t\tget: function memory() { return this[cppdb].memory; },\n\t\tenumerable: true,\n\t},\n};\n","'use strict';\nconst { cppdb } = require('../util');\nconst controllers = new WeakMap();\n\nmodule.exports = function transaction(fn) {\n\tif (typeof fn !== 'function') throw new TypeError('Expected first argument to be a function');\n\n\tconst db = this[cppdb];\n\tconst controller = getController(db, this);\n\tconst { apply } = Function.prototype;\n\n\t// Each version of the transaction function has these same properties\n\tconst properties = {\n\t\tdefault: { value: wrapTransaction(apply, fn, db, controller.default) },\n\t\tdeferred: { value: wrapTransaction(apply, fn, db, controller.deferred) },\n\t\timmediate: { value: wrapTransaction(apply, fn, db, controller.immediate) },\n\t\texclusive: { value: wrapTransaction(apply, fn, db, controller.exclusive) },\n\t\tdatabase: { value: this, enumerable: true },\n\t};\n\n\tObject.defineProperties(properties.default.value, properties);\n\tObject.defineProperties(properties.deferred.value, properties);\n\tObject.defineProperties(properties.immediate.value, properties);\n\tObject.defineProperties(properties.exclusive.value, properties);\n\n\t// Return the default version of the transaction function\n\treturn properties.default.value;\n};\n\n// Return the database's cached transaction controller, or create a new one\nconst getController = (db, self) => {\n\tlet controller = controllers.get(db);\n\tif (!controller) {\n\t\tconst shared = {\n\t\t\tcommit: db.prepare('COMMIT', self, false),\n\t\t\trollback: db.prepare('ROLLBACK', self, false),\n\t\t\tsavepoint: db.prepare('SAVEPOINT `\\t_bs3.\\t`', self, false),\n\t\t\trelease: db.prepare('RELEASE `\\t_bs3.\\t`', self, false),\n\t\t\trollbackTo: db.prepare('ROLLBACK TO `\\t_bs3.\\t`', self, false),\n\t\t};\n\t\tcontrollers.set(db, controller = {\n\t\t\tdefault: Object.assign({ begin: db.prepare('BEGIN', self, false) }, shared),\n\t\t\tdeferred: Object.assign({ begin: db.prepare('BEGIN DEFERRED', self, false) }, shared),\n\t\t\timmediate: Object.assign({ begin: db.prepare('BEGIN IMMEDIATE', self, false) }, shared),\n\t\t\texclusive: Object.assign({ begin: db.prepare('BEGIN EXCLUSIVE', self, false) }, shared),\n\t\t});\n\t}\n\treturn controller;\n};\n\n// Return a new transaction function by wrapping the given function\nconst wrapTransaction = (apply, fn, db, { begin, commit, rollback, savepoint, release, rollbackTo }) => function sqliteTransaction() {\n\tlet before, after, undo;\n\tif (db.inTransaction) {\n\t\tbefore = savepoint;\n\t\tafter = release;\n\t\tundo = rollbackTo;\n\t} else {\n\t\tbefore = begin;\n\t\tafter = commit;\n\t\tundo = rollback;\n\t}\n\tbefore.run();\n\ttry {\n\t\tconst result = apply.call(fn, this, arguments);\n\t\tif (result && typeof result.then === 'function') {\n\t\t\tthrow new TypeError('Transaction function cannot return a promise');\n\t\t}\n\t\tafter.run();\n\t\treturn result;\n\t} catch (ex) {\n\t\tif (db.inTransaction) {\n\t\t\tundo.run();\n\t\t\tif (undo !== rollback) after.run();\n\t\t}\n\t\tthrow ex;\n\t}\n};\n","'use strict';\nconst { getBooleanOption, cppdb } = require('../util');\n\nmodule.exports = function pragma(source, options) {\n\tif (options == null) options = {};\n\tif (typeof source !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\tconst simple = getBooleanOption(options, 'simple');\n\n\tconst stmt = this[cppdb].prepare(`PRAGMA ${source}`, this, true);\n\treturn simple ? stmt.pluck().get() : stmt.all();\n};\n","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst { promisify } = require('util');\nconst { cppdb } = require('../util');\nconst fsAccess = promisify(fs.access);\n\nmodule.exports = async function backup(filename, options) {\n\tif (options == null) options = {};\n\n\t// Validate arguments\n\tif (typeof filename !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\n\t// Interpret options\n\tfilename = filename.trim();\n\tconst attachedName = 'attached' in options ? options.attached : 'main';\n\tconst handler = 'progress' in options ? options.progress : null;\n\n\t// Validate interpreted options\n\tif (!filename) throw new TypeError('Backup filename cannot be an empty string');\n\tif (filename === ':memory:') throw new TypeError('Invalid backup filename \":memory:\"');\n\tif (typeof attachedName !== 'string') throw new TypeError('Expected the \"attached\" option to be a string');\n\tif (!attachedName) throw new TypeError('The \"attached\" option cannot be an empty string');\n\tif (handler != null && typeof handler !== 'function') throw new TypeError('Expected the \"progress\" option to be a function');\n\n\t// Make sure the specified directory exists\n\tawait fsAccess(path.dirname(filename)).catch(() => {\n\t\tthrow new TypeError('Cannot save backup because the directory does not exist');\n\t});\n\n\tconst isNewFile = await fsAccess(filename).then(() => false, () => true);\n\treturn runBackup(this[cppdb].backup(this, attachedName, filename, isNewFile), handler || null);\n};\n\nconst runBackup = (backup, handler) => {\n\tlet rate = 0;\n\tlet useDefault = true;\n\n\treturn new Promise((resolve, reject) => {\n\t\tsetImmediate(function step() {\n\t\t\ttry {\n\t\t\t\tconst progress = backup.transfer(rate);\n\t\t\t\tif (!progress.remainingPages) {\n\t\t\t\t\tbackup.close();\n\t\t\t\t\tresolve(progress);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (useDefault) {\n\t\t\t\t\tuseDefault = false;\n\t\t\t\t\trate = 100;\n\t\t\t\t}\n\t\t\t\tif (handler) {\n\t\t\t\t\tconst ret = handler(progress);\n\t\t\t\t\tif (ret !== undefined) {\n\t\t\t\t\t\tif (typeof ret === 'number' && ret === ret) rate = Math.max(0, Math.min(0x7fffffff, Math.round(ret)));\n\t\t\t\t\t\telse throw new TypeError('Expected progress callback to return a number or undefined');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetImmediate(step);\n\t\t\t} catch (err) {\n\t\t\t\tbackup.close();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t});\n\t});\n};\n","'use strict';\nconst { cppdb } = require('../util');\n\nmodule.exports = function serialize(options) {\n\tif (options == null) options = {};\n\n\t// Validate arguments\n\tif (typeof options !== 'object') throw new TypeError('Expected first argument to be an options object');\n\n\t// Interpret and validate options\n\tconst attachedName = 'attached' in options ? options.attached : 'main';\n\tif (typeof attachedName !== 'string') throw new TypeError('Expected the \"attached\" option to be a string');\n\tif (!attachedName) throw new TypeError('The \"attached\" option cannot be an empty string');\n\n\treturn this[cppdb].serialize(attachedName);\n};\n","'use strict';\nconst { getBooleanOption, cppdb } = require('../util');\n\nmodule.exports = function defineFunction(name, options, fn) {\n\t// Apply defaults\n\tif (options == null) options = {};\n\tif (typeof options === 'function') { fn = options; options = {}; }\n\n\t// Validate arguments\n\tif (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof fn !== 'function') throw new TypeError('Expected last argument to be a function');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\tif (!name) throw new TypeError('User-defined function name cannot be an empty string');\n\n\t// Interpret options\n\tconst safeIntegers = 'safeIntegers' in options ? +getBooleanOption(options, 'safeIntegers') : 2;\n\tconst deterministic = getBooleanOption(options, 'deterministic');\n\tconst directOnly = getBooleanOption(options, 'directOnly');\n\tconst varargs = getBooleanOption(options, 'varargs');\n\tlet argCount = -1;\n\n\t// Determine argument count\n\tif (!varargs) {\n\t\targCount = fn.length;\n\t\tif (!Number.isInteger(argCount) || argCount < 0) throw new TypeError('Expected function.length to be a positive integer');\n\t\tif (argCount > 100) throw new RangeError('User-defined functions cannot have more than 100 arguments');\n\t}\n\n\tthis[cppdb].function(fn, name, argCount, safeIntegers, deterministic, directOnly);\n\treturn this;\n};\n","'use strict';\nconst { getBooleanOption, cppdb } = require('../util');\n\nmodule.exports = function defineAggregate(name, options) {\n\t// Validate arguments\n\tif (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object' || options === null) throw new TypeError('Expected second argument to be an options object');\n\tif (!name) throw new TypeError('User-defined function name cannot be an empty string');\n\n\t// Interpret options\n\tconst start = 'start' in options ? options.start : null;\n\tconst step = getFunctionOption(options, 'step', true);\n\tconst inverse = getFunctionOption(options, 'inverse', false);\n\tconst result = getFunctionOption(options, 'result', false);\n\tconst safeIntegers = 'safeIntegers' in options ? +getBooleanOption(options, 'safeIntegers') : 2;\n\tconst deterministic = getBooleanOption(options, 'deterministic');\n\tconst directOnly = getBooleanOption(options, 'directOnly');\n\tconst varargs = getBooleanOption(options, 'varargs');\n\tlet argCount = -1;\n\n\t// Determine argument count\n\tif (!varargs) {\n\t\targCount = Math.max(getLength(step), inverse ? getLength(inverse) : 0);\n\t\tif (argCount > 0) argCount -= 1;\n\t\tif (argCount > 100) throw new RangeError('User-defined functions cannot have more than 100 arguments');\n\t}\n\n\tthis[cppdb].aggregate(start, step, inverse, result, name, argCount, safeIntegers, deterministic, directOnly);\n\treturn this;\n};\n\nconst getFunctionOption = (options, key, required) => {\n\tconst value = key in options ? options[key] : null;\n\tif (typeof value === 'function') return value;\n\tif (value != null) throw new TypeError(`Expected the \"${key}\" option to be a function`);\n\tif (required) throw new TypeError(`Missing required option \"${key}\"`);\n\treturn null;\n};\n\nconst getLength = ({ length }) => {\n\tif (Number.isInteger(length) && length >= 0) return length;\n\tthrow new TypeError('Expected function.length to be a positive integer');\n};\n","'use strict';\nconst { cppdb } = require('../util');\n\nmodule.exports = function defineTable(name, factory) {\n\t// Validate arguments\n\tif (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (!name) throw new TypeError('Virtual table module name cannot be an empty string');\n\n\t// Determine whether the module is eponymous-only or not\n\tlet eponymous = false;\n\tif (typeof factory === 'object' && factory !== null) {\n\t\teponymous = true;\n\t\tfactory = defer(parseTableDefinition(factory, 'used', name));\n\t} else {\n\t\tif (typeof factory !== 'function') throw new TypeError('Expected second argument to be a function or a table definition object');\n\t\tfactory = wrapFactory(factory);\n\t}\n\n\tthis[cppdb].table(factory, name, eponymous);\n\treturn this;\n};\n\nfunction wrapFactory(factory) {\n\treturn function virtualTableFactory(moduleName, databaseName, tableName, ...args) {\n\t\tconst thisObject = {\n\t\t\tmodule: moduleName,\n\t\t\tdatabase: databaseName,\n\t\t\ttable: tableName,\n\t\t};\n\n\t\t// Generate a new table definition by invoking the factory\n\t\tconst def = apply.call(factory, thisObject, args);\n\t\tif (typeof def !== 'object' || def === null) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" did not return a table definition object`);\n\t\t}\n\n\t\treturn parseTableDefinition(def, 'returned', moduleName);\n\t};\n}\n\nfunction parseTableDefinition(def, verb, moduleName) {\n\t// Validate required properties\n\tif (!hasOwnProperty.call(def, 'rows')) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition without a \"rows\" property`);\n\t}\n\tif (!hasOwnProperty.call(def, 'columns')) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition without a \"columns\" property`);\n\t}\n\n\t// Validate \"rows\" property\n\tconst rows = def.rows;\n\tif (typeof rows !== 'function' || Object.getPrototypeOf(rows) !== GeneratorFunctionPrototype) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"rows\" property (should be a generator function)`);\n\t}\n\n\t// Validate \"columns\" property\n\tlet columns = def.columns;\n\tif (!Array.isArray(columns) || !(columns = [...columns]).every(x => typeof x === 'string')) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"columns\" property (should be an array of strings)`);\n\t}\n\tif (columns.length !== new Set(columns).size) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with duplicate column names`);\n\t}\n\tif (!columns.length) {\n\t\tthrow new RangeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with zero columns`);\n\t}\n\n\t// Validate \"parameters\" property\n\tlet parameters;\n\tif (hasOwnProperty.call(def, 'parameters')) {\n\t\tparameters = def.parameters;\n\t\tif (!Array.isArray(parameters) || !(parameters = [...parameters]).every(x => typeof x === 'string')) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"parameters\" property (should be an array of strings)`);\n\t\t}\n\t} else {\n\t\tparameters = inferParameters(rows);\n\t}\n\tif (parameters.length !== new Set(parameters).size) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with duplicate parameter names`);\n\t}\n\tif (parameters.length > 32) {\n\t\tthrow new RangeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with more than the maximum number of 32 parameters`);\n\t}\n\tfor (const parameter of parameters) {\n\t\tif (columns.includes(parameter)) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with column \"${parameter}\" which was ambiguously defined as both a column and parameter`);\n\t\t}\n\t}\n\n\t// Validate \"safeIntegers\" option\n\tlet safeIntegers = 2;\n\tif (hasOwnProperty.call(def, 'safeIntegers')) {\n\t\tconst bool = def.safeIntegers;\n\t\tif (typeof bool !== 'boolean') {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"safeIntegers\" property (should be a boolean)`);\n\t\t}\n\t\tsafeIntegers = +bool;\n\t}\n\n\t// Validate \"directOnly\" option\n\tlet directOnly = false;\n\tif (hasOwnProperty.call(def, 'directOnly')) {\n\t\tdirectOnly = def.directOnly;\n\t\tif (typeof directOnly !== 'boolean') {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"directOnly\" property (should be a boolean)`);\n\t\t}\n\t}\n\n\t// Generate SQL for the virtual table definition\n\tconst columnDefinitions = [\n\t\t...parameters.map(identifier).map(str => `${str} HIDDEN`),\n\t\t...columns.map(identifier),\n\t];\n\treturn [\n\t\t`CREATE TABLE x(${columnDefinitions.join(', ')});`,\n\t\twrapGenerator(rows, new Map(columns.map((x, i) => [x, parameters.length + i])), moduleName),\n\t\tparameters,\n\t\tsafeIntegers,\n\t\tdirectOnly,\n\t];\n}\n\nfunction wrapGenerator(generator, columnMap, moduleName) {\n\treturn function* virtualTable(...args) {\n\t\t/*\n\t\t\tWe must defensively clone any buffers in the arguments, because\n\t\t\totherwise the generator could mutate one of them, which would cause\n\t\t\tus to return incorrect values for hidden columns, potentially\n\t\t\tcorrupting the database.\n\t\t */\n\t\tconst output = args.map(x => Buffer.isBuffer(x) ? Buffer.from(x) : x);\n\t\tfor (let i = 0; i < columnMap.size; ++i) {\n\t\t\toutput.push(null); // Fill with nulls to prevent gaps in array (v8 optimization)\n\t\t}\n\t\tfor (const row of generator(...args)) {\n\t\t\tif (Array.isArray(row)) {\n\t\t\t\textractRowArray(row, output, columnMap.size, moduleName);\n\t\t\t\tyield output;\n\t\t\t} else if (typeof row === 'object' && row !== null) {\n\t\t\t\textractRowObject(row, output, columnMap, moduleName);\n\t\t\t\tyield output;\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded something that isn't a valid row object`);\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction extractRowArray(row, output, columnCount, moduleName) {\n\tif (row.length !== columnCount) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded a row with an incorrect number of columns`);\n\t}\n\tconst offset = output.length - columnCount;\n\tfor (let i = 0; i < columnCount; ++i) {\n\t\toutput[i + offset] = row[i];\n\t}\n}\n\nfunction extractRowObject(row, output, columnMap, moduleName) {\n\tlet count = 0;\n\tfor (const key of Object.keys(row)) {\n\t\tconst index = columnMap.get(key);\n\t\tif (index === undefined) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded a row with an undeclared column \"${key}\"`);\n\t\t}\n\t\toutput[index] = row[key];\n\t\tcount += 1;\n\t}\n\tif (count !== columnMap.size) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded a row with missing columns`);\n\t}\n}\n\nfunction inferParameters({ length }) {\n\tif (!Number.isInteger(length) || length < 0) {\n\t\tthrow new TypeError('Expected function.length to be a positive integer');\n\t}\n\tconst params = [];\n\tfor (let i = 0; i < length; ++i) {\n\t\tparams.push(`$${i + 1}`);\n\t}\n\treturn params;\n}\n\nconst { hasOwnProperty } = Object.prototype;\nconst { apply } = Function.prototype;\nconst GeneratorFunctionPrototype = Object.getPrototypeOf(function*(){});\nconst identifier = str => `\"${str.replace(/\"/g, '\"\"')}\"`;\nconst defer = x => () => x;\n","'use strict';\nconst DatabaseInspection = function Database() {};\n\nmodule.exports = function inspect(depth, opts) {\n\treturn Object.assign(new DatabaseInspection(), this);\n};\n\n","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst util = require('./util');\nconst SqliteError = require('./sqlite-error');\n\nlet DEFAULT_ADDON;\n\nfunction Database(filenameGiven, options) {\n\tif (new.target == null) {\n\t\treturn new Database(filenameGiven, options);\n\t}\n\n\t// Apply defaults\n\tlet buffer;\n\tif (Buffer.isBuffer(filenameGiven)) {\n\t\tbuffer = filenameGiven;\n\t\tfilenameGiven = ':memory:';\n\t}\n\tif (filenameGiven == null) filenameGiven = '';\n\tif (options == null) options = {};\n\n\t// Validate arguments\n\tif (typeof filenameGiven !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\tif ('readOnly' in options) throw new TypeError('Misspelled option \"readOnly\" should be \"readonly\"');\n\tif ('memory' in options) throw new TypeError('Option \"memory\" was removed in v7.0.0 (use \":memory:\" filename instead)');\n\n\t// Interpret options\n\tconst filename = filenameGiven.trim();\n\tconst anonymous = filename === '' || filename === ':memory:';\n\tconst readonly = util.getBooleanOption(options, 'readonly');\n\tconst fileMustExist = util.getBooleanOption(options, 'fileMustExist');\n\tconst timeout = 'timeout' in options ? options.timeout : 5000;\n\tconst verbose = 'verbose' in options ? options.verbose : null;\n\tconst nativeBinding = 'nativeBinding' in options ? options.nativeBinding : null;\n\n\t// Validate interpreted options\n\tif (readonly && anonymous && !buffer) throw new TypeError('In-memory/temporary databases cannot be readonly');\n\tif (!Number.isInteger(timeout) || timeout < 0) throw new TypeError('Expected the \"timeout\" option to be a positive integer');\n\tif (timeout > 0x7fffffff) throw new RangeError('Option \"timeout\" cannot be greater than 2147483647');\n\tif (verbose != null && typeof verbose !== 'function') throw new TypeError('Expected the \"verbose\" option to be a function');\n\tif (nativeBinding != null && typeof nativeBinding !== 'string' && typeof nativeBinding !== 'object') throw new TypeError('Expected the \"nativeBinding\" option to be a string or addon object');\n\n\t// Load the native addon\n\tlet addon;\n\tif (nativeBinding == null) {\n\t\taddon = DEFAULT_ADDON || (DEFAULT_ADDON = require('bindings')('better_sqlite3.node'));\n\t} else if (typeof nativeBinding === 'string') {\n\t\t// See <https://webpack.js.org/api/module-variables/#__non_webpack_require__-webpack-specific>\n\t\tconst requireFunc = typeof __non_webpack_require__ === 'function' ? __non_webpack_require__ : require;\n\t\taddon = requireFunc(path.resolve(nativeBinding).replace(/(\\.node)?$/, '.node'));\n\t} else {\n\t\t// See <https://github.com/WiseLibs/better-sqlite3/issues/972>\n\t\taddon = nativeBinding;\n\t}\n\n\tif (!addon.isInitialized) {\n\t\taddon.setErrorConstructor(SqliteError);\n\t\taddon.isInitialized = true;\n\t}\n\n\t// Make sure the specified directory exists\n\tif (!anonymous && !filename.startsWith('file:') && !fs.existsSync(path.dirname(filename))) {\n\t\tthrow new TypeError('Cannot open database because the directory does not exist');\n\t}\n\n\tObject.defineProperties(this, {\n\t\t[util.cppdb]: { value: new addon.Database(filename, filenameGiven, anonymous, readonly, fileMustExist, timeout, verbose || null, buffer || null) },\n\t\t...wrappers.getters,\n\t});\n}\n\nconst wrappers = require('./methods/wrappers');\nDatabase.prototype.prepare = wrappers.prepare;\nDatabase.prototype.transaction = require('./methods/transaction');\nDatabase.prototype.pragma = require('./methods/pragma');\nDatabase.prototype.backup = require('./methods/backup');\nDatabase.prototype.serialize = require('./methods/serialize');\nDatabase.prototype.function = require('./methods/function');\nDatabase.prototype.aggregate = require('./methods/aggregate');\nDatabase.prototype.table = require('./methods/table');\nDatabase.prototype.loadExtension = wrappers.loadExtension;\nDatabase.prototype.exec = wrappers.exec;\nDatabase.prototype.close = wrappers.close;\nDatabase.prototype.defaultSafeIntegers = wrappers.defaultSafeIntegers;\nDatabase.prototype.unsafeMode = wrappers.unsafeMode;\nDatabase.prototype[util.inspect] = require('./methods/inspect');\n\nmodule.exports = Database;\n","'use strict';\nmodule.exports = require('./database');\nmodule.exports.SqliteError = require('./sqlite-error');\n","import { t as pendingSteering } from \"./chat-steering.js\";\nimport { n as SYSTEM_CONTEXT, t as DEFAULT_SYSTEM_PROMPT } from \"./prompts.js\";\nimport { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, resolve, sep } from \"node:path\";\nimport { chmod, mkdir, readFile, rename, rm, stat, writeFile } from \"node:fs/promises\";\nimport { randomUUID } from \"node:crypto\";\nimport { execSync, spawn } from \"node:child_process\";\nimport { homedir } from \"node:os\";\nimport Database from \"better-sqlite3\";\n//#region ../core/dist/ai/models.js\nvar OPENAI_MODELS = [{\n\tid: \"gpt-4o\",\n\tname: \"GPT-4o\",\n\tcontextWindow: 128e3,\n\tsupportsReasoning: false,\n\treasoningEffortValues: [],\n\tsupportsVision: false\n}, {\n\tid: \"gpt-4o-mini\",\n\tname: \"GPT-4o Mini\",\n\tcontextWindow: 128e3,\n\tsupportsReasoning: false,\n\treasoningEffortValues: [],\n\tsupportsVision: false\n}];\nvar DEEPSEEK_MODELS = [{\n\tid: \"deepseek-v4-pro\",\n\tname: \"DeepSeek V4 Pro\",\n\tcontextWindow: 1048576,\n\tsupportsReasoning: true,\n\treasoningEffortValues: [\"high\", \"max\"],\n\tsupportsVision: false\n}, {\n\tid: \"deepseek-v4-flash\",\n\tname: \"DeepSeek V4 Flash\",\n\tcontextWindow: 1048576,\n\tsupportsReasoning: true,\n\treasoningEffortValues: [\"high\", \"max\"],\n\tsupportsVision: false\n}];\nvar XIAOMI_MODELS = [{\n\tid: \"mimo-v2.5\",\n\tname: \"MiMo V2.5\",\n\tcontextWindow: 1048576,\n\tsupportsReasoning: true,\n\treasoningEffortValues: [],\n\tsupportsVision: true\n}, {\n\tid: \"mimo-v2.5-pro\",\n\tname: \"MiMo V2.5 Pro\",\n\tcontextWindow: 1048576,\n\tsupportsReasoning: true,\n\treasoningEffortValues: [],\n\tsupportsVision: false\n}];\nfunction getDefaultModels(type) {\n\tswitch (type) {\n\t\tcase \"openai\": return [...OPENAI_MODELS];\n\t\tcase \"deepseek\": return [...DEEPSEEK_MODELS];\n\t\tcase \"xiaomi\": return [...XIAOMI_MODELS];\n\t\tdefault: return [];\n\t}\n}\n//#endregion\n//#region ../core/dist/ai/utils.js\n/**\n* 供应商请求错误\n*/\nvar ProviderError = class extends Error {\n\tstatus;\n\tbody;\n\tconstructor(message, status, body) {\n\t\tsuper(message);\n\t\tthis.status = status;\n\t\tthis.body = body;\n\t\tthis.name = \"ProviderError\";\n\t}\n};\n/**\n* 异步延时\n* @param ms - 毫秒\n*/\nfunction sleep(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n/**\n* 带自动重试的 fetch 封装\n*\n* 仅对 5xx 错误和网络错误进行指数退避重试。\n* 4xx 错误直接抛出 ProviderError,不重试。\n*\n* @param fetchFn - fetch 调用工厂函数\n* @param maxRetries - 最大重试次数\n* @param baseDelayMs - 基础延迟(毫秒),每次重试延迟加倍\n* @returns Response\n* @throws ProviderError\n*/\nasync function fetchWithRetry(fetchFn, maxRetries, baseDelayMs = 1e3) {\n\tlet lastError;\n\tfor (let attempt = 0; attempt <= maxRetries; attempt++) {\n\t\ttry {\n\t\t\tconst response = await fetchFn();\n\t\t\tif (response.ok) return response;\n\t\t\tif (response.status < 500 || attempt === maxRetries) {\n\t\t\t\tconst body = await response.json().catch(() => null);\n\t\t\t\tthrow new ProviderError(`API returned status ${response.status}`, response.status, body);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof ProviderError) throw error;\n\t\t\tlastError = error;\n\t\t}\n\t\tif (attempt < maxRetries) await sleep(baseDelayMs * Math.pow(2, attempt));\n\t}\n\tthrow lastError;\n}\n/**\n* 解析 SSE (Server-Sent Events) 流为 StreamChunk 异步生成器\n*\n* @param reader - ReadableStream reader\n* @returns AsyncGenerator<StreamChunk>\n*/\nasync function* parseSSEStream(reader) {\n\tconst decoder = new TextDecoder();\n\tlet buffer = \"\";\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) break;\n\t\t\tbuffer += decoder.decode(value, { stream: true });\n\t\t\tconst lines = buffer.split(\"\\n\");\n\t\t\tbuffer = lines.pop() || \"\";\n\t\t\tfor (const line of lines) {\n\t\t\t\tconst trimmed = line.trim();\n\t\t\t\tif (!trimmed || !trimmed.startsWith(\"data:\")) continue;\n\t\t\t\tconst data = trimmed.slice(5).trim();\n\t\t\t\tif (data === \"[DONE]\") return;\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = JSON.parse(data);\n\t\t\t\t\tconst choice = parsed.choices?.[0];\n\t\t\t\t\tif (!choice) continue;\n\t\t\t\t\tconst delta = choice.delta || {};\n\t\t\t\t\tconst rawUsage = parsed.usage || choice.usage;\n\t\t\t\t\tyield {\n\t\t\t\t\t\tcontent: delta.content || \"\",\n\t\t\t\t\t\treasoning_content: delta.reasoning_content || \"\",\n\t\t\t\t\t\ttool_calls: extractToolCalls(delta.tool_calls),\n\t\t\t\t\t\tfinish_reason: choice.finish_reason || null,\n\t\t\t\t\t\tusage: rawUsage ? parseUsage(rawUsage) : void 0\n\t\t\t\t\t};\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t}\n\t} finally {\n\t\treader.releaseLock();\n\t}\n}\nfunction extractToolCalls(raw) {\n\tif (!Array.isArray(raw)) return [];\n\treturn raw.map((tc) => ({\n\t\tindex: tc.index ?? 0,\n\t\tid: tc.id,\n\t\ttype: tc.type,\n\t\tfunction: tc.function ? {\n\t\t\tname: tc.function.name,\n\t\t\targuments: tc.function.arguments\n\t\t} : void 0\n\t}));\n}\n/**\n* 将 API 返回的原始 usage 对象解析为类型化的 Usage\n*\n* @param raw - API 响应的 usage 字段\n*/\nfunction parseUsage(raw) {\n\treturn {\n\t\tprompt_tokens: raw.prompt_tokens ?? 0,\n\t\tcompletion_tokens: raw.completion_tokens ?? 0,\n\t\ttotal_tokens: raw.total_tokens ?? 0,\n\t\tprompt_cache_hit_tokens: raw.prompt_cache_hit_tokens,\n\t\tprompt_cache_miss_tokens: raw.prompt_cache_miss_tokens,\n\t\tcompletion_tokens_details: raw.completion_tokens_details ? { reasoning_tokens: raw.completion_tokens_details.reasoning_tokens ?? 0 } : void 0\n\t};\n}\n//#endregion\n//#region ../core/dist/ai/openai.js\n/**\n* OpenAI 兼容格式的 AI 供应商实现\n*\n* 封装 fetch 调用 /v1/chat/completions 端点,支持:\n* - 非流式调用(chat)\n* - SSE 流式调用(chatStream)\n* - 自动重试(仅 5xx 错误 + 网络错误,指数退避)\n* - 超时控制(AbortController)\n* - usage / reasoning_content 透传\n*/\nvar OpenAIProvider = class {\n\tapiKey;\n\tbaseURL;\n\tmodel;\n\ttimeout;\n\tmaxRetries;\n\tconstructor(config) {\n\t\tthis.apiKey = config.apiKey;\n\t\tthis.baseURL = config.baseURL.replace(/\\/$/, \"\");\n\t\tthis.model = config.model;\n\t\tthis.timeout = config.timeout ?? 6e4;\n\t\tthis.maxRetries = config.maxRetries ?? 2;\n\t}\n\tasync chat(request) {\n\t\tconst body = this.buildBody({\n\t\t\t...request,\n\t\t\tstream: false\n\t\t});\n\t\tconst json = await (await fetchWithRetry(() => this.doFetch(body), this.maxRetries)).json();\n\t\treturn this.parseResponse(json);\n\t}\n\tasync *chatStream(request) {\n\t\tconst body = this.buildBody({\n\t\t\t...request,\n\t\t\tstream: true\n\t\t});\n\t\tconst response = await fetchWithRetry(() => this.doFetch(body), this.maxRetries);\n\t\tif (!response.body) throw new ProviderError(\"Response body is empty\", 0, null);\n\t\tyield* parseSSEStream(response.body.getReader());\n\t}\n\tbuildBodyObject(request) {\n\t\treturn {\n\t\t\tmodel: request.model || this.model,\n\t\t\tmessages: request.messages,\n\t\t\ttools: request.tools,\n\t\t\ttool_choice: request.tool_choice,\n\t\t\tmax_tokens: request.max_tokens,\n\t\t\ttemperature: request.temperature,\n\t\t\tstream: request.stream\n\t\t};\n\t}\n\tbuildBody(request) {\n\t\treturn JSON.stringify(this.buildBodyObject(request));\n\t}\n\tasync doFetch(body) {\n\t\tconst controller = new AbortController();\n\t\tconst timer = setTimeout(() => controller.abort(), this.timeout);\n\t\ttry {\n\t\t\treturn await fetch(`${this.baseURL}/chat/completions`, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tAuthorization: `Bearer ${this.apiKey}`\n\t\t\t\t},\n\t\t\t\tbody,\n\t\t\t\tsignal: controller.signal\n\t\t\t});\n\t\t} finally {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t}\n\tparseResponse(json) {\n\t\tconst choice = json.choices?.[0];\n\t\tif (!choice) throw new ProviderError(\"No choices in response\", 0, json);\n\t\tconst message = choice.message;\n\t\tconst usage = json.usage;\n\t\treturn {\n\t\t\tcontent: message?.content || null,\n\t\t\treasoning_content: message?.reasoning_content,\n\t\t\ttool_calls: message?.tool_calls || [],\n\t\t\tfinish_reason: choice.finish_reason || \"stop\",\n\t\t\tusage: usage ? parseUsage(usage) : void 0,\n\t\t\tmodel: json.model || this.model\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/ai/deepseek.js\nvar DeepSeekProvider = class extends OpenAIProvider {\n\treasoningEffort;\n\tsupportsReasoning;\n\tconstructor(config) {\n\t\tsuper(config);\n\t\tthis.reasoningEffort = config.reasoningEffort;\n\t\tthis.supportsReasoning = config.supportsReasoning || false;\n\t}\n\tbuildBodyObject(request) {\n\t\tconst body = super.buildBodyObject(request);\n\t\tif (this.supportsReasoning) if (this.reasoningEffort) {\n\t\t\tbody.thinking = { type: \"enabled\" };\n\t\t\tbody.reasoning_effort = this.reasoningEffort;\n\t\t} else body.thinking = { type: \"disabled\" };\n\t\treturn body;\n\t}\n};\n//#endregion\n//#region ../core/dist/ai/xiaomi.js\nvar XiaomiProvider = class extends OpenAIProvider {\n\treasoningEffort;\n\tsupportsReasoning;\n\tconstructor(config) {\n\t\tsuper(config);\n\t\tthis.reasoningEffort = config.reasoningEffort;\n\t\tthis.supportsReasoning = config.supportsReasoning || false;\n\t}\n\tbuildBodyObject(request) {\n\t\tconst body = super.buildBodyObject(request);\n\t\tif (this.supportsReasoning) if (this.reasoningEffort) body.thinking = { type: \"enabled\" };\n\t\telse body.thinking = { type: \"disabled\" };\n\t\treturn body;\n\t}\n};\n//#endregion\n//#region ../core/dist/ai/ollama.js\nvar OllamaProvider = class extends OpenAIProvider {\n\tollamaURL;\n\tconstructor(config) {\n\t\tconst baseURL = config.baseURL || `${config.ollamaURL || \"http://localhost:11434\"}/v1`;\n\t\tconst normalizedBase = baseURL.endsWith(\"/v1\") ? baseURL : baseURL.replace(/\\/+$/, \"\") + \"/v1\";\n\t\tsuper({\n\t\t\tapiKey: config.apiKey || \"ollama\",\n\t\t\tbaseURL: normalizedBase,\n\t\t\tmodel: config.model,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries\n\t\t});\n\t\tthis.ollamaURL = config.ollamaURL || \"http://localhost:11434\";\n\t}\n\tasync listModels() {\n\t\ttry {\n\t\t\tconst res = await fetch(`${this.ollamaURL}/api/tags`);\n\t\t\tif (!res.ok) return [];\n\t\t\treturn ((await res.json()).models || []).map((m) => ({\n\t\t\t\tid: m.name,\n\t\t\t\tname: m.name\n\t\t\t}));\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/ai/factory.js\nfunction createProvider(config) {\n\tconst activeModel = config.activeModel || \"\";\n\tconst supportsReasoning = getDefaultModels(config.type).find((m) => m.id === activeModel)?.supportsReasoning || false;\n\tswitch (config.type) {\n\t\tcase \"openai\": return new OpenAIProvider({\n\t\t\tapiKey: config.apiKey,\n\t\t\tbaseURL: config.baseURL,\n\t\t\tmodel: activeModel,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries ?? 5\n\t\t});\n\t\tcase \"deepseek\": return new DeepSeekProvider({\n\t\t\tapiKey: config.apiKey,\n\t\t\tbaseURL: config.baseURL,\n\t\t\tmodel: activeModel,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries ?? 5,\n\t\t\treasoningEffort: config.reasoningEffort,\n\t\t\tsupportsReasoning\n\t\t});\n\t\tcase \"xiaomi\": return new XiaomiProvider({\n\t\t\tapiKey: config.apiKey,\n\t\t\tbaseURL: config.baseURL,\n\t\t\tmodel: activeModel,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries ?? 5,\n\t\t\treasoningEffort: config.reasoningEffort,\n\t\t\tsupportsReasoning\n\t\t});\n\t\tcase \"ollama\": return new OllamaProvider({\n\t\t\tapiKey: config.apiKey,\n\t\t\tbaseURL: config.baseURL || \"\",\n\t\t\tmodel: activeModel,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries ?? 3,\n\t\t\tollamaURL: config.ollamaURL\n\t\t});\n\t\tdefault: throw new Error(`Unsupported provider type: ${config.type}`);\n\t}\n}\n//#endregion\n//#region ../core/dist/tool/registry.js\n/**\n* 工具注册表\n*\n* 管理工具的注册、查询和调度。\n* 提供 getDefinitions() 将已注册工具转为 OpenAI function calling 格式。\n* 支持 sourceId 追踪,可按来源批量卸载(为 extension 系统提供基础)。\n*/\nvar ToolRegistry = class {\n\ttools = /* @__PURE__ */ new Map();\n\tsources = /* @__PURE__ */ new Map();\n\t/**\n\t* 注册一个工具\n\t* @param tool - 工具定义\n\t* @param sourceId - 来源标识,默认为 'builtin'。用于批量卸载时按来源清理。\n\t*/\n\tregister(tool, sourceId = \"builtin\") {\n\t\tthis.tools.set(tool.name, tool);\n\t\tif (!this.sources.has(sourceId)) this.sources.set(sourceId, /* @__PURE__ */ new Set());\n\t\tthis.sources.get(sourceId).add(tool.name);\n\t}\n\t/** 注销一个工具 */\n\tunregister(name) {\n\t\tfor (const [, names] of this.sources) names.delete(name);\n\t\treturn this.tools.delete(name);\n\t}\n\t/**\n\t* 按来源批量注销工具\n\t* @param sourceId - 来源标识\n\t* @returns 被注销的工具数量\n\t*/\n\tunregisterSource(sourceId) {\n\t\tconst names = this.sources.get(sourceId);\n\t\tif (!names) return 0;\n\t\tlet count = 0;\n\t\tfor (const name of names) if (this.tools.delete(name)) count++;\n\t\tthis.sources.delete(sourceId);\n\t\treturn count;\n\t}\n\t/** 按名称获取工具 */\n\tget(name) {\n\t\treturn this.tools.get(name);\n\t}\n\t/** 获取 OpenAI function calling 格式的工具定义列表 */\n\tgetDefinitions() {\n\t\treturn Array.from(this.tools.values()).map((tool) => ({\n\t\t\ttype: \"function\",\n\t\t\tfunction: {\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: tool.parameters\n\t\t\t}\n\t\t}));\n\t}\n\t/**\n\t* 按名称执行工具\n\t*\n\t* @param name - 工具名称\n\t* @param args - 调用参数,支持 __confirmed 标记跳过确认流程\n\t* @param ctx - 工具执行上下文\n\t* @returns 执行结果\n\t* @throws PendingConfirmation 需要用户确认时\n\t*/\n\tasync execute(name, args, ctx) {\n\t\tconst tool = this.tools.get(name);\n\t\tif (!tool) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `未知工具: ${name}`\n\t\t};\n\t\treturn tool.execute(args, ctx);\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/types.js\n/**\n* 待确认异常\n*\n* 工具执行时如需要用户确认,抛出此异常。\n* 上层 Agent Loop 捕获后通过 SSE 推送确认请求到前端,\n* 用户确认后以 __confirmed: true 重新调用工具。\n*/\nvar PendingConfirmation = class extends Error {\n\ttoolName;\n\targs;\n\treason;\n\tconstructor(toolName, args, reason) {\n\t\tsuper(`Tool \"${toolName}\" requires confirmation: ${reason}`);\n\t\tthis.toolName = toolName;\n\t\tthis.args = args;\n\t\tthis.reason = reason;\n\t\tthis.name = \"PendingConfirmation\";\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\ttoolName: this.toolName,\n\t\t\targs: this.args,\n\t\t\treason: this.reason\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/safeguard.js\nvar READONLY_PATTERNS = [\n\t/^\\s*(?:Get-ChildItem|dir|ls|Get-Content|cat|type|Get-Process|ps|Get-Service|Get-Location|pwd|gl|Get-Item|gi|Get-ItemProperty|gp|Get-Date|Get-Host|Get-Variable|gv|Get-Command|gcm|Get-Member|gm|Get-Alias|gal|Get-History|history|ghy|Select-String|sls|findstr|Test-Path|Measure-Object|measure|Sort-Object|sort|Group-Object|group|Select-Object|select|Format-List|fl|Format-Table|ft|Format-Wide|fw|Format-Hex|Write-Output|echo|write|Compare-Object|diff|compare|Where-Object|Join-Path|Split-Path|Resolve-Path|ConvertFrom-Json|ConvertFrom-Csv)\\b/i,\n\t/^\\s*(?:head|tail|less|more|grep|egrep|fgrep|rg|find|wc|sort|uniq|cut|tr|file|stat|df|du|which|whereis|command|whoami|id|groups|printf|uname|hostname|basename|dirname|readlink|realpath)\\b/i,\n\t/^\\s*git\\s+(?:status|log|diff|show|branch|tag|stash\\s+list|remote\\s+(?:-v|show)|config\\s+(?:--list|--get\\b)|ls-files|rev-parse|rev-list|describe|shortlog|blame|grep|notes\\s+list|reflog|cherry|for-each-ref|name-rev)\\b/i,\n\t/^\\s*npm\\s+(?:ls|list|view|info|outdated|version|config\\s+list)\\b/i\n];\nvar DANGEROUS_PATTERNS = [\n\t/^\\s*del\\b/i,\n\t/^\\s*rmdir\\b/i,\n\t/^\\s*Remove-Item\\b/i,\n\t/\\bformat\\b/i,\n\t/\\bdiskpart\\b/i,\n\t/reg\\s+(delete|add)/i,\n\t/Set-ExecutionPolicy/i,\n\t/\\bshutdown\\b/i,\n\t/Restart-Computer\\b/i,\n\t/Stop-Process\\s+.*(svchost|winlogon|lsass|csrss)/i,\n\t/Stop-Service\\b/i,\n\t/\\|\\s*iex\\b/i,\n\t/\\|\\s*Invoke-Expression\\b/i,\n\t/\\|\\s*cmd\\b/i,\n\t/>\\s*%SystemRoot%/i,\n\t/>\\s*C:\\\\Windows/i,\n\t/\\brm\\s+-rf?\\b/,\n\t/\\bfind\\b.*\\bdelete\\b/,\n\t/\\bdd\\s+if=/,\n\t/\\bmkfs\\./,\n\t/\\bchmod\\s+777\\s+\\//,\n\t/\\bshutdown\\b/,\n\t/\\breboot\\b/,\n\t/\\binit\\s+[06]/,\n\t/>\\s*\\/etc\\//,\n\t/>\\s*\\/bin\\//,\n\t/>\\s*\\/boot\\//,\n\t/\\|\\s*(ba)?sh\\b/,\n\t/\\|\\s*zsh\\b/,\n\t/\\bdrop\\s+table\\b/i,\n\t/\\bdrop\\s+database\\b/i,\n\t/\\bgit\\s+push\\s+--force\\b/i,\n\t/\\bgit\\s+reset\\s+--hard\\b/i\n];\nvar SYSTEM_DIRS = [\n\t\"C:\\\\Windows\",\n\t\"C:\\\\Program Files\",\n\t\"C:\\\\Program Files (x86)\",\n\t\"/etc\",\n\t\"/bin\",\n\t\"/sbin\",\n\t\"/usr/bin\",\n\t\"/usr/sbin\",\n\t\"/boot\",\n\t\"/sys\",\n\t\"/dev\",\n\t\"/proc\"\n];\nfunction isDangerousCommand(command) {\n\tif (DANGEROUS_PATTERNS.some((pattern) => pattern.test(command))) return true;\n\tfor (const segment of command.split(\"|\")) if (DANGEROUS_PATTERNS.some((pattern) => pattern.test(segment))) return true;\n\treturn false;\n}\nfunction isReadonlyCommand(command) {\n\tfor (const segment of command.split(\"|\")) if (!READONLY_PATTERNS.some((pattern) => pattern.test(segment))) return false;\n\treturn true;\n}\nfunction isPathInWorkspace(targetPath, workspaceRoot) {\n\tconst resolved = normalizePath(targetPath, workspaceRoot);\n\tconst normalizedRoot = resolve(workspaceRoot).toLowerCase();\n\treturn resolve(resolved).toLowerCase().startsWith(normalizedRoot + sep);\n}\nfunction isSystemPath(targetPath, workspaceRoot) {\n\tconst normalized = resolve(normalizePath(targetPath, workspaceRoot)).toLowerCase();\n\treturn SYSTEM_DIRS.some((sysDir) => normalized.startsWith(sysDir.toLowerCase()));\n}\nfunction expandEnvVars(command) {\n\tlet result = command.replace(/%(\\w+)%/g, (_, name) => {\n\t\treturn process.env[name] ?? `%${name}%`;\n\t});\n\tresult = result.replace(/\\$\\{(\\w+)\\}/g, (_, name) => {\n\t\treturn process.env[name] ?? `\\$\\{${name}\\}`;\n\t});\n\tresult = result.replace(/\\$([A-Za-z_]\\w*)/g, (_, name) => {\n\t\treturn process.env[name] ?? `$${name}`;\n\t});\n\treturn result;\n}\nfunction collectPaths(source, paths) {\n\tconst winAbsRe = /[A-Za-z]:\\\\(?:[^\\\\/:*?\"<>|\\r\\n]+\\\\)*[^\\\\/:*?\"<>|\\r\\n]*/g;\n\tlet match;\n\twhile ((match = winAbsRe.exec(source)) !== null) paths.push(match[0]);\n\tconst unixAbsRe = /(?<!\\w)\\/(?:[^\\s'\"]+)/g;\n\twhile ((match = unixAbsRe.exec(source)) !== null) {\n\t\tconst p = match[0];\n\t\tif (p.length > 1 && !/^\\/\\d/.test(p) && !/\\/$/.test(p)) paths.push(p);\n\t}\n\tconst tildeRe = /(?<!\\w)~\\/(?:[^\\s'\"]+)/g;\n\twhile ((match = tildeRe.exec(source)) !== null) paths.push(match[0]);\n}\nfunction extractPaths(command) {\n\tconst paths = [];\n\tcollectPaths(command, paths);\n\tconst expanded = expandEnvVars(command);\n\tif (expanded !== command) collectPaths(expanded, paths);\n\tconst winRelRe = /(?:\\.\\.\\\\)+(?:[^\\s'\"]+)/g;\n\tlet match;\n\twhile ((match = winRelRe.exec(command)) !== null) paths.push(match[0]);\n\tconst unixRelRe = /(?<!\\w)(?:\\.\\.\\/)+(?:[^\\s'\"]+)/g;\n\twhile ((match = unixRelRe.exec(command)) !== null) {\n\t\tconst p = match[0];\n\t\tif (p.length > 1 && !/\\/$/.test(p)) paths.push(p);\n\t}\n\treturn paths;\n}\n/**\n* 分类命令的安全性\n*\n* 判定顺序:\n* 1. reject — 明确禁止(format, diskpart)\n* 2. confirm — 命中危险模式(删除、系统修改、管道注入等)\n* 3. safe — 只读命令,无需后续路径检查\n* 4. confirm — 路径在工作区外或系统目录\n* 5. safe — 其余放行\n*\n* @returns 'safe' 可直接执行 / 'confirm' 需用户确认 / 'reject' 拒绝执行\n*/\nfunction classifyCommand(command, workspaceRoot) {\n\tif (/^\\s*(format|diskpart)\\b/i.test(command.trim())) return \"reject\";\n\tif (isDangerousCommand(command)) return \"confirm\";\n\tif (isReadonlyCommand(command)) return \"safe\";\n\tconst paths = extractPaths(command);\n\tfor (const p of paths) {\n\t\tif (isSystemPath(p, workspaceRoot)) return \"confirm\";\n\t\tif (!isPathInWorkspace(p, workspaceRoot)) return \"confirm\";\n\t}\n\treturn \"safe\";\n}\n/**\n* 分类文件路径的安全性\n*\n* @returns 'safe' 可直接操作 / 'confirm' 需用户确认\n*/\nfunction classifyFilePath(targetPath, workspaceRoot) {\n\tconst normalized = normalizePath(targetPath, workspaceRoot);\n\tif (isSystemPath(normalized, workspaceRoot)) return \"reject\";\n\tif (!isPathInWorkspace(normalized, workspaceRoot)) return \"confirm\";\n\treturn \"safe\";\n}\nfunction normalizePath(targetPath, workspaceRoot) {\n\tlet resolved = targetPath;\n\tif (resolved.startsWith(\"~\")) {\n\t\tconst home = process.env.HOME || process.env.USERPROFILE || \"\";\n\t\tresolved = resolved.replace(/^~/, home);\n\t}\n\tif (isAbsolute(resolved)) return resolved;\n\treturn resolve(workspaceRoot, resolved);\n}\n//#endregion\n//#region ../core/dist/tool/env.js\n/**\n* ToolContext — 工具执行上下文\n*\n* 封装工作区根目录、路径解析和安全检查。\n* 替换原来分散在工具中的 resolve() + classifyFilePath/classifyCommand 模式。\n*/\nvar ToolContext = class {\n\troot;\n\tonUpdate;\n\tconstructor(root) {\n\t\tthis.root = root;\n\t}\n\t/** 解析用户输入的路径,同时做安全检查 */\n\tresolvePath(userPath) {\n\t\tconst resolved = resolve(this.root, userPath);\n\t\treturn {\n\t\t\tpath: resolved,\n\t\t\tclassification: classifyFilePath(resolved, this.root)\n\t\t};\n\t}\n\t/** 分类终端命令的安全性 */\n\tclassifyCommand(command) {\n\t\treturn classifyCommand(command, this.root);\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/file-utils.js\nvar BOM = \"\";\nfunction stripBom(content) {\n\tif (content.startsWith(BOM)) return content.slice(1);\n\treturn content;\n}\nfunction detectLineEnding(content) {\n\tif (content.includes(\"\\r\\n\")) return \"CRLF\";\n\treturn \"LF\";\n}\nfunction detectMeta(content) {\n\treturn {\n\t\tbom: content.startsWith(BOM),\n\t\tlineEnding: detectLineEnding(content)\n\t};\n}\nfunction normalizeLineEndings(content, target) {\n\tif (target === \"CRLF\") return content.replace(/\\r\\n/g, \"\\n\").replace(/\\n/g, \"\\r\\n\");\n\treturn content.replace(/\\r\\n/g, \"\\n\");\n}\nfunction normalizeToLF(content) {\n\treturn content.replace(/\\r\\n/g, \"\\n\");\n}\nfunction applyMeta(content, meta) {\n\tlet result = normalizeLineEndings(content, meta.lineEnding);\n\tif (meta.bom && !result.startsWith(BOM)) result = BOM + result;\n\telse if (!meta.bom && result.startsWith(BOM)) result = result.slice(1);\n\treturn result;\n}\nasync function atomicWrite(filePath, content, meta) {\n\tlet finalContent = content;\n\tlet targetMode = null;\n\ttry {\n\t\tconst info = await stat(filePath);\n\t\tif (info.isFile()) targetMode = info.mode;\n\t} catch {}\n\tif (meta) finalContent = applyMeta(content, meta);\n\tdirname(filePath);\n\tconst tmpPath = filePath + \".\" + randomUUID() + \".tmp\";\n\tawait writeFile(tmpPath, finalContent, \"utf-8\");\n\tif (targetMode !== null) await chmod(tmpPath, targetMode);\n\tawait rename(tmpPath, filePath);\n}\n//#endregion\n//#region ../core/dist/tool/tools/read-file.js\nvar MAX_FILE_SIZE = 1024 * 1024;\nvar DEFAULT_OFFSET = 1;\nvar DEFAULT_LIMIT = 500;\nfunction validateParam(name, value) {\n\tif (value === void 0 || value === null) return NaN;\n\tconst n = Number(value);\n\tif (!Number.isInteger(n)) return NaN;\n\tif (n < 1) return NaN;\n\treturn n;\n}\n/**\n* read_file — 读取文件内容\n*\n* 工作区内文件直接读取;工作区外文件需用户确认。\n* 文件大小限制 1 MB,超限返回错误。\n* 支持 offset / limit 按行翻页,不指定时默认读前 500 行。\n*/\nvar readFileTool = {\n\tname: \"read_file\",\n\tdescription: \"Read file contents. Supports offset/limit for paginated line-by-line reading. Use for viewing code, config, docs, etc.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tpath: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"File path (relative to workspace or absolute)\"\n\t\t\t},\n\t\t\toffset: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\tdescription: \"Starting line number (1-based), default 1\"\n\t\t\t},\n\t\t\tlimit: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\tdescription: \"Max lines to read, default 500\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"path\"]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst userPath = args.path;\n\t\tif (!userPath) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: path\"\n\t\t};\n\t\tlet offset = DEFAULT_OFFSET;\n\t\tlet limit = DEFAULT_LIMIT;\n\t\tif (\"offset\" in args && args.offset !== void 0 && args.offset !== null) {\n\t\t\tconst parsed = validateParam(\"offset\", args.offset);\n\t\t\tif (isNaN(parsed)) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: \"offset 必须是大于等于 1 的整数\"\n\t\t\t};\n\t\t\toffset = parsed;\n\t\t}\n\t\tif (\"limit\" in args && args.limit !== void 0 && args.limit !== null) {\n\t\t\tconst parsed = validateParam(\"limit\", args.limit);\n\t\t\tif (isNaN(parsed)) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: \"limit 必须是大于等于 1 的整数\"\n\t\t\t};\n\t\t\tlimit = parsed;\n\t\t}\n\t\tconst { path: filePath, classification } = ctx.resolvePath(userPath);\n\t\tif (!args.__confirmed) {\n\t\t\tif (classification === \"reject\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `拒绝读取系统路径: ${userPath}`\n\t\t\t};\n\t\t\tif (classification === \"confirm\") throw new PendingConfirmation(\"read_file\", {\n\t\t\t\tpath: userPath,\n\t\t\t\toffset,\n\t\t\t\tlimit\n\t\t\t}, `文件 \"${userPath}\" 在工作区之外,确认读取?`);\n\t\t}\n\t\ttry {\n\t\t\tconst info = await stat(filePath);\n\t\t\tif (!info.isFile()) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `路径不是文件: ${userPath}`\n\t\t\t};\n\t\t\tif (info.size > MAX_FILE_SIZE) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `文件过大 (${(info.size / 1024 / 1024).toFixed(1)} MB),最大支持 1 MB`\n\t\t\t};\n\t\t\tconst lines = stripBom(await readFile(filePath, \"utf-8\")).split(\"\\n\");\n\t\t\tconst totalLines = lines.length;\n\t\t\tconst startIdx = offset - 1;\n\t\t\tif (startIdx >= totalLines) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `=== ${userPath} (第 ${offset}-${offset + limit - 1} 行 / 共 ${totalLines} 行) ===\\n\\n(起始行号超出文件末尾)`\n\t\t\t};\n\t\t\tconst endIdx = Math.min(startIdx + limit, totalLines);\n\t\t\tconst slice = lines.slice(startIdx, endIdx);\n\t\t\tconst atEnd = endIdx >= totalLines;\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `=== ${userPath} ${`(第 ${offset}-${startIdx + slice.length} 行 / 共 ${totalLines} 行${atEnd ? \",已达文件末尾\" : \"\"})`} ===\\n${slice.join(\"\\n\")}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (error.code === \"ENOENT\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `文件不存在: ${userPath}`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `读取失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/write-file.js\n/**\n* write_file — 写入文件内容\n*\n* 自动创建不存在的父目录。覆盖已有文件。\n* 使用原子写入(临时文件 + rename),崩溃时不留残缺文件。\n* 覆盖已有文件时自动保留原文件的 BOM 和行尾格式(CRLF/LF)。\n* 工作区内文件直接写入;工作区外需用户确认。\n*/\nvar writeFileTool = {\n\tname: \"write_file\",\n\tdescription: \"Write content to a file (overwrites). Creates missing parent directories automatically. Preserves existing file encoding (BOM, line endings) when overwriting.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tpath: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"File path (relative to workspace or absolute)\"\n\t\t\t},\n\t\t\tcontent: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Complete file content to write\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"path\", \"content\"]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst userPath = args.path;\n\t\tconst content = args.content;\n\t\tif (!userPath) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: path\"\n\t\t};\n\t\tif (content === void 0 || content === null) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: content\"\n\t\t};\n\t\tconst { path: filePath, classification } = ctx.resolvePath(userPath);\n\t\tif (!args.__confirmed) {\n\t\t\tif (classification === \"reject\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `拒绝写入系统路径: ${userPath}`\n\t\t\t};\n\t\t\tif (classification === \"confirm\") throw new PendingConfirmation(\"write_file\", {\n\t\t\t\tpath: userPath,\n\t\t\t\tcontent\n\t\t\t}, `文件 \"${userPath}\" 在工作区之外,确认写入?`);\n\t\t}\n\t\ttry {\n\t\t\tawait mkdir(dirname(filePath), { recursive: true });\n\t\t\tlet existed = false;\n\t\t\tlet meta = void 0;\n\t\t\ttry {\n\t\t\t\texisted = (await stat(filePath)).isFile();\n\t\t\t\tif (existed) meta = detectMeta(await readFile(filePath, \"utf-8\"));\n\t\t\t} catch {}\n\t\t\tawait atomicWrite(filePath, content, meta);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `${existed ? \"已更新\" : \"已创建\"}文件: ${userPath} (${content.split(\"\\n\").length} 行, ${Buffer.byteLength(content, \"utf-8\")} 字节${meta?.bom ? \" (已保留 BOM)\" : \"\"})`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `写入失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/delete-file.js\n/**\n* delete_file — 删除文件\n*\n* 删除操作始终需要用户确认(不可逆)。\n* 仅支持删除文件,不支持删除目录。\n* 系统路径始终拒绝。\n*/\nvar deleteFileTool = {\n\tname: \"delete_file\",\n\tdescription: \"Delete a file. Always requires user confirmation.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: { path: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"File path (relative to workspace or absolute)\"\n\t\t} },\n\t\trequired: [\"path\"]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst userPath = args.path;\n\t\tif (!userPath) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: path\"\n\t\t};\n\t\tconst { path: filePath, classification } = ctx.resolvePath(userPath);\n\t\tif (!args.__confirmed) throw new PendingConfirmation(\"delete_file\", { path: userPath }, `确认删除 \"${userPath}\"?此操作不可恢复。`);\n\t\tif (classification === \"reject\") return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `拒绝删除系统路径: ${userPath}`\n\t\t};\n\t\ttry {\n\t\t\tif ((await stat(filePath)).isDirectory()) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `目标是目录而非文件: ${userPath}`\n\t\t\t};\n\t\t\tawait rm(filePath);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `已删除文件: ${userPath}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (error.code === \"ENOENT\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `路径不存在: ${userPath}`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `删除失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/edit.js\nfunction escapeNewlines(s) {\n\treturn s.replace(/\\r/g, \"\\\\r\").replace(/\\n/g, \"\\\\n\");\n}\nfunction formatDiff(original, replacement) {\n\treturn `- ${escapeNewlines(original)}\\n+ ${escapeNewlines(replacement)}`;\n}\nfunction countOccurrences(haystack, needle) {\n\tif (!needle) return 0;\n\tlet count = 0;\n\tlet pos = 0;\n\twhile (true) {\n\t\tpos = haystack.indexOf(needle, pos);\n\t\tif (pos === -1) break;\n\t\tcount++;\n\t\tpos += needle.length;\n\t}\n\treturn count;\n}\n/**\n* edit — 精确字符串替换编辑文件\n*\n* 在文件中查找 oldString 并替换为 newString。\n* 使用原子写入,自动保留原文件的 BOM 和行尾格式。\n* 非 replaceAll 模式下,oldString 必须在文件中恰好出现一次。\n*/\nvar editTool = {\n\tname: \"edit\",\n\tdescription: \"Perform exact string replacement in a file. Find oldString and replace with newString. In non-replaceAll mode, oldString must appear exactly once (prevents accidental changes). Preserves BOM and line endings (CRLF/LF).\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tpath: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"File path (relative to workspace or absolute)\"\n\t\t\t},\n\t\t\toldString: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Original text to replace (must match file content exactly, including indentation and blank lines)\"\n\t\t\t},\n\t\t\tnewString: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Replacement text\"\n\t\t\t},\n\t\t\treplaceAll: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescription: \"Replace all occurrences. Default false — oldString must appear exactly once in the file.\"\n\t\t\t}\n\t\t},\n\t\trequired: [\n\t\t\t\"path\",\n\t\t\t\"oldString\",\n\t\t\t\"newString\"\n\t\t]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst userPath = args.path;\n\t\tconst oldString = args.oldString;\n\t\tconst newString = args.newString;\n\t\tconst replaceAll = args.replaceAll === true;\n\t\tif (!userPath) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: path\"\n\t\t};\n\t\tif (oldString === void 0 || oldString === null) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: oldString\"\n\t\t};\n\t\tif (newString === void 0 || newString === null) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: newString\"\n\t\t};\n\t\tif (oldString === \"\") return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"oldString 不能为空\"\n\t\t};\n\t\tif (oldString === newString) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"oldString 与 newString 相同,无需替换\"\n\t\t};\n\t\tconst { path: filePath, classification } = ctx.resolvePath(userPath);\n\t\tif (!args.__confirmed) {\n\t\t\tif (classification === \"reject\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `拒绝编辑系统路径: ${userPath}`\n\t\t\t};\n\t\t\tif (classification === \"confirm\") throw new PendingConfirmation(\"edit\", {\n\t\t\t\tpath: userPath,\n\t\t\t\toldString,\n\t\t\t\tnewString,\n\t\t\t\treplaceAll\n\t\t\t}, `文件 \"${userPath}\" 在工作区之外,确认编辑?`);\n\t\t}\n\t\ttry {\n\t\t\tconst raw = await readFile(filePath, \"utf-8\");\n\t\t\tconst meta = detectMeta(raw);\n\t\t\tconst content = stripBom(raw);\n\t\t\tlet matchCount = countOccurrences(content, oldString);\n\t\t\tif (matchCount === 0) {\n\t\t\t\tconst lfContent = normalizeToLF(content);\n\t\t\t\tconst lfOld = normalizeToLF(oldString);\n\t\t\t\tconst lfCount = countOccurrences(lfContent, lfOld);\n\t\t\t\tif (lfCount > 0) {\n\t\t\t\t\tmatchCount = lfCount;\n\t\t\t\t\tconst lfNew = normalizeToLF(newString);\n\t\t\t\t\tlet result;\n\t\t\t\t\tif (replaceAll) result = lfContent.split(lfOld).join(lfNew);\n\t\t\t\t\telse result = lfContent.replace(lfOld, lfNew);\n\t\t\t\t\tif (meta.lineEnding === \"CRLF\") result = result.replace(/\\n/g, \"\\r\\n\");\n\t\t\t\t\tawait atomicWrite(filePath, result, meta);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\toutput: `已编辑: ${userPath}\\n替换 ${replaceAll ? matchCount : 1} 处:\\n${formatDiff(oldString, newString)}`\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (matchCount === 0) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `未在文件中找到 oldString。请确保 oldString 与文件内容完全一致(包括缩进和空行)。\\n文件路径: ${userPath}\\noldString: ${escapeNewlines(oldString.slice(0, 200))}`\n\t\t\t};\n\t\t\tif (!replaceAll && matchCount > 1) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `oldString 在文件中出现了 ${matchCount} 次。请提供更多上下文使匹配唯一,或设置 replaceAll: true 替换全部。`\n\t\t\t};\n\t\t\tawait atomicWrite(filePath, replaceAll ? content.split(oldString).join(newString) : content.replace(oldString, newString), meta);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `已编辑: ${userPath}\\n替换 ${replaceAll ? matchCount : 1} 处:\\n${formatDiff(oldString, newString)}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (error.code === \"ENOENT\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `文件不存在: ${userPath}`\n\t\t\t};\n\t\t\tif (error instanceof PendingConfirmation) throw error;\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `编辑失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/exec.js\nvar DEFAULT_TIMEOUT = 3e5;\nvar MAX_ALLOWED_TIMEOUT = 36e5;\nvar MAX_OUTPUT = 5e4;\nvar IS_WINDOWS = process.platform === \"win32\";\nfunction killProcessTree(pid) {\n\tif (pid == null) return false;\n\tif (IS_WINDOWS) try {\n\t\texecSync(`taskkill /F /T /PID ${pid}`, { stdio: \"ignore\" });\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n\ttry {\n\t\tprocess.kill(pid, \"SIGKILL\");\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* execute_command — 执行终端命令\n*\n* 安全策略:\n* - 安全命令 + 工作区路径 → 直接执行\n* - 危险命令 → 需用户确认\n* - format/diskpart → 拒绝\n* - 默认超时 5 分钟,输出上限 50KB\n*/\nvar execTool = {\n\tname: \"execute_command\",\n\tdescription: \"Execute a terminal command in the workspace directory and return output. For development tasks only, non-interactive. Default timeout 5 minutes.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tcommand: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"The terminal command to execute\"\n\t\t\t},\n\t\t\ttimeout: {\n\t\t\t\ttype: \"number\",\n\t\t\t\tdescription: \"Timeout in seconds, default 300 (5 min), max 3600 (1 hour)\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"command\"]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst command = args.command;\n\t\tif (!command) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: command\"\n\t\t};\n\t\tlet timeoutSec = typeof args.timeout === \"number\" && args.timeout > 0 ? args.timeout : DEFAULT_TIMEOUT / 1e3;\n\t\tif (timeoutSec > MAX_ALLOWED_TIMEOUT / 1e3) timeoutSec = MAX_ALLOWED_TIMEOUT / 1e3;\n\t\tconst timeoutMs = timeoutSec * 1e3;\n\t\tconst classification = ctx.classifyCommand(command);\n\t\tif (classification === \"reject\") return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `拒绝执行危险命令: ${command.slice(0, 80)}`\n\t\t};\n\t\tif (classification === \"confirm\" && !args.__confirmed) throw new PendingConfirmation(\"execute_command\", { ...args }, `需要确认执行命令:\\n${command}`);\n\t\tif (args.__confirmed) {\n\t\t\tif (ctx.classifyCommand(command) === \"reject\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `拒绝执行危险命令: ${command.slice(0, 80)}`\n\t\t\t};\n\t\t}\n\t\treturn new Promise((resolve) => {\n\t\t\tconst stdoutChunks = [];\n\t\t\tconst stderrChunks = [];\n\t\t\tlet resolved = false;\n\t\t\tlet totalOutput = 0;\n\t\t\tconst resolveResult = (success, error) => {\n\t\t\t\tif (resolved) return;\n\t\t\t\tresolved = true;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tconst out = Buffer.concat(stdoutChunks).toString();\n\t\t\t\tconst err = Buffer.concat(stderrChunks).toString();\n\t\t\t\tresolve({\n\t\t\t\t\tsuccess,\n\t\t\t\t\toutput: [out, err ? `\\n[stderr]\\n${err}` : \"\"].filter(Boolean).join(\"\").slice(0, MAX_OUTPUT) || \"(无输出)\",\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t};\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tif (!resolved) {\n\t\t\t\t\tif (!killProcessTree(child.pid)) try {\n\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t} catch {}\n\t\t\t\t\tresolveResult(false, `命令执行超时 (${timeoutSec} 秒)`);\n\t\t\t\t}\n\t\t\t}, timeoutMs);\n\t\t\tconst child = spawn(command, [], {\n\t\t\t\tcwd: ctx.root,\n\t\t\t\tshell: IS_WINDOWS ? \"powershell.exe\" : \"/bin/bash\",\n\t\t\t\tstdio: [\n\t\t\t\t\t\"ignore\",\n\t\t\t\t\t\"pipe\",\n\t\t\t\t\t\"pipe\"\n\t\t\t\t]\n\t\t\t});\n\t\t\tchild.stdout?.on(\"data\", (data) => {\n\t\t\t\tstdoutChunks.push(data);\n\t\t\t\ttotalOutput += data.length;\n\t\t\t\tif (totalOutput > MAX_OUTPUT) {\n\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\tif (!killProcessTree(child.pid)) try {\n\t\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\tresolveResult(false, \"命令输出超过上限 (50KB)\");\n\t\t\t\t\t}\n\t\t\t\t} else ctx.onUpdate?.(data.toString());\n\t\t\t});\n\t\t\tchild.stderr?.on(\"data\", (data) => {\n\t\t\t\tstderrChunks.push(data);\n\t\t\t\ttotalOutput += data.length;\n\t\t\t\tif (totalOutput > MAX_OUTPUT) {\n\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\tif (!killProcessTree(child.pid)) try {\n\t\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\tresolveResult(false, \"命令输出超过上限 (50KB)\");\n\t\t\t\t\t}\n\t\t\t\t} else ctx.onUpdate?.(data.toString());\n\t\t\t});\n\t\t\tchild.on(\"close\", (code) => {\n\t\t\t\tif (resolved) return;\n\t\t\t\tresolveResult(code === 0, code !== 0 ? `命令退出码: ${code}` : void 0);\n\t\t\t});\n\t\t\tchild.on(\"error\", (err) => {\n\t\t\t\tif (resolved) return;\n\t\t\t\tresolveResult(false, err.message);\n\t\t\t});\n\t\t});\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/web-search.js\nasync function searchSearXNG(query, num, baseURL) {\n\tconst url = `${baseURL.replace(/\\/+$/, \"\")}/search?format=json&q=${encodeURIComponent(query)}`;\n\tconst res = await fetch(url);\n\tif (!res.ok) throw new Error(`SearXNG returned ${res.status}`);\n\treturn ((await res.json()).results || []).slice(0, num).map((r) => ({\n\t\ttitle: r.title,\n\t\turl: r.url,\n\t\tsnippet: r.content || \"\"\n\t}));\n}\nasync function searchTavily(query, num, apiKey) {\n\tconst res = await fetch(\"https://api.tavily.com/search\", {\n\t\tmethod: \"POST\",\n\t\theaders: {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tAuthorization: `Bearer ${apiKey}`\n\t\t},\n\t\tbody: JSON.stringify({\n\t\t\tquery,\n\t\t\tmax_results: num,\n\t\t\tinclude_answer: false\n\t\t})\n\t});\n\tif (!res.ok) throw new Error(`Tavily returned ${res.status}`);\n\treturn ((await res.json()).results || []).slice(0, num).map((r) => ({\n\t\ttitle: r.title,\n\t\turl: r.url,\n\t\tsnippet: r.content || \"\"\n\t}));\n}\nvar webSearchTool = {\n\tname: \"web_search\",\n\tdescription: \"Search the internet for information. Use for latest news, documentation lookup, fact verification, etc. Only use when real-time or external knowledge is needed. Results include title, URL, and snippet.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tquery: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Search query (keyword or question)\"\n\t\t\t},\n\t\t\tnum: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\tdescription: \"Number of results, default 5, max 10\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"query\"]\n\t},\n\tasync execute(args, _ctx) {\n\t\tconst query = args.query?.trim();\n\t\tif (!query) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: query\"\n\t\t};\n\t\tconst num = Math.min(Math.max(typeof args.num === \"number\" ? args.num : 5, 1), 10);\n\t\tconst config = readConfig();\n\t\tif (!config.searchEnabled) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"搜索功能未启用,请在设置中开启\"\n\t\t};\n\t\tconst provider = config.searchProvider || \"searxng\";\n\t\ttry {\n\t\t\tlet results;\n\t\t\tif (provider === \"tavily\") {\n\t\t\t\tif (!config.tavilyApiKey) return {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\toutput: \"\",\n\t\t\t\t\terror: \"未配置 Tavily API Key,请在设置中填写\"\n\t\t\t\t};\n\t\t\t\tresults = await searchTavily(query, num, config.tavilyApiKey);\n\t\t\t} else results = await searchSearXNG(query, num, config.searxngURL || \"http://localhost:8080\");\n\t\t\tif (results.length === 0) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `未找到与「${query}」相关的结果。`\n\t\t\t};\n\t\t\tconst formatted = results.map((r, i) => `${i + 1}. **[${r.title}](${r.url})**\\n ${r.snippet}`).join(\"\\n\\n\");\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `搜索「${query}」的结果(共 ${results.length} 条):\\n\\n${formatted}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `搜索失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/paths.js\nvar QUALIA_HOME = join(homedir(), \".qualia\");\nvar DATA_DIR = join(QUALIA_HOME, \"data\");\nfunction getDataDir() {\n\treturn DATA_DIR;\n}\nfunction getDataPath(...segments) {\n\treturn join(DATA_DIR, ...segments);\n}\nfunction getConfigPath() {\n\treturn join(QUALIA_HOME, \"config.json\");\n}\n//#endregion\n//#region ../core/dist/tool/tools/read-memory.js\nvar MEMORY_PATH$2 = getDataPath(\"memory.md\");\nvar readMemoryTool = {\n\tname: \"read_memory\",\n\tdescription: \"Read long-term memory (data/memory.md). Optionally pass a query for keyword search — returns matching lines with their category headers. Without query, returns the full memory content. Use when you need to recall previously stored information about users, yourself, or important events. Note: the memory snapshot taken at session creation may be stale; this tool always returns the latest.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: { query: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"Optional. Search keyword (case-insensitive). Returns matching lines with their category headers. Omit to return all memory.\"\n\t\t} },\n\t\trequired: []\n\t},\n\tasync execute(args, _ctx) {\n\t\ttry {\n\t\t\tif (!existsSync(MEMORY_PATH$2)) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: \"(暂无记忆内容)\"\n\t\t\t};\n\t\t\tconst content = readFileSync(MEMORY_PATH$2, \"utf-8\");\n\t\t\tif (!content.trim()) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: \"(暂无记忆内容)\"\n\t\t\t};\n\t\t\tconst query = args.query;\n\t\t\tif (!query?.trim()) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: content\n\t\t\t};\n\t\t\tconst lines = content.split(\"\\n\");\n\t\t\tconst lowerQuery = query.trim().toLowerCase();\n\t\t\tconst resultLines = [];\n\t\t\tlet lastHeader = \"\";\n\t\t\tfor (const line of lines) {\n\t\t\t\tif (line.startsWith(\"## \")) lastHeader = line;\n\t\t\t\tif (line.trim() !== \"\" && !line.startsWith(\"## \") && line.toLowerCase().includes(lowerQuery)) {\n\t\t\t\t\tif (lastHeader && !resultLines.includes(lastHeader)) {\n\t\t\t\t\t\tresultLines.push(lastHeader);\n\t\t\t\t\t\tresultLines.push(\"\");\n\t\t\t\t\t}\n\t\t\t\t\tresultLines.push(line);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (resultLines.length === 0) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `(记忆中没有找到与 \"${query.trim()}\" 相关的内容)`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: resultLines.join(\"\\n\")\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `读取记忆失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/write-memory.js\nvar SECTION_META = `\n## 关于我自己 (Qualia)\n我是一个运行在本地环境中的 AI 伴侣,帮助用户完成开发工作和日常任务。\n\n## 关于用户\n(待记录)\n\n## 重要事件\n(待记录)\n`;\nvar MEMORY_PATH$1 = getDataPath(\"memory.md\");\nfunction ensureMemoryFile() {\n\tconst dir = getDataDir();\n\tif (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\tif (!existsSync(MEMORY_PATH$1) || !readFileSync(MEMORY_PATH$1, \"utf-8\").includes(\"## 关于用户\")) writeFileSync(MEMORY_PATH$1, SECTION_META.trim().replace(/\\r/g, \"\") + \"\\n\", \"utf-8\");\n}\nvar CATEGORY_HEADERS = {\n\tself: \"## 关于我自己 (Qualia)\",\n\tuser: \"## 关于用户\",\n\tevent: \"## 重要事件\"\n};\nfunction updateSection(current, category, content) {\n\tconst header = CATEGORY_HEADERS[category];\n\tif (!header) return current;\n\t[\n\t\t\"self\",\n\t\t\"user\",\n\t\t\"event\"\n\t].indexOf(category);\n\tlet result = \"\";\n\tlet inTarget = false;\n\tlet done = false;\n\tfor (const line of current.split(\"\\n\")) {\n\t\tif (line.startsWith(\"## \")) {\n\t\t\tif (inTarget) {\n\t\t\t\tresult += content + \"\\n\\n\";\n\t\t\t\tdone = true;\n\t\t\t}\n\t\t\tinTarget = line === header;\n\t\t} else if (inTarget && !done) continue;\n\t\tresult += line + \"\\n\";\n\t}\n\tif (inTarget && !done) result += content;\n\treturn result.trim() + \"\\n\";\n}\nvar writeMemoryTool = {\n\tname: \"write_memory\",\n\tdescription: \"Write important information to long-term memory (memory.md). Only use for information worth remembering long-term. Content is automatically injected into the system prompt of future sessions. Three categories: self (about yourself), user (about the user), event (important milestones). Each call overwrites the entire content of the given category.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tcategory: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Memory category: self (about yourself), user (about the user), event (important events)\",\n\t\t\t\tenum: [\n\t\t\t\t\t\"self\",\n\t\t\t\t\t\"user\",\n\t\t\t\t\t\"event\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tcontent: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"New content for this category (replaces existing). Write in Chinese, concise and brief, one item per line.\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"category\", \"content\"]\n\t},\n\tasync execute(args, _ctx) {\n\t\tconst category = args.category;\n\t\tconst content = args.content;\n\t\tif (!category || !CATEGORY_HEADERS[category]) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `无效的类别: ${category},可选: self, user, event`\n\t\t};\n\t\tif (!content?.trim()) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"content 不能为空\"\n\t\t};\n\t\ttry {\n\t\t\tensureMemoryFile();\n\t\t\twriteFileSync(MEMORY_PATH$1, updateSection(readFileSync(MEMORY_PATH$1, \"utf-8\").replace(/\\r/g, \"\"), category, content.trim()), \"utf-8\");\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `已更新记忆: ${CATEGORY_HEADERS[category]}\\n${content}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `写入失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/concurrency/file-mutex.js\nvar FileMutex = class {\n\tlocks = /* @__PURE__ */ new Map();\n\tasync run(key, fn) {\n\t\tawait this.acquire(key);\n\t\ttry {\n\t\t\treturn await fn();\n\t\t} finally {\n\t\t\tthis.release(key);\n\t\t}\n\t}\n\tacquire(key) {\n\t\tlet entry = this.locks.get(key);\n\t\tif (!entry) {\n\t\t\tentry = {\n\t\t\t\tlocked: false,\n\t\t\t\twaiters: []\n\t\t\t};\n\t\t\tthis.locks.set(key, entry);\n\t\t}\n\t\tif (!entry.locked) {\n\t\t\tentry.locked = true;\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tentry.waiters.push({\n\t\t\t\tresolve,\n\t\t\t\treject\n\t\t\t});\n\t\t});\n\t}\n\trelease(key) {\n\t\tconst entry = this.locks.get(key);\n\t\tif (!entry) return;\n\t\tconst next = entry.waiters.shift();\n\t\tif (next) next.resolve();\n\t\telse {\n\t\t\tentry.locked = false;\n\t\t\tthis.locks.delete(key);\n\t\t}\n\t}\n};\nvar fileMutex = new FileMutex();\n//#endregion\n//#region ../core/dist/concurrency/background-worker.js\nvar BackgroundWorker = class {\n\ttasks = /* @__PURE__ */ new Map();\n\tstates = /* @__PURE__ */ new Map();\n\tstarted = false;\n\tschedule(name, intervalMs, fn) {\n\t\tif (this.tasks.has(name)) throw new Error(`BackgroundWorker: task \"${name}\" already registered`);\n\t\tthis.tasks.set(name, {\n\t\t\tname,\n\t\t\tintervalMs,\n\t\t\tfn\n\t\t});\n\t\tthis.states.set(name, {\n\t\t\trunning: false,\n\t\t\ttimerId: null\n\t\t});\n\t\tif (this.started) this.scheduleNext(name);\n\t}\n\tstart() {\n\t\tif (this.started) return;\n\t\tthis.started = true;\n\t\tfor (const name of this.tasks.keys()) this.scheduleNext(name);\n\t}\n\tstop() {\n\t\tthis.started = false;\n\t\tfor (const [name, state] of this.states) {\n\t\t\tif (state.timerId) {\n\t\t\t\tclearTimeout(state.timerId);\n\t\t\t\tstate.timerId = null;\n\t\t\t}\n\t\t\tstate.running = false;\n\t\t}\n\t}\n\tscheduleNext(name) {\n\t\tconst task = this.tasks.get(name);\n\t\tconst state = this.states.get(name);\n\t\tif (!task || !state) return;\n\t\tstate.timerId = setTimeout(() => this.execute(name), task.intervalMs);\n\t}\n\tasync execute(name) {\n\t\tconst task = this.tasks.get(name);\n\t\tconst state = this.states.get(name);\n\t\tif (!task || !state) return;\n\t\tif (state.running) return;\n\t\tstate.running = true;\n\t\ttry {\n\t\t\tawait task.fn();\n\t\t} catch (e) {\n\t\t\tconsole.error(`[BackgroundWorker] task \"${name}\" error:`, e.message);\n\t\t} finally {\n\t\t\tstate.running = false;\n\t\t\tif (this.started) this.scheduleNext(name);\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/concurrency/session-lock.js\nvar SessionLock = class {\n\tsessions = /* @__PURE__ */ new Map();\n\tcreateRelease(sessionId) {\n\t\tlet released = false;\n\t\treturn () => {\n\t\t\tif (released) throw new Error(`SessionLock: session \"${sessionId}\" already released`);\n\t\t\treleased = true;\n\t\t\tthis.release(sessionId);\n\t\t};\n\t}\n\tasync acquire(sessionId) {\n\t\tlet entry = this.sessions.get(sessionId);\n\t\tif (!entry) {\n\t\t\tentry = {\n\t\t\t\tlocked: false,\n\t\t\t\twaiters: []\n\t\t\t};\n\t\t\tthis.sessions.set(sessionId, entry);\n\t\t}\n\t\tif (!entry.locked) {\n\t\t\tentry.locked = true;\n\t\t\treturn this.createRelease(sessionId);\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tentry.waiters.push({\n\t\t\t\tresolve,\n\t\t\t\treject\n\t\t\t});\n\t\t});\n\t}\n\trelease(sessionId) {\n\t\tconst entry = this.sessions.get(sessionId);\n\t\tif (!entry) return;\n\t\tconst next = entry.waiters.shift();\n\t\tif (next) next.resolve(this.createRelease(sessionId));\n\t\telse {\n\t\t\tentry.locked = false;\n\t\t\tthis.sessions.delete(sessionId);\n\t\t}\n\t}\n};\nvar sessionLock = new SessionLock();\n//#endregion\n//#region ../core/dist/task/store.js\nvar MAX_AGE_MS = 10080 * 60 * 1e3;\nfunction getPath() {\n\treturn getDataPath(\"tasks.json\");\n}\nfunction readAll() {\n\tconst path = getPath();\n\tif (!existsSync(path)) return [];\n\ttry {\n\t\tconst raw = readFileSync(path, \"utf-8\");\n\t\tconst parsed = JSON.parse(raw);\n\t\tif (!Array.isArray(parsed)) return [];\n\t\treturn parsed;\n\t} catch {\n\t\treturn [];\n\t}\n}\nfunction writeAll(tasks) {\n\tconst path = getPath();\n\tconst dir = getDataDir();\n\tif (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\tconst now = Date.now();\n\tconst pruned = tasks.filter((t) => t.status === \"pending\" || t.status === \"running\" || t.status === \"paused\" || now - t.createdAt < MAX_AGE_MS).slice(-100);\n\tconst tmpPath = path + \".tmp\";\n\twriteFileSync(tmpPath, JSON.stringify(pruned, null, \"\t\"), \"utf-8\");\n\trenameSync(tmpPath, path);\n}\nvar TASKS_MUTEX_KEY = \"tasks.json\";\nasync function createTask(name, prompt, scheduledAt) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst task = {\n\t\t\tid: crypto.randomUUID(),\n\t\t\tname,\n\t\t\tprompt,\n\t\t\tcreatedAt: Date.now(),\n\t\t\tscheduledAt,\n\t\t\tstatus: \"pending\"\n\t\t};\n\t\tconst all = readAll();\n\t\tall.push(task);\n\t\twriteAll(all);\n\t\treturn task;\n\t});\n}\nfunction getAllTasks() {\n\treturn readAll().sort((a, b) => b.createdAt - a.createdAt);\n}\nfunction getPendingTasks() {\n\treturn readAll().filter((t) => t.status === \"pending\" && t.scheduledAt <= Date.now());\n}\nasync function updateTaskStatus(id, status, extra) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst all = readAll();\n\t\tconst task = all.find((t) => t.id === id);\n\t\tif (!task) return false;\n\t\tif (!{\n\t\t\tpending: [\"running\", \"paused\"],\n\t\t\trunning: [\"completed\", \"failed\"],\n\t\t\tcompleted: [],\n\t\t\tfailed: [],\n\t\t\tpaused: [\"pending\"]\n\t\t}[status].includes(task.status)) return false;\n\t\ttask.status = status;\n\t\tif (status === \"completed\") {\n\t\t\ttask.completedAt = Date.now();\n\t\t\ttask.result = extra?.result;\n\t\t}\n\t\tif (status === \"failed\") {\n\t\t\ttask.completedAt = Date.now();\n\t\t\ttask.error = extra?.error;\n\t\t}\n\t\twriteAll(all);\n\t\treturn true;\n\t});\n}\nasync function pauseTask(id) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst all = readAll();\n\t\tconst task = all.find((t) => t.id === id);\n\t\tif (!task || task.status !== \"pending\") return false;\n\t\ttask.status = \"paused\";\n\t\twriteAll(all);\n\t\treturn true;\n\t});\n}\nasync function resumeTask(id) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst all = readAll();\n\t\tconst task = all.find((t) => t.id === id);\n\t\tif (!task || task.status !== \"paused\") return false;\n\t\ttask.status = \"pending\";\n\t\twriteAll(all);\n\t\treturn true;\n\t});\n}\nasync function deleteTask(id) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst all = readAll();\n\t\tconst idx = all.findIndex((t) => t.id === id);\n\t\tif (idx === -1) return false;\n\t\tall.splice(idx, 1);\n\t\twriteAll(all);\n\t\treturn true;\n\t});\n}\nfunction formatTasksForAI(tasks) {\n\tif (tasks.length === 0) return \"暂无任务。\";\n\tconst statusLabel = {\n\t\tpending: \"等待中\",\n\t\trunning: \"执行中\",\n\t\tcompleted: \"已完成\",\n\t\tfailed: \"失败\",\n\t\tpaused: \"已暂停\"\n\t};\n\treturn tasks.map((t) => {\n\t\tconst created = new Date(t.createdAt).toISOString().replace(\"T\", \" \").slice(0, 19);\n\t\tconst scheduled = new Date(t.scheduledAt).toISOString().replace(\"T\", \" \").slice(0, 19);\n\t\tlet entry = `## ${t.name}\\n`;\n\t\tentry += `- ID: ${t.id.slice(0, 8)}\\n`;\n\t\tentry += `- 状态: ${statusLabel[t.status] || t.status}\\n`;\n\t\tentry += `- 创建时间: ${created}\\n`;\n\t\tentry += `- 计划执行: ${scheduled}\\n`;\n\t\tif (t.prompt) entry += `- 任务描述: ${t.prompt.slice(0, 200)}${t.prompt.length > 200 ? \"...\" : \"\"}\\n`;\n\t\tif (t.result) entry += `- 执行结果: ${t.result.slice(0, 500)}${t.result.length > 500 ? \"...\" : \"\"}\\n`;\n\t\tif (t.error) entry += `- 错误: ${t.error.slice(0, 200)}\\n`;\n\t\tif (t.completedAt) {\n\t\t\tconst comp = new Date(t.completedAt).toISOString().replace(\"T\", \" \").slice(0, 19);\n\t\t\tentry += `- 完成时间: ${comp}\\n`;\n\t\t}\n\t\treturn entry;\n\t}).join(\"\\n\");\n}\n//#endregion\n//#region ../core/dist/storage/utils.js\nfunction formatSessionTitle(today, count) {\n\treturn `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, \"0\")}-${String(today.getDate()).padStart(2, \"0\")}-${String(count).padStart(2, \"0\")}`;\n}\n//#endregion\n//#region ../core/dist/storage/memory.js\n/**\n* MemoryStorage — 基于内存 Map 的存储实现\n*\n* 所有数据存储在内存中,进程重启后数据丢失。\n* 适用于开发测试或关闭持久化时使用。\n*/\nvar MemoryStorage = class {\n\tsessions = /* @__PURE__ */ new Map();\n\tmessages = /* @__PURE__ */ new Map();\n\tmessageById = /* @__PURE__ */ new Map();\n\tseqCounter = /* @__PURE__ */ new Map();\n\tasync createSession(title, memorySnapshot, workspace) {\n\t\tconst id = crypto.randomUUID();\n\t\tconst now = Date.now();\n\t\tconst today = new Date(now);\n\t\tconst startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate()).getTime();\n\t\tlet count = 0;\n\t\tfor (const s of this.sessions.values()) if (s.created_at >= startOfDay) count++;\n\t\tconst session = {\n\t\t\tid,\n\t\t\ttitle: title || formatSessionTitle(today, count + 1),\n\t\t\tcreated_at: now,\n\t\t\tupdated_at: now,\n\t\t\tparent_id: null,\n\t\t\tstatus: \"active\",\n\t\t\ttoken_count: 0,\n\t\t\tsummary: \"\",\n\t\t\tlast_summarized_at: null,\n\t\t\tmemory_snapshot: memorySnapshot || \"\",\n\t\t\tworkspace: workspace || \"\"\n\t\t};\n\t\tthis.sessions.set(id, session);\n\t\tthis.messages.set(id, []);\n\t\tthis.seqCounter.set(id, 0);\n\t\treturn session;\n\t}\n\tasync getSession(id) {\n\t\treturn this.sessions.get(id) || null;\n\t}\n\tasync listSessions() {\n\t\treturn Array.from(this.sessions.values()).sort((a, b) => b.updated_at - a.updated_at);\n\t}\n\tasync deleteSession(id) {\n\t\tthis.sessions.delete(id);\n\t\tconst msgs = this.messages.get(id) || [];\n\t\tfor (const msg of msgs) this.messageById.delete(msg.id);\n\t\tthis.messages.delete(id);\n\t\tthis.seqCounter.delete(id);\n\t}\n\tasync archiveSession(id) {\n\t\tconst session = this.sessions.get(id);\n\t\tif (session) {\n\t\t\tsession.status = \"archived\";\n\t\t\tsession.updated_at = Date.now();\n\t\t}\n\t}\n\tasync forkSession(id) {\n\t\tconst parent = this.sessions.get(id);\n\t\tif (!parent) throw new Error(`会话不存在: ${id}`);\n\t\tconst newSession = await this.createSession(`[分叉] ${parent.title}`, parent.memory_snapshot);\n\t\tnewSession.parent_id = id;\n\t\tnewSession.token_count = parent.token_count;\n\t\tthis.sessions.set(newSession.id, newSession);\n\t\tconst parentMessages = this.messages.get(id) || [];\n\t\tconst copiedMsgs = [];\n\t\tlet seq = 0;\n\t\tfor (const msg of parentMessages) {\n\t\t\tseq++;\n\t\t\tconst copy = {\n\t\t\t\t...msg,\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tsession_id: newSession.id,\n\t\t\t\tseq\n\t\t\t};\n\t\t\tcopiedMsgs.push(copy);\n\t\t\tthis.messageById.set(copy.id, copy);\n\t\t}\n\t\tthis.messages.set(newSession.id, copiedMsgs);\n\t\tthis.seqCounter.set(newSession.id, seq);\n\t\treturn newSession;\n\t}\n\tasync addMessage(sessionId, message) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (!session) throw new Error(`会话不存在: ${sessionId}`);\n\t\tconst seq = (this.seqCounter.get(sessionId) || 0) + 1;\n\t\tthis.seqCounter.set(sessionId, seq);\n\t\tconst record = {\n\t\t\t...message,\n\t\t\tid: message.id || crypto.randomUUID(),\n\t\t\tcreated_at: Date.now(),\n\t\t\tseq\n\t\t};\n\t\tconst list = this.messages.get(sessionId) || [];\n\t\tlist.push(record);\n\t\tthis.messages.set(sessionId, list);\n\t\tthis.messageById.set(record.id, record);\n\t\tsession.updated_at = Date.now();\n\t\treturn record;\n\t}\n\tasync getMessages(sessionId, options) {\n\t\tlet list = this.messages.get(sessionId) || [];\n\t\tif (options?.before !== void 0) list = list.filter((m) => m.seq < options.before);\n\t\tif (options?.limit !== void 0) list = list.slice(-options.limit);\n\t\treturn list;\n\t}\n\tasync getMessage(id) {\n\t\treturn this.messageById.get(id) || null;\n\t}\n\tasync deleteMessage(id) {\n\t\tconst msg = this.messageById.get(id);\n\t\tif (!msg) return;\n\t\tthis.messageById.delete(id);\n\t\tconst list = this.messages.get(msg.session_id);\n\t\tif (list) {\n\t\t\tconst idx = list.findIndex((m) => m.id === id);\n\t\t\tif (idx !== -1) list.splice(idx, 1);\n\t\t}\n\t}\n\tasync deleteMessagesFrom(sessionId, messageId) {\n\t\tconst list = this.messages.get(sessionId);\n\t\tif (!list) return;\n\t\tconst idx = list.findIndex((m) => m.id === messageId);\n\t\tif (idx === -1) return;\n\t\tconst toDelete = list.splice(idx);\n\t\tfor (const msg of toDelete) this.messageById.delete(msg.id);\n\t}\n\tasync getTokenCount(sessionId) {\n\t\treturn this.sessions.get(sessionId)?.token_count || 0;\n\t}\n\tasync updateTokenCount(sessionId, count) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (session) session.token_count = count;\n\t}\n\tasync setSessionTitle(sessionId, title) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (session) session.title = title;\n\t}\n\tasync getStaleSessions(idleMs) {\n\t\tconst now = Date.now();\n\t\tconst result = [];\n\t\tfor (const s of this.sessions.values()) {\n\t\t\tif (s.status !== \"active\") continue;\n\t\t\tif (idleMs !== null && now - s.updated_at <= idleMs) continue;\n\t\t\tif (s.last_summarized_at !== null && s.last_summarized_at >= s.updated_at) continue;\n\t\t\tconst msgs = this.messages.get(s.id);\n\t\t\tif (!msgs || msgs.length === 0) continue;\n\t\t\tresult.push(s);\n\t\t}\n\t\tresult.sort((a, b) => a.updated_at - b.updated_at);\n\t\treturn result;\n\t}\n\tasync getMessagesSinceSeq(sessionId, seq) {\n\t\treturn (this.messages.get(sessionId) || []).filter((m) => m.seq > seq);\n\t}\n\tasync updateSummary(sessionId, summary) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (session) {\n\t\t\tsession.summary = summary;\n\t\t\tsession.last_summarized_at = Date.now();\n\t\t}\n\t}\n\tasync getTodayUpdatedSessions() {\n\t\tconst now = /* @__PURE__ */ new Date();\n\t\tconst startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();\n\t\tconst endOfDay = startOfDay + 864e5;\n\t\tconst result = [];\n\t\tfor (const s of this.sessions.values()) if (s.summary && s.last_summarized_at && s.last_summarized_at >= startOfDay && s.last_summarized_at < endOfDay) result.push(s);\n\t\tresult.sort((a, b) => (a.last_summarized_at || 0) - (b.last_summarized_at || 0));\n\t\treturn result;\n\t}\n\tasync setMemorySnapshot(sessionId, snapshot) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (session) session.memory_snapshot = snapshot;\n\t}\n\tasync searchMessages(query, sessionId, limit = 10) {\n\t\tconst lowerQuery = query.toLowerCase();\n\t\tconst results = [];\n\t\tfor (const [sid, msgs] of this.messages) {\n\t\t\tif (sessionId && sid !== sessionId) continue;\n\t\t\tconst session = this.sessions.get(sid);\n\t\t\tfor (const msg of msgs) {\n\t\t\t\tif (!msg.content.toLowerCase().includes(lowerQuery)) continue;\n\t\t\t\tresults.push({\n\t\t\t\t\tsessionId: sid,\n\t\t\t\t\tsessionTitle: session?.title || \"\",\n\t\t\t\t\tmessageId: msg.id,\n\t\t\t\t\trole: msg.role,\n\t\t\t\t\tcontent: msg.content,\n\t\t\t\t\tcreatedAt: msg.created_at\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tresults.sort((a, b) => b.createdAt - a.createdAt);\n\t\treturn results.slice(0, limit);\n\t}\n\tasync setAudioPath(messageId, path) {\n\t\tconst msg = this.messageById.get(messageId);\n\t\tif (msg) msg.audio_path = path;\n\t}\n\tasync getMostRecentSession() {\n\t\tfor (const s of this.sessions.values()) if (s.status === \"active\") return s;\n\t\treturn null;\n\t}\n\tasync listWorkspaces() {\n\t\tconst workspaces = /* @__PURE__ */ new Set();\n\t\tfor (const s of this.sessions.values()) if (s.status === \"active\" && s.workspace) workspaces.add(s.workspace);\n\t\treturn Array.from(workspaces).sort();\n\t}\n};\n//#endregion\n//#region ../core/dist/storage/sqlite.js\n/**\n* SQLiteStorage — 基于 better-sqlite3 的持久化存储\n*\n* 使用 WAL 模式,支持外键约束。\n* 自动建表,联合索引 (session_id, seq)。\n*/\nvar SQLiteStorage = class {\n\tdb;\n\tstmts;\n\tconstructor(dbPath) {\n\t\tthis.db = new Database(dbPath);\n\t\tthis.db.pragma(\"journal_mode = WAL\");\n\t\tthis.db.pragma(\"foreign_keys = ON\");\n\t\tthis.initTables();\n\t\tthis.stmts = this.prepareStatements();\n\t}\n\tinitTables() {\n\t\tthis.db.exec(`\n\t\tCREATE TABLE IF NOT EXISTS sessions (\n\t\t\tid TEXT PRIMARY KEY,\n\t\t\ttitle TEXT NOT NULL DEFAULT '',\n\t\t\tcreated_at INTEGER NOT NULL,\n\t\t\tupdated_at INTEGER NOT NULL,\n\t\t\tparent_id TEXT,\n\t\t\tstatus TEXT NOT NULL DEFAULT 'active',\n\t\t\ttoken_count INTEGER NOT NULL DEFAULT 0,\n\t\t\tsummary TEXT NOT NULL DEFAULT '',\n\t\t\tlast_summarized_at INTEGER,\n\t\t\tmemory_snapshot TEXT NOT NULL DEFAULT '',\n\t\t\tworkspace TEXT NOT NULL DEFAULT ''\n\t\t);\n\t\t\tCREATE TABLE IF NOT EXISTS messages (\n\t\t\t\tid TEXT PRIMARY KEY,\n\t\t\t\tsession_id TEXT NOT NULL,\n\t\t\t\trole TEXT NOT NULL,\n\t\t\t\tcontent TEXT NOT NULL DEFAULT '',\n\t\t\t\treasoning_content TEXT,\n\t\t\t\ttool_calls TEXT,\n\t\t\t\ttool_call_id TEXT,\n\t\t\t\tname TEXT,\n\t\t\t\tusage TEXT,\n\t\t\t\taudio_path TEXT,\n\t\t\t\tcreated_at INTEGER NOT NULL,\n\t\t\t\tseq INTEGER NOT NULL,\n\t\t\t\tFOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE\n\t\t\t);\n\t\t\tCREATE INDEX IF NOT EXISTS idx_messages_session_seq\n\t\t\t\tON messages(session_id, seq);\n\t\t`);\n\t\tthis.migrate();\n\t}\n\tmigrate() {\n\t\tconst cols = this.db.pragma(\"table_info(sessions)\");\n\t\tconst columnNames = new Set(cols.map((c) => c.name));\n\t\tif (!columnNames.has(\"summary\")) this.db.exec(`ALTER TABLE sessions ADD COLUMN summary TEXT NOT NULL DEFAULT ''`);\n\t\tif (!columnNames.has(\"last_summarized_at\")) this.db.exec(`ALTER TABLE sessions ADD COLUMN last_summarized_at INTEGER`);\n\t\tif (!columnNames.has(\"memory_snapshot\")) this.db.exec(`ALTER TABLE sessions ADD COLUMN memory_snapshot TEXT NOT NULL DEFAULT ''`);\n\t\tif (!columnNames.has(\"workspace\")) this.db.exec(`ALTER TABLE sessions ADD COLUMN workspace TEXT NOT NULL DEFAULT ''`);\n\t}\n\tprepareStatements() {\n\t\treturn {\n\t\t\tcreateSession: this.db.prepare(`INSERT INTO sessions (id, title, created_at, updated_at, parent_id, status, token_count, summary, last_summarized_at, memory_snapshot, workspace) VALUES (?, ?, ?, ?, ?, ?, ?, '', NULL, ?, ?)`),\n\t\t\tgetSession: this.db.prepare(`SELECT * FROM sessions WHERE id = ?`),\n\t\t\tlistAllSessions: this.db.prepare(`SELECT * FROM sessions ORDER BY updated_at DESC`),\n\t\t\tdeleteSession: this.db.prepare(`DELETE FROM sessions WHERE id = ?`),\n\t\t\tupdateSessionStatus: this.db.prepare(`UPDATE sessions SET status = ?, updated_at = ? WHERE id = ?`),\n\t\t\tupdateSession: this.db.prepare(`UPDATE sessions SET title = ?, updated_at = ?, token_count = ? WHERE id = ?`),\n\t\t\tinsertMessage: this.db.prepare(`INSERT INTO messages (id, session_id, role, content, reasoning_content, tool_calls, tool_call_id, name, usage, audio_path, created_at, seq) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`),\n\t\t\tgetMessages: this.db.prepare(`SELECT * FROM messages WHERE session_id = ? AND (? IS NULL OR seq < ?) ORDER BY seq ASC`),\n\t\t\tgetMessagesSinceSeq: this.db.prepare(`SELECT * FROM messages WHERE session_id = ? AND seq > ? ORDER BY seq ASC`),\n\t\t\tgetMessage: this.db.prepare(`SELECT * FROM messages WHERE id = ?`),\n\t\t\tdeleteMessage: this.db.prepare(`DELETE FROM messages WHERE id = ?`),\n\t\t\tgetMaxSeq: this.db.prepare(`SELECT COALESCE(MAX(seq), 0) as max_seq FROM messages WHERE session_id = ?`),\n\t\t\tupdateAudioPath: this.db.prepare(`UPDATE messages SET audio_path = ? WHERE id = ?`),\n\t\t\tdeleteFromSeq: this.db.prepare(`DELETE FROM messages WHERE session_id = ? AND seq >= ?`),\n\t\t\tsetTitle: this.db.prepare(`UPDATE sessions SET title = ? WHERE id = ?`),\n\t\t\tupdateSummary: this.db.prepare(`UPDATE sessions SET summary = ?, last_summarized_at = ? WHERE id = ?`),\n\t\t\tgetStaleSessions: this.db.prepare(`SELECT * FROM sessions WHERE status = 'active' AND (? - updated_at > ?) AND (last_summarized_at IS NULL OR last_summarized_at < updated_at) AND id IN (SELECT DISTINCT session_id FROM messages) ORDER BY updated_at ASC`),\n\t\t\tgetAllUnsummarized: this.db.prepare(`SELECT * FROM sessions WHERE status = 'active' AND (last_summarized_at IS NULL OR last_summarized_at < updated_at) AND id IN (SELECT DISTINCT session_id FROM messages) ORDER BY updated_at ASC`),\n\t\t\tgetTodayUpdated: this.db.prepare(`SELECT * FROM sessions WHERE summary != '' AND last_summarized_at >= ? AND last_summarized_at < ? ORDER BY last_summarized_at ASC`),\n\t\t\tsetMemorySnapshot: this.db.prepare(`UPDATE sessions SET memory_snapshot = ? WHERE id = ?`),\n\t\t\tcountToday: this.db.prepare(`SELECT COUNT(*) as cnt FROM sessions WHERE created_at >= ? AND created_at < ?`),\n\t\t\tsearchMessages: this.db.prepare(`SELECT m.id as messageId, m.session_id as sessionId, m.role, m.content, m.created_at as createdAt, s.title as sessionTitle FROM messages m JOIN sessions s ON m.session_id = s.id WHERE m.content LIKE ? AND (? IS NULL OR m.session_id = ?) ORDER BY m.created_at DESC LIMIT ?`)\n\t\t};\n\t}\n\tasync createSession(title, memorySnapshot, workspace) {\n\t\tconst id = crypto.randomUUID();\n\t\tconst now = Date.now();\n\t\tconst effectiveTitle = title || this.generateDefaultTitle(now);\n\t\tthis.stmts.createSession.run(id, effectiveTitle, now, now, null, \"active\", 0, memorySnapshot || \"\", workspace || \"\");\n\t\treturn await this.getSession(id);\n\t}\n\tgenerateDefaultTitle(now) {\n\t\tconst today = new Date(now);\n\t\tconst startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate()).getTime();\n\t\tconst endOfDay = startOfDay + 864e5;\n\t\tconst { cnt } = this.stmts.countToday.get(startOfDay, endOfDay);\n\t\treturn formatSessionTitle(today, cnt + 1);\n\t}\n\tasync getSession(id) {\n\t\tconst row = this.stmts.getSession.get(id);\n\t\treturn row ? this.rowToSession(row) : null;\n\t}\n\tasync listSessions() {\n\t\treturn this.stmts.listAllSessions.all().map((row) => this.rowToSession(row));\n\t}\n\tasync deleteSession(id) {\n\t\tthis.stmts.deleteSession.run(id);\n\t}\n\tasync archiveSession(id) {\n\t\tthis.stmts.updateSessionStatus.run(\"archived\", Date.now(), id);\n\t}\n\tasync forkSession(id) {\n\t\tconst parent = await this.getSession(id);\n\t\tif (!parent) throw new Error(`会话不存在: ${id}`);\n\t\tconst newSession = await this.createSession(`[分叉] ${parent.title}`, parent.memory_snapshot);\n\t\tconst now = Date.now();\n\t\tthis.db.prepare(\"UPDATE sessions SET parent_id = ? WHERE id = ?\").run(id, newSession.id);\n\t\tconst parentMessages = await this.getMessages(id);\n\t\tlet seq = 0;\n\t\tfor (const msg of parentMessages) {\n\t\t\tseq++;\n\t\t\tthis.stmts.insertMessage.run(crypto.randomUUID(), newSession.id, msg.role, msg.content, msg.reasoning_content || null, msg.tool_calls ? JSON.stringify(msg.tool_calls) : null, msg.tool_call_id || null, msg.name || null, msg.usage ? JSON.stringify(msg.usage) : null, msg.audio_path || null, msg.created_at, seq);\n\t\t}\n\t\tthis.db.prepare(\"UPDATE sessions SET token_count = ?, updated_at = ? WHERE id = ?\").run(parent.token_count, now, newSession.id);\n\t\treturn await this.getSession(newSession.id);\n\t}\n\tasync addMessage(sessionId, message) {\n\t\tconst session = await this.getSession(sessionId);\n\t\tif (!session) throw new Error(`会话不存在: ${sessionId}`);\n\t\tconst { max_seq } = this.stmts.getMaxSeq.get(sessionId);\n\t\tconst seq = max_seq + 1;\n\t\tconst id = message.id || crypto.randomUUID();\n\t\tconst now = Date.now();\n\t\tthis.stmts.insertMessage.run(id, sessionId, message.role, message.content, message.reasoning_content || null, message.tool_calls ? JSON.stringify(message.tool_calls) : null, message.tool_call_id || null, message.name || null, message.usage ? JSON.stringify(message.usage) : null, message.audio_path || null, now, seq);\n\t\tthis.stmts.updateSession.run(session.title, now, session.token_count, sessionId);\n\t\treturn await this.getMessage(id);\n\t}\n\tasync getMessages(sessionId, options) {\n\t\tconst before = options?.before ?? null;\n\t\tlet result = this.stmts.getMessages.all(sessionId, before, before).map((row) => this.rowToMessage(row));\n\t\tif (options?.limit !== void 0) result = result.slice(-options.limit);\n\t\treturn result;\n\t}\n\tasync getMessage(id) {\n\t\tconst row = this.stmts.getMessage.get(id);\n\t\treturn row ? this.rowToMessage(row) : null;\n\t}\n\tasync deleteMessage(id) {\n\t\tthis.stmts.deleteMessage.run(id);\n\t}\n\tasync deleteMessagesFrom(sessionId, messageId) {\n\t\tconst msg = this.stmts.getMessage.get(messageId);\n\t\tif (!msg) return;\n\t\tthis.stmts.deleteFromSeq.run(sessionId, msg.seq);\n\t}\n\tasync getTokenCount(sessionId) {\n\t\treturn (await this.getSession(sessionId))?.token_count || 0;\n\t}\n\tasync updateTokenCount(sessionId, count) {\n\t\tconst session = await this.getSession(sessionId);\n\t\tif (session) this.stmts.updateSession.run(session.title, Date.now(), count, sessionId);\n\t}\n\tasync setSessionTitle(sessionId, title) {\n\t\tthis.stmts.setTitle.run(title, sessionId);\n\t}\n\tasync searchMessages(query, sessionId, limit = 10) {\n\t\tconst pattern = `%${query}%`;\n\t\treturn this.stmts.searchMessages.all(pattern, sessionId || null, sessionId || null, limit).map((r) => ({\n\t\t\tsessionId: r.sessionId,\n\t\t\tsessionTitle: r.sessionTitle,\n\t\t\tmessageId: r.messageId,\n\t\t\trole: r.role,\n\t\t\tcontent: r.content,\n\t\t\tcreatedAt: r.createdAt\n\t\t}));\n\t}\n\tasync setAudioPath(messageId, path) {\n\t\tthis.stmts.updateAudioPath.run(path, messageId);\n\t}\n\tasync getMostRecentSession() {\n\t\tconst rows = this.stmts.listAllSessions.all();\n\t\tfor (const row of rows) if (row.status === \"active\") return this.rowToSession(row);\n\t\treturn null;\n\t}\n\tasync listWorkspaces() {\n\t\treturn this.db.prepare(`SELECT DISTINCT workspace FROM sessions WHERE status = 'active' AND workspace != '' ORDER BY workspace ASC`).all().map((r) => r.workspace);\n\t}\n\tasync getStaleSessions(idleMs) {\n\t\tlet rows;\n\t\tif (idleMs === null) rows = this.stmts.getAllUnsummarized.all();\n\t\telse {\n\t\t\tconst now = Date.now();\n\t\t\trows = this.stmts.getStaleSessions.all(now, idleMs);\n\t\t}\n\t\treturn rows.map((row) => this.rowToSession(row));\n\t}\n\tasync getMessagesSinceSeq(sessionId, seq) {\n\t\treturn this.stmts.getMessagesSinceSeq.all(sessionId, seq).map((row) => this.rowToMessage(row));\n\t}\n\tasync updateSummary(sessionId, summary) {\n\t\tthis.stmts.updateSummary.run(summary, Date.now(), sessionId);\n\t}\n\tasync getTodayUpdatedSessions() {\n\t\tconst now = /* @__PURE__ */ new Date();\n\t\tconst startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();\n\t\tconst endOfDay = startOfDay + 864e5;\n\t\treturn this.stmts.getTodayUpdated.all(startOfDay, endOfDay).map((row) => this.rowToSession(row));\n\t}\n\tasync setMemorySnapshot(sessionId, snapshot) {\n\t\tthis.stmts.setMemorySnapshot.run(snapshot, sessionId);\n\t}\n\trowToSession(row) {\n\t\treturn {\n\t\t\tid: row.id,\n\t\t\ttitle: row.title,\n\t\t\tcreated_at: row.created_at,\n\t\t\tupdated_at: row.updated_at,\n\t\t\tparent_id: row.parent_id,\n\t\t\tstatus: row.status,\n\t\t\ttoken_count: row.token_count,\n\t\t\tsummary: row.summary || \"\",\n\t\t\tlast_summarized_at: row.last_summarized_at ?? null,\n\t\t\tmemory_snapshot: row.memory_snapshot || \"\",\n\t\t\tworkspace: row.workspace || \"\"\n\t\t};\n\t}\n\trowToMessage(row) {\n\t\treturn {\n\t\t\tid: row.id,\n\t\t\tsession_id: row.session_id,\n\t\t\trole: row.role,\n\t\t\tcontent: row.content,\n\t\t\treasoning_content: row.reasoning_content || void 0,\n\t\t\ttool_calls: row.tool_calls ? JSON.parse(row.tool_calls) : void 0,\n\t\t\ttool_call_id: row.tool_call_id || void 0,\n\t\t\tname: row.name || void 0,\n\t\t\tusage: row.usage ? JSON.parse(row.usage) : void 0,\n\t\t\taudio_path: row.audio_path || void 0,\n\t\t\tcreated_at: row.created_at,\n\t\t\tseq: row.seq\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/storage/index.js\nvar _memory = null;\nvar _sqlite = null;\nfunction createStorage(config) {\n\tif (config.enabled) {\n\t\tif (!_sqlite) _sqlite = new SQLiteStorage(config.dbPath || getDataPath(\"db.sqlite\"));\n\t\treturn _sqlite;\n\t}\n\tif (!_memory) _memory = new MemoryStorage();\n\treturn _memory;\n}\n//#endregion\n//#region ../core/dist/task/executor.js\nvar TASK_TIMEOUT_MS = 600 * 1e3;\nasync function executeTask(task, onComplete) {\n\tif (!await updateTaskStatus(task.id, \"running\")) return;\n\tlet result = \"\";\n\tlet error;\n\ttry {\n\t\tconst config = readConfig();\n\t\tif (!config.activeModel) throw new Error(\"未选择模型\");\n\t\tconst providerConfig = getProviderForModel(config.activeModel);\n\t\tif (!providerConfig) throw new Error(\"未找到供应商配置\");\n\t\tconst model = getActiveModel();\n\t\tconst provider = createProvider({\n\t\t\t...providerConfig,\n\t\t\tactiveModel: model?.id || config.activeModel,\n\t\t\tcontextWindow: model?.contextWindow || 1048576\n\t\t});\n\t\tconst storage = createStorage({ enabled: false });\n\t\tconst registry = new ToolRegistry();\n\t\tfor (const t of CORE_TOOLS) if (t.name !== \"write_memory\") registry.register(t);\n\t\tregistry.register(createSearchHistoryTool(storage));\n\t\tconst abortController = new AbortController();\n\t\tconst timeout = setTimeout(() => abortController.abort(), TASK_TIMEOUT_MS);\n\t\ttry {\n\t\t\tconst buildResult = {\n\t\t\t\tmessages: [{\n\t\t\t\t\trole: \"system\",\n\t\t\t\t\tcontent: `You are a background automation agent. Execute the task description strictly and output a concise result summary in Chinese.\nDo not ask the user any questions. Do not wait for confirmation. Do not create new scheduled tasks.\nIf an operation requires confirmation, skip it and explain why.`\n\t\t\t\t}, {\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: task.prompt\n\t\t\t\t}],\n\t\t\t\tcontextWindow: getContextWindow()\n\t\t\t};\n\t\t\tconst agent = new AgentLoop(provider, storage, registry, async () => false, abortController.signal, new AgentLogger(`task-${task.id.slice(0, 8)}`), config.compressionMode, config.compressionThreshold);\n\t\t\tconst sid = (await storage.createSession(void 0, void 0, process.cwd())).id;\n\t\t\tfor await (const event of agent.run(sid, task.prompt, buildResult)) if (event.type === \"content\") result += event.text;\n\t\t\telse if (event.type === \"error\") error = event.message;\n\t\t\telse if (event.type === \"retry_exhausted\") error = event.message;\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\tif (error) await updateTaskStatus(task.id, \"failed\", { error });\n\t\telse {\n\t\t\tresult = result.trim();\n\t\t\tawait updateTaskStatus(task.id, \"completed\", { result });\n\t\t}\n\t\tawait onComplete(result, error);\n\t} catch (e) {\n\t\terror = e.message;\n\t\tawait updateTaskStatus(task.id, \"failed\", { error });\n\t\tawait onComplete(\"\", error);\n\t}\n}\n//#endregion\n//#region ../core/dist/task/scheduler.js\nvar SCAN_INTERVAL_MS = 15e3;\nvar worker = null;\nvar notificationCallback = null;\nfunction setTaskNotificationHandler(fn) {\n\tnotificationCallback = fn;\n}\nasync function tick() {\n\tconst pending = getPendingTasks();\n\tfor (const task of pending) await executeTask(task, async (result, error) => {\n\t\tif (notificationCallback) if (error) await notificationCallback({\n\t\t\ttitle: `任务失败: ${task.name}`,\n\t\t\tbody: error,\n\t\t\ttype: \"error\"\n\t\t});\n\t\telse {\n\t\t\tconst preview = result.slice(0, 300) + (result.length > 300 ? \"...\" : \"\");\n\t\t\tawait notificationCallback({\n\t\t\t\ttitle: `任务完成: ${task.name}`,\n\t\t\t\tbody: preview,\n\t\t\t\ttype: \"task_complete\"\n\t\t\t});\n\t\t}\n\t});\n}\nfunction startScheduler() {\n\tif (worker) return;\n\tworker = new BackgroundWorker();\n\tworker.schedule(\"task-tick\", SCAN_INTERVAL_MS, tick);\n\tworker.start();\n}\n//#endregion\n//#region ../core/dist/tool/tools/schedule-task.js\nvar scheduleTaskTool = {\n\tname: \"schedule_task\",\n\tdescription: \"Create a scheduled one-shot task. The task runs automatically at the specified future time (no conversation context) and the user is notified on completion. Before using, run exec to get the current system time to ensure scheduledAt is in the future.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tname: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Task name (short description, e.g. \\\"Data processing\\\")\"\n\t\t\t},\n\t\t\tprompt: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Task description — this is the sole instruction the model receives when executing in the background with no conversation context. Must be self-contained: what to do, expected output format, any necessary details\"\n\t\t\t},\n\t\t\tscheduledAt: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"ISO 8601 datetime string (e.g. 2026-06-16T14:30:00Z). Must be in the future. Use exec to get current system time first.\"\n\t\t\t}\n\t\t},\n\t\trequired: [\n\t\t\t\"name\",\n\t\t\t\"prompt\",\n\t\t\t\"scheduledAt\"\n\t\t]\n\t},\n\texecute: async (args) => {\n\t\tconst name = args.name;\n\t\tconst prompt = args.prompt;\n\t\tconst scheduledAtStr = args.scheduledAt;\n\t\tif (!name?.trim() || !prompt?.trim() || !scheduledAtStr?.trim()) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"参数不完整:name、prompt、scheduledAt 均为必填\"\n\t\t};\n\t\tconst scheduledAt = new Date(scheduledAtStr).getTime();\n\t\tif (isNaN(scheduledAt)) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `无法解析时间 \"${scheduledAtStr}\",请使用 ISO 8601 格式,如 2026-06-16T14:30:00Z`\n\t\t};\n\t\tconst now = Date.now();\n\t\tif (scheduledAt <= now) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `计划执行时间 ${scheduledAtStr} 已过期。当前时间是 ${new Date(now).toISOString()},请设置一个未来的时间`\n\t\t};\n\t\tif (scheduledAt > now + 720 * 60 * 60 * 1e3) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `计划执行时间不能超过 30 天后`\n\t\t};\n\t\tconst task = await createTask(name.trim(), prompt.trim(), scheduledAt);\n\t\tconst formatted = new Date(scheduledAt).toISOString().replace(\"T\", \" \").slice(0, 19);\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\toutput: `任务已创建:\\n- ID: ${task.id.slice(0, 8)}\\n- 名称: ${task.name}\\n- 计划执行: ${formatted}\\n\\n任务将在指定时间自动执行,完成后通过 Email 通知你。`\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/read-tasks.js\nvar readTasksTool = {\n\tname: \"read_tasks\",\n\tdescription: \"Query scheduled task list and results. View all tasks (pending, running, completed, failed, paused) or filter by status. The AI is NOT automatically notified of completions — you must manually call this tool to check.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: { status: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"Filter by status: pending, running, completed, failed, paused. Omit to return all.\"\n\t\t} },\n\t\trequired: []\n\t},\n\texecute: async (args) => {\n\t\tconst statusFilter = args.status?.trim();\n\t\tlet tasks = getAllTasks();\n\t\tif (statusFilter) {\n\t\t\tconst valid = [\n\t\t\t\t\"pending\",\n\t\t\t\t\"running\",\n\t\t\t\t\"completed\",\n\t\t\t\t\"failed\",\n\t\t\t\t\"paused\"\n\t\t\t];\n\t\t\tif (!valid.includes(statusFilter)) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `无效的状态值 \"${statusFilter}\",可选: ${valid.join(\", \")}`\n\t\t\t};\n\t\t\ttasks = tasks.filter((t) => t.status === statusFilter);\n\t\t}\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\toutput: formatTasksForAI(tasks)\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/search-history.js\nfunction formatResults(results, query) {\n\tif (results.length === 0) return `(未在历史对话中找到与 \"${query}\" 相关的内容)`;\n\tconst lines = [`找到 ${results.length} 条与 \"${query}\" 相关的结果:`];\n\tlet lastSession = \"\";\n\tfor (const r of results) {\n\t\tif (r.sessionTitle !== lastSession) {\n\t\t\tlastSession = r.sessionTitle;\n\t\t\tlines.push(\"\", `--- ${r.sessionTitle} ---`);\n\t\t}\n\t\tconst date = new Date(r.createdAt).toLocaleString(\"zh-CN\");\n\t\tconst roleLabel = r.role === \"user\" ? \"用户\" : r.role === \"assistant\" ? \"AI\" : r.role;\n\t\tconst snippet = r.content.length > 200 ? r.content.slice(0, 200) + \"...\" : r.content;\n\t\tlines.push(`[${date}] ${roleLabel}: ${snippet}`);\n\t}\n\treturn lines.join(\"\\n\");\n}\nfunction createSearchHistoryTool(storage) {\n\treturn {\n\t\tname: \"search_history\",\n\t\tdescription: \"Search conversation history across all sessions with fuzzy text matching. Use when you need to recall what the user discussed before. Note: this searches chat records, not long-term memory (use read_memory for that).\",\n\t\tparameters: {\n\t\t\ttype: \"object\",\n\t\t\tproperties: {\n\t\t\t\tquery: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"Search keyword or phrase (case-insensitive). Matches content field of all messages.\"\n\t\t\t\t},\n\t\t\t\tsession_id: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"Optional. Limit search to a specific session. Omit to search all sessions.\"\n\t\t\t\t},\n\t\t\t\tlimit: {\n\t\t\t\t\ttype: \"number\",\n\t\t\t\t\tdescription: \"Optional. Max results, default 10.\"\n\t\t\t\t}\n\t\t\t},\n\t\t\trequired: [\"query\"]\n\t\t},\n\t\tasync execute(args, _ctx) {\n\t\t\tconst query = args.query;\n\t\t\tconst sessionId = args.session_id;\n\t\t\tconst limit = args.limit || 10;\n\t\t\tif (!query?.trim()) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: \"query 不能为空\"\n\t\t\t};\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\toutput: formatResults(await storage.searchMessages(query.trim(), sessionId || void 0, limit), query.trim())\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\toutput: \"\",\n\t\t\t\t\terror: `搜索失败: ${error.message}`\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n}\n//#endregion\n//#region ../core/dist/tool/index.js\n/** 核心工具集:文件操作 + 搜索 + 记忆(Chat / Gateway 使用,再拼接 SCHEDULING_TOOLS 即为全量) */\nvar CORE_TOOLS = [\n\treadFileTool,\n\twriteFileTool,\n\tdeleteFileTool,\n\teditTool,\n\texecTool,\n\twebSearchTool,\n\treadMemoryTool,\n\twriteMemoryTool\n];\n/** 调度工具集 */\nvar SCHEDULING_TOOLS = [scheduleTaskTool, readTasksTool];\n//#endregion\n//#region ../core/dist/agent/types.js\n/**\n* AgentLoop 状态机状态枚举\n*\n* 每个状态对应循环中的一个确定阶段,状态转换时触发对应的 LoopHooks 回调。\n*/\nvar AgentState;\n(function(AgentState) {\n\tAgentState[\"INIT\"] = \"INIT\";\n\tAgentState[\"PRE_LLM\"] = \"PRE_LLM\";\n\tAgentState[\"LLM_STREAMING\"] = \"LLM_STREAMING\";\n\tAgentState[\"POST_LLM\"] = \"POST_LLM\";\n\tAgentState[\"LLM_RETRY_WAIT\"] = \"LLM_RETRY_WAIT\";\n\tAgentState[\"PRE_TOOL\"] = \"PRE_TOOL\";\n\tAgentState[\"TOOL_EXECUTING\"] = \"TOOL_EXECUTING\";\n\tAgentState[\"AWAIT_CONFIRM\"] = \"AWAIT_CONFIRM\";\n\tAgentState[\"POST_TOOL\"] = \"POST_TOOL\";\n\tAgentState[\"PERSIST_TURN\"] = \"PERSIST_TURN\";\n\tAgentState[\"DONE\"] = \"DONE\";\n\tAgentState[\"ERROR\"] = \"ERROR\";\n})(AgentState || (AgentState = {}));\n//#endregion\n//#region ../core/dist/agent/message-sanitizer.js\nfunction extractTextContent$1(content) {\n\tif (typeof content === \"string\") return content;\n\treturn content.filter((p) => p.type === \"text\").map((p) => p.text).join(\"\\n\");\n}\nfunction mergeContent(a, b) {\n\treturn extractTextContent$1(a) + \"\\n\\n\" + extractTextContent$1(b);\n}\nvar SURROGATE_RE = /[\\uD800-\\uDFFF]/g;\nfunction stripSurrogates(text) {\n\treturn text.replace(SURROGATE_RE, \"�\");\n}\nfunction cleanContent(content) {\n\tif (typeof content === \"string\") return stripSurrogates(content);\n\treturn content.map((part) => {\n\t\tif (part.type === \"text\") return {\n\t\t\t...part,\n\t\t\ttext: stripSurrogates(part.text)\n\t\t};\n\t\treturn part;\n\t});\n}\n/**\n* 修复相邻相同角色消息:\n* - 连续 user → 合并为一条(内容拼接)\n* - 连续 assistant(不含 tool_calls)→ 合并\n* - 连续 assistant 其中之一有 tool_calls → 保留两者(tool_calls 不能合并)\n*/\nfunction repairRoleAlternation(messages) {\n\tif (messages.length <= 1) return messages;\n\tconst result = [messages[0]];\n\tfor (let i = 1; i < messages.length; i++) {\n\t\tconst prev = result[result.length - 1];\n\t\tconst curr = messages[i];\n\t\tif (prev.role === curr.role && curr.role === \"user\") result[result.length - 1] = {\n\t\t\trole: \"user\",\n\t\t\tcontent: mergeContent(prev.content, curr.content)\n\t\t};\n\t\telse if (prev.role === curr.role && curr.role === \"assistant\") if (prev.tool_calls || curr.tool_calls) result.push(curr);\n\t\telse {\n\t\t\tconst merged = {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: mergeContent(prev.content, curr.content)\n\t\t\t};\n\t\t\tif (prev.reasoning_content || curr.reasoning_content) merged.reasoning_content = [prev.reasoning_content, curr.reasoning_content].filter(Boolean).join(\"\\n\\n\");\n\t\t\tif (prev.name) merged.name = prev.name;\n\t\t\tresult[result.length - 1] = merged;\n\t\t}\n\t\telse result.push(curr);\n\t}\n\treturn result;\n}\n/**\n* 移除孤儿 tool 结果:\n* tool role 消息的 tool_call_id 必须在前面的 assistant.tool_calls 中存在。\n*/\nfunction stripOrphanToolResults(messages) {\n\tconst activeToolIds = /* @__PURE__ */ new Set();\n\tfor (const msg of messages) if (msg.role === \"assistant\" && msg.tool_calls) for (const tc of msg.tool_calls) activeToolIds.add(tc.id);\n\treturn messages.filter((msg) => {\n\t\tif (msg.role !== \"tool\") return true;\n\t\tif (!msg.tool_call_id) return false;\n\t\treturn activeToolIds.has(msg.tool_call_id);\n\t});\n}\nfunction stripEmptyMessages(messages) {\n\treturn messages.filter((msg) => {\n\t\tif (extractTextContent$1(msg.content).trim() === \"\" && !msg.tool_calls && msg.role !== \"tool\") return false;\n\t\treturn true;\n\t});\n}\n/**\n* 消息清洗管道\n*\n* 1. 移除空消息(无内容且无 tool_calls)\n* 2. 清除 Unicode surrogate(\\uD800-\\uDFFF)\n* 3. 修复角色交替(合并连续 user/assistant)\n* 4. 移除孤儿 tool 结果(无匹配 tool_call_id)\n*\n* 返回新的 Message 数组,不修改原数组。\n*/\nfunction sanitizeMessages(messages) {\n\tlet result = stripEmptyMessages(messages);\n\tresult = result.map((msg) => {\n\t\tconst cleaned = {\n\t\t\trole: msg.role,\n\t\t\tcontent: cleanContent(msg.content)\n\t\t};\n\t\tif (msg.name) cleaned.name = stripSurrogates(msg.name);\n\t\tif (msg.tool_call_id) cleaned.tool_call_id = stripSurrogates(msg.tool_call_id);\n\t\tif (msg.reasoning_content) cleaned.reasoning_content = stripSurrogates(msg.reasoning_content);\n\t\tif (msg.tool_calls) cleaned.tool_calls = msg.tool_calls.map((tc) => ({\n\t\t\t...tc,\n\t\t\tfunction: {\n\t\t\t\tname: stripSurrogates(tc.function.name),\n\t\t\t\targuments: stripSurrogates(tc.function.arguments)\n\t\t\t}\n\t\t}));\n\t\treturn cleaned;\n\t});\n\tresult = repairRoleAlternation(result);\n\tresult = stripOrphanToolResults(result);\n\treturn result;\n}\n//#endregion\n//#region ../core/dist/agent/loop.js\nfunction extractTextContent(content) {\n\tif (typeof content === \"string\") return content;\n\treturn content.filter((p) => p.type === \"text\" && \"text\" in p).map((p) => p.text).join(\"\\n\");\n}\nvar MAX_LLM_RETRIES = 5;\nvar RETRY_BASE_DELAY = 1e3;\nvar CONTEXT_WINDOW_DEFAULT = 1048576;\nvar CONTINUE_THRESHOLD = 2e4;\nvar MAX_TOOL_ITERATIONS$1 = 50;\nvar COMPRESSION_THRESHOLD_DEFAULT = 256e3;\nfunction buildSummaryContent(messages, initialSystem) {\n\tconst relevant = messages.filter((m) => m.role !== \"system\").filter((m) => m.role !== \"tool\");\n\tlet header = \"\";\n\tif (initialSystem) header = `原始系统提示词摘要: ${initialSystem.slice(0, 200)}\\n\\n`;\n\tconst lines = [];\n\tfor (const m of relevant) {\n\t\tconst role = m.role === \"user\" ? \"用户\" : \"AI\";\n\t\tconst text = extractTextContent(m.content);\n\t\tlines.push(`[${role}] ${text.slice(0, 2e3)}`);\n\t}\n\treturn header + lines.join(\"\\n\");\n}\nvar AgentLoop = class {\n\tprovider;\n\tstorage;\n\tregistry;\n\tonConfirm;\n\tsignal;\n\thooks;\n\tstate = AgentState.INIT;\n\teffectiveSessionId = \"\";\n\tcontextWindow = CONTEXT_WINDOW_DEFAULT;\n\tbuildResult;\n\tuserMsg;\n\tmessages = [];\n\ttools = [];\n\ttotalUsage;\n\titeration = 0;\n\tfullContent = \"\";\n\tfullReasoning = \"\";\n\tcollectedToolCalls = /* @__PURE__ */ new Map();\n\tchunkUsage;\n\tattempt = 0;\n\tresolvedToolCalls = [];\n\ttoolIndex = 0;\n\ttoolResultMsgs = [];\n\tcurrentToolCall;\n\tcurrentArgs = {};\n\tpendingConfirmation;\n\ttoolContext;\n\tcompressionMode;\n\tcompressionThreshold;\n\tconstructor(provider, storage, registry, onConfirm, signal, hooks = {}, compressionMode = \"auto\", compressionThreshold = COMPRESSION_THRESHOLD_DEFAULT) {\n\t\tthis.provider = provider;\n\t\tthis.storage = storage;\n\t\tthis.registry = registry;\n\t\tthis.onConfirm = onConfirm;\n\t\tthis.signal = signal;\n\t\tthis.hooks = hooks;\n\t\tthis.toolContext = new ToolContext(process.cwd());\n\t\tthis.compressionMode = compressionMode;\n\t\tthis.compressionThreshold = compressionThreshold;\n\t}\n\tasync *run(sessionId, userMessage, buildResult, userMessageId) {\n\t\tthis.effectiveSessionId = sessionId;\n\t\tthis.contextWindow = buildResult.contextWindow || CONTEXT_WINDOW_DEFAULT;\n\t\tthis.buildResult = buildResult;\n\t\tthis.messages = [...buildResult.messages];\n\t\tthis.tools = this.registry.getDefinitions();\n\t\tthis.totalUsage = void 0;\n\t\tthis.iteration = 0;\n\t\tthis.state = AgentState.INIT;\n\t\tconst session = await this.storage.getSession(sessionId);\n\t\tif (session?.workspace) this.toolContext = new ToolContext(session.workspace);\n\t\tpendingSteering.delete(sessionId);\n\t\ttry {\n\t\t\twhile (true) {\n\t\t\t\tif (this.state === AgentState.DONE || this.state === AgentState.ERROR) break;\n\t\t\t\tswitch (this.state) {\n\t\t\t\t\tcase AgentState.INIT:\n\t\t\t\t\t\tyield* this.doInit(userMessage, userMessageId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.PRE_LLM:\n\t\t\t\t\t\tyield* this.doPreLlm();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.LLM_STREAMING:\n\t\t\t\t\t\tyield* this.doLlmStreaming();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.POST_LLM:\n\t\t\t\t\t\tyield* this.doPostLlm();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.LLM_RETRY_WAIT:\n\t\t\t\t\t\tyield* this.doLlmRetryWait();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.PRE_TOOL:\n\t\t\t\t\t\tyield* this.doPreTool();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.TOOL_EXECUTING:\n\t\t\t\t\t\tyield* this.doToolExecuting();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.AWAIT_CONFIRM:\n\t\t\t\t\t\tyield* this.doAwaitConfirm();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.POST_TOOL:\n\t\t\t\t\t\tyield* this.doPostTool();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.PERSIST_TURN:\n\t\t\t\t\t\tyield* this.doPersistTurn();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.DONE:\n\t\t\t\t\tcase AgentState.ERROR: break;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tyield {\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: error.message || \"未知错误\"\n\t\t\t};\n\t\t}\n\t}\n\tasync *doInit(userMessage, userMessageId) {\n\t\tthis.userMsg = await this.storage.addMessage(this.effectiveSessionId, {\n\t\t\tid: userMessageId,\n\t\t\tsession_id: this.effectiveSessionId,\n\t\t\trole: \"user\",\n\t\t\tcontent: userMessage\n\t\t});\n\t\tthis.state = AgentState.PRE_LLM;\n\t}\n\tasync *doPreLlm() {\n\t\tif (this.signal?.aborted) {\n\t\t\tthis.state = AgentState.DONE;\n\t\t\treturn;\n\t\t}\n\t\tif (this.iteration >= MAX_TOOL_ITERATIONS$1) {\n\t\t\tyield {\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `达到最大工具调用次数限制(${MAX_TOOL_ITERATIONS$1}次),请简化任务后重试`\n\t\t\t};\n\t\t\tthis.state = AgentState.ERROR;\n\t\t\treturn;\n\t\t}\n\t\tthis.fullContent = \"\";\n\t\tthis.fullReasoning = \"\";\n\t\tthis.collectedToolCalls.clear();\n\t\tthis.chunkUsage = void 0;\n\t\tthis.attempt = 0;\n\t\tyield* this.consumeSteering();\n\t\tconst modified = await this.hooks.beforeLlmCall?.(this.messages);\n\t\tif (modified) this.messages = modified;\n\t\tthis.state = AgentState.LLM_STREAMING;\n\t}\n\tasync *consumeSteering() {\n\t\tconst steering = pendingSteering.get(this.effectiveSessionId);\n\t\tif (!steering || steering.length === 0) return;\n\t\tconst drained = steering.splice(0);\n\t\tfor (const s of drained) {\n\t\t\tawait this.storage.addMessage(this.effectiveSessionId, {\n\t\t\t\tsession_id: this.effectiveSessionId,\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: s.text\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: s.text\n\t\t\t});\n\t\t\tyield {\n\t\t\t\ttype: \"steering_consumed\",\n\t\t\t\tmessageId: s.messageId\n\t\t\t};\n\t\t}\n\t}\n\tasync *doLlmStreaming() {\n\t\ttry {\n\t\t\tconst apiMessages = sanitizeMessages(this.messages);\n\t\t\tconst stream = this.provider.chatStream({\n\t\t\t\tmessages: apiMessages,\n\t\t\t\ttools: this.tools.length > 0 ? this.tools : void 0\n\t\t\t});\n\t\t\tfor await (const chunk of stream) {\n\t\t\t\tif (chunk.reasoning_content) {\n\t\t\t\t\tthis.fullReasoning += chunk.reasoning_content;\n\t\t\t\t\tyield {\n\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\ttext: chunk.reasoning_content\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (chunk.content) {\n\t\t\t\t\tthis.fullContent += chunk.content;\n\t\t\t\t\tyield {\n\t\t\t\t\t\ttype: \"content\",\n\t\t\t\t\t\ttext: chunk.content\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (chunk.tool_calls) for (const tc of chunk.tool_calls) {\n\t\t\t\t\tconst existing = this.collectedToolCalls.get(tc.index);\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\tif (tc.function?.arguments) existing.function.arguments += tc.function.arguments;\n\t\t\t\t\t} else if (tc.id) {\n\t\t\t\t\t\tconst newTc = {\n\t\t\t\t\t\t\tid: tc.id,\n\t\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\t\tfunction: {\n\t\t\t\t\t\t\t\tname: tc.function?.name || \"\",\n\t\t\t\t\t\t\t\targuments: tc.function?.arguments || \"\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.collectedToolCalls.set(tc.index, newTc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (chunk.usage) this.chunkUsage = chunk.usage;\n\t\t\t}\n\t\t\tthis.state = AgentState.POST_LLM;\n\t\t} catch (llmError) {\n\t\t\tthis.fullContent = \"\";\n\t\t\tthis.collectedToolCalls.clear();\n\t\t\tthis.chunkUsage = void 0;\n\t\t\tif (this.attempt >= MAX_LLM_RETRIES) {\n\t\t\t\tconst errorMessage = `[连接失败] ${llmError.message || \"多次重试后仍无法连接\"}`;\n\t\t\t\tawait this.storage.addMessage(this.effectiveSessionId, {\n\t\t\t\t\tsession_id: this.effectiveSessionId,\n\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\tcontent: errorMessage\n\t\t\t\t});\n\t\t\t\tyield {\n\t\t\t\t\ttype: \"retry_exhausted\",\n\t\t\t\t\tmessage: llmError.message || \"连接失败\",\n\t\t\t\t\tpartialContent: true\n\t\t\t\t};\n\t\t\t\tthis.state = AgentState.ERROR;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.state = AgentState.LLM_RETRY_WAIT;\n\t\t}\n\t}\n\tasync *doLlmRetryWait() {\n\t\tawait this.hooks.onLlmRetry?.(this.attempt + 1, MAX_LLM_RETRIES, /* @__PURE__ */ new Error(\"LLM call failed\"));\n\t\tyield {\n\t\t\ttype: \"retrying\",\n\t\t\tattempt: this.attempt + 1,\n\t\t\tmaxRetries: MAX_LLM_RETRIES\n\t\t};\n\t\tawait sleep(RETRY_BASE_DELAY * Math.pow(2, this.attempt));\n\t\tthis.attempt++;\n\t\tthis.state = AgentState.LLM_STREAMING;\n\t}\n\tasync *doPostLlm() {\n\t\tif (this.chunkUsage) {\n\t\t\tconst cu = this.chunkUsage;\n\t\t\tthis.totalUsage = this.totalUsage ? {\n\t\t\t\tprompt_tokens: (this.totalUsage.prompt_tokens || 0) + (cu.prompt_tokens || 0),\n\t\t\t\tcompletion_tokens: (this.totalUsage.completion_tokens || 0) + (cu.completion_tokens || 0),\n\t\t\t\ttotal_tokens: (this.totalUsage.total_tokens || 0) + (cu.total_tokens || 0)\n\t\t\t} : { ...cu };\n\t\t}\n\t\tawait this.hooks.afterLlmCall?.(this.totalUsage);\n\t\tthis.resolvedToolCalls = Array.from(this.collectedToolCalls.values());\n\t\tif (this.resolvedToolCalls.length === 0) {\n\t\t\tawait this.storage.addMessage(this.effectiveSessionId, {\n\t\t\t\tsession_id: this.effectiveSessionId,\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: this.fullContent,\n\t\t\t\treasoning_content: this.fullReasoning || void 0,\n\t\t\t\tusage: this.totalUsage\n\t\t\t});\n\t\t\tif (this.totalUsage) await this.storage.updateTokenCount(this.effectiveSessionId, this.totalUsage.total_tokens);\n\t\t\tyield* this.tryForkIfWindowLow();\n\t\t\tyield {\n\t\t\t\ttype: \"done\",\n\t\t\t\tmessageId: crypto.randomUUID(),\n\t\t\t\tusage: this.totalUsage,\n\t\t\t\tcontextWindow: this.contextWindow\n\t\t\t};\n\t\t\tthis.state = AgentState.DONE;\n\t\t\treturn;\n\t\t}\n\t\tthis.messages.push({\n\t\t\trole: \"assistant\",\n\t\t\tcontent: this.fullContent || \"\",\n\t\t\ttool_calls: this.resolvedToolCalls,\n\t\t\treasoning_content: this.fullReasoning || void 0\n\t\t});\n\t\tyield* this.tryForkIfWindowLow();\n\t\tthis.toolResultMsgs = [];\n\t\tthis.toolIndex = 0;\n\t\tthis.state = AgentState.PRE_TOOL;\n\t}\n\tasync *doPreTool() {\n\t\tif (this.signal?.aborted) {\n\t\t\tthis.state = AgentState.DONE;\n\t\t\treturn;\n\t\t}\n\t\tif (this.toolIndex >= this.resolvedToolCalls.length) {\n\t\t\tthis.state = AgentState.PERSIST_TURN;\n\t\t\treturn;\n\t\t}\n\t\tthis.currentToolCall = this.resolvedToolCalls[this.toolIndex];\n\t\tthis.currentArgs = {};\n\t\ttry {\n\t\t\tthis.currentArgs = JSON.parse(this.currentToolCall.function.arguments);\n\t\t} catch {}\n\t\tconst modifiedArgs = await this.hooks.beforeToolExecution?.(this.currentToolCall.function.name, this.currentArgs);\n\t\tif (modifiedArgs) this.currentArgs = modifiedArgs;\n\t\tyield {\n\t\t\ttype: \"tool_call\",\n\t\t\tname: this.currentToolCall.function.name,\n\t\t\targs: this.currentArgs\n\t\t};\n\t\tthis.state = AgentState.TOOL_EXECUTING;\n\t}\n\tasync *doToolExecuting() {\n\t\tconst tc = this.currentToolCall;\n\t\tconst name = tc.function.name;\n\t\tconst updateQueue = [];\n\t\tlet toolDone = false;\n\t\tlet toolResult;\n\t\tlet toolError;\n\t\tlet wakeUp = null;\n\t\tthis.toolContext.onUpdate = (chunk) => {\n\t\t\tif (!toolDone) {\n\t\t\t\tupdateQueue.push(chunk);\n\t\t\t\twakeUp?.();\n\t\t\t}\n\t\t};\n\t\tthis.registry.execute(name, this.currentArgs, this.toolContext).then((r) => {\n\t\t\ttoolResult = r;\n\t\t}).catch((e) => {\n\t\t\ttoolError = e;\n\t\t}).finally(() => {\n\t\t\tthis.toolContext.onUpdate = void 0;\n\t\t\ttoolDone = true;\n\t\t\twakeUp?.();\n\t\t});\n\t\twhile (!toolDone) if (updateQueue.length > 0) while (updateQueue.length > 0) yield {\n\t\t\ttype: \"tool_execution_update\",\n\t\t\tname,\n\t\t\ttext: updateQueue.shift()\n\t\t};\n\t\telse await new Promise((resolve) => {\n\t\t\twakeUp = resolve;\n\t\t});\n\t\tif (toolError) {\n\t\t\tif (toolError instanceof PendingConfirmation) {\n\t\t\t\tthis.pendingConfirmation = toolError;\n\t\t\t\tthis.state = AgentState.AWAIT_CONFIRM;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst errMsg = toolError.message;\n\t\t\tyield {\n\t\t\t\ttype: \"tool_result\",\n\t\t\t\tname,\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: errMsg\n\t\t\t};\n\t\t\tthis.toolResultMsgs.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: `工具执行异常: ${errMsg}`,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: `工具执行异常: ${errMsg}`,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname\n\t\t\t});\n\t\t\tthis.state = AgentState.POST_TOOL;\n\t\t\treturn;\n\t\t}\n\t\tconst result = toolResult;\n\t\tyield {\n\t\t\ttype: \"tool_result\",\n\t\t\tname,\n\t\t\tsuccess: result.success,\n\t\t\toutput: result.output\n\t\t};\n\t\tconst content = result.output || result.error || \"\";\n\t\tthis.toolResultMsgs.push({\n\t\t\trole: \"tool\",\n\t\t\tcontent,\n\t\t\ttool_call_id: tc.id,\n\t\t\tname\n\t\t});\n\t\tthis.messages.push({\n\t\t\trole: \"tool\",\n\t\t\tcontent,\n\t\t\ttool_call_id: tc.id,\n\t\t\tname\n\t\t});\n\t\tawait this.hooks.afterToolExecution?.(name, {\n\t\t\tsuccess: result.success,\n\t\t\toutput: result.output\n\t\t});\n\t\tthis.state = AgentState.POST_TOOL;\n\t}\n\tasync *doAwaitConfirm() {\n\t\tconst error = this.pendingConfirmation;\n\t\tconst tc = this.currentToolCall;\n\t\tconst confirmId = crypto.randomUUID();\n\t\tawait this.hooks.onConfirmRequired?.(error, confirmId);\n\t\tyield {\n\t\t\ttype: \"confirm_required\",\n\t\t\tconfirmId,\n\t\t\tconfirmation: error\n\t\t};\n\t\tlet abortCleanup;\n\t\tconst approved = await Promise.race([this.onConfirm(error, confirmId), new Promise((resolve) => {\n\t\t\tif (this.signal) {\n\t\t\t\tconst onAbort = () => resolve(false);\n\t\t\t\tthis.signal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\tabortCleanup = () => this.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t}\n\t\t})]);\n\t\tabortCleanup?.();\n\t\tif (approved) try {\n\t\t\tconst retryResult = await this.registry.execute(error.toolName, {\n\t\t\t\t...error.args,\n\t\t\t\t__confirmed: true\n\t\t\t}, this.toolContext);\n\t\t\tyield {\n\t\t\t\ttype: \"tool_result\",\n\t\t\t\tname: error.toolName,\n\t\t\t\tsuccess: retryResult.success,\n\t\t\t\toutput: retryResult.output\n\t\t\t};\n\t\t\tconst content = retryResult.output || retryResult.error || \"\";\n\t\t\tthis.toolResultMsgs.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t} catch (retryError) {\n\t\t\tconst errMsg = retryError.message;\n\t\t\tyield {\n\t\t\t\ttype: \"tool_result\",\n\t\t\t\tname: error.toolName,\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: errMsg\n\t\t\t};\n\t\t\tthis.toolResultMsgs.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: `执行失败: ${errMsg}`,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: `执行失败: ${errMsg}`,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tconst cancelMsg = \"用户取消了此操作\";\n\t\t\tyield {\n\t\t\t\ttype: \"tool_result\",\n\t\t\t\tname: error.toolName,\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: cancelMsg\n\t\t\t};\n\t\t\tthis.toolResultMsgs.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: cancelMsg,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: cancelMsg,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t}\n\t\tthis.pendingConfirmation = void 0;\n\t\tthis.state = AgentState.POST_TOOL;\n\t}\n\tasync *doPostTool() {\n\t\tthis.toolIndex++;\n\t\tthis.state = AgentState.PRE_TOOL;\n\t}\n\tasync *doPersistTurn() {\n\t\tawait this.hooks.afterTurn?.(this.iteration);\n\t\tawait this.storage.addMessage(this.effectiveSessionId, {\n\t\t\tsession_id: this.effectiveSessionId,\n\t\t\trole: \"assistant\",\n\t\t\tcontent: this.fullContent || \"\",\n\t\t\treasoning_content: this.fullReasoning || void 0,\n\t\t\ttool_calls: this.resolvedToolCalls,\n\t\t\tusage: this.totalUsage\n\t\t});\n\t\tif (this.totalUsage) await this.storage.updateTokenCount(this.effectiveSessionId, this.totalUsage.total_tokens);\n\t\tfor (const t of this.toolResultMsgs) await this.storage.addMessage(this.effectiveSessionId, {\n\t\t\tsession_id: this.effectiveSessionId,\n\t\t\trole: \"tool\",\n\t\t\tcontent: t.content,\n\t\t\ttool_call_id: t.tool_call_id,\n\t\t\tname: t.name\n\t\t});\n\t\tif (this.signal?.aborted) {\n\t\t\tthis.state = AgentState.DONE;\n\t\t\treturn;\n\t\t}\n\t\tthis.iteration++;\n\t\tthis.state = AgentState.PRE_LLM;\n\t}\n\tasync *tryForkIfWindowLow() {\n\t\tconst tokensUsed = this.totalUsage?.total_tokens || 0;\n\t\tif (tokensUsed <= 0) return;\n\t\tif (this.compressionMode === \"custom\" ? tokensUsed > this.compressionThreshold : this.contextWindow - tokensUsed < CONTINUE_THRESHOLD) {\n\t\t\tconst newId = await this.createContinuation(this.effectiveSessionId, this.userMsg, this.messages, typeof this.buildResult.messages[0]?.content === \"string\" ? this.buildResult.messages[0]?.content : void 0);\n\t\t\tif (newId) yield {\n\t\t\t\ttype: \"forked\",\n\t\t\t\tnewSessionId: newId\n\t\t\t};\n\t\t}\n\t}\n\textractPriorCompression(messages) {\n\t\tconst systemMsg = messages.find((m) => m.role === \"system\");\n\t\tif (!systemMsg) return void 0;\n\t\tconst content = extractTextContent(systemMsg.content);\n\t\tconst idx = content.indexOf(\"[此对话延续自\");\n\t\tif (idx === -1) return void 0;\n\t\treturn content.slice(idx);\n\t}\n\tasync createContinuation(sessionId, userMsg, allMessages, systemPrompt) {\n\t\ttry {\n\t\t\tconst parentSession = await this.storage.getSession(sessionId);\n\t\t\tif (!parentSession) return null;\n\t\t\tconst rawContent = buildSummaryContent(allMessages, systemPrompt);\n\t\t\tlet compression = \"\";\n\t\t\tconst priorCompression = this.extractPriorCompression(allMessages);\n\t\t\ttry {\n\t\t\t\tlet prompt = `The following is a conversation history that needs compression due to context length. Extract the **key information needed to continue the current task**, output in Chinese using the format below:\n\n## 目标\n- Core task the user wants to accomplish (1 sentence)\n\n## 进度\n- 已完成: <completed items>\n- 进行中: <in progress>\n- 阻塞: <blocked items, omit if none>\n\n## 关键决策\n- <key technical decisions, tool choices, approaches taken>\n\n## 用户偏好与约束\n- <user habits, preferences, explicit constraints>\n\n## 关键上下文\n- <file paths, key parameters, environment info>\n\n## 下一步\n- <next steps, ordered by priority>\n\nConversation:\n${rawContent}`;\n\t\t\t\tif (priorCompression) prompt += `\\n\\nBelow is an existing compression summary. Update it by preserving ALL existing information and adding new developments:\\n${priorCompression}`;\n\t\t\t\tcompression = (await this.provider.chat({\n\t\t\t\t\tmessages: [{\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: prompt\n\t\t\t\t\t}],\n\t\t\t\t\tmax_tokens: 2e3,\n\t\t\t\t\ttemperature: .3\n\t\t\t\t})).content || \"\";\n\t\t\t} catch {\n\t\t\t\tcompression = rawContent.slice(0, 2e3);\n\t\t\t}\n\t\t\tif (!compression) return null;\n\t\t\tconst newTitle = `[延续] ${parentSession.title}`;\n\t\t\tconst newSession = await this.storage.createSession(newTitle, parentSession.memory_snapshot, parentSession.workspace);\n\t\t\tawait this.storage.addMessage(newSession.id, {\n\t\t\t\tsession_id: newSession.id,\n\t\t\t\trole: \"system\",\n\t\t\t\tcontent: `[此对话延续自会话「${parentSession.title || sessionId}」,以下为上下文压缩]\\n\\n${compression}`\n\t\t\t});\n\t\t\tawait this.storage.addMessage(newSession.id, {\n\t\t\t\tsession_id: newSession.id,\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: userMsg.content\n\t\t\t});\n\t\t\tconst recentMessages = await this.storage.getMessagesSinceSeq(sessionId, userMsg.seq);\n\t\t\tfor (const msg of recentMessages) await this.storage.addMessage(newSession.id, {\n\t\t\t\tsession_id: newSession.id,\n\t\t\t\trole: msg.role,\n\t\t\t\tcontent: msg.content,\n\t\t\t\treasoning_content: msg.reasoning_content,\n\t\t\t\ttool_calls: msg.tool_calls,\n\t\t\t\ttool_call_id: msg.tool_call_id,\n\t\t\t\tname: msg.name,\n\t\t\t\tusage: msg.usage\n\t\t\t});\n\t\t\treturn newSession.id;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/agent/context-builder.js\nvar DEFAULT_CONTEXT_WINDOW$1 = 1048576;\nvar MEMORY_PATH = getDataPath(\"memory.md\");\nfunction readMemoryFile() {\n\ttry {\n\t\tif (existsSync(MEMORY_PATH)) return readFileSync(MEMORY_PATH, \"utf-8\").replace(/\\r/g, \"\").trim();\n\t} catch {}\n\treturn \"\";\n}\nfunction formatMemorySection(content) {\n\tif (!content) return \"\";\n\treturn `\\n\\n## 用户信息\\n\\n以下是关于你和用户的已知信息,请据此调整你的行为:\\n\\n${content}`;\n}\n/**\n* ContextBuilder — 上下文构建器\n*\n* 负责拼装发给 LLM 的 messages 数组:\n* 1. 系统提示词(用户自定义 + 环境信息 + memory 快照)\n* 2. 会话历史消息\n* 3. 当前用户输入\n*\n* 工具描述通过 API 的 tools 参数传递,不写入 system prompt 文本。\n* memory 在会话首次构建时从 memory.md 读取并存入 session.memory_snapshot,\n* 后续构建直接使用快照,保证 system 消息稳定。\n*/\nvar ContextBuilder = class {\n\tasync build(sessionId, userMessage, images, storage, contextWindow, systemPrompt) {\n\t\treturn {\n\t\t\tmessages: await this.buildMessages(sessionId, userMessage, images, storage, systemPrompt),\n\t\t\tcontextWindow: contextWindow || DEFAULT_CONTEXT_WINDOW$1\n\t\t};\n\t}\n\tasync resolveMemory(sessionId, storage) {\n\t\tconst session = await storage.getSession(sessionId);\n\t\tif (session?.memory_snapshot) return session.memory_snapshot;\n\t\tconst content = readMemoryFile();\n\t\tif (session) await storage.setMemorySnapshot(sessionId, content);\n\t\treturn content;\n\t}\n\tparseStoredContent(content) {\n\t\tif (content.startsWith(\"[\")) try {\n\t\t\treturn JSON.parse(content);\n\t\t} catch {}\n\t\treturn content;\n\t}\n\tbuildUserContent(text, images) {\n\t\tif (images.length === 0) return text;\n\t\treturn [{\n\t\t\ttype: \"text\",\n\t\t\ttext\n\t\t}, ...images];\n\t}\n\tasync buildMessages(sessionId, userMessage, images, storage, systemPrompt) {\n\t\tconst messages = [];\n\t\tlet systemContent = systemPrompt || DEFAULT_SYSTEM_PROMPT;\n\t\tsystemContent += SYSTEM_CONTEXT;\n\t\tconst memoryContent = await this.resolveMemory(sessionId, storage);\n\t\tsystemContent += formatMemorySection(memoryContent);\n\t\tconst history = await storage.getMessages(sessionId);\n\t\tfor (const msg of history) if (msg.role === \"system\") systemContent += \"\\n\\n\" + (typeof msg.content === \"string\" ? msg.content : \"\");\n\t\tmessages.push({\n\t\t\trole: \"system\",\n\t\t\tcontent: systemContent\n\t\t});\n\t\tfor (const msg of history) {\n\t\t\tif (msg.role === \"system\") continue;\n\t\t\tconst m = {\n\t\t\t\trole: msg.role,\n\t\t\t\tcontent: this.parseStoredContent(msg.content)\n\t\t\t};\n\t\t\tif (msg.tool_calls) m.tool_calls = msg.tool_calls;\n\t\t\tif (msg.tool_call_id) m.tool_call_id = msg.tool_call_id;\n\t\t\tif (msg.name) m.name = msg.name;\n\t\t\tmessages.push(m);\n\t\t}\n\t\tmessages.push({\n\t\t\trole: \"user\",\n\t\t\tcontent: this.buildUserContent(userMessage, images)\n\t\t});\n\t\treturn messages;\n\t}\n};\n//#endregion\n//#region ../core/dist/agent/summarizer.js\nfunction parseStoredContent(content) {\n\tif (content.startsWith(\"[\")) try {\n\t\treturn JSON.parse(content);\n\t} catch {}\n\treturn content;\n}\nvar _registry = new ToolRegistry();\nfor (const t of CORE_TOOLS) {\n\tif (t.name === \"edit\" || t.name === \"read_memory\") continue;\n\t_registry.register(t);\n}\nvar _toolContext = new ToolContext(process.cwd());\nvar _toolDefs = _registry.getDefinitions();\nfunction buildSystemMessage() {\n\tlet content = readConfig().systemPrompt || DEFAULT_SYSTEM_PROMPT;\n\tcontent += SYSTEM_CONTEXT;\n\treturn {\n\t\trole: \"system\",\n\t\tcontent\n\t};\n}\nvar MAX_TOOL_ITERATIONS = 10;\nasync function completeWithToolLoop(provider, messages, maxTokens, temperature) {\n\tconst tools = _toolDefs;\n\tfor (let i = 0; i < MAX_TOOL_ITERATIONS; i++) {\n\t\tconst response = await provider.chat({\n\t\t\tmessages,\n\t\t\ttools: tools.length > 0 ? tools : void 0,\n\t\t\tmax_tokens: maxTokens,\n\t\t\ttemperature\n\t\t});\n\t\tif (!response.tool_calls || response.tool_calls.length === 0) return {\n\t\t\tcontent: response.content || \"\",\n\t\t\tusage: response.usage\n\t\t};\n\t\tmessages.push({\n\t\t\trole: \"assistant\",\n\t\t\tcontent: response.content || \"\",\n\t\t\ttool_calls: response.tool_calls\n\t\t});\n\t\tfor (const tc of response.tool_calls) {\n\t\t\tlet args = {};\n\t\t\ttry {\n\t\t\t\targs = JSON.parse(tc.function.arguments);\n\t\t\t} catch {}\n\t\t\ttry {\n\t\t\t\tconst result = await _registry.execute(tc.function.name, args, _toolContext);\n\t\t\t\tmessages.push({\n\t\t\t\t\trole: \"tool\",\n\t\t\t\t\tcontent: result.output || result.error || \"\",\n\t\t\t\t\ttool_call_id: tc.id,\n\t\t\t\t\tname: tc.function.name\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof PendingConfirmation) messages.push({\n\t\t\t\t\trole: \"tool\",\n\t\t\t\t\tcontent: `后台任务无法执行需确认的操作: ${error.reason}`,\n\t\t\t\t\ttool_call_id: tc.id,\n\t\t\t\t\tname: error.toolName\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst errMsg = error.message;\n\t\t\t\t\tmessages.push({\n\t\t\t\t\t\trole: \"tool\",\n\t\t\t\t\t\tcontent: `工具执行异常: ${errMsg}`,\n\t\t\t\t\t\ttool_call_id: tc.id,\n\t\t\t\t\t\tname: tc.function.name\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn { content: \"\" };\n}\nasync function generateSummary(provider, storage, sessionId, existingSummary) {\n\tconst records = await storage.getMessages(sessionId);\n\tif (records.length === 0) return \"\";\n\tconst messages = [buildSystemMessage()];\n\tfor (const r of records) {\n\t\tif (r.role === \"system\") continue;\n\t\tconst m = {\n\t\t\trole: r.role,\n\t\t\tcontent: parseStoredContent(r.content)\n\t\t};\n\t\tif (r.tool_calls) m.tool_calls = r.tool_calls;\n\t\tif (r.tool_call_id) m.tool_call_id = r.tool_call_id;\n\t\tif (r.name) m.name = r.name;\n\t\tmessages.push(m);\n\t}\n\tlet userInstruction = `Please summarize the conversation above. Output in Chinese using the structured format below:\n\n## 目标\n- The user's current main goal\n\n## 进度\n- 已完成: <completed items>\n- 进行中: <in progress>\n- 阻塞: <blocked items, omit if none>\n\n## 关键决策\n- <key decisions or choices made>\n\n## 用户偏好\n- <user habits, preferences, constraints>\n\n## 情感上下文\n- <user mood, attitude, and other context helpful for continuing the conversation>`;\n\tif (existingSummary) userInstruction += `\\n\\nBelow is the existing summary. Update it by preserving all existing information and appending new developments:\\n${existingSummary}`;\n\tmessages.push({\n\t\trole: \"user\",\n\t\tcontent: userInstruction\n\t});\n\tconst { content, usage } = await completeWithToolLoop(provider, messages, 2e3, .3);\n\tif (usage) {\n\t\tconst hit = usage.prompt_cache_hit_tokens ?? 0;\n\t\tconst miss = usage.prompt_cache_miss_tokens ?? 0;\n\t\tconsole.log(`[summarize] session=${sessionId} messages=${records.length} hit=${hit} miss=${miss} total_tokens=${usage.total_tokens}`);\n\t}\n\treturn content || \"\";\n}\n//#endregion\n//#region ../core/dist/agent/diary.js\nvar DIARY_DIR = join(getDataPath(\"diary\"));\nvar MAX_RECENT_DAYS = 7;\nfunction getTodayDate() {\n\tconst now = /* @__PURE__ */ new Date();\n\tlet date = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\tif (now.getHours() < 8) date = /* @__PURE__ */ new Date(date.getTime() - 864e5);\n\tconst y = date.getFullYear();\n\tconst m = String(date.getMonth() + 1).padStart(2, \"0\");\n\tconst d = String(date.getDate()).padStart(2, \"0\");\n\treturn {\n\t\tdate,\n\t\ty,\n\t\tm,\n\t\td\n\t};\n}\nfunction formatDatePath(y, m, d) {\n\treturn `data/diary/${y}-${m}-${d}.md`;\n}\nfunction getTodayFile() {\n\tconst { y, m, d } = getTodayDate();\n\treturn formatDatePath(y, m, d);\n}\nfunction readRecentDiaries(targetDate) {\n\tconst parts = [];\n\tconst cursor = new Date(targetDate);\n\tfor (let i = 1; i <= MAX_RECENT_DAYS; i++) {\n\t\tcursor.setDate(cursor.getDate() - 1);\n\t\tconst y = cursor.getFullYear();\n\t\tconst m = String(cursor.getMonth() + 1).padStart(2, \"0\");\n\t\tconst d = String(cursor.getDate()).padStart(2, \"0\");\n\t\tconst filePath = join(DIARY_DIR, `${y}-${m}-${d}.md`);\n\t\tif (existsSync(filePath)) {\n\t\t\tconst content = readFileSync(filePath, \"utf-8\").trim();\n\t\t\tparts.push(`### ${y}-${m}-${d}\\n${content.slice(0, 2e3)}`);\n\t\t}\n\t}\n\treturn parts.join(\"\\n\\n\");\n}\nasync function generateDiary(provider, storage) {\n\tconst sessions = await storage.getTodayUpdatedSessions();\n\tif (sessions.length === 0) return;\n\tconst summaries = [];\n\tfor (const s of sessions) if (s.summary) summaries.push(`### ${s.title}\\n${s.summary}`);\n\tif (summaries.length === 0) return;\n\tconst { date } = getTodayDate();\n\tconst filePath = getTodayFile();\n\tconst recentDiaries = readRecentDiaries(date);\n\tlet userContent = `以下是今天各会话的摘要,请据此撰写一篇日记,记录当天和我一起完成了什么、有哪些重要交流。\\n\\n${summaries.join(\"\\n\\n\")}`;\n\tif (recentDiaries) userContent += `\\n\\n以下是前几天的日记内容,请参考以保持日记的连贯性和叙事感:\\n\\n${recentDiaries}`;\n\tuserContent += `\\n\\n请使用 write_file 工具将日记写入以下文件:${filePath}`;\n\tawait completeWithToolLoop(provider, [buildSystemMessage(), {\n\t\trole: \"user\",\n\t\tcontent: userContent\n\t}], 2e3, .5);\n}\n//#endregion\n//#region ../core/dist/agent/background.js\nasync function runSummarizeJob(force, idleMs) {\n\tconst config = readConfig();\n\tif (!config.storageEnabled) throw new Error(\"对话存储未开启\");\n\tconst providerConfig = getFirstProvider();\n\tif (!providerConfig?.apiKey) throw new Error(\"未配置 AI 供应商\");\n\tconst model = getActiveModel() || getDefaultModels(providerConfig.type)[0];\n\tif (!model) throw new Error(\"未选择模型\");\n\tconst provider = createProvider({\n\t\t...providerConfig,\n\t\tactiveModel: model.id,\n\t\tcontextWindow: model.contextWindow\n\t});\n\tconst storage = createStorage({ enabled: true });\n\tlet effectiveIdleMs;\n\tif (force) effectiveIdleMs = -1;\n\telse if (idleMs !== void 0) effectiveIdleMs = idleMs;\n\telse effectiveIdleMs = (config.summaryIdleHours || 8) * 60 * 60 * 1e3;\n\tconst staleSessions = await storage.getStaleSessions(effectiveIdleMs);\n\tlet summarized = 0;\n\tfor (const session of staleSessions) try {\n\t\tconst summary = await generateSummary(provider, storage, session.id, session.summary || void 0);\n\t\tif (summary) {\n\t\t\tawait storage.updateSummary(session.id, summary);\n\t\t\tsummarized++;\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(`[summarize] session=${session.id} failed:`, e.message);\n\t}\n\tlet diary = false;\n\tif (summarized > 0) try {\n\t\tawait generateDiary(provider, storage);\n\t\tdiary = true;\n\t} catch (e) {\n\t\tconsole.error(\"[diary] failed:\", e.message);\n\t}\n\treturn {\n\t\tsummarized,\n\t\tdiary\n\t};\n}\n//#endregion\n//#region ../core/dist/agent/logger.js\nvar AgentLogger = class {\n\tsessionId;\n\tturn = 0;\n\tllmStart = 0;\n\tturnLog = null;\n\tconstructor(sessionId) {\n\t\tthis.sessionId = sessionId;\n\t}\n\tasync beforeLlmCall(messages) {\n\t\tthis.llmStart = Date.now();\n\t\tthis.turn++;\n\t\tthis.turnLog = {\n\t\t\tturn: this.turn,\n\t\t\ttoolCalls: 0,\n\t\t\tinputTokens: 0,\n\t\t\toutputTokens: 0,\n\t\t\terrors: 0\n\t\t};\n\t\tconst msgCount = messages.length;\n\t\tconst lastRole = messages.length > 0 ? messages[messages.length - 1].role : \"none\";\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} LLM call (${msgCount} msgs, last=${lastRole})`);\n\t\treturn messages;\n\t}\n\tasync afterLlmCall(usage) {\n\t\tconst latency = Date.now() - this.llmStart;\n\t\tif (this.turnLog) this.turnLog.llmLatencyMs = latency;\n\t\tif (usage) {\n\t\t\tif (this.turnLog) {\n\t\t\t\tthis.turnLog.inputTokens = usage.prompt_tokens;\n\t\t\t\tthis.turnLog.outputTokens = usage.completion_tokens;\n\t\t\t}\n\t\t\tconst cache = usage.prompt_cache_hit_tokens != null ? ` cache=${usage.prompt_cache_hit_tokens}+${usage.prompt_cache_miss_tokens}` : \"\";\n\t\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} done — latency=${latency}ms tokens=${usage.total_tokens} (${usage.prompt_tokens}+${usage.completion_tokens})${cache}`);\n\t\t} else console.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} done — latency=${latency}ms`);\n\t}\n\tasync onLlmRetry(attempt, maxRetries, error) {\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} retry ${attempt}/${maxRetries}: ${error.message}`);\n\t\tif (this.turnLog) this.turnLog.errors++;\n\t}\n\tasync beforeToolExecution(name, args) {\n\t\tconst preview = JSON.stringify(args).slice(0, 120);\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} tool: ${name}(${preview}${JSON.stringify(args).length > 120 ? \"...\" : \"\"})`);\n\t\treturn args;\n\t}\n\tasync afterToolExecution(name, result) {\n\t\tconst outLen = result.output.length;\n\t\tif (this.turnLog) this.turnLog.toolCalls++;\n\t\tconst status = result.success ? \"OK\" : \"FAIL\";\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} tool ${name} → ${status} (${outLen} chars)`);\n\t}\n\tasync onConfirmRequired(confirmation, confirmId) {\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} confirm: ${confirmation.toolName} — ${confirmation.reason.slice(0, 80)}`);\n\t}\n\tasync afterTurn(_iteration) {\n\t\tif (this.turnLog) {\n\t\t\tconst t = this.turnLog;\n\t\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} summary — tools=${t.toolCalls} tokens=${t.inputTokens}+${t.outputTokens} latency=${t.llmLatencyMs}ms errors=${t.errors}`);\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/agent/summarize-worker.js\nfunction getToday() {\n\tconst d = /* @__PURE__ */ new Date();\n\treturn `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;\n}\nfunction createSummarizeWorker(notify) {\n\tlet worker = null;\n\tlet lastScheduledDate = \"\";\n\tasync function tick() {\n\t\tconst config = readConfig();\n\t\tif (!config.autoSummarize || !config.storageEnabled) return;\n\t\tlet result;\n\t\tif (config.summaryMode === \"scheduled\") {\n\t\t\tconst now = /* @__PURE__ */ new Date();\n\t\t\tconst today = getToday();\n\t\t\tif (now.getHours() >= (config.summaryScheduleHour || 2) && today !== lastScheduledDate) {\n\t\t\t\tlastScheduledDate = today;\n\t\t\t\tresult = await runSummarizeJob(false, null);\n\t\t\t}\n\t\t} else result = await runSummarizeJob();\n\t\tif (result) {\n\t\t\tconst { summarized, diary } = result;\n\t\t\tif (summarized > 0 || diary) {\n\t\t\t\tconst parts = [];\n\t\t\t\tif (summarized > 0) parts.push(`已为 ${summarized} 个对话生成摘要`);\n\t\t\t\tif (diary) parts.push(\"已生成日记条目\");\n\t\t\t\tawait notify({\n\t\t\t\t\ttitle: \"Qualia 任务完成\",\n\t\t\t\t\tbody: parts.join(\"\\n\"),\n\t\t\t\t\ttype: \"task_complete\"\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tstart() {\n\t\t\tconst config = readConfig();\n\t\t\tif (!config.autoSummarize || !config.storageEnabled) return;\n\t\t\tconst intervalMin = config.summaryIntervalMin || 30;\n\t\t\tworker = new BackgroundWorker();\n\t\t\tworker.schedule(\"summarize\", intervalMin * 60 * 1e3, tick);\n\t\t\tworker.start();\n\t\t\ttick();\n\t\t},\n\t\tstop() {\n\t\t\tif (worker) {\n\t\t\t\tworker.stop();\n\t\t\t\tworker = null;\n\t\t\t}\n\t\t}\n\t};\n}\n//#endregion\n//#region ../core/dist/config/store.js\nvar DEFAULT_CONTEXT_WINDOW = 1048576;\nfunction ensureDataDir() {\n\tconst dir = getDataDir();\n\tif (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n}\nvar defaultConfig = {\n\tproviders: [],\n\tactiveModel: \"\",\n\tstorageEnabled: false,\n\tsystemPrompt: DEFAULT_SYSTEM_PROMPT,\n\tcustomBrandIcon: false,\n\tautoSummarize: true,\n\tsummaryMode: \"idle\",\n\tsummaryIdleHours: 8,\n\tsummaryScheduleHour: 2,\n\tsummaryIntervalMin: 30,\n\tcompressionMode: \"auto\",\n\tcompressionThreshold: 256e3,\n\tsearchEnabled: false,\n\tsearchProvider: \"searxng\",\n\tsearxngURL: \"http://localhost:8080\",\n\ttavilyApiKey: \"\",\n\temailNotifications: false,\n\temailSmtpHost: \"\",\n\temailSmtpPort: 465,\n\temailSmtpSecure: true,\n\temailSmtpUser: \"\",\n\temailSmtpPass: \"\",\n\temailFrom: \"\",\n\temailTo: \"\",\n\ttelegramEnabled: false,\n\ttelegramBotToken: \"\",\n\ttelegramAllowedUsers: \"\"\n};\nfunction normalizeProvider(p) {\n\treturn {\n\t\ttype: p.type || \"openai\",\n\t\tname: p.name || \"\",\n\t\tapiKey: p.apiKey || \"\",\n\t\tbaseURL: p.baseURL || \"\",\n\t\treasoningEffort: p.reasoningEffort,\n\t\ttimeout: p.timeout,\n\t\tmaxRetries: p.maxRetries,\n\t\tollamaURL: p.ollamaURL || \"http://localhost:11434\"\n\t};\n}\nfunction readConfig() {\n\tconst path = getConfigPath();\n\tif (!existsSync(path)) return structuredClone(defaultConfig);\n\ttry {\n\t\tconst raw = readFileSync(path, \"utf-8\");\n\t\tconst parsed = JSON.parse(raw);\n\t\treturn {\n\t\t\tproviders: Array.isArray(parsed.providers) ? parsed.providers.map((p) => normalizeProvider(p)) : [],\n\t\t\tactiveModel: parsed.activeModel || \"\",\n\t\t\tstorageEnabled: parsed.storageEnabled === true,\n\t\t\tsystemPrompt: parsed.systemPrompt || DEFAULT_SYSTEM_PROMPT,\n\t\t\tcustomBrandIcon: parsed.customBrandIcon === true,\n\t\t\tautoSummarize: parsed.autoSummarize !== false,\n\t\t\tsummaryMode: parsed.summaryMode === \"scheduled\" ? \"scheduled\" : \"idle\",\n\t\t\tsummaryIdleHours: typeof parsed.summaryIdleHours === \"number\" ? parsed.summaryIdleHours : 8,\n\t\t\tsummaryScheduleHour: typeof parsed.summaryScheduleHour === \"number\" ? parsed.summaryScheduleHour : 2,\n\t\t\tsummaryIntervalMin: typeof parsed.summaryIntervalMin === \"number\" ? parsed.summaryIntervalMin : 30,\n\t\t\tcompressionMode: parsed.compressionMode === \"custom\" ? \"custom\" : \"auto\",\n\t\t\tcompressionThreshold: typeof parsed.compressionThreshold === \"number\" ? parsed.compressionThreshold : 256e3,\n\t\t\tsearchEnabled: parsed.searchEnabled === true,\n\t\t\tsearchProvider: parsed.searchProvider === \"searxng\" || parsed.searchProvider === \"tavily\" ? parsed.searchProvider : \"searxng\",\n\t\t\tsearxngURL: typeof parsed.searxngURL === \"string\" ? parsed.searxngURL : \"http://localhost:8080\",\n\t\t\ttavilyApiKey: typeof parsed.tavilyApiKey === \"string\" ? parsed.tavilyApiKey : \"\",\n\t\t\temailNotifications: parsed.emailNotifications === true,\n\t\t\temailSmtpHost: typeof parsed.emailSmtpHost === \"string\" ? parsed.emailSmtpHost : \"\",\n\t\t\temailSmtpPort: typeof parsed.emailSmtpPort === \"number\" ? parsed.emailSmtpPort : 465,\n\t\t\temailSmtpSecure: parsed.emailSmtpSecure !== false,\n\t\t\temailSmtpUser: typeof parsed.emailSmtpUser === \"string\" ? parsed.emailSmtpUser : \"\",\n\t\t\temailSmtpPass: typeof parsed.emailSmtpPass === \"string\" ? parsed.emailSmtpPass : \"\",\n\t\t\temailFrom: typeof parsed.emailFrom === \"string\" ? parsed.emailFrom : \"\",\n\t\t\temailTo: typeof parsed.emailTo === \"string\" ? parsed.emailTo : \"\",\n\t\t\ttelegramEnabled: parsed.telegramEnabled === true,\n\t\t\ttelegramBotToken: typeof parsed.telegramBotToken === \"string\" ? parsed.telegramBotToken : \"\",\n\t\t\ttelegramAllowedUsers: typeof parsed.telegramAllowedUsers === \"string\" ? parsed.telegramAllowedUsers : \"\"\n\t\t};\n\t} catch {\n\t\treturn structuredClone(defaultConfig);\n\t}\n}\nfunction writeConfig(config) {\n\tconst path = getConfigPath();\n\tensureDataDir();\n\tconst tmpPath = path + \".tmp\";\n\twriteFileSync(tmpPath, JSON.stringify(config, null, \"\t\"), \"utf-8\");\n\trenameSync(tmpPath, path);\n}\nfunction addProvider(provider) {\n\tconst config = readConfig();\n\tconst existing = config.providers.findIndex((p) => p.name === provider.name);\n\tif (existing !== -1) config.providers[existing] = provider;\n\telse config.providers.push(provider);\n\tif (!config.activeModel) config.activeModel = getDefaultModels(provider.type)[0]?.id || \"\";\n\twriteConfig(config);\n\treturn config;\n}\nfunction removeProvider(name) {\n\tconst config = readConfig();\n\tconfig.providers = config.providers.filter((p) => p.name !== name);\n\tif (!getProviderForModel(config.activeModel)) {\n\t\tconst first = config.providers[0];\n\t\tconfig.activeModel = first ? getDefaultModels(first.type)[0]?.id || \"\" : \"\";\n\t}\n\twriteConfig(config);\n\treturn config;\n}\nfunction setActiveModel(modelId) {\n\tconst config = readConfig();\n\tconfig.activeModel = modelId;\n\tfor (const provider of config.providers) {\n\t\tconst models = getDefaultModels(provider.type);\n\t\tif (models.length > 0) {\n\t\t\tconst model = models.find((m) => m.id === modelId);\n\t\t\tif (model && !model.supportsReasoning) provider.reasoningEffort = void 0;\n\t\t} else if (provider.type === \"ollama\") provider.reasoningEffort = void 0;\n\t}\n\twriteConfig(config);\n\treturn config;\n}\nfunction setReasoningEffort(value) {\n\tconst config = readConfig();\n\tconst provider = config.providers.find((p) => {\n\t\tconst models = getDefaultModels(p.type);\n\t\tif (models.length > 0) return models.some((m) => m.id === config.activeModel);\n\t\treturn p.type === \"ollama\" && !!config.activeModel;\n\t});\n\tif (provider) {\n\t\tprovider.reasoningEffort = value || void 0;\n\t\twriteConfig(config);\n\t}\n\treturn config;\n}\nfunction getProviderForModel(modelId) {\n\tconst config = readConfig();\n\tfor (const provider of config.providers) if (getDefaultModels(provider.type).some((m) => m.id === modelId)) return provider;\n\tconst ollama = config.providers.find((p) => p.type === \"ollama\");\n\tif (ollama) return ollama;\n}\nfunction getAllAvailableModels() {\n\tconst config = readConfig();\n\tconst result = [];\n\tfor (const provider of config.providers) for (const model of getDefaultModels(provider.type)) result.push({\n\t\tmodel,\n\t\tproviderName: provider.name\n\t});\n\treturn result;\n}\nfunction getFirstProvider() {\n\treturn readConfig().providers.find((p) => p.apiKey);\n}\nfunction getActiveModel() {\n\tconst config = readConfig();\n\tif (!config.activeModel) return void 0;\n\tfor (const provider of config.providers) {\n\t\tconst model = getDefaultModels(provider.type).find((m) => m.id === config.activeModel);\n\t\tif (model) return model;\n\t}\n\tif (config.providers.some((p) => p.type === \"ollama\")) return {\n\t\tid: config.activeModel,\n\t\tname: config.activeModel,\n\t\tcontextWindow: 128e3,\n\t\tsupportsReasoning: false,\n\t\treasoningEffortValues: [],\n\t\tsupportsVision: false\n\t};\n}\nfunction getContextWindow() {\n\treturn getActiveModel()?.contextWindow || DEFAULT_CONTEXT_WINDOW;\n}\n//#endregion\nexport { createProvider as A, getAllTasks as C, getDataDir as D, sessionLock as E, getDataPath as O, deleteTask as S, resumeTask as T, SCHEDULING_TOOLS as _, getProviderForModel as a, startScheduler as b, setActiveModel as c, createSummarizeWorker as d, AgentLogger as f, CORE_TOOLS as g, AgentLoop as h, getContextWindow as i, ToolRegistry as k, setReasoningEffort as l, ContextBuilder as m, getActiveModel as n, readConfig as o, runSummarizeJob as p, getAllAvailableModels as r, removeProvider as s, addProvider as t, writeConfig as u, createSearchHistoryTool as v, pauseTask as w, createStorage as x, setTaskNotificationHandler as y };\n"],"names":["require$$0","require$$2","require","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","libModule","require$$1"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]}
|
|
1
|
+
{"version":3,"file":"config-DS5dPt9_.js","sources":["../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../node_modules/file-uri-to-path/index.js","../../../../../node_modules/bindings/bindings.js","../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../node_modules/better-sqlite3/lib/index.js","../../../.svelte-kit/output/server/chunks/config.js"],"sourcesContent":["'use strict';\n\nexports.getBooleanOption = (options, key) => {\n\tlet value = false;\n\tif (key in options && typeof (value = options[key]) !== 'boolean') {\n\t\tthrow new TypeError(`Expected the \"${key}\" option to be a boolean`);\n\t}\n\treturn value;\n};\n\nexports.cppdb = Symbol();\nexports.inspect = Symbol.for('nodejs.util.inspect.custom');\n","'use strict';\nconst descriptor = { value: 'SqliteError', writable: true, enumerable: false, configurable: true };\n\nfunction SqliteError(message, code) {\n\tif (new.target !== SqliteError) {\n\t\treturn new SqliteError(message, code);\n\t}\n\tif (typeof code !== 'string') {\n\t\tthrow new TypeError('Expected second argument to be a string');\n\t}\n\tError.call(this, message);\n\tdescriptor.value = '' + message;\n\tObject.defineProperty(this, 'message', descriptor);\n\tError.captureStackTrace(this, SqliteError);\n\tthis.code = code;\n}\nObject.setPrototypeOf(SqliteError, Error);\nObject.setPrototypeOf(SqliteError.prototype, Error.prototype);\nObject.defineProperty(SqliteError.prototype, 'name', descriptor);\nmodule.exports = SqliteError;\n","\n/**\n * Module dependencies.\n */\n\nvar sep = require('path').sep || '/';\n\n/**\n * Module exports.\n */\n\nmodule.exports = fileUriToPath;\n\n/**\n * File URI to Path function.\n *\n * @param {String} uri\n * @return {String} path\n * @api public\n */\n\nfunction fileUriToPath (uri) {\n if ('string' != typeof uri ||\n uri.length <= 7 ||\n 'file://' != uri.substring(0, 7)) {\n throw new TypeError('must pass in a file:// URI to convert to a file path');\n }\n\n var rest = decodeURI(uri.substring(7));\n var firstSlash = rest.indexOf('/');\n var host = rest.substring(0, firstSlash);\n var path = rest.substring(firstSlash + 1);\n\n // 2. Scheme Definition\n // As a special case, <host> can be the string \"localhost\" or the empty\n // string; this is interpreted as \"the machine from which the URL is\n // being interpreted\".\n if ('localhost' == host) host = '';\n\n if (host) {\n host = sep + sep + host;\n }\n\n // 3.2 Drives, drive letters, mount points, file system root\n // Drive letters are mapped into the top of a file URI in various ways,\n // depending on the implementation; some applications substitute\n // vertical bar (\"|\") for the colon after the drive letter, yielding\n // \"file:///c|/tmp/test.txt\". In some cases, the colon is left\n // unchanged, as in \"file:///c:/tmp/test.txt\". In other cases, the\n // colon is simply omitted, as in \"file:///c/tmp/test.txt\".\n path = path.replace(/^(.+)\\|/, '$1:');\n\n // for Windows, we need to invert the path separators from what a URI uses\n if (sep == '\\\\') {\n path = path.replace(/\\//g, '\\\\');\n }\n\n if (/^.+\\:/.test(path)) {\n // has Windows drive at beginning of path\n } else {\n // unix path…\n path = sep + path;\n }\n\n return host + path;\n}\n","/**\n * Module dependencies.\n */\n\nvar fs = require('fs'),\n path = require('path'),\n fileURLToPath = require('file-uri-to-path'),\n join = path.join,\n dirname = path.dirname,\n exists =\n (fs.accessSync &&\n function(path) {\n try {\n fs.accessSync(path);\n } catch (e) {\n return false;\n }\n return true;\n }) ||\n fs.existsSync ||\n path.existsSync,\n defaults = {\n arrow: process.env.NODE_BINDINGS_ARROW || ' → ',\n compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled',\n platform: process.platform,\n arch: process.arch,\n nodePreGyp:\n 'node-v' +\n process.versions.modules +\n '-' +\n process.platform +\n '-' +\n process.arch,\n version: process.versions.node,\n bindings: 'bindings.node',\n try: [\n // node-gyp's linked version in the \"build\" dir\n ['module_root', 'build', 'bindings'],\n // node-waf and gyp_addon (a.k.a node-gyp)\n ['module_root', 'build', 'Debug', 'bindings'],\n ['module_root', 'build', 'Release', 'bindings'],\n // Debug files, for development (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Debug', 'bindings'],\n ['module_root', 'Debug', 'bindings'],\n // Release files, but manually compiled (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Release', 'bindings'],\n ['module_root', 'Release', 'bindings'],\n // Legacy from node-waf, node <= 0.4.x\n ['module_root', 'build', 'default', 'bindings'],\n // Production \"Release\" buildtype binary (meh...)\n ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],\n // node-qbs builds\n ['module_root', 'addon-build', 'release', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'default', 'install-root', 'bindings'],\n // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}\n ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']\n ]\n };\n\n/**\n * The main `bindings()` function loads the compiled bindings for a given module.\n * It uses V8's Error API to determine the parent filename that this function is\n * being invoked from, which is then used to find the root directory.\n */\n\nfunction bindings(opts) {\n // Argument surgery\n if (typeof opts == 'string') {\n opts = { bindings: opts };\n } else if (!opts) {\n opts = {};\n }\n\n // maps `defaults` onto `opts` object\n Object.keys(defaults).map(function(i) {\n if (!(i in opts)) opts[i] = defaults[i];\n });\n\n // Get the module root\n if (!opts.module_root) {\n opts.module_root = exports.getRoot(exports.getFileName());\n }\n\n // Ensure the given bindings name ends with .node\n if (path.extname(opts.bindings) != '.node') {\n opts.bindings += '.node';\n }\n\n // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035\n var requireFunc =\n typeof __webpack_require__ === 'function'\n ? __non_webpack_require__\n : require;\n\n var tries = [],\n i = 0,\n l = opts.try.length,\n n,\n b,\n err;\n\n for (; i < l; i++) {\n n = join.apply(\n null,\n opts.try[i].map(function(p) {\n return opts[p] || p;\n })\n );\n tries.push(n);\n try {\n b = opts.path ? requireFunc.resolve(n) : requireFunc(n);\n if (!opts.path) {\n b.path = n;\n }\n return b;\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND' &&\n e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&\n !/not find/i.test(e.message)) {\n throw e;\n }\n }\n }\n\n err = new Error(\n 'Could not locate the bindings file. Tried:\\n' +\n tries\n .map(function(a) {\n return opts.arrow + a;\n })\n .join('\\n')\n );\n err.tries = tries;\n throw err;\n}\nmodule.exports = exports = bindings;\n\n/**\n * Gets the filename of the JavaScript file that invokes this function.\n * Used to help find the root directory of a module.\n * Optionally accepts an filename argument to skip when searching for the invoking filename\n */\n\nexports.getFileName = function getFileName(calling_file) {\n var origPST = Error.prepareStackTrace,\n origSTL = Error.stackTraceLimit,\n dummy = {},\n fileName;\n\n Error.stackTraceLimit = 10;\n\n Error.prepareStackTrace = function(e, st) {\n for (var i = 0, l = st.length; i < l; i++) {\n fileName = st[i].getFileName();\n if (fileName !== __filename) {\n if (calling_file) {\n if (fileName !== calling_file) {\n return;\n }\n } else {\n return;\n }\n }\n }\n };\n\n // run the 'prepareStackTrace' function above\n Error.captureStackTrace(dummy);\n dummy.stack;\n\n // cleanup\n Error.prepareStackTrace = origPST;\n Error.stackTraceLimit = origSTL;\n\n // handle filename that starts with \"file://\"\n var fileSchema = 'file://';\n if (fileName.indexOf(fileSchema) === 0) {\n fileName = fileURLToPath(fileName);\n }\n\n return fileName;\n};\n\n/**\n * Gets the root directory of a module, given an arbitrary filename\n * somewhere in the module tree. The \"root directory\" is the directory\n * containing the `package.json` file.\n *\n * In: /home/nate/node-native-module/lib/index.js\n * Out: /home/nate/node-native-module\n */\n\nexports.getRoot = function getRoot(file) {\n var dir = dirname(file),\n prev;\n while (true) {\n if (dir === '.') {\n // Avoids an infinite loop in rare cases, like the REPL\n dir = process.cwd();\n }\n if (\n exists(join(dir, 'package.json')) ||\n exists(join(dir, 'node_modules'))\n ) {\n // Found the 'package.json' file or 'node_modules' dir; we're done\n return dir;\n }\n if (prev === dir) {\n // Got to the top\n throw new Error(\n 'Could not find module root given file: \"' +\n file +\n '\". Do you have a `package.json` file? '\n );\n }\n // Try the parent dir next\n prev = dir;\n dir = join(dir, '..');\n }\n};\n","'use strict';\nconst { cppdb } = require('../util');\n\nexports.prepare = function prepare(sql) {\n\treturn this[cppdb].prepare(sql, this, false);\n};\n\nexports.exec = function exec(sql) {\n\tthis[cppdb].exec(sql);\n\treturn this;\n};\n\nexports.close = function close() {\n\tthis[cppdb].close();\n\treturn this;\n};\n\nexports.loadExtension = function loadExtension(...args) {\n\tthis[cppdb].loadExtension(...args);\n\treturn this;\n};\n\nexports.defaultSafeIntegers = function defaultSafeIntegers(...args) {\n\tthis[cppdb].defaultSafeIntegers(...args);\n\treturn this;\n};\n\nexports.unsafeMode = function unsafeMode(...args) {\n\tthis[cppdb].unsafeMode(...args);\n\treturn this;\n};\n\nexports.getters = {\n\tname: {\n\t\tget: function name() { return this[cppdb].name; },\n\t\tenumerable: true,\n\t},\n\topen: {\n\t\tget: function open() { return this[cppdb].open; },\n\t\tenumerable: true,\n\t},\n\tinTransaction: {\n\t\tget: function inTransaction() { return this[cppdb].inTransaction; },\n\t\tenumerable: true,\n\t},\n\treadonly: {\n\t\tget: function readonly() { return this[cppdb].readonly; },\n\t\tenumerable: true,\n\t},\n\tmemory: {\n\t\tget: function memory() { return this[cppdb].memory; },\n\t\tenumerable: true,\n\t},\n};\n","'use strict';\nconst { cppdb } = require('../util');\nconst controllers = new WeakMap();\n\nmodule.exports = function transaction(fn) {\n\tif (typeof fn !== 'function') throw new TypeError('Expected first argument to be a function');\n\n\tconst db = this[cppdb];\n\tconst controller = getController(db, this);\n\tconst { apply } = Function.prototype;\n\n\t// Each version of the transaction function has these same properties\n\tconst properties = {\n\t\tdefault: { value: wrapTransaction(apply, fn, db, controller.default) },\n\t\tdeferred: { value: wrapTransaction(apply, fn, db, controller.deferred) },\n\t\timmediate: { value: wrapTransaction(apply, fn, db, controller.immediate) },\n\t\texclusive: { value: wrapTransaction(apply, fn, db, controller.exclusive) },\n\t\tdatabase: { value: this, enumerable: true },\n\t};\n\n\tObject.defineProperties(properties.default.value, properties);\n\tObject.defineProperties(properties.deferred.value, properties);\n\tObject.defineProperties(properties.immediate.value, properties);\n\tObject.defineProperties(properties.exclusive.value, properties);\n\n\t// Return the default version of the transaction function\n\treturn properties.default.value;\n};\n\n// Return the database's cached transaction controller, or create a new one\nconst getController = (db, self) => {\n\tlet controller = controllers.get(db);\n\tif (!controller) {\n\t\tconst shared = {\n\t\t\tcommit: db.prepare('COMMIT', self, false),\n\t\t\trollback: db.prepare('ROLLBACK', self, false),\n\t\t\tsavepoint: db.prepare('SAVEPOINT `\\t_bs3.\\t`', self, false),\n\t\t\trelease: db.prepare('RELEASE `\\t_bs3.\\t`', self, false),\n\t\t\trollbackTo: db.prepare('ROLLBACK TO `\\t_bs3.\\t`', self, false),\n\t\t};\n\t\tcontrollers.set(db, controller = {\n\t\t\tdefault: Object.assign({ begin: db.prepare('BEGIN', self, false) }, shared),\n\t\t\tdeferred: Object.assign({ begin: db.prepare('BEGIN DEFERRED', self, false) }, shared),\n\t\t\timmediate: Object.assign({ begin: db.prepare('BEGIN IMMEDIATE', self, false) }, shared),\n\t\t\texclusive: Object.assign({ begin: db.prepare('BEGIN EXCLUSIVE', self, false) }, shared),\n\t\t});\n\t}\n\treturn controller;\n};\n\n// Return a new transaction function by wrapping the given function\nconst wrapTransaction = (apply, fn, db, { begin, commit, rollback, savepoint, release, rollbackTo }) => function sqliteTransaction() {\n\tlet before, after, undo;\n\tif (db.inTransaction) {\n\t\tbefore = savepoint;\n\t\tafter = release;\n\t\tundo = rollbackTo;\n\t} else {\n\t\tbefore = begin;\n\t\tafter = commit;\n\t\tundo = rollback;\n\t}\n\tbefore.run();\n\ttry {\n\t\tconst result = apply.call(fn, this, arguments);\n\t\tif (result && typeof result.then === 'function') {\n\t\t\tthrow new TypeError('Transaction function cannot return a promise');\n\t\t}\n\t\tafter.run();\n\t\treturn result;\n\t} catch (ex) {\n\t\tif (db.inTransaction) {\n\t\t\tundo.run();\n\t\t\tif (undo !== rollback) after.run();\n\t\t}\n\t\tthrow ex;\n\t}\n};\n","'use strict';\nconst { getBooleanOption, cppdb } = require('../util');\n\nmodule.exports = function pragma(source, options) {\n\tif (options == null) options = {};\n\tif (typeof source !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\tconst simple = getBooleanOption(options, 'simple');\n\n\tconst stmt = this[cppdb].prepare(`PRAGMA ${source}`, this, true);\n\treturn simple ? stmt.pluck().get() : stmt.all();\n};\n","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst { promisify } = require('util');\nconst { cppdb } = require('../util');\nconst fsAccess = promisify(fs.access);\n\nmodule.exports = async function backup(filename, options) {\n\tif (options == null) options = {};\n\n\t// Validate arguments\n\tif (typeof filename !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\n\t// Interpret options\n\tfilename = filename.trim();\n\tconst attachedName = 'attached' in options ? options.attached : 'main';\n\tconst handler = 'progress' in options ? options.progress : null;\n\n\t// Validate interpreted options\n\tif (!filename) throw new TypeError('Backup filename cannot be an empty string');\n\tif (filename === ':memory:') throw new TypeError('Invalid backup filename \":memory:\"');\n\tif (typeof attachedName !== 'string') throw new TypeError('Expected the \"attached\" option to be a string');\n\tif (!attachedName) throw new TypeError('The \"attached\" option cannot be an empty string');\n\tif (handler != null && typeof handler !== 'function') throw new TypeError('Expected the \"progress\" option to be a function');\n\n\t// Make sure the specified directory exists\n\tawait fsAccess(path.dirname(filename)).catch(() => {\n\t\tthrow new TypeError('Cannot save backup because the directory does not exist');\n\t});\n\n\tconst isNewFile = await fsAccess(filename).then(() => false, () => true);\n\treturn runBackup(this[cppdb].backup(this, attachedName, filename, isNewFile), handler || null);\n};\n\nconst runBackup = (backup, handler) => {\n\tlet rate = 0;\n\tlet useDefault = true;\n\n\treturn new Promise((resolve, reject) => {\n\t\tsetImmediate(function step() {\n\t\t\ttry {\n\t\t\t\tconst progress = backup.transfer(rate);\n\t\t\t\tif (!progress.remainingPages) {\n\t\t\t\t\tbackup.close();\n\t\t\t\t\tresolve(progress);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (useDefault) {\n\t\t\t\t\tuseDefault = false;\n\t\t\t\t\trate = 100;\n\t\t\t\t}\n\t\t\t\tif (handler) {\n\t\t\t\t\tconst ret = handler(progress);\n\t\t\t\t\tif (ret !== undefined) {\n\t\t\t\t\t\tif (typeof ret === 'number' && ret === ret) rate = Math.max(0, Math.min(0x7fffffff, Math.round(ret)));\n\t\t\t\t\t\telse throw new TypeError('Expected progress callback to return a number or undefined');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetImmediate(step);\n\t\t\t} catch (err) {\n\t\t\t\tbackup.close();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t});\n\t});\n};\n","'use strict';\nconst { cppdb } = require('../util');\n\nmodule.exports = function serialize(options) {\n\tif (options == null) options = {};\n\n\t// Validate arguments\n\tif (typeof options !== 'object') throw new TypeError('Expected first argument to be an options object');\n\n\t// Interpret and validate options\n\tconst attachedName = 'attached' in options ? options.attached : 'main';\n\tif (typeof attachedName !== 'string') throw new TypeError('Expected the \"attached\" option to be a string');\n\tif (!attachedName) throw new TypeError('The \"attached\" option cannot be an empty string');\n\n\treturn this[cppdb].serialize(attachedName);\n};\n","'use strict';\nconst { getBooleanOption, cppdb } = require('../util');\n\nmodule.exports = function defineFunction(name, options, fn) {\n\t// Apply defaults\n\tif (options == null) options = {};\n\tif (typeof options === 'function') { fn = options; options = {}; }\n\n\t// Validate arguments\n\tif (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof fn !== 'function') throw new TypeError('Expected last argument to be a function');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\tif (!name) throw new TypeError('User-defined function name cannot be an empty string');\n\n\t// Interpret options\n\tconst safeIntegers = 'safeIntegers' in options ? +getBooleanOption(options, 'safeIntegers') : 2;\n\tconst deterministic = getBooleanOption(options, 'deterministic');\n\tconst directOnly = getBooleanOption(options, 'directOnly');\n\tconst varargs = getBooleanOption(options, 'varargs');\n\tlet argCount = -1;\n\n\t// Determine argument count\n\tif (!varargs) {\n\t\targCount = fn.length;\n\t\tif (!Number.isInteger(argCount) || argCount < 0) throw new TypeError('Expected function.length to be a positive integer');\n\t\tif (argCount > 100) throw new RangeError('User-defined functions cannot have more than 100 arguments');\n\t}\n\n\tthis[cppdb].function(fn, name, argCount, safeIntegers, deterministic, directOnly);\n\treturn this;\n};\n","'use strict';\nconst { getBooleanOption, cppdb } = require('../util');\n\nmodule.exports = function defineAggregate(name, options) {\n\t// Validate arguments\n\tif (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object' || options === null) throw new TypeError('Expected second argument to be an options object');\n\tif (!name) throw new TypeError('User-defined function name cannot be an empty string');\n\n\t// Interpret options\n\tconst start = 'start' in options ? options.start : null;\n\tconst step = getFunctionOption(options, 'step', true);\n\tconst inverse = getFunctionOption(options, 'inverse', false);\n\tconst result = getFunctionOption(options, 'result', false);\n\tconst safeIntegers = 'safeIntegers' in options ? +getBooleanOption(options, 'safeIntegers') : 2;\n\tconst deterministic = getBooleanOption(options, 'deterministic');\n\tconst directOnly = getBooleanOption(options, 'directOnly');\n\tconst varargs = getBooleanOption(options, 'varargs');\n\tlet argCount = -1;\n\n\t// Determine argument count\n\tif (!varargs) {\n\t\targCount = Math.max(getLength(step), inverse ? getLength(inverse) : 0);\n\t\tif (argCount > 0) argCount -= 1;\n\t\tif (argCount > 100) throw new RangeError('User-defined functions cannot have more than 100 arguments');\n\t}\n\n\tthis[cppdb].aggregate(start, step, inverse, result, name, argCount, safeIntegers, deterministic, directOnly);\n\treturn this;\n};\n\nconst getFunctionOption = (options, key, required) => {\n\tconst value = key in options ? options[key] : null;\n\tif (typeof value === 'function') return value;\n\tif (value != null) throw new TypeError(`Expected the \"${key}\" option to be a function`);\n\tif (required) throw new TypeError(`Missing required option \"${key}\"`);\n\treturn null;\n};\n\nconst getLength = ({ length }) => {\n\tif (Number.isInteger(length) && length >= 0) return length;\n\tthrow new TypeError('Expected function.length to be a positive integer');\n};\n","'use strict';\nconst { cppdb } = require('../util');\n\nmodule.exports = function defineTable(name, factory) {\n\t// Validate arguments\n\tif (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (!name) throw new TypeError('Virtual table module name cannot be an empty string');\n\n\t// Determine whether the module is eponymous-only or not\n\tlet eponymous = false;\n\tif (typeof factory === 'object' && factory !== null) {\n\t\teponymous = true;\n\t\tfactory = defer(parseTableDefinition(factory, 'used', name));\n\t} else {\n\t\tif (typeof factory !== 'function') throw new TypeError('Expected second argument to be a function or a table definition object');\n\t\tfactory = wrapFactory(factory);\n\t}\n\n\tthis[cppdb].table(factory, name, eponymous);\n\treturn this;\n};\n\nfunction wrapFactory(factory) {\n\treturn function virtualTableFactory(moduleName, databaseName, tableName, ...args) {\n\t\tconst thisObject = {\n\t\t\tmodule: moduleName,\n\t\t\tdatabase: databaseName,\n\t\t\ttable: tableName,\n\t\t};\n\n\t\t// Generate a new table definition by invoking the factory\n\t\tconst def = apply.call(factory, thisObject, args);\n\t\tif (typeof def !== 'object' || def === null) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" did not return a table definition object`);\n\t\t}\n\n\t\treturn parseTableDefinition(def, 'returned', moduleName);\n\t};\n}\n\nfunction parseTableDefinition(def, verb, moduleName) {\n\t// Validate required properties\n\tif (!hasOwnProperty.call(def, 'rows')) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition without a \"rows\" property`);\n\t}\n\tif (!hasOwnProperty.call(def, 'columns')) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition without a \"columns\" property`);\n\t}\n\n\t// Validate \"rows\" property\n\tconst rows = def.rows;\n\tif (typeof rows !== 'function' || Object.getPrototypeOf(rows) !== GeneratorFunctionPrototype) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"rows\" property (should be a generator function)`);\n\t}\n\n\t// Validate \"columns\" property\n\tlet columns = def.columns;\n\tif (!Array.isArray(columns) || !(columns = [...columns]).every(x => typeof x === 'string')) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"columns\" property (should be an array of strings)`);\n\t}\n\tif (columns.length !== new Set(columns).size) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with duplicate column names`);\n\t}\n\tif (!columns.length) {\n\t\tthrow new RangeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with zero columns`);\n\t}\n\n\t// Validate \"parameters\" property\n\tlet parameters;\n\tif (hasOwnProperty.call(def, 'parameters')) {\n\t\tparameters = def.parameters;\n\t\tif (!Array.isArray(parameters) || !(parameters = [...parameters]).every(x => typeof x === 'string')) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"parameters\" property (should be an array of strings)`);\n\t\t}\n\t} else {\n\t\tparameters = inferParameters(rows);\n\t}\n\tif (parameters.length !== new Set(parameters).size) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with duplicate parameter names`);\n\t}\n\tif (parameters.length > 32) {\n\t\tthrow new RangeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with more than the maximum number of 32 parameters`);\n\t}\n\tfor (const parameter of parameters) {\n\t\tif (columns.includes(parameter)) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with column \"${parameter}\" which was ambiguously defined as both a column and parameter`);\n\t\t}\n\t}\n\n\t// Validate \"safeIntegers\" option\n\tlet safeIntegers = 2;\n\tif (hasOwnProperty.call(def, 'safeIntegers')) {\n\t\tconst bool = def.safeIntegers;\n\t\tif (typeof bool !== 'boolean') {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"safeIntegers\" property (should be a boolean)`);\n\t\t}\n\t\tsafeIntegers = +bool;\n\t}\n\n\t// Validate \"directOnly\" option\n\tlet directOnly = false;\n\tif (hasOwnProperty.call(def, 'directOnly')) {\n\t\tdirectOnly = def.directOnly;\n\t\tif (typeof directOnly !== 'boolean') {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"directOnly\" property (should be a boolean)`);\n\t\t}\n\t}\n\n\t// Generate SQL for the virtual table definition\n\tconst columnDefinitions = [\n\t\t...parameters.map(identifier).map(str => `${str} HIDDEN`),\n\t\t...columns.map(identifier),\n\t];\n\treturn [\n\t\t`CREATE TABLE x(${columnDefinitions.join(', ')});`,\n\t\twrapGenerator(rows, new Map(columns.map((x, i) => [x, parameters.length + i])), moduleName),\n\t\tparameters,\n\t\tsafeIntegers,\n\t\tdirectOnly,\n\t];\n}\n\nfunction wrapGenerator(generator, columnMap, moduleName) {\n\treturn function* virtualTable(...args) {\n\t\t/*\n\t\t\tWe must defensively clone any buffers in the arguments, because\n\t\t\totherwise the generator could mutate one of them, which would cause\n\t\t\tus to return incorrect values for hidden columns, potentially\n\t\t\tcorrupting the database.\n\t\t */\n\t\tconst output = args.map(x => Buffer.isBuffer(x) ? Buffer.from(x) : x);\n\t\tfor (let i = 0; i < columnMap.size; ++i) {\n\t\t\toutput.push(null); // Fill with nulls to prevent gaps in array (v8 optimization)\n\t\t}\n\t\tfor (const row of generator(...args)) {\n\t\t\tif (Array.isArray(row)) {\n\t\t\t\textractRowArray(row, output, columnMap.size, moduleName);\n\t\t\t\tyield output;\n\t\t\t} else if (typeof row === 'object' && row !== null) {\n\t\t\t\textractRowObject(row, output, columnMap, moduleName);\n\t\t\t\tyield output;\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded something that isn't a valid row object`);\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction extractRowArray(row, output, columnCount, moduleName) {\n\tif (row.length !== columnCount) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded a row with an incorrect number of columns`);\n\t}\n\tconst offset = output.length - columnCount;\n\tfor (let i = 0; i < columnCount; ++i) {\n\t\toutput[i + offset] = row[i];\n\t}\n}\n\nfunction extractRowObject(row, output, columnMap, moduleName) {\n\tlet count = 0;\n\tfor (const key of Object.keys(row)) {\n\t\tconst index = columnMap.get(key);\n\t\tif (index === undefined) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded a row with an undeclared column \"${key}\"`);\n\t\t}\n\t\toutput[index] = row[key];\n\t\tcount += 1;\n\t}\n\tif (count !== columnMap.size) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded a row with missing columns`);\n\t}\n}\n\nfunction inferParameters({ length }) {\n\tif (!Number.isInteger(length) || length < 0) {\n\t\tthrow new TypeError('Expected function.length to be a positive integer');\n\t}\n\tconst params = [];\n\tfor (let i = 0; i < length; ++i) {\n\t\tparams.push(`$${i + 1}`);\n\t}\n\treturn params;\n}\n\nconst { hasOwnProperty } = Object.prototype;\nconst { apply } = Function.prototype;\nconst GeneratorFunctionPrototype = Object.getPrototypeOf(function*(){});\nconst identifier = str => `\"${str.replace(/\"/g, '\"\"')}\"`;\nconst defer = x => () => x;\n","'use strict';\nconst DatabaseInspection = function Database() {};\n\nmodule.exports = function inspect(depth, opts) {\n\treturn Object.assign(new DatabaseInspection(), this);\n};\n\n","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst util = require('./util');\nconst SqliteError = require('./sqlite-error');\n\nlet DEFAULT_ADDON;\n\nfunction Database(filenameGiven, options) {\n\tif (new.target == null) {\n\t\treturn new Database(filenameGiven, options);\n\t}\n\n\t// Apply defaults\n\tlet buffer;\n\tif (Buffer.isBuffer(filenameGiven)) {\n\t\tbuffer = filenameGiven;\n\t\tfilenameGiven = ':memory:';\n\t}\n\tif (filenameGiven == null) filenameGiven = '';\n\tif (options == null) options = {};\n\n\t// Validate arguments\n\tif (typeof filenameGiven !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\tif ('readOnly' in options) throw new TypeError('Misspelled option \"readOnly\" should be \"readonly\"');\n\tif ('memory' in options) throw new TypeError('Option \"memory\" was removed in v7.0.0 (use \":memory:\" filename instead)');\n\n\t// Interpret options\n\tconst filename = filenameGiven.trim();\n\tconst anonymous = filename === '' || filename === ':memory:';\n\tconst readonly = util.getBooleanOption(options, 'readonly');\n\tconst fileMustExist = util.getBooleanOption(options, 'fileMustExist');\n\tconst timeout = 'timeout' in options ? options.timeout : 5000;\n\tconst verbose = 'verbose' in options ? options.verbose : null;\n\tconst nativeBinding = 'nativeBinding' in options ? options.nativeBinding : null;\n\n\t// Validate interpreted options\n\tif (readonly && anonymous && !buffer) throw new TypeError('In-memory/temporary databases cannot be readonly');\n\tif (!Number.isInteger(timeout) || timeout < 0) throw new TypeError('Expected the \"timeout\" option to be a positive integer');\n\tif (timeout > 0x7fffffff) throw new RangeError('Option \"timeout\" cannot be greater than 2147483647');\n\tif (verbose != null && typeof verbose !== 'function') throw new TypeError('Expected the \"verbose\" option to be a function');\n\tif (nativeBinding != null && typeof nativeBinding !== 'string' && typeof nativeBinding !== 'object') throw new TypeError('Expected the \"nativeBinding\" option to be a string or addon object');\n\n\t// Load the native addon\n\tlet addon;\n\tif (nativeBinding == null) {\n\t\taddon = DEFAULT_ADDON || (DEFAULT_ADDON = require('bindings')('better_sqlite3.node'));\n\t} else if (typeof nativeBinding === 'string') {\n\t\t// See <https://webpack.js.org/api/module-variables/#__non_webpack_require__-webpack-specific>\n\t\tconst requireFunc = typeof __non_webpack_require__ === 'function' ? __non_webpack_require__ : require;\n\t\taddon = requireFunc(path.resolve(nativeBinding).replace(/(\\.node)?$/, '.node'));\n\t} else {\n\t\t// See <https://github.com/WiseLibs/better-sqlite3/issues/972>\n\t\taddon = nativeBinding;\n\t}\n\n\tif (!addon.isInitialized) {\n\t\taddon.setErrorConstructor(SqliteError);\n\t\taddon.isInitialized = true;\n\t}\n\n\t// Make sure the specified directory exists\n\tif (!anonymous && !filename.startsWith('file:') && !fs.existsSync(path.dirname(filename))) {\n\t\tthrow new TypeError('Cannot open database because the directory does not exist');\n\t}\n\n\tObject.defineProperties(this, {\n\t\t[util.cppdb]: { value: new addon.Database(filename, filenameGiven, anonymous, readonly, fileMustExist, timeout, verbose || null, buffer || null) },\n\t\t...wrappers.getters,\n\t});\n}\n\nconst wrappers = require('./methods/wrappers');\nDatabase.prototype.prepare = wrappers.prepare;\nDatabase.prototype.transaction = require('./methods/transaction');\nDatabase.prototype.pragma = require('./methods/pragma');\nDatabase.prototype.backup = require('./methods/backup');\nDatabase.prototype.serialize = require('./methods/serialize');\nDatabase.prototype.function = require('./methods/function');\nDatabase.prototype.aggregate = require('./methods/aggregate');\nDatabase.prototype.table = require('./methods/table');\nDatabase.prototype.loadExtension = wrappers.loadExtension;\nDatabase.prototype.exec = wrappers.exec;\nDatabase.prototype.close = wrappers.close;\nDatabase.prototype.defaultSafeIntegers = wrappers.defaultSafeIntegers;\nDatabase.prototype.unsafeMode = wrappers.unsafeMode;\nDatabase.prototype[util.inspect] = require('./methods/inspect');\n\nmodule.exports = Database;\n","'use strict';\nmodule.exports = require('./database');\nmodule.exports.SqliteError = require('./sqlite-error');\n","import { t as pendingSteering } from \"./chat-steering.js\";\nimport { n as SYSTEM_CONTEXT, t as DEFAULT_SYSTEM_PROMPT } from \"./prompts.js\";\nimport { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, resolve, sep } from \"node:path\";\nimport { chmod, mkdir, readFile, rename, rm, stat, writeFile } from \"node:fs/promises\";\nimport { randomUUID } from \"node:crypto\";\nimport { execSync, spawn } from \"node:child_process\";\nimport { homedir } from \"node:os\";\nimport Database from \"better-sqlite3\";\n//#region ../core/dist/ai/models.js\nvar OPENAI_MODELS = [{\n\tid: \"gpt-4o\",\n\tname: \"GPT-4o\",\n\tcontextWindow: 128e3,\n\tsupportsReasoning: false,\n\treasoningEffortValues: [],\n\tsupportsVision: false\n}, {\n\tid: \"gpt-4o-mini\",\n\tname: \"GPT-4o Mini\",\n\tcontextWindow: 128e3,\n\tsupportsReasoning: false,\n\treasoningEffortValues: [],\n\tsupportsVision: false\n}];\nvar DEEPSEEK_MODELS = [{\n\tid: \"deepseek-v4-pro\",\n\tname: \"DeepSeek V4 Pro\",\n\tcontextWindow: 1048576,\n\tsupportsReasoning: true,\n\treasoningEffortValues: [\"high\", \"max\"],\n\tsupportsVision: false\n}, {\n\tid: \"deepseek-v4-flash\",\n\tname: \"DeepSeek V4 Flash\",\n\tcontextWindow: 1048576,\n\tsupportsReasoning: true,\n\treasoningEffortValues: [\"high\", \"max\"],\n\tsupportsVision: false\n}];\nvar XIAOMI_MODELS = [{\n\tid: \"mimo-v2.5\",\n\tname: \"MiMo V2.5\",\n\tcontextWindow: 1048576,\n\tsupportsReasoning: true,\n\treasoningEffortValues: [],\n\tsupportsVision: true\n}, {\n\tid: \"mimo-v2.5-pro\",\n\tname: \"MiMo V2.5 Pro\",\n\tcontextWindow: 1048576,\n\tsupportsReasoning: true,\n\treasoningEffortValues: [],\n\tsupportsVision: false\n}];\nfunction getDefaultModels(type) {\n\tswitch (type) {\n\t\tcase \"openai\": return [...OPENAI_MODELS];\n\t\tcase \"deepseek\": return [...DEEPSEEK_MODELS];\n\t\tcase \"xiaomi\": return [...XIAOMI_MODELS];\n\t\tdefault: return [];\n\t}\n}\n//#endregion\n//#region ../core/dist/ai/utils.js\n/**\n* 供应商请求错误\n*/\nvar ProviderError = class extends Error {\n\tstatus;\n\tbody;\n\tconstructor(message, status, body) {\n\t\tsuper(message);\n\t\tthis.status = status;\n\t\tthis.body = body;\n\t\tthis.name = \"ProviderError\";\n\t}\n};\n/**\n* 异步延时\n* @param ms - 毫秒\n*/\nfunction sleep(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n/**\n* 带自动重试的 fetch 封装\n*\n* 仅对 5xx 错误和网络错误进行指数退避重试。\n* 4xx 错误直接抛出 ProviderError,不重试。\n*\n* @param fetchFn - fetch 调用工厂函数\n* @param maxRetries - 最大重试次数\n* @param baseDelayMs - 基础延迟(毫秒),每次重试延迟加倍\n* @returns Response\n* @throws ProviderError\n*/\nasync function fetchWithRetry(fetchFn, maxRetries, baseDelayMs = 1e3) {\n\tlet lastError;\n\tfor (let attempt = 0; attempt <= maxRetries; attempt++) {\n\t\ttry {\n\t\t\tconst response = await fetchFn();\n\t\t\tif (response.ok) return response;\n\t\t\tif (response.status < 500 || attempt === maxRetries) {\n\t\t\t\tconst body = await response.json().catch(() => null);\n\t\t\t\tthrow new ProviderError(`API returned status ${response.status}`, response.status, body);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof ProviderError) throw error;\n\t\t\tlastError = error;\n\t\t}\n\t\tif (attempt < maxRetries) await sleep(baseDelayMs * Math.pow(2, attempt));\n\t}\n\tthrow lastError;\n}\n/**\n* 解析 SSE (Server-Sent Events) 流为 StreamChunk 异步生成器\n*\n* @param reader - ReadableStream reader\n* @returns AsyncGenerator<StreamChunk>\n*/\nasync function* parseSSEStream(reader) {\n\tconst decoder = new TextDecoder();\n\tlet buffer = \"\";\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) break;\n\t\t\tbuffer += decoder.decode(value, { stream: true });\n\t\t\tconst lines = buffer.split(\"\\n\");\n\t\t\tbuffer = lines.pop() || \"\";\n\t\t\tfor (const line of lines) {\n\t\t\t\tconst trimmed = line.trim();\n\t\t\t\tif (!trimmed || !trimmed.startsWith(\"data:\")) continue;\n\t\t\t\tconst data = trimmed.slice(5).trim();\n\t\t\t\tif (data === \"[DONE]\") return;\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = JSON.parse(data);\n\t\t\t\t\tconst choice = parsed.choices?.[0];\n\t\t\t\t\tif (!choice) continue;\n\t\t\t\t\tconst delta = choice.delta || {};\n\t\t\t\t\tconst rawUsage = parsed.usage || choice.usage;\n\t\t\t\t\tyield {\n\t\t\t\t\t\tcontent: delta.content || \"\",\n\t\t\t\t\t\treasoning_content: delta.reasoning_content || \"\",\n\t\t\t\t\t\ttool_calls: extractToolCalls(delta.tool_calls),\n\t\t\t\t\t\tfinish_reason: choice.finish_reason || null,\n\t\t\t\t\t\tusage: rawUsage ? parseUsage(rawUsage) : void 0\n\t\t\t\t\t};\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t}\n\t} finally {\n\t\treader.releaseLock();\n\t}\n}\nfunction extractToolCalls(raw) {\n\tif (!Array.isArray(raw)) return [];\n\treturn raw.map((tc) => ({\n\t\tindex: tc.index ?? 0,\n\t\tid: tc.id,\n\t\ttype: tc.type,\n\t\tfunction: tc.function ? {\n\t\t\tname: tc.function.name,\n\t\t\targuments: tc.function.arguments\n\t\t} : void 0\n\t}));\n}\n/**\n* 将 API 返回的原始 usage 对象解析为类型化的 Usage\n*\n* @param raw - API 响应的 usage 字段\n*/\nfunction parseUsage(raw) {\n\treturn {\n\t\tprompt_tokens: raw.prompt_tokens ?? 0,\n\t\tcompletion_tokens: raw.completion_tokens ?? 0,\n\t\ttotal_tokens: raw.total_tokens ?? 0,\n\t\tprompt_cache_hit_tokens: raw.prompt_cache_hit_tokens,\n\t\tprompt_cache_miss_tokens: raw.prompt_cache_miss_tokens,\n\t\tcompletion_tokens_details: raw.completion_tokens_details ? { reasoning_tokens: raw.completion_tokens_details.reasoning_tokens ?? 0 } : void 0\n\t};\n}\n//#endregion\n//#region ../core/dist/ai/openai.js\n/**\n* OpenAI 兼容格式的 AI 供应商实现\n*\n* 封装 fetch 调用 /v1/chat/completions 端点,支持:\n* - 非流式调用(chat)\n* - SSE 流式调用(chatStream)\n* - 自动重试(仅 5xx 错误 + 网络错误,指数退避)\n* - 超时控制(AbortController)\n* - usage / reasoning_content 透传\n*/\nvar OpenAIProvider = class {\n\tapiKey;\n\tbaseURL;\n\tmodel;\n\ttimeout;\n\tmaxRetries;\n\tconstructor(config) {\n\t\tthis.apiKey = config.apiKey;\n\t\tthis.baseURL = config.baseURL.replace(/\\/$/, \"\");\n\t\tthis.model = config.model;\n\t\tthis.timeout = config.timeout ?? 6e4;\n\t\tthis.maxRetries = config.maxRetries ?? 2;\n\t}\n\tasync chat(request) {\n\t\tconst body = this.buildBody({\n\t\t\t...request,\n\t\t\tstream: false\n\t\t});\n\t\tconst json = await (await fetchWithRetry(() => this.doFetch(body), this.maxRetries)).json();\n\t\treturn this.parseResponse(json);\n\t}\n\tasync *chatStream(request) {\n\t\tconst body = this.buildBody({\n\t\t\t...request,\n\t\t\tstream: true\n\t\t});\n\t\tconst response = await fetchWithRetry(() => this.doFetch(body), this.maxRetries);\n\t\tif (!response.body) throw new ProviderError(\"Response body is empty\", 0, null);\n\t\tyield* parseSSEStream(response.body.getReader());\n\t}\n\tbuildBodyObject(request) {\n\t\treturn {\n\t\t\tmodel: request.model || this.model,\n\t\t\tmessages: request.messages,\n\t\t\ttools: request.tools,\n\t\t\ttool_choice: request.tool_choice,\n\t\t\tmax_tokens: request.max_tokens,\n\t\t\ttemperature: request.temperature,\n\t\t\tstream: request.stream\n\t\t};\n\t}\n\tbuildBody(request) {\n\t\treturn JSON.stringify(this.buildBodyObject(request));\n\t}\n\tasync doFetch(body) {\n\t\tconst controller = new AbortController();\n\t\tconst timer = setTimeout(() => controller.abort(), this.timeout);\n\t\ttry {\n\t\t\treturn await fetch(`${this.baseURL}/chat/completions`, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tAuthorization: `Bearer ${this.apiKey}`\n\t\t\t\t},\n\t\t\t\tbody,\n\t\t\t\tsignal: controller.signal\n\t\t\t});\n\t\t} finally {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t}\n\tparseResponse(json) {\n\t\tconst choice = json.choices?.[0];\n\t\tif (!choice) throw new ProviderError(\"No choices in response\", 0, json);\n\t\tconst message = choice.message;\n\t\tconst usage = json.usage;\n\t\treturn {\n\t\t\tcontent: message?.content || null,\n\t\t\treasoning_content: message?.reasoning_content,\n\t\t\ttool_calls: message?.tool_calls || [],\n\t\t\tfinish_reason: choice.finish_reason || \"stop\",\n\t\t\tusage: usage ? parseUsage(usage) : void 0,\n\t\t\tmodel: json.model || this.model\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/ai/deepseek.js\nvar DeepSeekProvider = class extends OpenAIProvider {\n\treasoningEffort;\n\tsupportsReasoning;\n\tconstructor(config) {\n\t\tsuper(config);\n\t\tthis.reasoningEffort = config.reasoningEffort;\n\t\tthis.supportsReasoning = config.supportsReasoning || false;\n\t}\n\tbuildBodyObject(request) {\n\t\tconst body = super.buildBodyObject(request);\n\t\tif (this.supportsReasoning) if (this.reasoningEffort) {\n\t\t\tbody.thinking = { type: \"enabled\" };\n\t\t\tbody.reasoning_effort = this.reasoningEffort;\n\t\t} else body.thinking = { type: \"disabled\" };\n\t\treturn body;\n\t}\n};\n//#endregion\n//#region ../core/dist/ai/xiaomi.js\nvar XiaomiProvider = class extends OpenAIProvider {\n\treasoningEffort;\n\tsupportsReasoning;\n\tconstructor(config) {\n\t\tsuper(config);\n\t\tthis.reasoningEffort = config.reasoningEffort;\n\t\tthis.supportsReasoning = config.supportsReasoning || false;\n\t}\n\tbuildBodyObject(request) {\n\t\tconst body = super.buildBodyObject(request);\n\t\tif (this.supportsReasoning) if (this.reasoningEffort) body.thinking = { type: \"enabled\" };\n\t\telse body.thinking = { type: \"disabled\" };\n\t\treturn body;\n\t}\n};\n//#endregion\n//#region ../core/dist/ai/ollama.js\nvar OllamaProvider = class extends OpenAIProvider {\n\tollamaURL;\n\tconstructor(config) {\n\t\tconst baseURL = config.baseURL || `${config.ollamaURL || \"http://localhost:11434\"}/v1`;\n\t\tconst normalizedBase = baseURL.endsWith(\"/v1\") ? baseURL : baseURL.replace(/\\/+$/, \"\") + \"/v1\";\n\t\tsuper({\n\t\t\tapiKey: config.apiKey || \"ollama\",\n\t\t\tbaseURL: normalizedBase,\n\t\t\tmodel: config.model,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries\n\t\t});\n\t\tthis.ollamaURL = config.ollamaURL || \"http://localhost:11434\";\n\t}\n\tasync listModels() {\n\t\ttry {\n\t\t\tconst res = await fetch(`${this.ollamaURL}/api/tags`);\n\t\t\tif (!res.ok) return [];\n\t\t\treturn ((await res.json()).models || []).map((m) => ({\n\t\t\t\tid: m.name,\n\t\t\t\tname: m.name\n\t\t\t}));\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/ai/factory.js\nfunction createProvider(config) {\n\tconst activeModel = config.activeModel || \"\";\n\tconst supportsReasoning = getDefaultModels(config.type).find((m) => m.id === activeModel)?.supportsReasoning || false;\n\tswitch (config.type) {\n\t\tcase \"openai\": return new OpenAIProvider({\n\t\t\tapiKey: config.apiKey,\n\t\t\tbaseURL: config.baseURL,\n\t\t\tmodel: activeModel,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries ?? 5\n\t\t});\n\t\tcase \"deepseek\": return new DeepSeekProvider({\n\t\t\tapiKey: config.apiKey,\n\t\t\tbaseURL: config.baseURL,\n\t\t\tmodel: activeModel,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries ?? 5,\n\t\t\treasoningEffort: config.reasoningEffort,\n\t\t\tsupportsReasoning\n\t\t});\n\t\tcase \"xiaomi\": return new XiaomiProvider({\n\t\t\tapiKey: config.apiKey,\n\t\t\tbaseURL: config.baseURL,\n\t\t\tmodel: activeModel,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries ?? 5,\n\t\t\treasoningEffort: config.reasoningEffort,\n\t\t\tsupportsReasoning\n\t\t});\n\t\tcase \"ollama\": return new OllamaProvider({\n\t\t\tapiKey: config.apiKey,\n\t\t\tbaseURL: config.baseURL || \"\",\n\t\t\tmodel: activeModel,\n\t\t\ttimeout: config.timeout,\n\t\t\tmaxRetries: config.maxRetries ?? 3,\n\t\t\tollamaURL: config.ollamaURL\n\t\t});\n\t\tdefault: throw new Error(`Unsupported provider type: ${config.type}`);\n\t}\n}\n//#endregion\n//#region ../core/dist/tool/registry.js\n/**\n* 工具注册表\n*\n* 管理工具的注册、查询和调度。\n* 提供 getDefinitions() 将已注册工具转为 OpenAI function calling 格式。\n* 支持 sourceId 追踪,可按来源批量卸载(为 extension 系统提供基础)。\n*/\nvar ToolRegistry = class {\n\ttools = /* @__PURE__ */ new Map();\n\tsources = /* @__PURE__ */ new Map();\n\t/**\n\t* 注册一个工具\n\t* @param tool - 工具定义\n\t* @param sourceId - 来源标识,默认为 'builtin'。用于批量卸载时按来源清理。\n\t*/\n\tregister(tool, sourceId = \"builtin\") {\n\t\tthis.tools.set(tool.name, tool);\n\t\tif (!this.sources.has(sourceId)) this.sources.set(sourceId, /* @__PURE__ */ new Set());\n\t\tthis.sources.get(sourceId).add(tool.name);\n\t}\n\t/** 注销一个工具 */\n\tunregister(name) {\n\t\tfor (const [, names] of this.sources) names.delete(name);\n\t\treturn this.tools.delete(name);\n\t}\n\t/**\n\t* 按来源批量注销工具\n\t* @param sourceId - 来源标识\n\t* @returns 被注销的工具数量\n\t*/\n\tunregisterSource(sourceId) {\n\t\tconst names = this.sources.get(sourceId);\n\t\tif (!names) return 0;\n\t\tlet count = 0;\n\t\tfor (const name of names) if (this.tools.delete(name)) count++;\n\t\tthis.sources.delete(sourceId);\n\t\treturn count;\n\t}\n\t/** 按名称获取工具 */\n\tget(name) {\n\t\treturn this.tools.get(name);\n\t}\n\t/** 获取 OpenAI function calling 格式的工具定义列表 */\n\tgetDefinitions() {\n\t\treturn Array.from(this.tools.values()).map((tool) => ({\n\t\t\ttype: \"function\",\n\t\t\tfunction: {\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: tool.parameters\n\t\t\t}\n\t\t}));\n\t}\n\t/**\n\t* 按名称执行工具\n\t*\n\t* @param name - 工具名称\n\t* @param args - 调用参数,支持 __confirmed 标记跳过确认流程\n\t* @param ctx - 工具执行上下文\n\t* @returns 执行结果\n\t* @throws PendingConfirmation 需要用户确认时\n\t*/\n\tasync execute(name, args, ctx) {\n\t\tconst tool = this.tools.get(name);\n\t\tif (!tool) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `未知工具: ${name}`\n\t\t};\n\t\treturn tool.execute(args, ctx);\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/types.js\n/**\n* 待确认异常\n*\n* 工具执行时如需要用户确认,抛出此异常。\n* 上层 Agent Loop 捕获后通过 SSE 推送确认请求到前端,\n* 用户确认后以 __confirmed: true 重新调用工具。\n*/\nvar PendingConfirmation = class extends Error {\n\ttoolName;\n\targs;\n\treason;\n\tconstructor(toolName, args, reason) {\n\t\tsuper(`Tool \"${toolName}\" requires confirmation: ${reason}`);\n\t\tthis.toolName = toolName;\n\t\tthis.args = args;\n\t\tthis.reason = reason;\n\t\tthis.name = \"PendingConfirmation\";\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\ttoolName: this.toolName,\n\t\t\targs: this.args,\n\t\t\treason: this.reason\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/safeguard.js\nvar READONLY_PATTERNS = [\n\t/^\\s*(?:Get-ChildItem|dir|ls|Get-Content|cat|type|Get-Process|ps|Get-Service|Get-Location|pwd|gl|Get-Item|gi|Get-ItemProperty|gp|Get-Date|Get-Host|Get-Variable|gv|Get-Command|gcm|Get-Member|gm|Get-Alias|gal|Get-History|history|ghy|Select-String|sls|findstr|Test-Path|Measure-Object|measure|Sort-Object|sort|Group-Object|group|Select-Object|select|Format-List|fl|Format-Table|ft|Format-Wide|fw|Format-Hex|Write-Output|echo|write|Compare-Object|diff|compare|Where-Object|Join-Path|Split-Path|Resolve-Path|ConvertFrom-Json|ConvertFrom-Csv)\\b/i,\n\t/^\\s*(?:head|tail|less|more|grep|egrep|fgrep|rg|find|wc|sort|uniq|cut|tr|file|stat|df|du|which|whereis|command|whoami|id|groups|printf|uname|hostname|basename|dirname|readlink|realpath)\\b/i,\n\t/^\\s*git\\s+(?:status|log|diff|show|branch|tag|stash\\s+list|remote\\s+(?:-v|show)|config\\s+(?:--list|--get\\b)|ls-files|rev-parse|rev-list|describe|shortlog|blame|grep|notes\\s+list|reflog|cherry|for-each-ref|name-rev)\\b/i,\n\t/^\\s*npm\\s+(?:ls|list|view|info|outdated|version|config\\s+list)\\b/i\n];\nvar DANGEROUS_PATTERNS = [\n\t/^\\s*del\\b/i,\n\t/^\\s*rmdir\\b/i,\n\t/^\\s*Remove-Item\\b/i,\n\t/\\bformat\\b/i,\n\t/\\bdiskpart\\b/i,\n\t/reg\\s+(delete|add)/i,\n\t/Set-ExecutionPolicy/i,\n\t/\\bshutdown\\b/i,\n\t/Restart-Computer\\b/i,\n\t/Stop-Process\\s+.*(svchost|winlogon|lsass|csrss)/i,\n\t/Stop-Service\\b/i,\n\t/\\|\\s*iex\\b/i,\n\t/\\|\\s*Invoke-Expression\\b/i,\n\t/\\|\\s*cmd\\b/i,\n\t/>\\s*%SystemRoot%/i,\n\t/>\\s*C:\\\\Windows/i,\n\t/\\brm\\s+-rf?\\b/,\n\t/\\bfind\\b.*\\bdelete\\b/,\n\t/\\bdd\\s+if=/,\n\t/\\bmkfs\\./,\n\t/\\bchmod\\s+777\\s+\\//,\n\t/\\bshutdown\\b/,\n\t/\\breboot\\b/,\n\t/\\binit\\s+[06]/,\n\t/>\\s*\\/etc\\//,\n\t/>\\s*\\/bin\\//,\n\t/>\\s*\\/boot\\//,\n\t/\\|\\s*(ba)?sh\\b/,\n\t/\\|\\s*zsh\\b/,\n\t/\\bdrop\\s+table\\b/i,\n\t/\\bdrop\\s+database\\b/i,\n\t/\\bgit\\s+push\\s+--force\\b/i,\n\t/\\bgit\\s+reset\\s+--hard\\b/i\n];\nvar SYSTEM_DIRS = [\n\t\"C:\\\\Windows\",\n\t\"C:\\\\Program Files\",\n\t\"C:\\\\Program Files (x86)\",\n\t\"/etc\",\n\t\"/bin\",\n\t\"/sbin\",\n\t\"/usr/bin\",\n\t\"/usr/sbin\",\n\t\"/boot\",\n\t\"/sys\",\n\t\"/dev\",\n\t\"/proc\"\n];\nfunction isDangerousCommand(command) {\n\tif (DANGEROUS_PATTERNS.some((pattern) => pattern.test(command))) return true;\n\tfor (const segment of command.split(\"|\")) if (DANGEROUS_PATTERNS.some((pattern) => pattern.test(segment))) return true;\n\treturn false;\n}\nfunction isReadonlyCommand(command) {\n\tfor (const segment of command.split(\"|\")) if (!READONLY_PATTERNS.some((pattern) => pattern.test(segment))) return false;\n\treturn true;\n}\nfunction isPathInWorkspace(targetPath, workspaceRoot) {\n\tconst resolved = normalizePath(targetPath, workspaceRoot);\n\tconst normalizedRoot = resolve(workspaceRoot).toLowerCase();\n\treturn resolve(resolved).toLowerCase().startsWith(normalizedRoot + sep);\n}\nfunction isSystemPath(targetPath, workspaceRoot) {\n\tconst normalized = resolve(normalizePath(targetPath, workspaceRoot)).toLowerCase();\n\treturn SYSTEM_DIRS.some((sysDir) => normalized.startsWith(sysDir.toLowerCase()));\n}\nfunction expandEnvVars(command) {\n\tlet result = command.replace(/%(\\w+)%/g, (_, name) => {\n\t\treturn process.env[name] ?? `%${name}%`;\n\t});\n\tresult = result.replace(/\\$\\{(\\w+)\\}/g, (_, name) => {\n\t\treturn process.env[name] ?? `\\$\\{${name}\\}`;\n\t});\n\tresult = result.replace(/\\$([A-Za-z_]\\w*)/g, (_, name) => {\n\t\treturn process.env[name] ?? `$${name}`;\n\t});\n\treturn result;\n}\nfunction collectPaths(source, paths) {\n\tconst winAbsRe = /[A-Za-z]:\\\\(?:[^\\\\/:*?\"<>|\\r\\n]+\\\\)*[^\\\\/:*?\"<>|\\r\\n]*/g;\n\tlet match;\n\twhile ((match = winAbsRe.exec(source)) !== null) paths.push(match[0]);\n\tconst unixAbsRe = /(?<!\\w)\\/(?:[^\\s'\"]+)/g;\n\twhile ((match = unixAbsRe.exec(source)) !== null) {\n\t\tconst p = match[0];\n\t\tif (p.length > 1 && !/^\\/\\d/.test(p) && !/\\/$/.test(p)) paths.push(p);\n\t}\n\tconst tildeRe = /(?<!\\w)~\\/(?:[^\\s'\"]+)/g;\n\twhile ((match = tildeRe.exec(source)) !== null) paths.push(match[0]);\n}\nfunction extractPaths(command) {\n\tconst paths = [];\n\tcollectPaths(command, paths);\n\tconst expanded = expandEnvVars(command);\n\tif (expanded !== command) collectPaths(expanded, paths);\n\tconst winRelRe = /(?:\\.\\.\\\\)+(?:[^\\s'\"]+)/g;\n\tlet match;\n\twhile ((match = winRelRe.exec(command)) !== null) paths.push(match[0]);\n\tconst unixRelRe = /(?<!\\w)(?:\\.\\.\\/)+(?:[^\\s'\"]+)/g;\n\twhile ((match = unixRelRe.exec(command)) !== null) {\n\t\tconst p = match[0];\n\t\tif (p.length > 1 && !/\\/$/.test(p)) paths.push(p);\n\t}\n\treturn paths;\n}\n/**\n* 分类命令的安全性\n*\n* 判定顺序:\n* 1. reject — 明确禁止(format, diskpart)\n* 2. confirm — 命中危险模式(删除、系统修改、管道注入等)\n* 3. safe — 只读命令,无需后续路径检查\n* 4. confirm — 路径在工作区外或系统目录\n* 5. safe — 其余放行\n*\n* @returns 'safe' 可直接执行 / 'confirm' 需用户确认 / 'reject' 拒绝执行\n*/\nfunction classifyCommand(command, workspaceRoot) {\n\tif (/^\\s*(format|diskpart)\\b/i.test(command.trim())) return \"reject\";\n\tif (isDangerousCommand(command)) return \"confirm\";\n\tif (isReadonlyCommand(command)) return \"safe\";\n\tconst paths = extractPaths(command);\n\tfor (const p of paths) {\n\t\tif (isSystemPath(p, workspaceRoot)) return \"confirm\";\n\t\tif (!isPathInWorkspace(p, workspaceRoot)) return \"confirm\";\n\t}\n\treturn \"safe\";\n}\n/**\n* 分类文件路径的安全性\n*\n* @returns 'safe' 可直接操作 / 'confirm' 需用户确认\n*/\nfunction classifyFilePath(targetPath, workspaceRoot) {\n\tconst normalized = normalizePath(targetPath, workspaceRoot);\n\tif (isSystemPath(normalized, workspaceRoot)) return \"reject\";\n\tif (!isPathInWorkspace(normalized, workspaceRoot)) return \"confirm\";\n\treturn \"safe\";\n}\nfunction normalizePath(targetPath, workspaceRoot) {\n\tlet resolved = targetPath;\n\tif (resolved.startsWith(\"~\")) {\n\t\tconst home = process.env.HOME || process.env.USERPROFILE || \"\";\n\t\tresolved = resolved.replace(/^~/, home);\n\t}\n\tif (isAbsolute(resolved)) return resolved;\n\treturn resolve(workspaceRoot, resolved);\n}\n//#endregion\n//#region ../core/dist/tool/env.js\n/**\n* ToolContext — 工具执行上下文\n*\n* 封装工作区根目录、路径解析和安全检查。\n* 替换原来分散在工具中的 resolve() + classifyFilePath/classifyCommand 模式。\n*/\nvar ToolContext = class {\n\troot;\n\tonUpdate;\n\tconstructor(root) {\n\t\tthis.root = root;\n\t}\n\t/** 解析用户输入的路径,同时做安全检查 */\n\tresolvePath(userPath) {\n\t\tconst resolved = resolve(this.root, userPath);\n\t\treturn {\n\t\t\tpath: resolved,\n\t\t\tclassification: classifyFilePath(resolved, this.root)\n\t\t};\n\t}\n\t/** 分类终端命令的安全性 */\n\tclassifyCommand(command) {\n\t\treturn classifyCommand(command, this.root);\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/file-utils.js\nvar BOM = \"\";\nfunction stripBom(content) {\n\tif (content.startsWith(BOM)) return content.slice(1);\n\treturn content;\n}\nfunction detectLineEnding(content) {\n\tif (content.includes(\"\\r\\n\")) return \"CRLF\";\n\treturn \"LF\";\n}\nfunction detectMeta(content) {\n\treturn {\n\t\tbom: content.startsWith(BOM),\n\t\tlineEnding: detectLineEnding(content)\n\t};\n}\nfunction normalizeLineEndings(content, target) {\n\tif (target === \"CRLF\") return content.replace(/\\r\\n/g, \"\\n\").replace(/\\n/g, \"\\r\\n\");\n\treturn content.replace(/\\r\\n/g, \"\\n\");\n}\nfunction normalizeToLF(content) {\n\treturn content.replace(/\\r\\n/g, \"\\n\");\n}\nfunction applyMeta(content, meta) {\n\tlet result = normalizeLineEndings(content, meta.lineEnding);\n\tif (meta.bom && !result.startsWith(BOM)) result = BOM + result;\n\telse if (!meta.bom && result.startsWith(BOM)) result = result.slice(1);\n\treturn result;\n}\nasync function atomicWrite(filePath, content, meta) {\n\tlet finalContent = content;\n\tlet targetMode = null;\n\ttry {\n\t\tconst info = await stat(filePath);\n\t\tif (info.isFile()) targetMode = info.mode;\n\t} catch {}\n\tif (meta) finalContent = applyMeta(content, meta);\n\tdirname(filePath);\n\tconst tmpPath = filePath + \".\" + randomUUID() + \".tmp\";\n\tawait writeFile(tmpPath, finalContent, \"utf-8\");\n\tif (targetMode !== null) await chmod(tmpPath, targetMode);\n\tawait rename(tmpPath, filePath);\n}\n//#endregion\n//#region ../core/dist/tool/tools/read-file.js\nvar MAX_FILE_SIZE = 1024 * 1024;\nvar DEFAULT_OFFSET = 1;\nvar DEFAULT_LIMIT = 500;\nfunction validateParam(name, value) {\n\tif (value === void 0 || value === null) return NaN;\n\tconst n = Number(value);\n\tif (!Number.isInteger(n)) return NaN;\n\tif (n < 1) return NaN;\n\treturn n;\n}\n/**\n* read_file — 读取文件内容\n*\n* 工作区内文件直接读取;工作区外文件需用户确认。\n* 文件大小限制 1 MB,超限返回错误。\n* 支持 offset / limit 按行翻页,不指定时默认读前 500 行。\n*/\nvar readFileTool = {\n\tname: \"read_file\",\n\tdescription: \"Read file contents. Supports offset/limit for paginated line-by-line reading. Use for viewing code, config, docs, etc.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tpath: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"File path (relative to workspace or absolute)\"\n\t\t\t},\n\t\t\toffset: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\tdescription: \"Starting line number (1-based), default 1\"\n\t\t\t},\n\t\t\tlimit: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\tdescription: \"Max lines to read, default 500\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"path\"]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst userPath = args.path;\n\t\tif (!userPath) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: path\"\n\t\t};\n\t\tlet offset = DEFAULT_OFFSET;\n\t\tlet limit = DEFAULT_LIMIT;\n\t\tif (\"offset\" in args && args.offset !== void 0 && args.offset !== null) {\n\t\t\tconst parsed = validateParam(\"offset\", args.offset);\n\t\t\tif (isNaN(parsed)) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: \"offset 必须是大于等于 1 的整数\"\n\t\t\t};\n\t\t\toffset = parsed;\n\t\t}\n\t\tif (\"limit\" in args && args.limit !== void 0 && args.limit !== null) {\n\t\t\tconst parsed = validateParam(\"limit\", args.limit);\n\t\t\tif (isNaN(parsed)) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: \"limit 必须是大于等于 1 的整数\"\n\t\t\t};\n\t\t\tlimit = parsed;\n\t\t}\n\t\tconst { path: filePath, classification } = ctx.resolvePath(userPath);\n\t\tif (!args.__confirmed) {\n\t\t\tif (classification === \"reject\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `拒绝读取系统路径: ${userPath}`\n\t\t\t};\n\t\t\tif (classification === \"confirm\") throw new PendingConfirmation(\"read_file\", {\n\t\t\t\tpath: userPath,\n\t\t\t\toffset,\n\t\t\t\tlimit\n\t\t\t}, `文件 \"${userPath}\" 在工作区之外,确认读取?`);\n\t\t}\n\t\ttry {\n\t\t\tconst info = await stat(filePath);\n\t\t\tif (!info.isFile()) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `路径不是文件: ${userPath}`\n\t\t\t};\n\t\t\tif (info.size > MAX_FILE_SIZE) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `文件过大 (${(info.size / 1024 / 1024).toFixed(1)} MB),最大支持 1 MB`\n\t\t\t};\n\t\t\tconst lines = stripBom(await readFile(filePath, \"utf-8\")).split(\"\\n\");\n\t\t\tconst totalLines = lines.length;\n\t\t\tconst startIdx = offset - 1;\n\t\t\tif (startIdx >= totalLines) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `=== ${userPath} (第 ${offset}-${offset + limit - 1} 行 / 共 ${totalLines} 行) ===\\n\\n(起始行号超出文件末尾)`\n\t\t\t};\n\t\t\tconst endIdx = Math.min(startIdx + limit, totalLines);\n\t\t\tconst slice = lines.slice(startIdx, endIdx);\n\t\t\tconst atEnd = endIdx >= totalLines;\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `=== ${userPath} ${`(第 ${offset}-${startIdx + slice.length} 行 / 共 ${totalLines} 行${atEnd ? \",已达文件末尾\" : \"\"})`} ===\\n${slice.join(\"\\n\")}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (error.code === \"ENOENT\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `文件不存在: ${userPath}`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `读取失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/write-file.js\n/**\n* write_file — 写入文件内容\n*\n* 自动创建不存在的父目录。覆盖已有文件。\n* 使用原子写入(临时文件 + rename),崩溃时不留残缺文件。\n* 覆盖已有文件时自动保留原文件的 BOM 和行尾格式(CRLF/LF)。\n* 工作区内文件直接写入;工作区外需用户确认。\n*/\nvar writeFileTool = {\n\tname: \"write_file\",\n\tdescription: \"Write content to a file (overwrites). Creates missing parent directories automatically. Preserves existing file encoding (BOM, line endings) when overwriting.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tpath: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"File path (relative to workspace or absolute)\"\n\t\t\t},\n\t\t\tcontent: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Complete file content to write\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"path\", \"content\"]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst userPath = args.path;\n\t\tconst content = args.content;\n\t\tif (!userPath) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: path\"\n\t\t};\n\t\tif (content === void 0 || content === null) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: content\"\n\t\t};\n\t\tconst { path: filePath, classification } = ctx.resolvePath(userPath);\n\t\tif (!args.__confirmed) {\n\t\t\tif (classification === \"reject\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `拒绝写入系统路径: ${userPath}`\n\t\t\t};\n\t\t\tif (classification === \"confirm\") throw new PendingConfirmation(\"write_file\", {\n\t\t\t\tpath: userPath,\n\t\t\t\tcontent\n\t\t\t}, `文件 \"${userPath}\" 在工作区之外,确认写入?`);\n\t\t}\n\t\ttry {\n\t\t\tawait mkdir(dirname(filePath), { recursive: true });\n\t\t\tlet existed = false;\n\t\t\tlet meta = void 0;\n\t\t\ttry {\n\t\t\t\texisted = (await stat(filePath)).isFile();\n\t\t\t\tif (existed) meta = detectMeta(await readFile(filePath, \"utf-8\"));\n\t\t\t} catch {}\n\t\t\tawait atomicWrite(filePath, content, meta);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `${existed ? \"已更新\" : \"已创建\"}文件: ${userPath} (${content.split(\"\\n\").length} 行, ${Buffer.byteLength(content, \"utf-8\")} 字节${meta?.bom ? \" (已保留 BOM)\" : \"\"})`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `写入失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/delete-file.js\n/**\n* delete_file — 删除文件\n*\n* 删除操作始终需要用户确认(不可逆)。\n* 仅支持删除文件,不支持删除目录。\n* 系统路径始终拒绝。\n*/\nvar deleteFileTool = {\n\tname: \"delete_file\",\n\tdescription: \"Delete a file. Always requires user confirmation.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: { path: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"File path (relative to workspace or absolute)\"\n\t\t} },\n\t\trequired: [\"path\"]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst userPath = args.path;\n\t\tif (!userPath) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: path\"\n\t\t};\n\t\tconst { path: filePath, classification } = ctx.resolvePath(userPath);\n\t\tif (!args.__confirmed) throw new PendingConfirmation(\"delete_file\", { path: userPath }, `确认删除 \"${userPath}\"?此操作不可恢复。`);\n\t\tif (classification === \"reject\") return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `拒绝删除系统路径: ${userPath}`\n\t\t};\n\t\ttry {\n\t\t\tif ((await stat(filePath)).isDirectory()) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `目标是目录而非文件: ${userPath}`\n\t\t\t};\n\t\t\tawait rm(filePath);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `已删除文件: ${userPath}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (error.code === \"ENOENT\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `路径不存在: ${userPath}`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `删除失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/edit.js\nfunction escapeNewlines(s) {\n\treturn s.replace(/\\r/g, \"\\\\r\").replace(/\\n/g, \"\\\\n\");\n}\nfunction formatDiff(original, replacement) {\n\treturn `- ${escapeNewlines(original)}\\n+ ${escapeNewlines(replacement)}`;\n}\nfunction countOccurrences(haystack, needle) {\n\tif (!needle) return 0;\n\tlet count = 0;\n\tlet pos = 0;\n\twhile (true) {\n\t\tpos = haystack.indexOf(needle, pos);\n\t\tif (pos === -1) break;\n\t\tcount++;\n\t\tpos += needle.length;\n\t}\n\treturn count;\n}\n/**\n* edit — 精确字符串替换编辑文件\n*\n* 在文件中查找 oldString 并替换为 newString。\n* 使用原子写入,自动保留原文件的 BOM 和行尾格式。\n* 非 replaceAll 模式下,oldString 必须在文件中恰好出现一次。\n*/\nvar editTool = {\n\tname: \"edit\",\n\tdescription: \"Perform exact string replacement in a file. Find oldString and replace with newString. In non-replaceAll mode, oldString must appear exactly once (prevents accidental changes). Preserves BOM and line endings (CRLF/LF).\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tpath: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"File path (relative to workspace or absolute)\"\n\t\t\t},\n\t\t\toldString: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Original text to replace (must match file content exactly, including indentation and blank lines)\"\n\t\t\t},\n\t\t\tnewString: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Replacement text\"\n\t\t\t},\n\t\t\treplaceAll: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescription: \"Replace all occurrences. Default false — oldString must appear exactly once in the file.\"\n\t\t\t}\n\t\t},\n\t\trequired: [\n\t\t\t\"path\",\n\t\t\t\"oldString\",\n\t\t\t\"newString\"\n\t\t]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst userPath = args.path;\n\t\tconst oldString = args.oldString;\n\t\tconst newString = args.newString;\n\t\tconst replaceAll = args.replaceAll === true;\n\t\tif (!userPath) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: path\"\n\t\t};\n\t\tif (oldString === void 0 || oldString === null) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: oldString\"\n\t\t};\n\t\tif (newString === void 0 || newString === null) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: newString\"\n\t\t};\n\t\tif (oldString === \"\") return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"oldString 不能为空\"\n\t\t};\n\t\tif (oldString === newString) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"oldString 与 newString 相同,无需替换\"\n\t\t};\n\t\tconst { path: filePath, classification } = ctx.resolvePath(userPath);\n\t\tif (!args.__confirmed) {\n\t\t\tif (classification === \"reject\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `拒绝编辑系统路径: ${userPath}`\n\t\t\t};\n\t\t\tif (classification === \"confirm\") throw new PendingConfirmation(\"edit\", {\n\t\t\t\tpath: userPath,\n\t\t\t\toldString,\n\t\t\t\tnewString,\n\t\t\t\treplaceAll\n\t\t\t}, `文件 \"${userPath}\" 在工作区之外,确认编辑?`);\n\t\t}\n\t\ttry {\n\t\t\tconst raw = await readFile(filePath, \"utf-8\");\n\t\t\tconst meta = detectMeta(raw);\n\t\t\tconst content = stripBom(raw);\n\t\t\tlet matchCount = countOccurrences(content, oldString);\n\t\t\tif (matchCount === 0) {\n\t\t\t\tconst lfContent = normalizeToLF(content);\n\t\t\t\tconst lfOld = normalizeToLF(oldString);\n\t\t\t\tconst lfCount = countOccurrences(lfContent, lfOld);\n\t\t\t\tif (lfCount > 0) {\n\t\t\t\t\tmatchCount = lfCount;\n\t\t\t\t\tconst lfNew = normalizeToLF(newString);\n\t\t\t\t\tlet result;\n\t\t\t\t\tif (replaceAll) result = lfContent.split(lfOld).join(lfNew);\n\t\t\t\t\telse result = lfContent.replace(lfOld, lfNew);\n\t\t\t\t\tif (meta.lineEnding === \"CRLF\") result = result.replace(/\\n/g, \"\\r\\n\");\n\t\t\t\t\tawait atomicWrite(filePath, result, meta);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\toutput: `已编辑: ${userPath}\\n替换 ${replaceAll ? matchCount : 1} 处:\\n${formatDiff(oldString, newString)}`\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (matchCount === 0) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `未在文件中找到 oldString。请确保 oldString 与文件内容完全一致(包括缩进和空行)。\\n文件路径: ${userPath}\\noldString: ${escapeNewlines(oldString.slice(0, 200))}`\n\t\t\t};\n\t\t\tif (!replaceAll && matchCount > 1) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `oldString 在文件中出现了 ${matchCount} 次。请提供更多上下文使匹配唯一,或设置 replaceAll: true 替换全部。`\n\t\t\t};\n\t\t\tawait atomicWrite(filePath, replaceAll ? content.split(oldString).join(newString) : content.replace(oldString, newString), meta);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `已编辑: ${userPath}\\n替换 ${replaceAll ? matchCount : 1} 处:\\n${formatDiff(oldString, newString)}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (error.code === \"ENOENT\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `文件不存在: ${userPath}`\n\t\t\t};\n\t\t\tif (error instanceof PendingConfirmation) throw error;\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `编辑失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/exec.js\nvar DEFAULT_TIMEOUT = 3e5;\nvar MAX_ALLOWED_TIMEOUT = 36e5;\nvar MAX_OUTPUT = 5e4;\nvar IS_WINDOWS = process.platform === \"win32\";\nfunction killProcessTree(pid) {\n\tif (pid == null) return false;\n\tif (IS_WINDOWS) try {\n\t\texecSync(`taskkill /F /T /PID ${pid}`, { stdio: \"ignore\" });\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n\ttry {\n\t\tprocess.kill(pid, \"SIGKILL\");\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* execute_command — 执行终端命令\n*\n* 安全策略:\n* - 安全命令 + 工作区路径 → 直接执行\n* - 危险命令 → 需用户确认\n* - format/diskpart → 拒绝\n* - 默认超时 5 分钟,输出上限 50KB\n*/\nvar execTool = {\n\tname: \"execute_command\",\n\tdescription: \"Execute a terminal command in the workspace directory and return output. For development tasks only, non-interactive. Default timeout 5 minutes.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tcommand: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"The terminal command to execute\"\n\t\t\t},\n\t\t\ttimeout: {\n\t\t\t\ttype: \"number\",\n\t\t\t\tdescription: \"Timeout in seconds, default 300 (5 min), max 3600 (1 hour)\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"command\"]\n\t},\n\tasync execute(args, ctx) {\n\t\tconst command = args.command;\n\t\tif (!command) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: command\"\n\t\t};\n\t\tlet timeoutSec = typeof args.timeout === \"number\" && args.timeout > 0 ? args.timeout : DEFAULT_TIMEOUT / 1e3;\n\t\tif (timeoutSec > MAX_ALLOWED_TIMEOUT / 1e3) timeoutSec = MAX_ALLOWED_TIMEOUT / 1e3;\n\t\tconst timeoutMs = timeoutSec * 1e3;\n\t\tconst classification = ctx.classifyCommand(command);\n\t\tif (classification === \"reject\") return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `拒绝执行危险命令: ${command.slice(0, 80)}`\n\t\t};\n\t\tif (classification === \"confirm\" && !args.__confirmed) throw new PendingConfirmation(\"execute_command\", { ...args }, `需要确认执行命令:\\n${command}`);\n\t\tif (args.__confirmed) {\n\t\t\tif (ctx.classifyCommand(command) === \"reject\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `拒绝执行危险命令: ${command.slice(0, 80)}`\n\t\t\t};\n\t\t}\n\t\treturn new Promise((resolve) => {\n\t\t\tconst stdoutChunks = [];\n\t\t\tconst stderrChunks = [];\n\t\t\tlet resolved = false;\n\t\t\tlet totalOutput = 0;\n\t\t\tconst resolveResult = (success, error) => {\n\t\t\t\tif (resolved) return;\n\t\t\t\tresolved = true;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tconst out = Buffer.concat(stdoutChunks).toString();\n\t\t\t\tconst err = Buffer.concat(stderrChunks).toString();\n\t\t\t\tresolve({\n\t\t\t\t\tsuccess,\n\t\t\t\t\toutput: [out, err ? `\\n[stderr]\\n${err}` : \"\"].filter(Boolean).join(\"\").slice(0, MAX_OUTPUT) || \"(无输出)\",\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t};\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tif (!resolved) {\n\t\t\t\t\tif (!killProcessTree(child.pid)) try {\n\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t} catch {}\n\t\t\t\t\tresolveResult(false, `命令执行超时 (${timeoutSec} 秒)`);\n\t\t\t\t}\n\t\t\t}, timeoutMs);\n\t\t\tconst child = spawn(command, [], {\n\t\t\t\tcwd: ctx.root,\n\t\t\t\tshell: IS_WINDOWS ? \"powershell.exe\" : \"/bin/bash\",\n\t\t\t\tstdio: [\n\t\t\t\t\t\"ignore\",\n\t\t\t\t\t\"pipe\",\n\t\t\t\t\t\"pipe\"\n\t\t\t\t]\n\t\t\t});\n\t\t\tchild.stdout?.on(\"data\", (data) => {\n\t\t\t\tstdoutChunks.push(data);\n\t\t\t\ttotalOutput += data.length;\n\t\t\t\tif (totalOutput > MAX_OUTPUT) {\n\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\tif (!killProcessTree(child.pid)) try {\n\t\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\tresolveResult(false, \"命令输出超过上限 (50KB)\");\n\t\t\t\t\t}\n\t\t\t\t} else ctx.onUpdate?.(data.toString());\n\t\t\t});\n\t\t\tchild.stderr?.on(\"data\", (data) => {\n\t\t\t\tstderrChunks.push(data);\n\t\t\t\ttotalOutput += data.length;\n\t\t\t\tif (totalOutput > MAX_OUTPUT) {\n\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\tif (!killProcessTree(child.pid)) try {\n\t\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\tresolveResult(false, \"命令输出超过上限 (50KB)\");\n\t\t\t\t\t}\n\t\t\t\t} else ctx.onUpdate?.(data.toString());\n\t\t\t});\n\t\t\tchild.on(\"close\", (code) => {\n\t\t\t\tif (resolved) return;\n\t\t\t\tresolveResult(code === 0, code !== 0 ? `命令退出码: ${code}` : void 0);\n\t\t\t});\n\t\t\tchild.on(\"error\", (err) => {\n\t\t\t\tif (resolved) return;\n\t\t\t\tresolveResult(false, err.message);\n\t\t\t});\n\t\t});\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/web-search.js\nasync function searchSearXNG(query, num, baseURL) {\n\tconst url = `${baseURL.replace(/\\/+$/, \"\")}/search?format=json&q=${encodeURIComponent(query)}`;\n\tconst res = await fetch(url);\n\tif (!res.ok) throw new Error(`SearXNG returned ${res.status}`);\n\treturn ((await res.json()).results || []).slice(0, num).map((r) => ({\n\t\ttitle: r.title,\n\t\turl: r.url,\n\t\tsnippet: r.content || \"\"\n\t}));\n}\nasync function searchTavily(query, num, apiKey) {\n\tconst res = await fetch(\"https://api.tavily.com/search\", {\n\t\tmethod: \"POST\",\n\t\theaders: {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tAuthorization: `Bearer ${apiKey}`\n\t\t},\n\t\tbody: JSON.stringify({\n\t\t\tquery,\n\t\t\tmax_results: num,\n\t\t\tinclude_answer: false\n\t\t})\n\t});\n\tif (!res.ok) throw new Error(`Tavily returned ${res.status}`);\n\treturn ((await res.json()).results || []).slice(0, num).map((r) => ({\n\t\ttitle: r.title,\n\t\turl: r.url,\n\t\tsnippet: r.content || \"\"\n\t}));\n}\nvar webSearchTool = {\n\tname: \"web_search\",\n\tdescription: \"Search the internet for information. Use for latest news, documentation lookup, fact verification, etc. Only use when real-time or external knowledge is needed. Results include title, URL, and snippet.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tquery: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Search query (keyword or question)\"\n\t\t\t},\n\t\t\tnum: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\tdescription: \"Number of results, default 5, max 10\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"query\"]\n\t},\n\tasync execute(args, _ctx) {\n\t\tconst query = args.query?.trim();\n\t\tif (!query) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"缺少参数: query\"\n\t\t};\n\t\tconst num = Math.min(Math.max(typeof args.num === \"number\" ? args.num : 5, 1), 10);\n\t\tconst config = readConfig();\n\t\tif (!config.searchEnabled) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"搜索功能未启用,请在设置中开启\"\n\t\t};\n\t\tconst provider = config.searchProvider || \"searxng\";\n\t\ttry {\n\t\t\tlet results;\n\t\t\tif (provider === \"tavily\") {\n\t\t\t\tif (!config.tavilyApiKey) return {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\toutput: \"\",\n\t\t\t\t\terror: \"未配置 Tavily API Key,请在设置中填写\"\n\t\t\t\t};\n\t\t\t\tresults = await searchTavily(query, num, config.tavilyApiKey);\n\t\t\t} else results = await searchSearXNG(query, num, config.searxngURL || \"http://localhost:8080\");\n\t\t\tif (results.length === 0) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `未找到与「${query}」相关的结果。`\n\t\t\t};\n\t\t\tconst formatted = results.map((r, i) => `${i + 1}. **[${r.title}](${r.url})**\\n ${r.snippet}`).join(\"\\n\\n\");\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `搜索「${query}」的结果(共 ${results.length} 条):\\n\\n${formatted}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `搜索失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/paths.js\nvar QUALIA_HOME = join(homedir(), \".qualia\");\nvar DATA_DIR = join(QUALIA_HOME, \"data\");\nfunction getDataDir() {\n\treturn DATA_DIR;\n}\nfunction getDataPath(...segments) {\n\treturn join(DATA_DIR, ...segments);\n}\nfunction getConfigPath() {\n\treturn join(QUALIA_HOME, \"config.json\");\n}\n//#endregion\n//#region ../core/dist/tool/tools/read-memory.js\nvar MEMORY_PATH$2 = getDataPath(\"memory.md\");\nvar readMemoryTool = {\n\tname: \"read_memory\",\n\tdescription: \"Read long-term memory (data/memory.md). Optionally pass a query for keyword search — returns matching lines with their category headers. Without query, returns the full memory content. Use when you need to recall previously stored information about users, yourself, or important events. Note: the memory snapshot taken at session creation may be stale; this tool always returns the latest.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: { query: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"Optional. Search keyword (case-insensitive). Returns matching lines with their category headers. Omit to return all memory.\"\n\t\t} },\n\t\trequired: []\n\t},\n\tasync execute(args, _ctx) {\n\t\ttry {\n\t\t\tif (!existsSync(MEMORY_PATH$2)) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: \"(暂无记忆内容)\"\n\t\t\t};\n\t\t\tconst content = readFileSync(MEMORY_PATH$2, \"utf-8\");\n\t\t\tif (!content.trim()) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: \"(暂无记忆内容)\"\n\t\t\t};\n\t\t\tconst query = args.query;\n\t\t\tif (!query?.trim()) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: content\n\t\t\t};\n\t\t\tconst lines = content.split(\"\\n\");\n\t\t\tconst lowerQuery = query.trim().toLowerCase();\n\t\t\tconst resultLines = [];\n\t\t\tlet lastHeader = \"\";\n\t\t\tfor (const line of lines) {\n\t\t\t\tif (line.startsWith(\"## \")) lastHeader = line;\n\t\t\t\tif (line.trim() !== \"\" && !line.startsWith(\"## \") && line.toLowerCase().includes(lowerQuery)) {\n\t\t\t\t\tif (lastHeader && !resultLines.includes(lastHeader)) {\n\t\t\t\t\t\tresultLines.push(lastHeader);\n\t\t\t\t\t\tresultLines.push(\"\");\n\t\t\t\t\t}\n\t\t\t\t\tresultLines.push(line);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (resultLines.length === 0) return {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `(记忆中没有找到与 \"${query.trim()}\" 相关的内容)`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: resultLines.join(\"\\n\")\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `读取记忆失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/write-memory.js\nvar SECTION_META = `\n## 关于我自己 (Qualia)\n我是一个运行在本地环境中的 AI 伴侣,帮助用户完成开发工作和日常任务。\n\n## 关于用户\n(待记录)\n\n## 重要事件\n(待记录)\n`;\nvar MEMORY_PATH$1 = getDataPath(\"memory.md\");\nfunction ensureMemoryFile() {\n\tconst dir = getDataDir();\n\tif (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\tif (!existsSync(MEMORY_PATH$1) || !readFileSync(MEMORY_PATH$1, \"utf-8\").includes(\"## 关于用户\")) writeFileSync(MEMORY_PATH$1, SECTION_META.trim().replace(/\\r/g, \"\") + \"\\n\", \"utf-8\");\n}\nvar CATEGORY_HEADERS = {\n\tself: \"## 关于我自己 (Qualia)\",\n\tuser: \"## 关于用户\",\n\tevent: \"## 重要事件\"\n};\nfunction updateSection(current, category, content) {\n\tconst header = CATEGORY_HEADERS[category];\n\tif (!header) return current;\n\t[\n\t\t\"self\",\n\t\t\"user\",\n\t\t\"event\"\n\t].indexOf(category);\n\tlet result = \"\";\n\tlet inTarget = false;\n\tlet done = false;\n\tfor (const line of current.split(\"\\n\")) {\n\t\tif (line.startsWith(\"## \")) {\n\t\t\tif (inTarget) {\n\t\t\t\tresult += content + \"\\n\\n\";\n\t\t\t\tdone = true;\n\t\t\t}\n\t\t\tinTarget = line === header;\n\t\t} else if (inTarget && !done) continue;\n\t\tresult += line + \"\\n\";\n\t}\n\tif (inTarget && !done) result += content;\n\treturn result.trim() + \"\\n\";\n}\nvar writeMemoryTool = {\n\tname: \"write_memory\",\n\tdescription: \"Write important information to long-term memory (memory.md). Only use for information worth remembering long-term. Content is automatically injected into the system prompt of future sessions. Three categories: self (about yourself), user (about the user), event (important milestones). Each call overwrites the entire content of the given category.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tcategory: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Memory category: self (about yourself), user (about the user), event (important events)\",\n\t\t\t\tenum: [\n\t\t\t\t\t\"self\",\n\t\t\t\t\t\"user\",\n\t\t\t\t\t\"event\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tcontent: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"New content for this category (replaces existing). Write in Chinese, concise and brief, one item per line.\"\n\t\t\t}\n\t\t},\n\t\trequired: [\"category\", \"content\"]\n\t},\n\tasync execute(args, _ctx) {\n\t\tconst category = args.category;\n\t\tconst content = args.content;\n\t\tif (!category || !CATEGORY_HEADERS[category]) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `无效的类别: ${category},可选: self, user, event`\n\t\t};\n\t\tif (!content?.trim()) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"content 不能为空\"\n\t\t};\n\t\ttry {\n\t\t\tensureMemoryFile();\n\t\t\twriteFileSync(MEMORY_PATH$1, updateSection(readFileSync(MEMORY_PATH$1, \"utf-8\").replace(/\\r/g, \"\"), category, content.trim()), \"utf-8\");\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\toutput: `已更新记忆: ${CATEGORY_HEADERS[category]}\\n${content}`\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `写入失败: ${error.message}`\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/concurrency/file-mutex.js\nvar FileMutex = class {\n\tlocks = /* @__PURE__ */ new Map();\n\tasync run(key, fn) {\n\t\tawait this.acquire(key);\n\t\ttry {\n\t\t\treturn await fn();\n\t\t} finally {\n\t\t\tthis.release(key);\n\t\t}\n\t}\n\tacquire(key) {\n\t\tlet entry = this.locks.get(key);\n\t\tif (!entry) {\n\t\t\tentry = {\n\t\t\t\tlocked: false,\n\t\t\t\twaiters: []\n\t\t\t};\n\t\t\tthis.locks.set(key, entry);\n\t\t}\n\t\tif (!entry.locked) {\n\t\t\tentry.locked = true;\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tentry.waiters.push({\n\t\t\t\tresolve,\n\t\t\t\treject\n\t\t\t});\n\t\t});\n\t}\n\trelease(key) {\n\t\tconst entry = this.locks.get(key);\n\t\tif (!entry) return;\n\t\tconst next = entry.waiters.shift();\n\t\tif (next) next.resolve();\n\t\telse {\n\t\t\tentry.locked = false;\n\t\t\tthis.locks.delete(key);\n\t\t}\n\t}\n};\nvar fileMutex = new FileMutex();\n//#endregion\n//#region ../core/dist/concurrency/background-worker.js\nvar BackgroundWorker = class {\n\ttasks = /* @__PURE__ */ new Map();\n\tstates = /* @__PURE__ */ new Map();\n\tstarted = false;\n\tschedule(name, intervalMs, fn) {\n\t\tif (this.tasks.has(name)) throw new Error(`BackgroundWorker: task \"${name}\" already registered`);\n\t\tthis.tasks.set(name, {\n\t\t\tname,\n\t\t\tintervalMs,\n\t\t\tfn\n\t\t});\n\t\tthis.states.set(name, {\n\t\t\trunning: false,\n\t\t\ttimerId: null\n\t\t});\n\t\tif (this.started) this.scheduleNext(name);\n\t}\n\tstart() {\n\t\tif (this.started) return;\n\t\tthis.started = true;\n\t\tfor (const name of this.tasks.keys()) this.scheduleNext(name);\n\t}\n\tstop() {\n\t\tthis.started = false;\n\t\tfor (const [name, state] of this.states) {\n\t\t\tif (state.timerId) {\n\t\t\t\tclearTimeout(state.timerId);\n\t\t\t\tstate.timerId = null;\n\t\t\t}\n\t\t\tstate.running = false;\n\t\t}\n\t}\n\tscheduleNext(name) {\n\t\tconst task = this.tasks.get(name);\n\t\tconst state = this.states.get(name);\n\t\tif (!task || !state) return;\n\t\tstate.timerId = setTimeout(() => this.execute(name), task.intervalMs);\n\t}\n\tasync execute(name) {\n\t\tconst task = this.tasks.get(name);\n\t\tconst state = this.states.get(name);\n\t\tif (!task || !state) return;\n\t\tif (state.running) return;\n\t\tstate.running = true;\n\t\ttry {\n\t\t\tawait task.fn();\n\t\t} catch (e) {\n\t\t\tconsole.error(`[BackgroundWorker] task \"${name}\" error:`, e.message);\n\t\t} finally {\n\t\t\tstate.running = false;\n\t\t\tif (this.started) this.scheduleNext(name);\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/concurrency/session-lock.js\nvar SessionLock = class {\n\tsessions = /* @__PURE__ */ new Map();\n\tcreateRelease(sessionId) {\n\t\tlet released = false;\n\t\treturn () => {\n\t\t\tif (released) throw new Error(`SessionLock: session \"${sessionId}\" already released`);\n\t\t\treleased = true;\n\t\t\tthis.release(sessionId);\n\t\t};\n\t}\n\tasync acquire(sessionId) {\n\t\tlet entry = this.sessions.get(sessionId);\n\t\tif (!entry) {\n\t\t\tentry = {\n\t\t\t\tlocked: false,\n\t\t\t\twaiters: []\n\t\t\t};\n\t\t\tthis.sessions.set(sessionId, entry);\n\t\t}\n\t\tif (!entry.locked) {\n\t\t\tentry.locked = true;\n\t\t\treturn this.createRelease(sessionId);\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tentry.waiters.push({\n\t\t\t\tresolve,\n\t\t\t\treject\n\t\t\t});\n\t\t});\n\t}\n\trelease(sessionId) {\n\t\tconst entry = this.sessions.get(sessionId);\n\t\tif (!entry) return;\n\t\tconst next = entry.waiters.shift();\n\t\tif (next) next.resolve(this.createRelease(sessionId));\n\t\telse {\n\t\t\tentry.locked = false;\n\t\t\tthis.sessions.delete(sessionId);\n\t\t}\n\t}\n};\nvar sessionLock = new SessionLock();\n//#endregion\n//#region ../core/dist/task/store.js\nvar MAX_AGE_MS = 10080 * 60 * 1e3;\nfunction getPath() {\n\treturn getDataPath(\"tasks.json\");\n}\nfunction readAll() {\n\tconst path = getPath();\n\tif (!existsSync(path)) return [];\n\ttry {\n\t\tconst raw = readFileSync(path, \"utf-8\");\n\t\tconst parsed = JSON.parse(raw);\n\t\tif (!Array.isArray(parsed)) return [];\n\t\treturn parsed;\n\t} catch {\n\t\treturn [];\n\t}\n}\nfunction writeAll(tasks) {\n\tconst path = getPath();\n\tconst dir = getDataDir();\n\tif (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\tconst now = Date.now();\n\tconst pruned = tasks.filter((t) => t.status === \"pending\" || t.status === \"running\" || t.status === \"paused\" || now - t.createdAt < MAX_AGE_MS).slice(-100);\n\tconst tmpPath = path + \".tmp\";\n\twriteFileSync(tmpPath, JSON.stringify(pruned, null, \"\t\"), \"utf-8\");\n\trenameSync(tmpPath, path);\n}\nvar TASKS_MUTEX_KEY = \"tasks.json\";\nasync function createTask(name, prompt, scheduledAt) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst task = {\n\t\t\tid: crypto.randomUUID(),\n\t\t\tname,\n\t\t\tprompt,\n\t\t\tcreatedAt: Date.now(),\n\t\t\tscheduledAt,\n\t\t\tstatus: \"pending\"\n\t\t};\n\t\tconst all = readAll();\n\t\tall.push(task);\n\t\twriteAll(all);\n\t\treturn task;\n\t});\n}\nfunction getAllTasks() {\n\treturn readAll().sort((a, b) => b.createdAt - a.createdAt);\n}\nfunction getPendingTasks() {\n\treturn readAll().filter((t) => t.status === \"pending\" && t.scheduledAt <= Date.now());\n}\nasync function updateTaskStatus(id, status, extra) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst all = readAll();\n\t\tconst task = all.find((t) => t.id === id);\n\t\tif (!task) return false;\n\t\tif (!{\n\t\t\tpending: [\"running\", \"paused\"],\n\t\t\trunning: [\"completed\", \"failed\"],\n\t\t\tcompleted: [],\n\t\t\tfailed: [],\n\t\t\tpaused: [\"pending\"]\n\t\t}[status].includes(task.status)) return false;\n\t\ttask.status = status;\n\t\tif (status === \"completed\") {\n\t\t\ttask.completedAt = Date.now();\n\t\t\ttask.result = extra?.result;\n\t\t}\n\t\tif (status === \"failed\") {\n\t\t\ttask.completedAt = Date.now();\n\t\t\ttask.error = extra?.error;\n\t\t}\n\t\twriteAll(all);\n\t\treturn true;\n\t});\n}\nasync function pauseTask(id) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst all = readAll();\n\t\tconst task = all.find((t) => t.id === id);\n\t\tif (!task || task.status !== \"pending\") return false;\n\t\ttask.status = \"paused\";\n\t\twriteAll(all);\n\t\treturn true;\n\t});\n}\nasync function resumeTask(id) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst all = readAll();\n\t\tconst task = all.find((t) => t.id === id);\n\t\tif (!task || task.status !== \"paused\") return false;\n\t\ttask.status = \"pending\";\n\t\twriteAll(all);\n\t\treturn true;\n\t});\n}\nasync function deleteTask(id) {\n\treturn fileMutex.run(TASKS_MUTEX_KEY, async () => {\n\t\tconst all = readAll();\n\t\tconst idx = all.findIndex((t) => t.id === id);\n\t\tif (idx === -1) return false;\n\t\tall.splice(idx, 1);\n\t\twriteAll(all);\n\t\treturn true;\n\t});\n}\nfunction formatTasksForAI(tasks) {\n\tif (tasks.length === 0) return \"暂无任务。\";\n\tconst statusLabel = {\n\t\tpending: \"等待中\",\n\t\trunning: \"执行中\",\n\t\tcompleted: \"已完成\",\n\t\tfailed: \"失败\",\n\t\tpaused: \"已暂停\"\n\t};\n\treturn tasks.map((t) => {\n\t\tconst created = new Date(t.createdAt).toISOString().replace(\"T\", \" \").slice(0, 19);\n\t\tconst scheduled = new Date(t.scheduledAt).toISOString().replace(\"T\", \" \").slice(0, 19);\n\t\tlet entry = `## ${t.name}\\n`;\n\t\tentry += `- ID: ${t.id.slice(0, 8)}\\n`;\n\t\tentry += `- 状态: ${statusLabel[t.status] || t.status}\\n`;\n\t\tentry += `- 创建时间: ${created}\\n`;\n\t\tentry += `- 计划执行: ${scheduled}\\n`;\n\t\tif (t.prompt) entry += `- 任务描述: ${t.prompt.slice(0, 200)}${t.prompt.length > 200 ? \"...\" : \"\"}\\n`;\n\t\tif (t.result) entry += `- 执行结果: ${t.result.slice(0, 500)}${t.result.length > 500 ? \"...\" : \"\"}\\n`;\n\t\tif (t.error) entry += `- 错误: ${t.error.slice(0, 200)}\\n`;\n\t\tif (t.completedAt) {\n\t\t\tconst comp = new Date(t.completedAt).toISOString().replace(\"T\", \" \").slice(0, 19);\n\t\t\tentry += `- 完成时间: ${comp}\\n`;\n\t\t}\n\t\treturn entry;\n\t}).join(\"\\n\");\n}\n//#endregion\n//#region ../core/dist/storage/utils.js\nfunction formatSessionTitle(today, count) {\n\treturn `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, \"0\")}-${String(today.getDate()).padStart(2, \"0\")}-${String(count).padStart(2, \"0\")}`;\n}\n//#endregion\n//#region ../core/dist/storage/memory.js\n/**\n* MemoryStorage — 基于内存 Map 的存储实现\n*\n* 所有数据存储在内存中,进程重启后数据丢失。\n* 适用于开发测试或关闭持久化时使用。\n*/\nvar MemoryStorage = class {\n\tsessions = /* @__PURE__ */ new Map();\n\tmessages = /* @__PURE__ */ new Map();\n\tmessageById = /* @__PURE__ */ new Map();\n\tseqCounter = /* @__PURE__ */ new Map();\n\tasync createSession(title, memorySnapshot, workspace) {\n\t\tconst id = crypto.randomUUID();\n\t\tconst now = Date.now();\n\t\tconst today = new Date(now);\n\t\tconst startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate()).getTime();\n\t\tlet count = 0;\n\t\tfor (const s of this.sessions.values()) if (s.created_at >= startOfDay) count++;\n\t\tconst session = {\n\t\t\tid,\n\t\t\ttitle: title || formatSessionTitle(today, count + 1),\n\t\t\tcreated_at: now,\n\t\t\tupdated_at: now,\n\t\t\tparent_id: null,\n\t\t\tstatus: \"active\",\n\t\t\ttoken_count: 0,\n\t\t\tsummary: \"\",\n\t\t\tlast_summarized_at: null,\n\t\t\tmemory_snapshot: memorySnapshot || \"\",\n\t\t\tworkspace: workspace || \"\"\n\t\t};\n\t\tthis.sessions.set(id, session);\n\t\tthis.messages.set(id, []);\n\t\tthis.seqCounter.set(id, 0);\n\t\treturn session;\n\t}\n\tasync getSession(id) {\n\t\treturn this.sessions.get(id) || null;\n\t}\n\tasync listSessions() {\n\t\treturn Array.from(this.sessions.values()).sort((a, b) => b.updated_at - a.updated_at);\n\t}\n\tasync deleteSession(id) {\n\t\tthis.sessions.delete(id);\n\t\tconst msgs = this.messages.get(id) || [];\n\t\tfor (const msg of msgs) this.messageById.delete(msg.id);\n\t\tthis.messages.delete(id);\n\t\tthis.seqCounter.delete(id);\n\t}\n\tasync archiveSession(id) {\n\t\tconst session = this.sessions.get(id);\n\t\tif (session) {\n\t\t\tsession.status = \"archived\";\n\t\t\tsession.updated_at = Date.now();\n\t\t}\n\t}\n\tasync forkSession(id) {\n\t\tconst parent = this.sessions.get(id);\n\t\tif (!parent) throw new Error(`会话不存在: ${id}`);\n\t\tconst newSession = await this.createSession(`[分叉] ${parent.title}`, parent.memory_snapshot);\n\t\tnewSession.parent_id = id;\n\t\tnewSession.token_count = parent.token_count;\n\t\tthis.sessions.set(newSession.id, newSession);\n\t\tconst parentMessages = this.messages.get(id) || [];\n\t\tconst copiedMsgs = [];\n\t\tlet seq = 0;\n\t\tfor (const msg of parentMessages) {\n\t\t\tseq++;\n\t\t\tconst copy = {\n\t\t\t\t...msg,\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tsession_id: newSession.id,\n\t\t\t\tseq\n\t\t\t};\n\t\t\tcopiedMsgs.push(copy);\n\t\t\tthis.messageById.set(copy.id, copy);\n\t\t}\n\t\tthis.messages.set(newSession.id, copiedMsgs);\n\t\tthis.seqCounter.set(newSession.id, seq);\n\t\treturn newSession;\n\t}\n\tasync addMessage(sessionId, message) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (!session) throw new Error(`会话不存在: ${sessionId}`);\n\t\tconst seq = (this.seqCounter.get(sessionId) || 0) + 1;\n\t\tthis.seqCounter.set(sessionId, seq);\n\t\tconst record = {\n\t\t\t...message,\n\t\t\tid: message.id || crypto.randomUUID(),\n\t\t\tcreated_at: Date.now(),\n\t\t\tseq\n\t\t};\n\t\tconst list = this.messages.get(sessionId) || [];\n\t\tlist.push(record);\n\t\tthis.messages.set(sessionId, list);\n\t\tthis.messageById.set(record.id, record);\n\t\tsession.updated_at = Date.now();\n\t\treturn record;\n\t}\n\tasync getMessages(sessionId, options) {\n\t\tlet list = this.messages.get(sessionId) || [];\n\t\tif (options?.before !== void 0) list = list.filter((m) => m.seq < options.before);\n\t\tif (options?.limit !== void 0) list = list.slice(-options.limit);\n\t\treturn list;\n\t}\n\tasync getMessage(id) {\n\t\treturn this.messageById.get(id) || null;\n\t}\n\tasync deleteMessage(id) {\n\t\tconst msg = this.messageById.get(id);\n\t\tif (!msg) return;\n\t\tthis.messageById.delete(id);\n\t\tconst list = this.messages.get(msg.session_id);\n\t\tif (list) {\n\t\t\tconst idx = list.findIndex((m) => m.id === id);\n\t\t\tif (idx !== -1) list.splice(idx, 1);\n\t\t}\n\t}\n\tasync deleteMessagesFrom(sessionId, messageId) {\n\t\tconst list = this.messages.get(sessionId);\n\t\tif (!list) return;\n\t\tconst idx = list.findIndex((m) => m.id === messageId);\n\t\tif (idx === -1) return;\n\t\tconst toDelete = list.splice(idx);\n\t\tfor (const msg of toDelete) this.messageById.delete(msg.id);\n\t}\n\tasync getTokenCount(sessionId) {\n\t\treturn this.sessions.get(sessionId)?.token_count || 0;\n\t}\n\tasync updateTokenCount(sessionId, count) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (session) session.token_count = count;\n\t}\n\tasync setSessionTitle(sessionId, title) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (session) session.title = title;\n\t}\n\tasync getStaleSessions(idleMs) {\n\t\tconst now = Date.now();\n\t\tconst result = [];\n\t\tfor (const s of this.sessions.values()) {\n\t\t\tif (s.status !== \"active\") continue;\n\t\t\tif (idleMs !== null && now - s.updated_at <= idleMs) continue;\n\t\t\tif (s.last_summarized_at !== null && s.last_summarized_at >= s.updated_at) continue;\n\t\t\tconst msgs = this.messages.get(s.id);\n\t\t\tif (!msgs || msgs.length === 0) continue;\n\t\t\tresult.push(s);\n\t\t}\n\t\tresult.sort((a, b) => a.updated_at - b.updated_at);\n\t\treturn result;\n\t}\n\tasync getMessagesSinceSeq(sessionId, seq) {\n\t\treturn (this.messages.get(sessionId) || []).filter((m) => m.seq > seq);\n\t}\n\tasync updateSummary(sessionId, summary) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (session) {\n\t\t\tsession.summary = summary;\n\t\t\tsession.last_summarized_at = Date.now();\n\t\t}\n\t}\n\tasync getTodayUpdatedSessions() {\n\t\tconst now = /* @__PURE__ */ new Date();\n\t\tconst startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();\n\t\tconst endOfDay = startOfDay + 864e5;\n\t\tconst result = [];\n\t\tfor (const s of this.sessions.values()) if (s.summary && s.last_summarized_at && s.last_summarized_at >= startOfDay && s.last_summarized_at < endOfDay) result.push(s);\n\t\tresult.sort((a, b) => (a.last_summarized_at || 0) - (b.last_summarized_at || 0));\n\t\treturn result;\n\t}\n\tasync setMemorySnapshot(sessionId, snapshot) {\n\t\tconst session = this.sessions.get(sessionId);\n\t\tif (session) session.memory_snapshot = snapshot;\n\t}\n\tasync searchMessages(query, sessionId, limit = 10) {\n\t\tconst lowerQuery = query.toLowerCase();\n\t\tconst results = [];\n\t\tfor (const [sid, msgs] of this.messages) {\n\t\t\tif (sessionId && sid !== sessionId) continue;\n\t\t\tconst session = this.sessions.get(sid);\n\t\t\tfor (const msg of msgs) {\n\t\t\t\tif (!msg.content.toLowerCase().includes(lowerQuery)) continue;\n\t\t\t\tresults.push({\n\t\t\t\t\tsessionId: sid,\n\t\t\t\t\tsessionTitle: session?.title || \"\",\n\t\t\t\t\tmessageId: msg.id,\n\t\t\t\t\trole: msg.role,\n\t\t\t\t\tcontent: msg.content,\n\t\t\t\t\tcreatedAt: msg.created_at\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tresults.sort((a, b) => b.createdAt - a.createdAt);\n\t\treturn results.slice(0, limit);\n\t}\n\tasync setAudioPath(messageId, path) {\n\t\tconst msg = this.messageById.get(messageId);\n\t\tif (msg) msg.audio_path = path;\n\t}\n\tasync getMostRecentSession() {\n\t\tfor (const s of this.sessions.values()) if (s.status === \"active\") return s;\n\t\treturn null;\n\t}\n\tasync listWorkspaces() {\n\t\tconst workspaces = /* @__PURE__ */ new Set();\n\t\tfor (const s of this.sessions.values()) if (s.status === \"active\" && s.workspace) workspaces.add(s.workspace);\n\t\treturn Array.from(workspaces).sort();\n\t}\n};\n//#endregion\n//#region ../core/dist/storage/sqlite.js\n/**\n* SQLiteStorage — 基于 better-sqlite3 的持久化存储\n*\n* 使用 WAL 模式,支持外键约束。\n* 自动建表,联合索引 (session_id, seq)。\n*/\nvar SQLiteStorage = class {\n\tdb;\n\tstmts;\n\tconstructor(dbPath) {\n\t\tthis.db = new Database(dbPath);\n\t\tthis.db.pragma(\"journal_mode = WAL\");\n\t\tthis.db.pragma(\"foreign_keys = ON\");\n\t\tthis.initTables();\n\t\tthis.stmts = this.prepareStatements();\n\t}\n\tinitTables() {\n\t\tthis.db.exec(`\n\t\tCREATE TABLE IF NOT EXISTS sessions (\n\t\t\tid TEXT PRIMARY KEY,\n\t\t\ttitle TEXT NOT NULL DEFAULT '',\n\t\t\tcreated_at INTEGER NOT NULL,\n\t\t\tupdated_at INTEGER NOT NULL,\n\t\t\tparent_id TEXT,\n\t\t\tstatus TEXT NOT NULL DEFAULT 'active',\n\t\t\ttoken_count INTEGER NOT NULL DEFAULT 0,\n\t\t\tsummary TEXT NOT NULL DEFAULT '',\n\t\t\tlast_summarized_at INTEGER,\n\t\t\tmemory_snapshot TEXT NOT NULL DEFAULT '',\n\t\t\tworkspace TEXT NOT NULL DEFAULT ''\n\t\t);\n\t\t\tCREATE TABLE IF NOT EXISTS messages (\n\t\t\t\tid TEXT PRIMARY KEY,\n\t\t\t\tsession_id TEXT NOT NULL,\n\t\t\t\trole TEXT NOT NULL,\n\t\t\t\tcontent TEXT NOT NULL DEFAULT '',\n\t\t\t\treasoning_content TEXT,\n\t\t\t\ttool_calls TEXT,\n\t\t\t\ttool_call_id TEXT,\n\t\t\t\tname TEXT,\n\t\t\t\tusage TEXT,\n\t\t\t\taudio_path TEXT,\n\t\t\t\tcreated_at INTEGER NOT NULL,\n\t\t\t\tseq INTEGER NOT NULL,\n\t\t\t\tFOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE\n\t\t\t);\n\t\t\tCREATE INDEX IF NOT EXISTS idx_messages_session_seq\n\t\t\t\tON messages(session_id, seq);\n\t\t`);\n\t\tthis.migrate();\n\t}\n\tmigrate() {\n\t\tconst cols = this.db.pragma(\"table_info(sessions)\");\n\t\tconst columnNames = new Set(cols.map((c) => c.name));\n\t\tif (!columnNames.has(\"summary\")) this.db.exec(`ALTER TABLE sessions ADD COLUMN summary TEXT NOT NULL DEFAULT ''`);\n\t\tif (!columnNames.has(\"last_summarized_at\")) this.db.exec(`ALTER TABLE sessions ADD COLUMN last_summarized_at INTEGER`);\n\t\tif (!columnNames.has(\"memory_snapshot\")) this.db.exec(`ALTER TABLE sessions ADD COLUMN memory_snapshot TEXT NOT NULL DEFAULT ''`);\n\t\tif (!columnNames.has(\"workspace\")) this.db.exec(`ALTER TABLE sessions ADD COLUMN workspace TEXT NOT NULL DEFAULT ''`);\n\t}\n\tprepareStatements() {\n\t\treturn {\n\t\t\tcreateSession: this.db.prepare(`INSERT INTO sessions (id, title, created_at, updated_at, parent_id, status, token_count, summary, last_summarized_at, memory_snapshot, workspace) VALUES (?, ?, ?, ?, ?, ?, ?, '', NULL, ?, ?)`),\n\t\t\tgetSession: this.db.prepare(`SELECT * FROM sessions WHERE id = ?`),\n\t\t\tlistAllSessions: this.db.prepare(`SELECT * FROM sessions ORDER BY updated_at DESC`),\n\t\t\tdeleteSession: this.db.prepare(`DELETE FROM sessions WHERE id = ?`),\n\t\t\tupdateSessionStatus: this.db.prepare(`UPDATE sessions SET status = ?, updated_at = ? WHERE id = ?`),\n\t\t\tupdateSession: this.db.prepare(`UPDATE sessions SET title = ?, updated_at = ?, token_count = ? WHERE id = ?`),\n\t\t\tinsertMessage: this.db.prepare(`INSERT INTO messages (id, session_id, role, content, reasoning_content, tool_calls, tool_call_id, name, usage, audio_path, created_at, seq) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`),\n\t\t\tgetMessages: this.db.prepare(`SELECT * FROM messages WHERE session_id = ? AND (? IS NULL OR seq < ?) ORDER BY seq ASC`),\n\t\t\tgetMessagesSinceSeq: this.db.prepare(`SELECT * FROM messages WHERE session_id = ? AND seq > ? ORDER BY seq ASC`),\n\t\t\tgetMessage: this.db.prepare(`SELECT * FROM messages WHERE id = ?`),\n\t\t\tdeleteMessage: this.db.prepare(`DELETE FROM messages WHERE id = ?`),\n\t\t\tgetMaxSeq: this.db.prepare(`SELECT COALESCE(MAX(seq), 0) as max_seq FROM messages WHERE session_id = ?`),\n\t\t\tupdateAudioPath: this.db.prepare(`UPDATE messages SET audio_path = ? WHERE id = ?`),\n\t\t\tdeleteFromSeq: this.db.prepare(`DELETE FROM messages WHERE session_id = ? AND seq >= ?`),\n\t\t\tsetTitle: this.db.prepare(`UPDATE sessions SET title = ? WHERE id = ?`),\n\t\t\tupdateSummary: this.db.prepare(`UPDATE sessions SET summary = ?, last_summarized_at = ? WHERE id = ?`),\n\t\t\tgetStaleSessions: this.db.prepare(`SELECT * FROM sessions WHERE status = 'active' AND (? - updated_at > ?) AND (last_summarized_at IS NULL OR last_summarized_at < updated_at) AND id IN (SELECT DISTINCT session_id FROM messages) ORDER BY updated_at ASC`),\n\t\t\tgetAllUnsummarized: this.db.prepare(`SELECT * FROM sessions WHERE status = 'active' AND (last_summarized_at IS NULL OR last_summarized_at < updated_at) AND id IN (SELECT DISTINCT session_id FROM messages) ORDER BY updated_at ASC`),\n\t\t\tgetTodayUpdated: this.db.prepare(`SELECT * FROM sessions WHERE summary != '' AND last_summarized_at >= ? AND last_summarized_at < ? ORDER BY last_summarized_at ASC`),\n\t\t\tsetMemorySnapshot: this.db.prepare(`UPDATE sessions SET memory_snapshot = ? WHERE id = ?`),\n\t\t\tcountToday: this.db.prepare(`SELECT COUNT(*) as cnt FROM sessions WHERE created_at >= ? AND created_at < ?`),\n\t\t\tsearchMessages: this.db.prepare(`SELECT m.id as messageId, m.session_id as sessionId, m.role, m.content, m.created_at as createdAt, s.title as sessionTitle FROM messages m JOIN sessions s ON m.session_id = s.id WHERE m.content LIKE ? AND (? IS NULL OR m.session_id = ?) ORDER BY m.created_at DESC LIMIT ?`)\n\t\t};\n\t}\n\tasync createSession(title, memorySnapshot, workspace) {\n\t\tconst id = crypto.randomUUID();\n\t\tconst now = Date.now();\n\t\tconst effectiveTitle = title || this.generateDefaultTitle(now);\n\t\tthis.stmts.createSession.run(id, effectiveTitle, now, now, null, \"active\", 0, memorySnapshot || \"\", workspace || \"\");\n\t\treturn await this.getSession(id);\n\t}\n\tgenerateDefaultTitle(now) {\n\t\tconst today = new Date(now);\n\t\tconst startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate()).getTime();\n\t\tconst endOfDay = startOfDay + 864e5;\n\t\tconst { cnt } = this.stmts.countToday.get(startOfDay, endOfDay);\n\t\treturn formatSessionTitle(today, cnt + 1);\n\t}\n\tasync getSession(id) {\n\t\tconst row = this.stmts.getSession.get(id);\n\t\treturn row ? this.rowToSession(row) : null;\n\t}\n\tasync listSessions() {\n\t\treturn this.stmts.listAllSessions.all().map((row) => this.rowToSession(row));\n\t}\n\tasync deleteSession(id) {\n\t\tthis.stmts.deleteSession.run(id);\n\t}\n\tasync archiveSession(id) {\n\t\tthis.stmts.updateSessionStatus.run(\"archived\", Date.now(), id);\n\t}\n\tasync forkSession(id) {\n\t\tconst parent = await this.getSession(id);\n\t\tif (!parent) throw new Error(`会话不存在: ${id}`);\n\t\tconst newSession = await this.createSession(`[分叉] ${parent.title}`, parent.memory_snapshot);\n\t\tconst now = Date.now();\n\t\tthis.db.prepare(\"UPDATE sessions SET parent_id = ? WHERE id = ?\").run(id, newSession.id);\n\t\tconst parentMessages = await this.getMessages(id);\n\t\tlet seq = 0;\n\t\tfor (const msg of parentMessages) {\n\t\t\tseq++;\n\t\t\tthis.stmts.insertMessage.run(crypto.randomUUID(), newSession.id, msg.role, msg.content, msg.reasoning_content || null, msg.tool_calls ? JSON.stringify(msg.tool_calls) : null, msg.tool_call_id || null, msg.name || null, msg.usage ? JSON.stringify(msg.usage) : null, msg.audio_path || null, msg.created_at, seq);\n\t\t}\n\t\tthis.db.prepare(\"UPDATE sessions SET token_count = ?, updated_at = ? WHERE id = ?\").run(parent.token_count, now, newSession.id);\n\t\treturn await this.getSession(newSession.id);\n\t}\n\tasync addMessage(sessionId, message) {\n\t\tconst session = await this.getSession(sessionId);\n\t\tif (!session) throw new Error(`会话不存在: ${sessionId}`);\n\t\tconst { max_seq } = this.stmts.getMaxSeq.get(sessionId);\n\t\tconst seq = max_seq + 1;\n\t\tconst id = message.id || crypto.randomUUID();\n\t\tconst now = Date.now();\n\t\tthis.stmts.insertMessage.run(id, sessionId, message.role, message.content, message.reasoning_content || null, message.tool_calls ? JSON.stringify(message.tool_calls) : null, message.tool_call_id || null, message.name || null, message.usage ? JSON.stringify(message.usage) : null, message.audio_path || null, now, seq);\n\t\tthis.stmts.updateSession.run(session.title, now, session.token_count, sessionId);\n\t\treturn await this.getMessage(id);\n\t}\n\tasync getMessages(sessionId, options) {\n\t\tconst before = options?.before ?? null;\n\t\tlet result = this.stmts.getMessages.all(sessionId, before, before).map((row) => this.rowToMessage(row));\n\t\tif (options?.limit !== void 0) result = result.slice(-options.limit);\n\t\treturn result;\n\t}\n\tasync getMessage(id) {\n\t\tconst row = this.stmts.getMessage.get(id);\n\t\treturn row ? this.rowToMessage(row) : null;\n\t}\n\tasync deleteMessage(id) {\n\t\tthis.stmts.deleteMessage.run(id);\n\t}\n\tasync deleteMessagesFrom(sessionId, messageId) {\n\t\tconst msg = this.stmts.getMessage.get(messageId);\n\t\tif (!msg) return;\n\t\tthis.stmts.deleteFromSeq.run(sessionId, msg.seq);\n\t}\n\tasync getTokenCount(sessionId) {\n\t\treturn (await this.getSession(sessionId))?.token_count || 0;\n\t}\n\tasync updateTokenCount(sessionId, count) {\n\t\tconst session = await this.getSession(sessionId);\n\t\tif (session) this.stmts.updateSession.run(session.title, Date.now(), count, sessionId);\n\t}\n\tasync setSessionTitle(sessionId, title) {\n\t\tthis.stmts.setTitle.run(title, sessionId);\n\t}\n\tasync searchMessages(query, sessionId, limit = 10) {\n\t\tconst pattern = `%${query}%`;\n\t\treturn this.stmts.searchMessages.all(pattern, sessionId || null, sessionId || null, limit).map((r) => ({\n\t\t\tsessionId: r.sessionId,\n\t\t\tsessionTitle: r.sessionTitle,\n\t\t\tmessageId: r.messageId,\n\t\t\trole: r.role,\n\t\t\tcontent: r.content,\n\t\t\tcreatedAt: r.createdAt\n\t\t}));\n\t}\n\tasync setAudioPath(messageId, path) {\n\t\tthis.stmts.updateAudioPath.run(path, messageId);\n\t}\n\tasync getMostRecentSession() {\n\t\tconst rows = this.stmts.listAllSessions.all();\n\t\tfor (const row of rows) if (row.status === \"active\") return this.rowToSession(row);\n\t\treturn null;\n\t}\n\tasync listWorkspaces() {\n\t\treturn this.db.prepare(`SELECT DISTINCT workspace FROM sessions WHERE status = 'active' AND workspace != '' ORDER BY workspace ASC`).all().map((r) => r.workspace);\n\t}\n\tasync getStaleSessions(idleMs) {\n\t\tlet rows;\n\t\tif (idleMs === null) rows = this.stmts.getAllUnsummarized.all();\n\t\telse {\n\t\t\tconst now = Date.now();\n\t\t\trows = this.stmts.getStaleSessions.all(now, idleMs);\n\t\t}\n\t\treturn rows.map((row) => this.rowToSession(row));\n\t}\n\tasync getMessagesSinceSeq(sessionId, seq) {\n\t\treturn this.stmts.getMessagesSinceSeq.all(sessionId, seq).map((row) => this.rowToMessage(row));\n\t}\n\tasync updateSummary(sessionId, summary) {\n\t\tthis.stmts.updateSummary.run(summary, Date.now(), sessionId);\n\t}\n\tasync getTodayUpdatedSessions() {\n\t\tconst now = /* @__PURE__ */ new Date();\n\t\tconst startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();\n\t\tconst endOfDay = startOfDay + 864e5;\n\t\treturn this.stmts.getTodayUpdated.all(startOfDay, endOfDay).map((row) => this.rowToSession(row));\n\t}\n\tasync setMemorySnapshot(sessionId, snapshot) {\n\t\tthis.stmts.setMemorySnapshot.run(snapshot, sessionId);\n\t}\n\trowToSession(row) {\n\t\treturn {\n\t\t\tid: row.id,\n\t\t\ttitle: row.title,\n\t\t\tcreated_at: row.created_at,\n\t\t\tupdated_at: row.updated_at,\n\t\t\tparent_id: row.parent_id,\n\t\t\tstatus: row.status,\n\t\t\ttoken_count: row.token_count,\n\t\t\tsummary: row.summary || \"\",\n\t\t\tlast_summarized_at: row.last_summarized_at ?? null,\n\t\t\tmemory_snapshot: row.memory_snapshot || \"\",\n\t\t\tworkspace: row.workspace || \"\"\n\t\t};\n\t}\n\trowToMessage(row) {\n\t\treturn {\n\t\t\tid: row.id,\n\t\t\tsession_id: row.session_id,\n\t\t\trole: row.role,\n\t\t\tcontent: row.content,\n\t\t\treasoning_content: row.reasoning_content || void 0,\n\t\t\ttool_calls: row.tool_calls ? JSON.parse(row.tool_calls) : void 0,\n\t\t\ttool_call_id: row.tool_call_id || void 0,\n\t\t\tname: row.name || void 0,\n\t\t\tusage: row.usage ? JSON.parse(row.usage) : void 0,\n\t\t\taudio_path: row.audio_path || void 0,\n\t\t\tcreated_at: row.created_at,\n\t\t\tseq: row.seq\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/storage/index.js\nvar _memory = null;\nvar _sqlite = null;\nfunction createStorage(config) {\n\tif (config.enabled) {\n\t\tif (!_sqlite) _sqlite = new SQLiteStorage(config.dbPath || getDataPath(\"db.sqlite\"));\n\t\treturn _sqlite;\n\t}\n\tif (!_memory) _memory = new MemoryStorage();\n\treturn _memory;\n}\n//#endregion\n//#region ../core/dist/task/executor.js\nvar TASK_TIMEOUT_MS = 600 * 1e3;\nasync function executeTask(task, onComplete) {\n\tif (!await updateTaskStatus(task.id, \"running\")) return;\n\tlet result = \"\";\n\tlet error;\n\ttry {\n\t\tconst config = readConfig();\n\t\tif (!config.activeModel) throw new Error(\"未选择模型\");\n\t\tconst providerConfig = getProviderForModel(config.activeModel);\n\t\tif (!providerConfig) throw new Error(\"未找到供应商配置\");\n\t\tconst model = getActiveModel();\n\t\tconst provider = createProvider({\n\t\t\t...providerConfig,\n\t\t\tactiveModel: model?.id || config.activeModel,\n\t\t\tcontextWindow: model?.contextWindow || 1048576\n\t\t});\n\t\tconst storage = createStorage({ enabled: false });\n\t\tconst registry = new ToolRegistry();\n\t\tfor (const t of CORE_TOOLS) if (t.name !== \"write_memory\") registry.register(t);\n\t\tregistry.register(createSearchHistoryTool(storage));\n\t\tconst abortController = new AbortController();\n\t\tconst timeout = setTimeout(() => abortController.abort(), TASK_TIMEOUT_MS);\n\t\ttry {\n\t\t\tconst buildResult = {\n\t\t\t\tmessages: [{\n\t\t\t\t\trole: \"system\",\n\t\t\t\t\tcontent: `You are a background automation agent. Execute the task description strictly and output a concise result summary in Chinese.\nDo not ask the user any questions. Do not wait for confirmation. Do not create new scheduled tasks.\nIf an operation requires confirmation, skip it and explain why.`\n\t\t\t\t}, {\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: task.prompt\n\t\t\t\t}],\n\t\t\t\tcontextWindow: getContextWindow()\n\t\t\t};\n\t\t\tconst agent = new AgentLoop(provider, storage, registry, async () => false, abortController.signal, new AgentLogger(`task-${task.id.slice(0, 8)}`), config.compressionMode, config.compressionThreshold);\n\t\t\tconst sid = (await storage.createSession(void 0, void 0, process.cwd())).id;\n\t\t\tfor await (const event of agent.run(sid, task.prompt, buildResult)) if (event.type === \"content\") result += event.text;\n\t\t\telse if (event.type === \"error\") error = event.message;\n\t\t\telse if (event.type === \"retry_exhausted\") error = event.message;\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\tif (error) await updateTaskStatus(task.id, \"failed\", { error });\n\t\telse {\n\t\t\tresult = result.trim();\n\t\t\tawait updateTaskStatus(task.id, \"completed\", { result });\n\t\t}\n\t\tawait onComplete(result, error);\n\t} catch (e) {\n\t\terror = e.message;\n\t\tawait updateTaskStatus(task.id, \"failed\", { error });\n\t\tawait onComplete(\"\", error);\n\t}\n}\n//#endregion\n//#region ../core/dist/task/scheduler.js\nvar SCAN_INTERVAL_MS = 15e3;\nvar worker = null;\nvar notificationCallback = null;\nfunction setTaskNotificationHandler(fn) {\n\tnotificationCallback = fn;\n}\nasync function tick() {\n\tconst pending = getPendingTasks();\n\tfor (const task of pending) await executeTask(task, async (result, error) => {\n\t\tif (notificationCallback) if (error) await notificationCallback({\n\t\t\ttitle: `任务失败: ${task.name}`,\n\t\t\tbody: error,\n\t\t\ttype: \"error\"\n\t\t});\n\t\telse {\n\t\t\tconst preview = result.slice(0, 300) + (result.length > 300 ? \"...\" : \"\");\n\t\t\tawait notificationCallback({\n\t\t\t\ttitle: `任务完成: ${task.name}`,\n\t\t\t\tbody: preview,\n\t\t\t\ttype: \"task_complete\"\n\t\t\t});\n\t\t}\n\t});\n}\nfunction startScheduler() {\n\tif (worker) return;\n\tworker = new BackgroundWorker();\n\tworker.schedule(\"task-tick\", SCAN_INTERVAL_MS, tick);\n\tworker.start();\n}\n//#endregion\n//#region ../core/dist/tool/tools/schedule-task.js\nvar scheduleTaskTool = {\n\tname: \"schedule_task\",\n\tdescription: \"Create a scheduled one-shot task. The task runs automatically at the specified future time (no conversation context) and the user is notified on completion. Before using, run exec to get the current system time to ensure scheduledAt is in the future.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tname: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Task name (short description, e.g. \\\"Data processing\\\")\"\n\t\t\t},\n\t\t\tprompt: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"Task description — this is the sole instruction the model receives when executing in the background with no conversation context. Must be self-contained: what to do, expected output format, any necessary details\"\n\t\t\t},\n\t\t\tscheduledAt: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"ISO 8601 datetime string (e.g. 2026-06-16T14:30:00Z). Must be in the future. Use exec to get current system time first.\"\n\t\t\t}\n\t\t},\n\t\trequired: [\n\t\t\t\"name\",\n\t\t\t\"prompt\",\n\t\t\t\"scheduledAt\"\n\t\t]\n\t},\n\texecute: async (args) => {\n\t\tconst name = args.name;\n\t\tconst prompt = args.prompt;\n\t\tconst scheduledAtStr = args.scheduledAt;\n\t\tif (!name?.trim() || !prompt?.trim() || !scheduledAtStr?.trim()) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: \"参数不完整:name、prompt、scheduledAt 均为必填\"\n\t\t};\n\t\tconst scheduledAt = new Date(scheduledAtStr).getTime();\n\t\tif (isNaN(scheduledAt)) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `无法解析时间 \"${scheduledAtStr}\",请使用 ISO 8601 格式,如 2026-06-16T14:30:00Z`\n\t\t};\n\t\tconst now = Date.now();\n\t\tif (scheduledAt <= now) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `计划执行时间 ${scheduledAtStr} 已过期。当前时间是 ${new Date(now).toISOString()},请设置一个未来的时间`\n\t\t};\n\t\tif (scheduledAt > now + 720 * 60 * 60 * 1e3) return {\n\t\t\tsuccess: false,\n\t\t\toutput: \"\",\n\t\t\terror: `计划执行时间不能超过 30 天后`\n\t\t};\n\t\tconst task = await createTask(name.trim(), prompt.trim(), scheduledAt);\n\t\tconst formatted = new Date(scheduledAt).toISOString().replace(\"T\", \" \").slice(0, 19);\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\toutput: `任务已创建:\\n- ID: ${task.id.slice(0, 8)}\\n- 名称: ${task.name}\\n- 计划执行: ${formatted}\\n\\n任务将在指定时间自动执行,完成后通过 Email 通知你。`\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/read-tasks.js\nvar readTasksTool = {\n\tname: \"read_tasks\",\n\tdescription: \"Query scheduled task list and results. View all tasks (pending, running, completed, failed, paused) or filter by status. The AI is NOT automatically notified of completions — you must manually call this tool to check.\",\n\tparameters: {\n\t\ttype: \"object\",\n\t\tproperties: { status: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"Filter by status: pending, running, completed, failed, paused. Omit to return all.\"\n\t\t} },\n\t\trequired: []\n\t},\n\texecute: async (args) => {\n\t\tconst statusFilter = args.status?.trim();\n\t\tlet tasks = getAllTasks();\n\t\tif (statusFilter) {\n\t\t\tconst valid = [\n\t\t\t\t\"pending\",\n\t\t\t\t\"running\",\n\t\t\t\t\"completed\",\n\t\t\t\t\"failed\",\n\t\t\t\t\"paused\"\n\t\t\t];\n\t\t\tif (!valid.includes(statusFilter)) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: `无效的状态值 \"${statusFilter}\",可选: ${valid.join(\", \")}`\n\t\t\t};\n\t\t\ttasks = tasks.filter((t) => t.status === statusFilter);\n\t\t}\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\toutput: formatTasksForAI(tasks)\n\t\t};\n\t}\n};\n//#endregion\n//#region ../core/dist/tool/tools/search-history.js\nfunction formatResults(results, query) {\n\tif (results.length === 0) return `(未在历史对话中找到与 \"${query}\" 相关的内容)`;\n\tconst lines = [`找到 ${results.length} 条与 \"${query}\" 相关的结果:`];\n\tlet lastSession = \"\";\n\tfor (const r of results) {\n\t\tif (r.sessionTitle !== lastSession) {\n\t\t\tlastSession = r.sessionTitle;\n\t\t\tlines.push(\"\", `--- ${r.sessionTitle} ---`);\n\t\t}\n\t\tconst date = new Date(r.createdAt).toLocaleString(\"zh-CN\");\n\t\tconst roleLabel = r.role === \"user\" ? \"用户\" : r.role === \"assistant\" ? \"AI\" : r.role;\n\t\tconst snippet = r.content.length > 200 ? r.content.slice(0, 200) + \"...\" : r.content;\n\t\tlines.push(`[${date}] ${roleLabel}: ${snippet}`);\n\t}\n\treturn lines.join(\"\\n\");\n}\nfunction createSearchHistoryTool(storage) {\n\treturn {\n\t\tname: \"search_history\",\n\t\tdescription: \"Search conversation history across all sessions with fuzzy text matching. Use when you need to recall what the user discussed before. Note: this searches chat records, not long-term memory (use read_memory for that).\",\n\t\tparameters: {\n\t\t\ttype: \"object\",\n\t\t\tproperties: {\n\t\t\t\tquery: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"Search keyword or phrase (case-insensitive). Matches content field of all messages.\"\n\t\t\t\t},\n\t\t\t\tsession_id: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"Optional. Limit search to a specific session. Omit to search all sessions.\"\n\t\t\t\t},\n\t\t\t\tlimit: {\n\t\t\t\t\ttype: \"number\",\n\t\t\t\t\tdescription: \"Optional. Max results, default 10.\"\n\t\t\t\t}\n\t\t\t},\n\t\t\trequired: [\"query\"]\n\t\t},\n\t\tasync execute(args, _ctx) {\n\t\t\tconst query = args.query;\n\t\t\tconst sessionId = args.session_id;\n\t\t\tconst limit = args.limit || 10;\n\t\t\tif (!query?.trim()) return {\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: \"query 不能为空\"\n\t\t\t};\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\toutput: formatResults(await storage.searchMessages(query.trim(), sessionId || void 0, limit), query.trim())\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\toutput: \"\",\n\t\t\t\t\terror: `搜索失败: ${error.message}`\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n}\n//#endregion\n//#region ../core/dist/tool/index.js\n/** 核心工具集:文件操作 + 搜索 + 记忆(Chat / Gateway 使用,再拼接 SCHEDULING_TOOLS 即为全量) */\nvar CORE_TOOLS = [\n\treadFileTool,\n\twriteFileTool,\n\tdeleteFileTool,\n\teditTool,\n\texecTool,\n\twebSearchTool,\n\treadMemoryTool,\n\twriteMemoryTool\n];\n/** 调度工具集 */\nvar SCHEDULING_TOOLS = [scheduleTaskTool, readTasksTool];\n//#endregion\n//#region ../core/dist/agent/types.js\n/**\n* AgentLoop 状态机状态枚举\n*\n* 每个状态对应循环中的一个确定阶段,状态转换时触发对应的 LoopHooks 回调。\n*/\nvar AgentState;\n(function(AgentState) {\n\tAgentState[\"INIT\"] = \"INIT\";\n\tAgentState[\"PRE_LLM\"] = \"PRE_LLM\";\n\tAgentState[\"LLM_STREAMING\"] = \"LLM_STREAMING\";\n\tAgentState[\"POST_LLM\"] = \"POST_LLM\";\n\tAgentState[\"LLM_RETRY_WAIT\"] = \"LLM_RETRY_WAIT\";\n\tAgentState[\"PRE_TOOL\"] = \"PRE_TOOL\";\n\tAgentState[\"TOOL_EXECUTING\"] = \"TOOL_EXECUTING\";\n\tAgentState[\"AWAIT_CONFIRM\"] = \"AWAIT_CONFIRM\";\n\tAgentState[\"POST_TOOL\"] = \"POST_TOOL\";\n\tAgentState[\"PERSIST_TURN\"] = \"PERSIST_TURN\";\n\tAgentState[\"DONE\"] = \"DONE\";\n\tAgentState[\"ERROR\"] = \"ERROR\";\n})(AgentState || (AgentState = {}));\n//#endregion\n//#region ../core/dist/agent/message-sanitizer.js\nfunction extractTextContent$1(content) {\n\tif (typeof content === \"string\") return content;\n\treturn content.filter((p) => p.type === \"text\").map((p) => p.text).join(\"\\n\");\n}\nfunction mergeContent(a, b) {\n\treturn extractTextContent$1(a) + \"\\n\\n\" + extractTextContent$1(b);\n}\nvar SURROGATE_RE = /[\\uD800-\\uDFFF]/g;\nfunction stripSurrogates(text) {\n\treturn text.replace(SURROGATE_RE, \"�\");\n}\nfunction cleanContent(content) {\n\tif (typeof content === \"string\") return stripSurrogates(content);\n\treturn content.map((part) => {\n\t\tif (part.type === \"text\") return {\n\t\t\t...part,\n\t\t\ttext: stripSurrogates(part.text)\n\t\t};\n\t\treturn part;\n\t});\n}\n/**\n* 修复相邻相同角色消息:\n* - 连续 user → 合并为一条(内容拼接)\n* - 连续 assistant(不含 tool_calls)→ 合并\n* - 连续 assistant 其中之一有 tool_calls → 保留两者(tool_calls 不能合并)\n*/\nfunction repairRoleAlternation(messages) {\n\tif (messages.length <= 1) return messages;\n\tconst result = [messages[0]];\n\tfor (let i = 1; i < messages.length; i++) {\n\t\tconst prev = result[result.length - 1];\n\t\tconst curr = messages[i];\n\t\tif (prev.role === curr.role && curr.role === \"user\") result[result.length - 1] = {\n\t\t\trole: \"user\",\n\t\t\tcontent: mergeContent(prev.content, curr.content)\n\t\t};\n\t\telse if (prev.role === curr.role && curr.role === \"assistant\") if (prev.tool_calls || curr.tool_calls) result.push(curr);\n\t\telse {\n\t\t\tconst merged = {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: mergeContent(prev.content, curr.content)\n\t\t\t};\n\t\t\tif (prev.reasoning_content || curr.reasoning_content) merged.reasoning_content = [prev.reasoning_content, curr.reasoning_content].filter(Boolean).join(\"\\n\\n\");\n\t\t\tif (prev.name) merged.name = prev.name;\n\t\t\tresult[result.length - 1] = merged;\n\t\t}\n\t\telse result.push(curr);\n\t}\n\treturn result;\n}\n/**\n* 移除孤儿 tool 结果:\n* tool role 消息的 tool_call_id 必须在前面的 assistant.tool_calls 中存在。\n*/\nfunction stripOrphanToolResults(messages) {\n\tconst activeToolIds = /* @__PURE__ */ new Set();\n\tfor (const msg of messages) if (msg.role === \"assistant\" && msg.tool_calls) for (const tc of msg.tool_calls) activeToolIds.add(tc.id);\n\treturn messages.filter((msg) => {\n\t\tif (msg.role !== \"tool\") return true;\n\t\tif (!msg.tool_call_id) return false;\n\t\treturn activeToolIds.has(msg.tool_call_id);\n\t});\n}\nfunction stripEmptyMessages(messages) {\n\treturn messages.filter((msg) => {\n\t\tif (extractTextContent$1(msg.content).trim() === \"\" && !msg.tool_calls && msg.role !== \"tool\") return false;\n\t\treturn true;\n\t});\n}\n/**\n* 消息清洗管道\n*\n* 1. 移除空消息(无内容且无 tool_calls)\n* 2. 清除 Unicode surrogate(\\uD800-\\uDFFF)\n* 3. 修复角色交替(合并连续 user/assistant)\n* 4. 移除孤儿 tool 结果(无匹配 tool_call_id)\n*\n* 返回新的 Message 数组,不修改原数组。\n*/\nfunction sanitizeMessages(messages) {\n\tlet result = stripEmptyMessages(messages);\n\tresult = result.map((msg) => {\n\t\tconst cleaned = {\n\t\t\trole: msg.role,\n\t\t\tcontent: cleanContent(msg.content)\n\t\t};\n\t\tif (msg.name) cleaned.name = stripSurrogates(msg.name);\n\t\tif (msg.tool_call_id) cleaned.tool_call_id = stripSurrogates(msg.tool_call_id);\n\t\tif (msg.reasoning_content) cleaned.reasoning_content = stripSurrogates(msg.reasoning_content);\n\t\tif (msg.tool_calls) cleaned.tool_calls = msg.tool_calls.map((tc) => ({\n\t\t\t...tc,\n\t\t\tfunction: {\n\t\t\t\tname: stripSurrogates(tc.function.name),\n\t\t\t\targuments: stripSurrogates(tc.function.arguments)\n\t\t\t}\n\t\t}));\n\t\treturn cleaned;\n\t});\n\tresult = repairRoleAlternation(result);\n\tresult = stripOrphanToolResults(result);\n\treturn result;\n}\n//#endregion\n//#region ../core/dist/agent/loop.js\nfunction extractTextContent(content) {\n\tif (typeof content === \"string\") return content;\n\treturn content.filter((p) => p.type === \"text\" && \"text\" in p).map((p) => p.text).join(\"\\n\");\n}\nvar MAX_LLM_RETRIES = 5;\nvar RETRY_BASE_DELAY = 1e3;\nvar CONTEXT_WINDOW_DEFAULT = 1048576;\nvar CONTINUE_THRESHOLD = 2e4;\nvar MAX_TOOL_ITERATIONS$1 = 50;\nvar COMPRESSION_THRESHOLD_DEFAULT = 256e3;\nfunction buildSummaryContent(messages, initialSystem) {\n\tconst relevant = messages.filter((m) => m.role !== \"system\").filter((m) => m.role !== \"tool\");\n\tlet header = \"\";\n\tif (initialSystem) header = `原始系统提示词摘要: ${initialSystem.slice(0, 200)}\\n\\n`;\n\tconst lines = [];\n\tfor (const m of relevant) {\n\t\tconst role = m.role === \"user\" ? \"用户\" : \"AI\";\n\t\tconst text = extractTextContent(m.content);\n\t\tlines.push(`[${role}] ${text.slice(0, 2e3)}`);\n\t}\n\treturn header + lines.join(\"\\n\");\n}\nvar AgentLoop = class {\n\tprovider;\n\tstorage;\n\tregistry;\n\tonConfirm;\n\tsignal;\n\thooks;\n\tstate = AgentState.INIT;\n\teffectiveSessionId = \"\";\n\tcontextWindow = CONTEXT_WINDOW_DEFAULT;\n\tbuildResult;\n\tuserMsg;\n\tmessages = [];\n\ttools = [];\n\ttotalUsage;\n\titeration = 0;\n\tfullContent = \"\";\n\tfullReasoning = \"\";\n\tcollectedToolCalls = /* @__PURE__ */ new Map();\n\tchunkUsage;\n\tattempt = 0;\n\tresolvedToolCalls = [];\n\ttoolIndex = 0;\n\ttoolResultMsgs = [];\n\tcurrentToolCall;\n\tcurrentArgs = {};\n\tpendingConfirmation;\n\ttoolContext;\n\tcompressionMode;\n\tcompressionThreshold;\n\tconstructor(provider, storage, registry, onConfirm, signal, hooks = {}, compressionMode = \"auto\", compressionThreshold = COMPRESSION_THRESHOLD_DEFAULT) {\n\t\tthis.provider = provider;\n\t\tthis.storage = storage;\n\t\tthis.registry = registry;\n\t\tthis.onConfirm = onConfirm;\n\t\tthis.signal = signal;\n\t\tthis.hooks = hooks;\n\t\tthis.toolContext = new ToolContext(process.cwd());\n\t\tthis.compressionMode = compressionMode;\n\t\tthis.compressionThreshold = compressionThreshold;\n\t}\n\tasync *run(sessionId, userMessage, buildResult, userMessageId) {\n\t\tthis.effectiveSessionId = sessionId;\n\t\tthis.contextWindow = buildResult.contextWindow || CONTEXT_WINDOW_DEFAULT;\n\t\tthis.buildResult = buildResult;\n\t\tthis.messages = [...buildResult.messages];\n\t\tthis.tools = this.registry.getDefinitions();\n\t\tthis.totalUsage = void 0;\n\t\tthis.iteration = 0;\n\t\tthis.state = AgentState.INIT;\n\t\tconst session = await this.storage.getSession(sessionId);\n\t\tif (session?.workspace) this.toolContext = new ToolContext(session.workspace);\n\t\tpendingSteering.delete(sessionId);\n\t\ttry {\n\t\t\twhile (true) {\n\t\t\t\tif (this.state === AgentState.DONE || this.state === AgentState.ERROR) break;\n\t\t\t\tswitch (this.state) {\n\t\t\t\t\tcase AgentState.INIT:\n\t\t\t\t\t\tyield* this.doInit(userMessage, userMessageId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.PRE_LLM:\n\t\t\t\t\t\tyield* this.doPreLlm();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.LLM_STREAMING:\n\t\t\t\t\t\tyield* this.doLlmStreaming();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.POST_LLM:\n\t\t\t\t\t\tyield* this.doPostLlm();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.LLM_RETRY_WAIT:\n\t\t\t\t\t\tyield* this.doLlmRetryWait();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.PRE_TOOL:\n\t\t\t\t\t\tyield* this.doPreTool();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.TOOL_EXECUTING:\n\t\t\t\t\t\tyield* this.doToolExecuting();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.AWAIT_CONFIRM:\n\t\t\t\t\t\tyield* this.doAwaitConfirm();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.POST_TOOL:\n\t\t\t\t\t\tyield* this.doPostTool();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.PERSIST_TURN:\n\t\t\t\t\t\tyield* this.doPersistTurn();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AgentState.DONE:\n\t\t\t\t\tcase AgentState.ERROR: break;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tyield {\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: error.message || \"未知错误\"\n\t\t\t};\n\t\t}\n\t}\n\tasync *doInit(userMessage, userMessageId) {\n\t\tthis.userMsg = await this.storage.addMessage(this.effectiveSessionId, {\n\t\t\tid: userMessageId,\n\t\t\tsession_id: this.effectiveSessionId,\n\t\t\trole: \"user\",\n\t\t\tcontent: userMessage\n\t\t});\n\t\tthis.state = AgentState.PRE_LLM;\n\t}\n\tasync *doPreLlm() {\n\t\tif (this.signal?.aborted) {\n\t\t\tthis.state = AgentState.DONE;\n\t\t\treturn;\n\t\t}\n\t\tif (this.iteration >= MAX_TOOL_ITERATIONS$1) {\n\t\t\tyield {\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `达到最大工具调用次数限制(${MAX_TOOL_ITERATIONS$1}次),请简化任务后重试`\n\t\t\t};\n\t\t\tthis.state = AgentState.ERROR;\n\t\t\treturn;\n\t\t}\n\t\tthis.fullContent = \"\";\n\t\tthis.fullReasoning = \"\";\n\t\tthis.collectedToolCalls.clear();\n\t\tthis.chunkUsage = void 0;\n\t\tthis.attempt = 0;\n\t\tyield* this.consumeSteering();\n\t\tconst modified = await this.hooks.beforeLlmCall?.(this.messages);\n\t\tif (modified) this.messages = modified;\n\t\tthis.state = AgentState.LLM_STREAMING;\n\t}\n\tasync *consumeSteering() {\n\t\tconst steering = pendingSteering.get(this.effectiveSessionId);\n\t\tif (!steering || steering.length === 0) return;\n\t\tconst drained = steering.splice(0);\n\t\tfor (const s of drained) {\n\t\t\tawait this.storage.addMessage(this.effectiveSessionId, {\n\t\t\t\tsession_id: this.effectiveSessionId,\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: s.text\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: s.text\n\t\t\t});\n\t\t\tyield {\n\t\t\t\ttype: \"steering_consumed\",\n\t\t\t\tmessageId: s.messageId\n\t\t\t};\n\t\t}\n\t}\n\tasync *doLlmStreaming() {\n\t\ttry {\n\t\t\tconst apiMessages = sanitizeMessages(this.messages);\n\t\t\tconst stream = this.provider.chatStream({\n\t\t\t\tmessages: apiMessages,\n\t\t\t\ttools: this.tools.length > 0 ? this.tools : void 0\n\t\t\t});\n\t\t\tfor await (const chunk of stream) {\n\t\t\t\tif (chunk.reasoning_content) {\n\t\t\t\t\tthis.fullReasoning += chunk.reasoning_content;\n\t\t\t\t\tyield {\n\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\ttext: chunk.reasoning_content\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (chunk.content) {\n\t\t\t\t\tthis.fullContent += chunk.content;\n\t\t\t\t\tyield {\n\t\t\t\t\t\ttype: \"content\",\n\t\t\t\t\t\ttext: chunk.content\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (chunk.tool_calls) for (const tc of chunk.tool_calls) {\n\t\t\t\t\tconst existing = this.collectedToolCalls.get(tc.index);\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\tif (tc.function?.arguments) existing.function.arguments += tc.function.arguments;\n\t\t\t\t\t} else if (tc.id) {\n\t\t\t\t\t\tconst newTc = {\n\t\t\t\t\t\t\tid: tc.id,\n\t\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\t\tfunction: {\n\t\t\t\t\t\t\t\tname: tc.function?.name || \"\",\n\t\t\t\t\t\t\t\targuments: tc.function?.arguments || \"\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.collectedToolCalls.set(tc.index, newTc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (chunk.usage) this.chunkUsage = chunk.usage;\n\t\t\t}\n\t\t\tthis.state = AgentState.POST_LLM;\n\t\t} catch (llmError) {\n\t\t\tthis.fullContent = \"\";\n\t\t\tthis.collectedToolCalls.clear();\n\t\t\tthis.chunkUsage = void 0;\n\t\t\tif (this.attempt >= MAX_LLM_RETRIES) {\n\t\t\t\tconst errorMessage = `[连接失败] ${llmError.message || \"多次重试后仍无法连接\"}`;\n\t\t\t\tawait this.storage.addMessage(this.effectiveSessionId, {\n\t\t\t\t\tsession_id: this.effectiveSessionId,\n\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\tcontent: errorMessage\n\t\t\t\t});\n\t\t\t\tyield {\n\t\t\t\t\ttype: \"retry_exhausted\",\n\t\t\t\t\tmessage: llmError.message || \"连接失败\",\n\t\t\t\t\tpartialContent: true\n\t\t\t\t};\n\t\t\t\tthis.state = AgentState.ERROR;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.state = AgentState.LLM_RETRY_WAIT;\n\t\t}\n\t}\n\tasync *doLlmRetryWait() {\n\t\tawait this.hooks.onLlmRetry?.(this.attempt + 1, MAX_LLM_RETRIES, /* @__PURE__ */ new Error(\"LLM call failed\"));\n\t\tyield {\n\t\t\ttype: \"retrying\",\n\t\t\tattempt: this.attempt + 1,\n\t\t\tmaxRetries: MAX_LLM_RETRIES\n\t\t};\n\t\tawait sleep(RETRY_BASE_DELAY * Math.pow(2, this.attempt));\n\t\tthis.attempt++;\n\t\tthis.state = AgentState.LLM_STREAMING;\n\t}\n\tasync *doPostLlm() {\n\t\tif (this.chunkUsage) {\n\t\t\tconst cu = this.chunkUsage;\n\t\t\tthis.totalUsage = this.totalUsage ? {\n\t\t\t\tprompt_tokens: (this.totalUsage.prompt_tokens || 0) + (cu.prompt_tokens || 0),\n\t\t\t\tcompletion_tokens: (this.totalUsage.completion_tokens || 0) + (cu.completion_tokens || 0),\n\t\t\t\ttotal_tokens: (this.totalUsage.total_tokens || 0) + (cu.total_tokens || 0)\n\t\t\t} : { ...cu };\n\t\t}\n\t\tawait this.hooks.afterLlmCall?.(this.totalUsage);\n\t\tthis.resolvedToolCalls = Array.from(this.collectedToolCalls.values());\n\t\tif (this.resolvedToolCalls.length === 0) {\n\t\t\tawait this.storage.addMessage(this.effectiveSessionId, {\n\t\t\t\tsession_id: this.effectiveSessionId,\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: this.fullContent,\n\t\t\t\treasoning_content: this.fullReasoning || void 0,\n\t\t\t\tusage: this.totalUsage\n\t\t\t});\n\t\t\tif (this.totalUsage) await this.storage.updateTokenCount(this.effectiveSessionId, this.totalUsage.total_tokens);\n\t\t\tyield* this.tryForkIfWindowLow();\n\t\t\tyield {\n\t\t\t\ttype: \"done\",\n\t\t\t\tmessageId: crypto.randomUUID(),\n\t\t\t\tusage: this.totalUsage,\n\t\t\t\tcontextWindow: this.contextWindow\n\t\t\t};\n\t\t\tthis.state = AgentState.DONE;\n\t\t\treturn;\n\t\t}\n\t\tthis.messages.push({\n\t\t\trole: \"assistant\",\n\t\t\tcontent: this.fullContent || \"\",\n\t\t\ttool_calls: this.resolvedToolCalls,\n\t\t\treasoning_content: this.fullReasoning || void 0\n\t\t});\n\t\tyield* this.tryForkIfWindowLow();\n\t\tthis.toolResultMsgs = [];\n\t\tthis.toolIndex = 0;\n\t\tthis.state = AgentState.PRE_TOOL;\n\t}\n\tasync *doPreTool() {\n\t\tif (this.signal?.aborted) {\n\t\t\tthis.state = AgentState.DONE;\n\t\t\treturn;\n\t\t}\n\t\tif (this.toolIndex >= this.resolvedToolCalls.length) {\n\t\t\tthis.state = AgentState.PERSIST_TURN;\n\t\t\treturn;\n\t\t}\n\t\tthis.currentToolCall = this.resolvedToolCalls[this.toolIndex];\n\t\tthis.currentArgs = {};\n\t\ttry {\n\t\t\tthis.currentArgs = JSON.parse(this.currentToolCall.function.arguments);\n\t\t} catch {}\n\t\tconst modifiedArgs = await this.hooks.beforeToolExecution?.(this.currentToolCall.function.name, this.currentArgs);\n\t\tif (modifiedArgs) this.currentArgs = modifiedArgs;\n\t\tyield {\n\t\t\ttype: \"tool_call\",\n\t\t\tname: this.currentToolCall.function.name,\n\t\t\targs: this.currentArgs\n\t\t};\n\t\tthis.state = AgentState.TOOL_EXECUTING;\n\t}\n\tasync *doToolExecuting() {\n\t\tconst tc = this.currentToolCall;\n\t\tconst name = tc.function.name;\n\t\tconst updateQueue = [];\n\t\tlet toolDone = false;\n\t\tlet toolResult;\n\t\tlet toolError;\n\t\tlet wakeUp = null;\n\t\tthis.toolContext.onUpdate = (chunk) => {\n\t\t\tif (!toolDone) {\n\t\t\t\tupdateQueue.push(chunk);\n\t\t\t\twakeUp?.();\n\t\t\t}\n\t\t};\n\t\tthis.registry.execute(name, this.currentArgs, this.toolContext).then((r) => {\n\t\t\ttoolResult = r;\n\t\t}).catch((e) => {\n\t\t\ttoolError = e;\n\t\t}).finally(() => {\n\t\t\tthis.toolContext.onUpdate = void 0;\n\t\t\ttoolDone = true;\n\t\t\twakeUp?.();\n\t\t});\n\t\twhile (!toolDone) if (updateQueue.length > 0) while (updateQueue.length > 0) yield {\n\t\t\ttype: \"tool_execution_update\",\n\t\t\tname,\n\t\t\ttext: updateQueue.shift()\n\t\t};\n\t\telse await new Promise((resolve) => {\n\t\t\twakeUp = resolve;\n\t\t});\n\t\tif (toolError) {\n\t\t\tif (toolError instanceof PendingConfirmation) {\n\t\t\t\tthis.pendingConfirmation = toolError;\n\t\t\t\tthis.state = AgentState.AWAIT_CONFIRM;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst errMsg = toolError.message;\n\t\t\tyield {\n\t\t\t\ttype: \"tool_result\",\n\t\t\t\tname,\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: errMsg\n\t\t\t};\n\t\t\tthis.toolResultMsgs.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: `工具执行异常: ${errMsg}`,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: `工具执行异常: ${errMsg}`,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname\n\t\t\t});\n\t\t\tthis.state = AgentState.POST_TOOL;\n\t\t\treturn;\n\t\t}\n\t\tconst result = toolResult;\n\t\tyield {\n\t\t\ttype: \"tool_result\",\n\t\t\tname,\n\t\t\tsuccess: result.success,\n\t\t\toutput: result.output\n\t\t};\n\t\tconst content = result.output || result.error || \"\";\n\t\tthis.toolResultMsgs.push({\n\t\t\trole: \"tool\",\n\t\t\tcontent,\n\t\t\ttool_call_id: tc.id,\n\t\t\tname\n\t\t});\n\t\tthis.messages.push({\n\t\t\trole: \"tool\",\n\t\t\tcontent,\n\t\t\ttool_call_id: tc.id,\n\t\t\tname\n\t\t});\n\t\tawait this.hooks.afterToolExecution?.(name, {\n\t\t\tsuccess: result.success,\n\t\t\toutput: result.output\n\t\t});\n\t\tthis.state = AgentState.POST_TOOL;\n\t}\n\tasync *doAwaitConfirm() {\n\t\tconst error = this.pendingConfirmation;\n\t\tconst tc = this.currentToolCall;\n\t\tconst confirmId = crypto.randomUUID();\n\t\tawait this.hooks.onConfirmRequired?.(error, confirmId);\n\t\tyield {\n\t\t\ttype: \"confirm_required\",\n\t\t\tconfirmId,\n\t\t\tconfirmation: error\n\t\t};\n\t\tlet abortCleanup;\n\t\tconst approved = await Promise.race([this.onConfirm(error, confirmId), new Promise((resolve) => {\n\t\t\tif (this.signal) {\n\t\t\t\tconst onAbort = () => resolve(false);\n\t\t\t\tthis.signal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\tabortCleanup = () => this.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t}\n\t\t})]);\n\t\tabortCleanup?.();\n\t\tif (approved) try {\n\t\t\tconst retryResult = await this.registry.execute(error.toolName, {\n\t\t\t\t...error.args,\n\t\t\t\t__confirmed: true\n\t\t\t}, this.toolContext);\n\t\t\tyield {\n\t\t\t\ttype: \"tool_result\",\n\t\t\t\tname: error.toolName,\n\t\t\t\tsuccess: retryResult.success,\n\t\t\t\toutput: retryResult.output\n\t\t\t};\n\t\t\tconst content = retryResult.output || retryResult.error || \"\";\n\t\t\tthis.toolResultMsgs.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t} catch (retryError) {\n\t\t\tconst errMsg = retryError.message;\n\t\t\tyield {\n\t\t\t\ttype: \"tool_result\",\n\t\t\t\tname: error.toolName,\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: errMsg\n\t\t\t};\n\t\t\tthis.toolResultMsgs.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: `执行失败: ${errMsg}`,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: `执行失败: ${errMsg}`,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tconst cancelMsg = \"用户取消了此操作\";\n\t\t\tyield {\n\t\t\t\ttype: \"tool_result\",\n\t\t\t\tname: error.toolName,\n\t\t\t\tsuccess: false,\n\t\t\t\toutput: cancelMsg\n\t\t\t};\n\t\t\tthis.toolResultMsgs.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: cancelMsg,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t\tthis.messages.push({\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: cancelMsg,\n\t\t\t\ttool_call_id: tc.id,\n\t\t\t\tname: error.toolName\n\t\t\t});\n\t\t}\n\t\tthis.pendingConfirmation = void 0;\n\t\tthis.state = AgentState.POST_TOOL;\n\t}\n\tasync *doPostTool() {\n\t\tthis.toolIndex++;\n\t\tthis.state = AgentState.PRE_TOOL;\n\t}\n\tasync *doPersistTurn() {\n\t\tawait this.hooks.afterTurn?.(this.iteration);\n\t\tawait this.storage.addMessage(this.effectiveSessionId, {\n\t\t\tsession_id: this.effectiveSessionId,\n\t\t\trole: \"assistant\",\n\t\t\tcontent: this.fullContent || \"\",\n\t\t\treasoning_content: this.fullReasoning || void 0,\n\t\t\ttool_calls: this.resolvedToolCalls,\n\t\t\tusage: this.totalUsage\n\t\t});\n\t\tif (this.totalUsage) await this.storage.updateTokenCount(this.effectiveSessionId, this.totalUsage.total_tokens);\n\t\tfor (const t of this.toolResultMsgs) await this.storage.addMessage(this.effectiveSessionId, {\n\t\t\tsession_id: this.effectiveSessionId,\n\t\t\trole: \"tool\",\n\t\t\tcontent: t.content,\n\t\t\ttool_call_id: t.tool_call_id,\n\t\t\tname: t.name\n\t\t});\n\t\tif (this.signal?.aborted) {\n\t\t\tthis.state = AgentState.DONE;\n\t\t\treturn;\n\t\t}\n\t\tthis.iteration++;\n\t\tthis.state = AgentState.PRE_LLM;\n\t}\n\tasync *tryForkIfWindowLow() {\n\t\tconst tokensUsed = this.totalUsage?.total_tokens || 0;\n\t\tif (tokensUsed <= 0) return;\n\t\tif (this.compressionMode === \"custom\" ? tokensUsed > this.compressionThreshold : this.contextWindow - tokensUsed < CONTINUE_THRESHOLD) {\n\t\t\tconst newId = await this.createContinuation(this.effectiveSessionId, this.userMsg, this.messages, typeof this.buildResult.messages[0]?.content === \"string\" ? this.buildResult.messages[0]?.content : void 0);\n\t\t\tif (newId) yield {\n\t\t\t\ttype: \"forked\",\n\t\t\t\tnewSessionId: newId\n\t\t\t};\n\t\t}\n\t}\n\textractPriorCompression(messages) {\n\t\tconst systemMsg = messages.find((m) => m.role === \"system\");\n\t\tif (!systemMsg) return void 0;\n\t\tconst content = extractTextContent(systemMsg.content);\n\t\tconst idx = content.indexOf(\"[此对话延续自\");\n\t\tif (idx === -1) return void 0;\n\t\treturn content.slice(idx);\n\t}\n\tasync createContinuation(sessionId, userMsg, allMessages, systemPrompt) {\n\t\ttry {\n\t\t\tconst parentSession = await this.storage.getSession(sessionId);\n\t\t\tif (!parentSession) return null;\n\t\t\tconst rawContent = buildSummaryContent(allMessages, systemPrompt);\n\t\t\tlet compression = \"\";\n\t\t\tconst priorCompression = this.extractPriorCompression(allMessages);\n\t\t\ttry {\n\t\t\t\tlet prompt = `The following is a conversation history that needs compression due to context length. Extract the **key information needed to continue the current task**, output in Chinese using the format below:\n\n## 目标\n- Core task the user wants to accomplish (1 sentence)\n\n## 进度\n- 已完成: <completed items>\n- 进行中: <in progress>\n- 阻塞: <blocked items, omit if none>\n\n## 关键决策\n- <key technical decisions, tool choices, approaches taken>\n\n## 用户偏好与约束\n- <user habits, preferences, explicit constraints>\n\n## 关键上下文\n- <file paths, key parameters, environment info>\n\n## 下一步\n- <next steps, ordered by priority>\n\nConversation:\n${rawContent}`;\n\t\t\t\tif (priorCompression) prompt += `\\n\\nBelow is an existing compression summary. Update it by preserving ALL existing information and adding new developments:\\n${priorCompression}`;\n\t\t\t\tcompression = (await this.provider.chat({\n\t\t\t\t\tmessages: [{\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: prompt\n\t\t\t\t\t}],\n\t\t\t\t\tmax_tokens: 2e3,\n\t\t\t\t\ttemperature: .3\n\t\t\t\t})).content || \"\";\n\t\t\t} catch {\n\t\t\t\tcompression = rawContent.slice(0, 2e3);\n\t\t\t}\n\t\t\tif (!compression) return null;\n\t\t\tconst newTitle = `[延续] ${parentSession.title}`;\n\t\t\tconst newSession = await this.storage.createSession(newTitle, parentSession.memory_snapshot, parentSession.workspace);\n\t\t\tawait this.storage.addMessage(newSession.id, {\n\t\t\t\tsession_id: newSession.id,\n\t\t\t\trole: \"system\",\n\t\t\t\tcontent: `[此对话延续自会话「${parentSession.title || sessionId}」,以下为上下文压缩]\\n\\n${compression}`\n\t\t\t});\n\t\t\tawait this.storage.addMessage(newSession.id, {\n\t\t\t\tsession_id: newSession.id,\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: userMsg.content\n\t\t\t});\n\t\t\tconst recentMessages = await this.storage.getMessagesSinceSeq(sessionId, userMsg.seq);\n\t\t\tfor (const msg of recentMessages) await this.storage.addMessage(newSession.id, {\n\t\t\t\tsession_id: newSession.id,\n\t\t\t\trole: msg.role,\n\t\t\t\tcontent: msg.content,\n\t\t\t\treasoning_content: msg.reasoning_content,\n\t\t\t\ttool_calls: msg.tool_calls,\n\t\t\t\ttool_call_id: msg.tool_call_id,\n\t\t\t\tname: msg.name,\n\t\t\t\tusage: msg.usage\n\t\t\t});\n\t\t\treturn newSession.id;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/agent/context-builder.js\nvar DEFAULT_CONTEXT_WINDOW$1 = 1048576;\nvar MEMORY_PATH = getDataPath(\"memory.md\");\nfunction readMemoryFile() {\n\ttry {\n\t\tif (existsSync(MEMORY_PATH)) return readFileSync(MEMORY_PATH, \"utf-8\").replace(/\\r/g, \"\").trim();\n\t} catch {}\n\treturn \"\";\n}\nfunction formatMemorySection(content) {\n\tif (!content) return \"\";\n\treturn `\\n\\n## 用户信息\\n\\n以下是关于你和用户的已知信息,请据此调整你的行为:\\n\\n${content}`;\n}\n/**\n* ContextBuilder — 上下文构建器\n*\n* 负责拼装发给 LLM 的 messages 数组:\n* 1. 系统提示词(用户自定义 + 环境信息 + memory 快照)\n* 2. 会话历史消息\n* 3. 当前用户输入\n*\n* 工具描述通过 API 的 tools 参数传递,不写入 system prompt 文本。\n* memory 在会话首次构建时从 memory.md 读取并存入 session.memory_snapshot,\n* 后续构建直接使用快照,保证 system 消息稳定。\n*/\nvar ContextBuilder = class {\n\tasync build(sessionId, userMessage, images, storage, contextWindow, systemPrompt) {\n\t\treturn {\n\t\t\tmessages: await this.buildMessages(sessionId, userMessage, images, storage, systemPrompt),\n\t\t\tcontextWindow: contextWindow || DEFAULT_CONTEXT_WINDOW$1\n\t\t};\n\t}\n\tasync resolveMemory(sessionId, storage) {\n\t\tconst session = await storage.getSession(sessionId);\n\t\tif (session?.memory_snapshot) return session.memory_snapshot;\n\t\tconst content = readMemoryFile();\n\t\tif (session) await storage.setMemorySnapshot(sessionId, content);\n\t\treturn content;\n\t}\n\tparseStoredContent(content) {\n\t\tif (content.startsWith(\"[\")) try {\n\t\t\treturn JSON.parse(content);\n\t\t} catch {}\n\t\treturn content;\n\t}\n\tbuildUserContent(text, images) {\n\t\tif (images.length === 0) return text;\n\t\treturn [{\n\t\t\ttype: \"text\",\n\t\t\ttext\n\t\t}, ...images];\n\t}\n\tasync buildMessages(sessionId, userMessage, images, storage, systemPrompt) {\n\t\tconst messages = [];\n\t\tlet systemContent = systemPrompt || DEFAULT_SYSTEM_PROMPT;\n\t\tsystemContent += SYSTEM_CONTEXT;\n\t\tconst memoryContent = await this.resolveMemory(sessionId, storage);\n\t\tsystemContent += formatMemorySection(memoryContent);\n\t\tconst history = await storage.getMessages(sessionId);\n\t\tfor (const msg of history) if (msg.role === \"system\") systemContent += \"\\n\\n\" + (typeof msg.content === \"string\" ? msg.content : \"\");\n\t\tmessages.push({\n\t\t\trole: \"system\",\n\t\t\tcontent: systemContent\n\t\t});\n\t\tfor (const msg of history) {\n\t\t\tif (msg.role === \"system\") continue;\n\t\t\tconst m = {\n\t\t\t\trole: msg.role,\n\t\t\t\tcontent: this.parseStoredContent(msg.content)\n\t\t\t};\n\t\t\tif (msg.tool_calls) m.tool_calls = msg.tool_calls;\n\t\t\tif (msg.tool_call_id) m.tool_call_id = msg.tool_call_id;\n\t\t\tif (msg.name) m.name = msg.name;\n\t\t\tmessages.push(m);\n\t\t}\n\t\tmessages.push({\n\t\t\trole: \"user\",\n\t\t\tcontent: this.buildUserContent(userMessage, images)\n\t\t});\n\t\treturn messages;\n\t}\n};\n//#endregion\n//#region ../core/dist/agent/summarizer.js\nfunction parseStoredContent(content) {\n\tif (content.startsWith(\"[\")) try {\n\t\treturn JSON.parse(content);\n\t} catch {}\n\treturn content;\n}\nvar _registry = new ToolRegistry();\nfor (const t of CORE_TOOLS) {\n\tif (t.name === \"edit\" || t.name === \"read_memory\") continue;\n\t_registry.register(t);\n}\nvar _toolContext = new ToolContext(process.cwd());\nvar _toolDefs = _registry.getDefinitions();\nfunction buildSystemMessage() {\n\tlet content = readConfig().systemPrompt || DEFAULT_SYSTEM_PROMPT;\n\tcontent += SYSTEM_CONTEXT;\n\treturn {\n\t\trole: \"system\",\n\t\tcontent\n\t};\n}\nvar MAX_TOOL_ITERATIONS = 10;\nasync function completeWithToolLoop(provider, messages, maxTokens, temperature) {\n\tconst tools = _toolDefs;\n\tfor (let i = 0; i < MAX_TOOL_ITERATIONS; i++) {\n\t\tconst response = await provider.chat({\n\t\t\tmessages,\n\t\t\ttools: tools.length > 0 ? tools : void 0,\n\t\t\tmax_tokens: maxTokens,\n\t\t\ttemperature\n\t\t});\n\t\tif (!response.tool_calls || response.tool_calls.length === 0) return {\n\t\t\tcontent: response.content || \"\",\n\t\t\tusage: response.usage\n\t\t};\n\t\tmessages.push({\n\t\t\trole: \"assistant\",\n\t\t\tcontent: response.content || \"\",\n\t\t\ttool_calls: response.tool_calls\n\t\t});\n\t\tfor (const tc of response.tool_calls) {\n\t\t\tlet args = {};\n\t\t\ttry {\n\t\t\t\targs = JSON.parse(tc.function.arguments);\n\t\t\t} catch {}\n\t\t\ttry {\n\t\t\t\tconst result = await _registry.execute(tc.function.name, args, _toolContext);\n\t\t\t\tmessages.push({\n\t\t\t\t\trole: \"tool\",\n\t\t\t\t\tcontent: result.output || result.error || \"\",\n\t\t\t\t\ttool_call_id: tc.id,\n\t\t\t\t\tname: tc.function.name\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof PendingConfirmation) messages.push({\n\t\t\t\t\trole: \"tool\",\n\t\t\t\t\tcontent: `后台任务无法执行需确认的操作: ${error.reason}`,\n\t\t\t\t\ttool_call_id: tc.id,\n\t\t\t\t\tname: error.toolName\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst errMsg = error.message;\n\t\t\t\t\tmessages.push({\n\t\t\t\t\t\trole: \"tool\",\n\t\t\t\t\t\tcontent: `工具执行异常: ${errMsg}`,\n\t\t\t\t\t\ttool_call_id: tc.id,\n\t\t\t\t\t\tname: tc.function.name\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn { content: \"\" };\n}\nasync function generateSummary(provider, storage, sessionId, existingSummary) {\n\tconst records = await storage.getMessages(sessionId);\n\tif (records.length === 0) return \"\";\n\tconst messages = [buildSystemMessage()];\n\tfor (const r of records) {\n\t\tif (r.role === \"system\") continue;\n\t\tconst m = {\n\t\t\trole: r.role,\n\t\t\tcontent: parseStoredContent(r.content)\n\t\t};\n\t\tif (r.tool_calls) m.tool_calls = r.tool_calls;\n\t\tif (r.tool_call_id) m.tool_call_id = r.tool_call_id;\n\t\tif (r.name) m.name = r.name;\n\t\tmessages.push(m);\n\t}\n\tlet userInstruction = `Please summarize the conversation above. Output in Chinese using the structured format below:\n\n## 目标\n- The user's current main goal\n\n## 进度\n- 已完成: <completed items>\n- 进行中: <in progress>\n- 阻塞: <blocked items, omit if none>\n\n## 关键决策\n- <key decisions or choices made>\n\n## 用户偏好\n- <user habits, preferences, constraints>\n\n## 情感上下文\n- <user mood, attitude, and other context helpful for continuing the conversation>`;\n\tif (existingSummary) userInstruction += `\\n\\nBelow is the existing summary. Update it by preserving all existing information and appending new developments:\\n${existingSummary}`;\n\tmessages.push({\n\t\trole: \"user\",\n\t\tcontent: userInstruction\n\t});\n\tconst { content, usage } = await completeWithToolLoop(provider, messages, 2e3, .3);\n\tif (usage) {\n\t\tconst hit = usage.prompt_cache_hit_tokens ?? 0;\n\t\tconst miss = usage.prompt_cache_miss_tokens ?? 0;\n\t\tconsole.log(`[summarize] session=${sessionId} messages=${records.length} hit=${hit} miss=${miss} total_tokens=${usage.total_tokens}`);\n\t}\n\treturn content || \"\";\n}\n//#endregion\n//#region ../core/dist/agent/diary.js\nvar DIARY_DIR = join(getDataPath(\"diary\"));\nvar MAX_RECENT_DAYS = 7;\nfunction getTodayDate() {\n\tconst now = /* @__PURE__ */ new Date();\n\tlet date = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\tif (now.getHours() < 8) date = /* @__PURE__ */ new Date(date.getTime() - 864e5);\n\tconst y = date.getFullYear();\n\tconst m = String(date.getMonth() + 1).padStart(2, \"0\");\n\tconst d = String(date.getDate()).padStart(2, \"0\");\n\treturn {\n\t\tdate,\n\t\ty,\n\t\tm,\n\t\td\n\t};\n}\nfunction formatDatePath(y, m, d) {\n\treturn `data/diary/${y}-${m}-${d}.md`;\n}\nfunction getTodayFile() {\n\tconst { y, m, d } = getTodayDate();\n\treturn formatDatePath(y, m, d);\n}\nfunction readRecentDiaries(targetDate) {\n\tconst parts = [];\n\tconst cursor = new Date(targetDate);\n\tfor (let i = 1; i <= MAX_RECENT_DAYS; i++) {\n\t\tcursor.setDate(cursor.getDate() - 1);\n\t\tconst y = cursor.getFullYear();\n\t\tconst m = String(cursor.getMonth() + 1).padStart(2, \"0\");\n\t\tconst d = String(cursor.getDate()).padStart(2, \"0\");\n\t\tconst filePath = join(DIARY_DIR, `${y}-${m}-${d}.md`);\n\t\tif (existsSync(filePath)) {\n\t\t\tconst content = readFileSync(filePath, \"utf-8\").trim();\n\t\t\tparts.push(`### ${y}-${m}-${d}\\n${content.slice(0, 2e3)}`);\n\t\t}\n\t}\n\treturn parts.join(\"\\n\\n\");\n}\nasync function generateDiary(provider, storage) {\n\tconst sessions = await storage.getTodayUpdatedSessions();\n\tif (sessions.length === 0) return;\n\tconst summaries = [];\n\tfor (const s of sessions) if (s.summary) summaries.push(`### ${s.title}\\n${s.summary}`);\n\tif (summaries.length === 0) return;\n\tconst { date } = getTodayDate();\n\tconst filePath = getTodayFile();\n\tconst recentDiaries = readRecentDiaries(date);\n\tlet userContent = `以下是今天各会话的摘要,请据此撰写一篇日记,记录当天和我一起完成了什么、有哪些重要交流。\\n\\n${summaries.join(\"\\n\\n\")}`;\n\tif (recentDiaries) userContent += `\\n\\n以下是前几天的日记内容,请参考以保持日记的连贯性和叙事感:\\n\\n${recentDiaries}`;\n\tuserContent += `\\n\\n请使用 write_file 工具将日记写入以下文件:${filePath}`;\n\tawait completeWithToolLoop(provider, [buildSystemMessage(), {\n\t\trole: \"user\",\n\t\tcontent: userContent\n\t}], 2e3, .5);\n}\n//#endregion\n//#region ../core/dist/agent/background.js\nasync function runSummarizeJob(force, idleMs) {\n\tconst config = readConfig();\n\tif (!config.storageEnabled) throw new Error(\"对话存储未开启\");\n\tconst providerConfig = getFirstProvider();\n\tif (!providerConfig?.apiKey) throw new Error(\"未配置 AI 供应商\");\n\tconst model = getActiveModel() || getDefaultModels(providerConfig.type)[0];\n\tif (!model) throw new Error(\"未选择模型\");\n\tconst provider = createProvider({\n\t\t...providerConfig,\n\t\tactiveModel: model.id,\n\t\tcontextWindow: model.contextWindow\n\t});\n\tconst storage = createStorage({ enabled: true });\n\tlet effectiveIdleMs;\n\tif (force) effectiveIdleMs = -1;\n\telse if (idleMs !== void 0) effectiveIdleMs = idleMs;\n\telse effectiveIdleMs = (config.summaryIdleHours || 8) * 60 * 60 * 1e3;\n\tconst staleSessions = await storage.getStaleSessions(effectiveIdleMs);\n\tlet summarized = 0;\n\tfor (const session of staleSessions) try {\n\t\tconst summary = await generateSummary(provider, storage, session.id, session.summary || void 0);\n\t\tif (summary) {\n\t\t\tawait storage.updateSummary(session.id, summary);\n\t\t\tsummarized++;\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(`[summarize] session=${session.id} failed:`, e.message);\n\t}\n\tlet diary = false;\n\tif (summarized > 0) try {\n\t\tawait generateDiary(provider, storage);\n\t\tdiary = true;\n\t} catch (e) {\n\t\tconsole.error(\"[diary] failed:\", e.message);\n\t}\n\treturn {\n\t\tsummarized,\n\t\tdiary\n\t};\n}\n//#endregion\n//#region ../core/dist/agent/logger.js\nvar AgentLogger = class {\n\tsessionId;\n\tturn = 0;\n\tllmStart = 0;\n\tturnLog = null;\n\tconstructor(sessionId) {\n\t\tthis.sessionId = sessionId;\n\t}\n\tasync beforeLlmCall(messages) {\n\t\tthis.llmStart = Date.now();\n\t\tthis.turn++;\n\t\tthis.turnLog = {\n\t\t\tturn: this.turn,\n\t\t\ttoolCalls: 0,\n\t\t\tinputTokens: 0,\n\t\t\toutputTokens: 0,\n\t\t\terrors: 0\n\t\t};\n\t\tconst msgCount = messages.length;\n\t\tconst lastRole = messages.length > 0 ? messages[messages.length - 1].role : \"none\";\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} LLM call (${msgCount} msgs, last=${lastRole})`);\n\t\treturn messages;\n\t}\n\tasync afterLlmCall(usage) {\n\t\tconst latency = Date.now() - this.llmStart;\n\t\tif (this.turnLog) this.turnLog.llmLatencyMs = latency;\n\t\tif (usage) {\n\t\t\tif (this.turnLog) {\n\t\t\t\tthis.turnLog.inputTokens = usage.prompt_tokens;\n\t\t\t\tthis.turnLog.outputTokens = usage.completion_tokens;\n\t\t\t}\n\t\t\tconst cache = usage.prompt_cache_hit_tokens != null ? ` cache=${usage.prompt_cache_hit_tokens}+${usage.prompt_cache_miss_tokens}` : \"\";\n\t\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} done — latency=${latency}ms tokens=${usage.total_tokens} (${usage.prompt_tokens}+${usage.completion_tokens})${cache}`);\n\t\t} else console.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} done — latency=${latency}ms`);\n\t}\n\tasync onLlmRetry(attempt, maxRetries, error) {\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} retry ${attempt}/${maxRetries}: ${error.message}`);\n\t\tif (this.turnLog) this.turnLog.errors++;\n\t}\n\tasync beforeToolExecution(name, args) {\n\t\tconst preview = JSON.stringify(args).slice(0, 120);\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} tool: ${name}(${preview}${JSON.stringify(args).length > 120 ? \"...\" : \"\"})`);\n\t\treturn args;\n\t}\n\tasync afterToolExecution(name, result) {\n\t\tconst outLen = result.output.length;\n\t\tif (this.turnLog) this.turnLog.toolCalls++;\n\t\tconst status = result.success ? \"OK\" : \"FAIL\";\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} tool ${name} → ${status} (${outLen} chars)`);\n\t}\n\tasync onConfirmRequired(confirmation, confirmId) {\n\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} confirm: ${confirmation.toolName} — ${confirmation.reason.slice(0, 80)}`);\n\t}\n\tasync afterTurn(_iteration) {\n\t\tif (this.turnLog) {\n\t\t\tconst t = this.turnLog;\n\t\t\tconsole.log(`[agent ${this.sessionId.slice(0, 8)}] turn ${this.turn} summary — tools=${t.toolCalls} tokens=${t.inputTokens}+${t.outputTokens} latency=${t.llmLatencyMs}ms errors=${t.errors}`);\n\t\t}\n\t}\n};\n//#endregion\n//#region ../core/dist/agent/summarize-worker.js\nfunction getToday() {\n\tconst d = /* @__PURE__ */ new Date();\n\treturn `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;\n}\nfunction createSummarizeWorker(notify) {\n\tlet worker = null;\n\tlet lastScheduledDate = \"\";\n\tasync function tick() {\n\t\tconst config = readConfig();\n\t\tif (!config.autoSummarize || !config.storageEnabled) return;\n\t\tlet result;\n\t\tif (config.summaryMode === \"scheduled\") {\n\t\t\tconst now = /* @__PURE__ */ new Date();\n\t\t\tconst today = getToday();\n\t\t\tif (now.getHours() >= (config.summaryScheduleHour || 2) && today !== lastScheduledDate) {\n\t\t\t\tlastScheduledDate = today;\n\t\t\t\tresult = await runSummarizeJob(false, null);\n\t\t\t}\n\t\t} else result = await runSummarizeJob();\n\t\tif (result) {\n\t\t\tconst { summarized, diary } = result;\n\t\t\tif (summarized > 0 || diary) {\n\t\t\t\tconst parts = [];\n\t\t\t\tif (summarized > 0) parts.push(`已为 ${summarized} 个对话生成摘要`);\n\t\t\t\tif (diary) parts.push(\"已生成日记条目\");\n\t\t\t\tawait notify({\n\t\t\t\t\ttitle: \"Qualia 任务完成\",\n\t\t\t\t\tbody: parts.join(\"\\n\"),\n\t\t\t\t\ttype: \"task_complete\"\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tstart() {\n\t\t\tconst config = readConfig();\n\t\t\tif (!config.autoSummarize || !config.storageEnabled) return;\n\t\t\tconst intervalMin = config.summaryIntervalMin || 30;\n\t\t\tworker = new BackgroundWorker();\n\t\t\tworker.schedule(\"summarize\", intervalMin * 60 * 1e3, tick);\n\t\t\tworker.start();\n\t\t\ttick();\n\t\t},\n\t\tstop() {\n\t\t\tif (worker) {\n\t\t\t\tworker.stop();\n\t\t\t\tworker = null;\n\t\t\t}\n\t\t}\n\t};\n}\n//#endregion\n//#region ../core/dist/config/store.js\nvar DEFAULT_CONTEXT_WINDOW = 1048576;\nfunction ensureDataDir() {\n\tconst dir = getDataDir();\n\tif (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n}\nvar defaultConfig = {\n\tproviders: [],\n\tactiveModel: \"\",\n\tstorageEnabled: false,\n\tsystemPrompt: DEFAULT_SYSTEM_PROMPT,\n\tcustomBrandIcon: false,\n\tautoSummarize: true,\n\tsummaryMode: \"idle\",\n\tsummaryIdleHours: 8,\n\tsummaryScheduleHour: 2,\n\tsummaryIntervalMin: 30,\n\tcompressionMode: \"auto\",\n\tcompressionThreshold: 256e3,\n\tsearchEnabled: false,\n\tsearchProvider: \"searxng\",\n\tsearxngURL: \"http://localhost:8080\",\n\ttavilyApiKey: \"\",\n\temailNotifications: false,\n\temailSmtpHost: \"\",\n\temailSmtpPort: 465,\n\temailSmtpSecure: true,\n\temailSmtpUser: \"\",\n\temailSmtpPass: \"\",\n\temailFrom: \"\",\n\temailTo: \"\",\n\ttelegramEnabled: false,\n\ttelegramBotToken: \"\",\n\ttelegramAllowedUsers: \"\"\n};\nfunction normalizeProvider(p) {\n\treturn {\n\t\ttype: p.type || \"openai\",\n\t\tname: p.name || \"\",\n\t\tapiKey: p.apiKey || \"\",\n\t\tbaseURL: p.baseURL || \"\",\n\t\treasoningEffort: p.reasoningEffort,\n\t\ttimeout: p.timeout,\n\t\tmaxRetries: p.maxRetries,\n\t\tollamaURL: p.ollamaURL || \"http://localhost:11434\"\n\t};\n}\nfunction readConfig() {\n\tconst path = getConfigPath();\n\tif (!existsSync(path)) return structuredClone(defaultConfig);\n\ttry {\n\t\tconst raw = readFileSync(path, \"utf-8\");\n\t\tconst parsed = JSON.parse(raw);\n\t\treturn {\n\t\t\tproviders: Array.isArray(parsed.providers) ? parsed.providers.map((p) => normalizeProvider(p)) : [],\n\t\t\tactiveModel: parsed.activeModel || \"\",\n\t\t\tstorageEnabled: parsed.storageEnabled === true,\n\t\t\tsystemPrompt: parsed.systemPrompt || DEFAULT_SYSTEM_PROMPT,\n\t\t\tcustomBrandIcon: parsed.customBrandIcon === true,\n\t\t\tautoSummarize: parsed.autoSummarize !== false,\n\t\t\tsummaryMode: parsed.summaryMode === \"scheduled\" ? \"scheduled\" : \"idle\",\n\t\t\tsummaryIdleHours: typeof parsed.summaryIdleHours === \"number\" ? parsed.summaryIdleHours : 8,\n\t\t\tsummaryScheduleHour: typeof parsed.summaryScheduleHour === \"number\" ? parsed.summaryScheduleHour : 2,\n\t\t\tsummaryIntervalMin: typeof parsed.summaryIntervalMin === \"number\" ? parsed.summaryIntervalMin : 30,\n\t\t\tcompressionMode: parsed.compressionMode === \"custom\" ? \"custom\" : \"auto\",\n\t\t\tcompressionThreshold: typeof parsed.compressionThreshold === \"number\" ? parsed.compressionThreshold : 256e3,\n\t\t\tsearchEnabled: parsed.searchEnabled === true,\n\t\t\tsearchProvider: parsed.searchProvider === \"searxng\" || parsed.searchProvider === \"tavily\" ? parsed.searchProvider : \"searxng\",\n\t\t\tsearxngURL: typeof parsed.searxngURL === \"string\" ? parsed.searxngURL : \"http://localhost:8080\",\n\t\t\ttavilyApiKey: typeof parsed.tavilyApiKey === \"string\" ? parsed.tavilyApiKey : \"\",\n\t\t\temailNotifications: parsed.emailNotifications === true,\n\t\t\temailSmtpHost: typeof parsed.emailSmtpHost === \"string\" ? parsed.emailSmtpHost : \"\",\n\t\t\temailSmtpPort: typeof parsed.emailSmtpPort === \"number\" ? parsed.emailSmtpPort : 465,\n\t\t\temailSmtpSecure: parsed.emailSmtpSecure !== false,\n\t\t\temailSmtpUser: typeof parsed.emailSmtpUser === \"string\" ? parsed.emailSmtpUser : \"\",\n\t\t\temailSmtpPass: typeof parsed.emailSmtpPass === \"string\" ? parsed.emailSmtpPass : \"\",\n\t\t\temailFrom: typeof parsed.emailFrom === \"string\" ? parsed.emailFrom : \"\",\n\t\t\temailTo: typeof parsed.emailTo === \"string\" ? parsed.emailTo : \"\",\n\t\t\ttelegramEnabled: parsed.telegramEnabled === true,\n\t\t\ttelegramBotToken: typeof parsed.telegramBotToken === \"string\" ? parsed.telegramBotToken : \"\",\n\t\t\ttelegramAllowedUsers: typeof parsed.telegramAllowedUsers === \"string\" ? parsed.telegramAllowedUsers : \"\"\n\t\t};\n\t} catch {\n\t\treturn structuredClone(defaultConfig);\n\t}\n}\nfunction writeConfig(config) {\n\tconst path = getConfigPath();\n\tensureDataDir();\n\tconst tmpPath = path + \".tmp\";\n\twriteFileSync(tmpPath, JSON.stringify(config, null, \"\t\"), \"utf-8\");\n\trenameSync(tmpPath, path);\n}\nfunction addProvider(provider) {\n\tconst config = readConfig();\n\tconst existing = config.providers.findIndex((p) => p.name === provider.name);\n\tif (existing !== -1) config.providers[existing] = provider;\n\telse config.providers.push(provider);\n\tif (!config.activeModel) config.activeModel = getDefaultModels(provider.type)[0]?.id || \"\";\n\twriteConfig(config);\n\treturn config;\n}\nfunction removeProvider(name) {\n\tconst config = readConfig();\n\tconfig.providers = config.providers.filter((p) => p.name !== name);\n\tif (!getProviderForModel(config.activeModel)) {\n\t\tconst first = config.providers[0];\n\t\tconfig.activeModel = first ? getDefaultModels(first.type)[0]?.id || \"\" : \"\";\n\t}\n\twriteConfig(config);\n\treturn config;\n}\nfunction setActiveModel(modelId) {\n\tconst config = readConfig();\n\tconfig.activeModel = modelId;\n\tfor (const provider of config.providers) {\n\t\tconst models = getDefaultModels(provider.type);\n\t\tif (models.length > 0) {\n\t\t\tconst model = models.find((m) => m.id === modelId);\n\t\t\tif (model && !model.supportsReasoning) provider.reasoningEffort = void 0;\n\t\t} else if (provider.type === \"ollama\") provider.reasoningEffort = void 0;\n\t}\n\twriteConfig(config);\n\treturn config;\n}\nfunction setReasoningEffort(value) {\n\tconst config = readConfig();\n\tconst provider = config.providers.find((p) => {\n\t\tconst models = getDefaultModels(p.type);\n\t\tif (models.length > 0) return models.some((m) => m.id === config.activeModel);\n\t\treturn p.type === \"ollama\" && !!config.activeModel;\n\t});\n\tif (provider) {\n\t\tprovider.reasoningEffort = value || void 0;\n\t\twriteConfig(config);\n\t}\n\treturn config;\n}\nfunction getProviderForModel(modelId) {\n\tconst config = readConfig();\n\tfor (const provider of config.providers) if (getDefaultModels(provider.type).some((m) => m.id === modelId)) return provider;\n\tconst ollama = config.providers.find((p) => p.type === \"ollama\");\n\tif (ollama) return ollama;\n}\nfunction getAllAvailableModels() {\n\tconst config = readConfig();\n\tconst result = [];\n\tfor (const provider of config.providers) for (const model of getDefaultModels(provider.type)) result.push({\n\t\tmodel,\n\t\tproviderName: provider.name\n\t});\n\treturn result;\n}\nfunction getFirstProvider() {\n\treturn readConfig().providers.find((p) => p.apiKey);\n}\nfunction getActiveModel() {\n\tconst config = readConfig();\n\tif (!config.activeModel) return void 0;\n\tfor (const provider of config.providers) {\n\t\tconst model = getDefaultModels(provider.type).find((m) => m.id === config.activeModel);\n\t\tif (model) return model;\n\t}\n\tif (config.providers.some((p) => p.type === \"ollama\")) return {\n\t\tid: config.activeModel,\n\t\tname: config.activeModel,\n\t\tcontextWindow: 128e3,\n\t\tsupportsReasoning: false,\n\t\treasoningEffortValues: [],\n\t\tsupportsVision: false\n\t};\n}\nfunction getContextWindow() {\n\treturn getActiveModel()?.contextWindow || DEFAULT_CONTEXT_WINDOW;\n}\n//#endregion\nexport { createProvider as A, getAllTasks as C, getDataDir as D, sessionLock as E, getDataPath as O, deleteTask as S, resumeTask as T, SCHEDULING_TOOLS as _, getProviderForModel as a, startScheduler as b, setActiveModel as c, createSummarizeWorker as d, AgentLogger as f, CORE_TOOLS as g, AgentLoop as h, getContextWindow as i, ToolRegistry as k, setReasoningEffort as l, ContextBuilder as m, getActiveModel as n, readConfig as o, runSummarizeJob as p, getAllAvailableModels as r, removeProvider as s, addProvider as t, writeConfig as u, createSearchHistoryTool as v, pauseTask as w, createStorage as x, setTaskNotificationHandler as y };\n"],"names":["require$$0","require$$2","require","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","libModule","require$$1"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]}
|