// D2a 外置句柄解析单测 —— 仓库无 vitest,走 node 内置测试(零第三方依赖): // node --test tests/useOffloadedResult.test.mjs // Node ≥22.6 原生剥离类型,可直接 import .ts(显式带 .ts 后缀)。 // 覆盖:完整句柄(对象/JSON 字符串)、截断句柄(审计 result_brief,JSON 非法)正则兜底、 // 标记真值校验、非句柄/无 path 的否定用例。 import test from 'node:test' import assert from 'node:assert/strict' import { parseOffloadHandle, hasOffloadMark } from '../src/composables/ai/useOffloadedResult.ts' const PATH = 'C:\\Users\\me\\AppData\\tool-results\\2026-10\\abc.txt' test('parseOffloadHandle: 完整句柄对象取全字段', () => { const h = parseOffloadHandle({ __offloaded__: true, path: PATH, size_bytes: 9000, tool: 'read_file', head: 'x', hint: '...' }) assert.equal(h.path, PATH) assert.equal(h.sizeBytes, 9000) assert.equal(h.tool, 'read_file') }) test('parseOffloadHandle: 完整句柄 JSON 字符串', () => { const s = JSON.stringify({ __offloaded__: true, path: PATH, size_bytes: 12345, tool: 'grep' }) const h = parseOffloadHandle(s) assert.equal(h.path, PATH) assert.equal(h.sizeBytes, 12345) }) test('parseOffloadHandle: 截断句柄(JSON 非法)正则兜底抽 path 并反转义', () => { // 模拟后端 truncate_chars_ellipsis 截断:JSON 不闭合、尾部省略号 const brief = `{"__offloaded__":true,"path":"${PATH.replace(/\\/g, '\\\\')}","size_bytes":9000,"head":"hhh` const h = parseOffloadHandle(brief) assert.equal(h.path, PATH) // 截断态仅能拿到 path,size/tool 缺失不报错 assert.equal(h.sizeBytes, undefined) }) test('parseOffloadHandle: 标记非 true / 非句柄 / 无 path 一律 null', () => { assert.equal(parseOffloadHandle({ __offloaded__: false, path: PATH }), null) assert.equal(parseOffloadHandle({ __offloaded__: true }), null) assert.equal(parseOffloadHandle('{"a":1}'), null) assert.equal(parseOffloadHandle('plain text'), null) assert.equal(parseOffloadHandle(null), null) assert.equal(parseOffloadHandle([1, 2]), null) }) test('hasOffloadMark: 字符串严格匹配标记,对象看布尔真值', () => { assert.equal(hasOffloadMark('x "__offloaded__":true y'), true) assert.equal(hasOffloadMark('just __offloaded__ word'), false) assert.equal(hasOffloadMark({ __offloaded__: true }), true) assert.equal(hasOffloadMark({ __offloaded__: false }), false) assert.equal(hasOffloadMark(null), false) })