@tom2012/cc-web 2026.6.17-a → 2026.9.6-b
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/CHANGELOG.json +92 -20
- package/backend/dist/adapters/claude-adapter.d.ts +4 -0
- package/backend/dist/adapters/claude-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/claude-adapter.js +18 -2
- package/backend/dist/adapters/claude-adapter.js.map +1 -1
- package/backend/dist/adapters/types.d.ts +8 -0
- package/backend/dist/adapters/types.d.ts.map +1 -1
- package/backend/dist/auth.d.ts.map +0 -0
- package/backend/dist/config.d.ts +0 -0
- package/backend/dist/config.js +0 -0
- package/backend/dist/config.js.map +0 -0
- package/backend/dist/hooks-manager.d.ts.map +1 -1
- package/backend/dist/hooks-manager.js +19 -3
- package/backend/dist/hooks-manager.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +53 -1
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/routes/auth.d.ts +0 -0
- package/backend/dist/routes/auth.d.ts.map +0 -0
- package/backend/dist/routes/auth.js.map +0 -0
- package/backend/dist/routes/projects.d.ts.map +0 -0
- package/backend/dist/routes/projects.js.map +0 -0
- package/backend/dist/session-manager.d.ts +0 -0
- package/backend/dist/session-manager.d.ts.map +0 -0
- package/backend/dist/session-manager.js +0 -0
- package/backend/dist/session-manager.js.map +0 -0
- package/backend/dist/terminal-manager.d.ts +10 -1
- package/backend/dist/terminal-manager.d.ts.map +1 -1
- package/backend/dist/terminal-manager.js +19 -2
- package/backend/dist/terminal-manager.js.map +1 -1
- package/backend/dist/types.d.ts +0 -0
- package/backend/dist/types.d.ts.map +0 -0
- package/backend/dist/types.js +0 -0
- package/backend/dist/types.js.map +0 -0
- package/bin/ccweb.js +1 -2
- package/frontend/dist/assets/{ChatOverlay-Jcso3jnE.js → ChatOverlay-BoPckOLq.js} +1 -1
- package/frontend/dist/assets/{ClaudeMemPage-egGwexFX.js → ClaudeMemPage-CeaZSvKE.js} +1 -1
- package/frontend/dist/assets/{GraphPreview-CYBEhXG-.js → GraphPreview-Ch6KZFsK.js} +2 -2
- package/frontend/dist/assets/{MobilePage-tc43L2Lz.js → MobilePage-JiqI8CSK.js} +3 -3
- package/frontend/dist/assets/NotebookPage-Ci_tsAYM.js +13 -0
- package/frontend/dist/assets/{OfficePreview-DtFr2tIA.js → OfficePreview-76Lw49uc.js} +2 -2
- package/frontend/dist/assets/{PdfPreview-jE4EtPVP.js → PdfPreview-DEsqK0ec.js} +1 -1
- package/frontend/dist/assets/{ProjectPage-BURCf2Do.js → ProjectPage-v7j0VJzB.js} +5 -5
- package/frontend/dist/assets/{ProjectSettingsPage-BSS5ICpz.js → ProjectSettingsPage-BlxBcXB4.js} +1 -1
- package/frontend/dist/assets/{SettingsPage-Bg1PltuQ.js → SettingsPage-eRuTffii.js} +1 -1
- package/frontend/dist/assets/{SkillHubPage-Dkfphglo.js → SkillHubPage-DTTbUlQD.js} +1 -1
- package/frontend/dist/assets/{check-circle-2-D4xZVklI.js → check-circle-2-CuGGbYqq.js} +1 -1
- package/frontend/dist/assets/{chevron-down-Bzyofau8.js → chevron-down-DqJlk-z-.js} +1 -1
- package/frontend/dist/assets/chevron-left-ADs1oMLf.js +7 -0
- package/frontend/dist/assets/{file-text-eaaujWBr.js → file-text-0i5NEvQ3.js} +1 -1
- package/frontend/dist/assets/{index-BRZSUCNz.js → index-BcTWKUVp.js} +1 -1
- package/frontend/dist/assets/{index-BXMeGbDt.js → index-BicNGyh6.js} +1 -1
- package/frontend/dist/assets/{index-BN_T0UV9.js → index-Bni5vqf8.js} +1 -1
- package/frontend/dist/assets/index-BpdaJxoa.css +1 -0
- package/frontend/dist/assets/{index-DXjluyd1.js → index-D5jbTY4Z.js} +3 -3
- package/frontend/dist/assets/{jszip.min-DPhtdqr8.js → jszip.min-CXhYhQvA.js} +1 -1
- package/frontend/dist/assets/{save-B8Uv2Egn.js → save-BFBfbWoK.js} +1 -1
- package/frontend/dist/assets/{search-Duax5rfs.js → search-DUINGkQd.js} +1 -1
- package/frontend/dist/assets/{select-CbDg1CtL.js → select-DxHj2qKT.js} +1 -1
- package/frontend/dist/assets/{tabs-8Bm08Uka.js → tabs-6zanHiRL.js} +1 -1
- package/frontend/dist/assets/{textarea-CpK1BCh-.js → textarea-DdVP5OsI.js} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +36 -10
- package/backend/dist/backup/config.d.ts +0 -10
- package/backend/dist/backup/config.d.ts.map +0 -1
- package/backend/dist/backup/config.js +0 -128
- package/backend/dist/backup/config.js.map +0 -1
- package/backend/dist/backup/engine.d.ts +0 -22
- package/backend/dist/backup/engine.d.ts.map +0 -1
- package/backend/dist/backup/engine.js +0 -298
- package/backend/dist/backup/engine.js.map +0 -1
- package/backend/dist/backup/providers/dropbox.d.ts +0 -25
- package/backend/dist/backup/providers/dropbox.d.ts.map +0 -1
- package/backend/dist/backup/providers/dropbox.js +0 -320
- package/backend/dist/backup/providers/dropbox.js.map +0 -1
- package/backend/dist/backup/providers/google-drive.d.ts +0 -29
- package/backend/dist/backup/providers/google-drive.d.ts.map +0 -1
- package/backend/dist/backup/providers/google-drive.js +0 -303
- package/backend/dist/backup/providers/google-drive.js.map +0 -1
- package/backend/dist/backup/providers/index.d.ts +0 -3
- package/backend/dist/backup/providers/index.d.ts.map +0 -1
- package/backend/dist/backup/providers/index.js +0 -19
- package/backend/dist/backup/providers/index.js.map +0 -1
- package/backend/dist/backup/providers/onedrive.d.ts +0 -29
- package/backend/dist/backup/providers/onedrive.d.ts.map +0 -1
- package/backend/dist/backup/providers/onedrive.js +0 -317
- package/backend/dist/backup/providers/onedrive.js.map +0 -1
- package/backend/dist/backup/scheduler.d.ts +0 -6
- package/backend/dist/backup/scheduler.d.ts.map +0 -1
- package/backend/dist/backup/scheduler.js +0 -55
- package/backend/dist/backup/scheduler.js.map +0 -1
- package/backend/dist/backup/types.d.ts +0 -73
- package/backend/dist/backup/types.d.ts.map +0 -1
- package/backend/dist/backup/types.js +0 -4
- package/backend/dist/backup/types.js.map +0 -1
- package/backend/dist/chat-process-manager.d.ts +0 -45
- package/backend/dist/chat-process-manager.d.ts.map +0 -1
- package/backend/dist/chat-process-manager.js +0 -258
- package/backend/dist/chat-process-manager.js.map +0 -1
- package/backend/dist/flows/runner.d.ts +0 -37
- package/backend/dist/flows/runner.d.ts.map +0 -1
- package/backend/dist/flows/runner.js +0 -660
- package/backend/dist/flows/runner.js.map +0 -1
- package/backend/dist/flows/store.d.ts +0 -40
- package/backend/dist/flows/store.d.ts.map +0 -1
- package/backend/dist/flows/store.js +0 -284
- package/backend/dist/flows/store.js.map +0 -1
- package/backend/dist/flows/types.d.ts +0 -176
- package/backend/dist/flows/types.d.ts.map +0 -1
- package/backend/dist/flows/types.js +0 -25
- package/backend/dist/flows/types.js.map +0 -1
- package/backend/dist/information/condenser.d.ts +0 -12
- package/backend/dist/information/condenser.d.ts.map +0 -1
- package/backend/dist/information/condenser.js +0 -568
- package/backend/dist/information/condenser.js.map +0 -1
- package/backend/dist/information/conversation-sync.d.ts +0 -22
- package/backend/dist/information/conversation-sync.d.ts.map +0 -1
- package/backend/dist/information/conversation-sync.js +0 -500
- package/backend/dist/information/conversation-sync.js.map +0 -1
- package/backend/dist/information/types.d.ts +0 -36
- package/backend/dist/information/types.d.ts.map +0 -1
- package/backend/dist/information/types.js +0 -4
- package/backend/dist/information/types.js.map +0 -1
- package/backend/dist/memory-pool/buoyancy.d.ts +0 -2
- package/backend/dist/memory-pool/buoyancy.d.ts.map +0 -1
- package/backend/dist/memory-pool/buoyancy.js +0 -12
- package/backend/dist/memory-pool/buoyancy.js.map +0 -1
- package/backend/dist/memory-pool/global-pool-manager.d.ts +0 -12
- package/backend/dist/memory-pool/global-pool-manager.d.ts.map +0 -1
- package/backend/dist/memory-pool/global-pool-manager.js +0 -295
- package/backend/dist/memory-pool/global-pool-manager.js.map +0 -1
- package/backend/dist/memory-pool/pool-lock.d.ts +0 -2
- package/backend/dist/memory-pool/pool-lock.d.ts.map +0 -1
- package/backend/dist/memory-pool/pool-lock.js +0 -31
- package/backend/dist/memory-pool/pool-lock.js.map +0 -1
- package/backend/dist/memory-pool/pool-manager.d.ts +0 -57
- package/backend/dist/memory-pool/pool-manager.d.ts.map +0 -1
- package/backend/dist/memory-pool/pool-manager.js +0 -322
- package/backend/dist/memory-pool/pool-manager.js.map +0 -1
- package/backend/dist/memory-pool/templates.d.ts +0 -5
- package/backend/dist/memory-pool/templates.d.ts.map +0 -1
- package/backend/dist/memory-pool/templates.js +0 -234
- package/backend/dist/memory-pool/templates.js.map +0 -1
- package/backend/dist/memory-pool/types.d.ts +0 -61
- package/backend/dist/memory-pool/types.d.ts.map +0 -1
- package/backend/dist/memory-pool/types.js +0 -4
- package/backend/dist/memory-pool/types.js.map +0 -1
- package/backend/dist/plan-control/checker.d.ts +0 -3
- package/backend/dist/plan-control/checker.d.ts.map +0 -1
- package/backend/dist/plan-control/checker.js +0 -103
- package/backend/dist/plan-control/checker.js.map +0 -1
- package/backend/dist/plan-control/executor.d.ts +0 -93
- package/backend/dist/plan-control/executor.d.ts.map +0 -1
- package/backend/dist/plan-control/executor.js +0 -955
- package/backend/dist/plan-control/executor.js.map +0 -1
- package/backend/dist/plan-control/parser.d.ts +0 -12
- package/backend/dist/plan-control/parser.d.ts.map +0 -1
- package/backend/dist/plan-control/parser.js +0 -216
- package/backend/dist/plan-control/parser.js.map +0 -1
- package/backend/dist/plan-control/templates.d.ts +0 -4
- package/backend/dist/plan-control/templates.d.ts.map +0 -1
- package/backend/dist/plan-control/templates.js +0 -271
- package/backend/dist/plan-control/templates.js.map +0 -1
- package/backend/dist/plan-control/types.d.ts +0 -102
- package/backend/dist/plan-control/types.d.ts.map +0 -1
- package/backend/dist/plan-control/types.js +0 -12
- package/backend/dist/plan-control/types.js.map +0 -1
- package/backend/dist/routes/backup.d.ts +0 -4
- package/backend/dist/routes/backup.d.ts.map +0 -1
- package/backend/dist/routes/backup.js +0 -274
- package/backend/dist/routes/backup.js.map +0 -1
- package/backend/dist/routes/flows.d.ts +0 -5
- package/backend/dist/routes/flows.d.ts.map +0 -1
- package/backend/dist/routes/flows.js +0 -457
- package/backend/dist/routes/flows.js.map +0 -1
- package/backend/dist/routes/global-flows.d.ts +0 -3
- package/backend/dist/routes/global-flows.d.ts.map +0 -1
- package/backend/dist/routes/global-flows.js +0 -90
- package/backend/dist/routes/global-flows.js.map +0 -1
- package/backend/dist/routes/information.d.ts +0 -3
- package/backend/dist/routes/information.d.ts.map +0 -1
- package/backend/dist/routes/information.js +0 -159
- package/backend/dist/routes/information.js.map +0 -1
- package/backend/dist/routes/memory-pool.d.ts +0 -3
- package/backend/dist/routes/memory-pool.d.ts.map +0 -1
- package/backend/dist/routes/memory-pool.js +0 -837
- package/backend/dist/routes/memory-pool.js.map +0 -1
- package/backend/dist/routes/plan-control.d.ts +0 -15
- package/backend/dist/routes/plan-control.d.ts.map +0 -1
- package/backend/dist/routes/plan-control.js +0 -337
- package/backend/dist/routes/plan-control.js.map +0 -1
- package/backend/dist/routes/share.d.ts +0 -3
- package/backend/dist/routes/share.d.ts.map +0 -1
- package/backend/dist/routes/share.js +0 -167
- package/backend/dist/routes/share.js.map +0 -1
- package/backend/dist/routes/sounds.d.ts +0 -3
- package/backend/dist/routes/sounds.d.ts.map +0 -1
- package/backend/dist/routes/sounds.js +0 -285
- package/backend/dist/routes/sounds.js.map +0 -1
- package/backend/dist/tracks/__tests__/verify-starter-templates.d.ts +0 -24
- package/backend/dist/tracks/__tests__/verify-starter-templates.d.ts.map +0 -1
- package/backend/dist/tracks/__tests__/verify-starter-templates.js +0 -175
- package/backend/dist/tracks/__tests__/verify-starter-templates.js.map +0 -1
- package/backend/dist/tracks/__tests__/verify-track-cancel.d.ts +0 -23
- package/backend/dist/tracks/__tests__/verify-track-cancel.d.ts.map +0 -1
- package/backend/dist/tracks/__tests__/verify-track-cancel.js +0 -153
- package/backend/dist/tracks/__tests__/verify-track-cancel.js.map +0 -1
- package/backend/dist/tracks/__tests__/verify-track-t1.d.ts +0 -11
- package/backend/dist/tracks/__tests__/verify-track-t1.d.ts.map +0 -1
- package/backend/dist/tracks/__tests__/verify-track-t1.js +0 -293
- package/backend/dist/tracks/__tests__/verify-track-t1.js.map +0 -1
- package/backend/dist/tracks/__tests__/verify-track.d.ts +0 -20
- package/backend/dist/tracks/__tests__/verify-track.d.ts.map +0 -1
- package/backend/dist/tracks/__tests__/verify-track.js +0 -187
- package/backend/dist/tracks/__tests__/verify-track.js.map +0 -1
- package/backend/dist/tracks/registry.d.ts +0 -61
- package/backend/dist/tracks/registry.d.ts.map +0 -1
- package/backend/dist/tracks/registry.js +0 -202
- package/backend/dist/tracks/registry.js.map +0 -1
- package/backend/dist/tracks/track-runner.d.ts +0 -69
- package/backend/dist/tracks/track-runner.d.ts.map +0 -1
- package/backend/dist/tracks/track-runner.js +0 -158
- package/backend/dist/tracks/track-runner.js.map +0 -1
- package/backend/dist/tracks/train-loader.d.ts +0 -44
- package/backend/dist/tracks/train-loader.d.ts.map +0 -1
- package/backend/dist/tracks/train-loader.js +0 -32
- package/backend/dist/tracks/train-loader.js.map +0 -1
- package/backend/dist/tracks/types-train.d.ts +0 -12
- package/backend/dist/tracks/types-train.d.ts.map +0 -1
- package/backend/dist/tracks/types-train.js +0 -13
- package/backend/dist/tracks/types-train.js.map +0 -1
- package/backend/dist/usage-terminal.d.ts +0 -18
- package/backend/dist/usage-terminal.d.ts.map +0 -1
- package/backend/dist/usage-terminal.js +0 -191
- package/backend/dist/usage-terminal.js.map +0 -1
- package/frontend/dist/assets/NotebookPage-Dy1fFqcp.js +0 -13
- package/frontend/dist/assets/index-CgRMBOJu.css +0 -1
|
@@ -1,500 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// backend/src/information/conversation-sync.ts
|
|
3
|
-
//
|
|
4
|
-
// One JSONL file = one conversation directory.
|
|
5
|
-
// ID = JSONL filename (without .jsonl).
|
|
6
|
-
// Stop hook overwrites v0.md each time (JSONL is append-only with --continue).
|
|
7
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
-
if (k2 === undefined) k2 = k;
|
|
9
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
-
}
|
|
13
|
-
Object.defineProperty(o, k2, desc);
|
|
14
|
-
}) : (function(o, m, k, k2) {
|
|
15
|
-
if (k2 === undefined) k2 = k;
|
|
16
|
-
o[k2] = m[k];
|
|
17
|
-
}));
|
|
18
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
-
}) : function(o, v) {
|
|
21
|
-
o["default"] = v;
|
|
22
|
-
});
|
|
23
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
-
var ownKeys = function(o) {
|
|
25
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
-
var ar = [];
|
|
27
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
-
return ar;
|
|
29
|
-
};
|
|
30
|
-
return ownKeys(o);
|
|
31
|
-
};
|
|
32
|
-
return function (mod) {
|
|
33
|
-
if (mod && mod.__esModule) return mod;
|
|
34
|
-
var result = {};
|
|
35
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
-
__setModuleDefault(result, mod);
|
|
37
|
-
return result;
|
|
38
|
-
};
|
|
39
|
-
})();
|
|
40
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.infoDir = infoDir;
|
|
42
|
-
exports.readMeta = readMeta;
|
|
43
|
-
exports.writeMeta = writeMeta;
|
|
44
|
-
exports.listConversationIds = listConversationIds;
|
|
45
|
-
exports.syncFromJsonl = syncFromJsonl;
|
|
46
|
-
exports.compensationSync = compensationSync;
|
|
47
|
-
const fs = __importStar(require("fs"));
|
|
48
|
-
const path = __importStar(require("path"));
|
|
49
|
-
const config_1 = require("../config");
|
|
50
|
-
const INFO_DIR = 'information';
|
|
51
|
-
const MAX_TOOL_INPUT = 50;
|
|
52
|
-
const MAX_TOOL_OUTPUT = 100;
|
|
53
|
-
// ── Helpers ──
|
|
54
|
-
function infoDir(projectFolder) {
|
|
55
|
-
return path.join(projectFolder, '.ccweb', INFO_DIR);
|
|
56
|
-
}
|
|
57
|
-
function estimateTokens(text) {
|
|
58
|
-
return Math.ceil(text.length / 4);
|
|
59
|
-
}
|
|
60
|
-
function readMeta(convDir) {
|
|
61
|
-
const file = path.join(convDir, 'meta.json');
|
|
62
|
-
if (!fs.existsSync(file))
|
|
63
|
-
return null;
|
|
64
|
-
try {
|
|
65
|
-
return JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
function writeMeta(convDir, meta) {
|
|
72
|
-
(0, config_1.atomicWriteSync)(path.join(convDir, 'meta.json'), JSON.stringify(meta, null, 2));
|
|
73
|
-
}
|
|
74
|
-
/** List all conversation IDs by scanning the information directory. */
|
|
75
|
-
function listConversationIds(projectFolder) {
|
|
76
|
-
const dir = infoDir(projectFolder);
|
|
77
|
-
if (!fs.existsSync(dir))
|
|
78
|
-
return [];
|
|
79
|
-
try {
|
|
80
|
-
return fs.readdirSync(dir).filter(f => {
|
|
81
|
-
try {
|
|
82
|
-
return fs.statSync(path.join(dir, f)).isDirectory()
|
|
83
|
-
&& fs.existsSync(path.join(dir, f, 'meta.json'));
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
return [];
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// ── Format ChatBlocks → v0.md content ──
|
|
95
|
-
function formatToolBlock(item) {
|
|
96
|
-
const content = item.content;
|
|
97
|
-
if (item.type === 'tool_use') {
|
|
98
|
-
const parenIdx = content.indexOf('(');
|
|
99
|
-
if (parenIdx !== -1) {
|
|
100
|
-
const name = content.slice(0, parenIdx);
|
|
101
|
-
let input = content.slice(parenIdx + 1).replace(/\)$/, '');
|
|
102
|
-
if (input.length > MAX_TOOL_INPUT)
|
|
103
|
-
input = input.slice(0, MAX_TOOL_INPUT) + '...';
|
|
104
|
-
return `[工具] ${name}(${input})`;
|
|
105
|
-
}
|
|
106
|
-
return `[工具] ${content.slice(0, MAX_TOOL_INPUT + MAX_TOOL_OUTPUT)}`;
|
|
107
|
-
}
|
|
108
|
-
if (item.type === 'tool_result') {
|
|
109
|
-
let result = content.replace(/\n/g, ' ').trim();
|
|
110
|
-
if (result.length > MAX_TOOL_OUTPUT)
|
|
111
|
-
result = result.slice(0, MAX_TOOL_OUTPUT) + '...';
|
|
112
|
-
return ` → ${result}`;
|
|
113
|
-
}
|
|
114
|
-
return content;
|
|
115
|
-
}
|
|
116
|
-
function formatAssistantBlock(block) {
|
|
117
|
-
const parts = [];
|
|
118
|
-
let pendingTool = '';
|
|
119
|
-
for (const item of block.blocks) {
|
|
120
|
-
if (item.type === 'text') {
|
|
121
|
-
const text = item.content.trim();
|
|
122
|
-
if (text)
|
|
123
|
-
parts.push(text);
|
|
124
|
-
}
|
|
125
|
-
else if (item.type === 'tool_use') {
|
|
126
|
-
pendingTool = formatToolBlock(item);
|
|
127
|
-
}
|
|
128
|
-
else if (item.type === 'tool_result') {
|
|
129
|
-
if (pendingTool) {
|
|
130
|
-
parts.push(pendingTool + formatToolBlock(item));
|
|
131
|
-
pendingTool = '';
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
parts.push(`[工具结果] ${item.content.slice(0, MAX_TOOL_OUTPUT)}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
if (pendingTool)
|
|
139
|
-
parts.push(pendingTool + ' → [无结果]');
|
|
140
|
-
return parts;
|
|
141
|
-
}
|
|
142
|
-
function formatChatBlocks(blocks) {
|
|
143
|
-
const lines = [];
|
|
144
|
-
let userIdx = 0;
|
|
145
|
-
let assistantIdx = 0;
|
|
146
|
-
// Merge consecutive assistant blocks into one turn
|
|
147
|
-
let i = 0;
|
|
148
|
-
while (i < blocks.length) {
|
|
149
|
-
const block = blocks[i];
|
|
150
|
-
if (block.role === 'user') {
|
|
151
|
-
userIdx++;
|
|
152
|
-
const textParts = block.blocks.filter(b => b.type === 'text').map(b => b.content);
|
|
153
|
-
const text = textParts.join('\n').trim();
|
|
154
|
-
if (text) {
|
|
155
|
-
lines.push(`## U${userIdx}`);
|
|
156
|
-
lines.push(text);
|
|
157
|
-
lines.push('');
|
|
158
|
-
}
|
|
159
|
-
i++;
|
|
160
|
-
}
|
|
161
|
-
else if (block.role === 'assistant') {
|
|
162
|
-
// Collect all consecutive assistant blocks
|
|
163
|
-
const mergedParts = [];
|
|
164
|
-
while (i < blocks.length && blocks[i].role === 'assistant') {
|
|
165
|
-
mergedParts.push(...formatAssistantBlock(blocks[i]));
|
|
166
|
-
i++;
|
|
167
|
-
}
|
|
168
|
-
if (mergedParts.length > 0) {
|
|
169
|
-
assistantIdx++;
|
|
170
|
-
lines.push(`## A${assistantIdx}`);
|
|
171
|
-
lines.push(mergedParts.join('\n'));
|
|
172
|
-
lines.push('');
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
i++;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
return { content: lines.join('\n'), turns: Math.max(userIdx, assistantIdx) };
|
|
180
|
-
}
|
|
181
|
-
// ── Sync a conversation from JSONL ──
|
|
182
|
-
/**
|
|
183
|
-
* Sync a JSONL file to .ccweb/information/{jsonlId}/.
|
|
184
|
-
* Overwrites v0.md if already exists (JSONL may have grown via --continue).
|
|
185
|
-
* Returns conversation ID or null if too short.
|
|
186
|
-
*/
|
|
187
|
-
function syncFromJsonl(projectFolder, jsonlPath, chatBlocks) {
|
|
188
|
-
if (chatBlocks.length < 6)
|
|
189
|
-
return null; // Need at least 3 U-A pairs
|
|
190
|
-
const jsonlName = path.basename(jsonlPath);
|
|
191
|
-
const convId = jsonlName.replace(/\.(jsonl|json)$/, '');
|
|
192
|
-
const dir = infoDir(projectFolder);
|
|
193
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
194
|
-
const convDir = path.join(dir, convId);
|
|
195
|
-
fs.mkdirSync(convDir, { recursive: true });
|
|
196
|
-
// Format and write v0.md
|
|
197
|
-
const { content, turns } = formatChatBlocks(chatBlocks);
|
|
198
|
-
if (turns < 3)
|
|
199
|
-
return null;
|
|
200
|
-
const tokens = estimateTokens(content);
|
|
201
|
-
// Read existing meta
|
|
202
|
-
const existing = readMeta(convDir);
|
|
203
|
-
// Read old v0 to detect changes
|
|
204
|
-
const oldV0Path = path.join(convDir, 'v0.md');
|
|
205
|
-
const hadOldV0 = existing && fs.existsSync(oldV0Path);
|
|
206
|
-
let oldV0Content = '';
|
|
207
|
-
if (hadOldV0) {
|
|
208
|
-
try {
|
|
209
|
-
oldV0Content = fs.readFileSync(oldV0Path, 'utf-8');
|
|
210
|
-
}
|
|
211
|
-
catch { /* */ }
|
|
212
|
-
}
|
|
213
|
-
// Write new v0.md
|
|
214
|
-
(0, config_1.atomicWriteSync)(path.join(convDir, 'v0.md'), content);
|
|
215
|
-
// Turn ID mapping (old → new), used for vN updates and meta remapping
|
|
216
|
-
let oldToNew = null;
|
|
217
|
-
// Update vN files if they exist
|
|
218
|
-
if (existing && hadOldV0) {
|
|
219
|
-
// Build old turn ID → new turn ID mapping
|
|
220
|
-
// Old v0 might have: U1, A1, A2, A3, U2, A4 (unmerged)
|
|
221
|
-
// New v0 might have: U1, A1, U2, A2 (merged: old A1+A2+A3 → new A1, old A4 → new A2)
|
|
222
|
-
// Strategy: parse both, align by user turns (U never merge), map assistant turns
|
|
223
|
-
const oldSections = oldV0Content.split(/(?=^## [UA]\d+)/m).filter(Boolean);
|
|
224
|
-
const newSections = content.split(/(?=^## [UA]\d+)/m).filter(Boolean);
|
|
225
|
-
// Build mapping: for each new section, what old sections does it correspond to?
|
|
226
|
-
// New A sections between two U's correspond to all old A sections in the same gap
|
|
227
|
-
const oldIds = oldSections.map(s => { const m = s.match(/^## ([UA]\d+)/); return m ? m[1] : ''; }).filter(Boolean);
|
|
228
|
-
const newIds = newSections.map(s => { const m = s.match(/^## ([UA]\d+)/); return m ? m[1] : ''; }).filter(Boolean);
|
|
229
|
-
// Map old turn IDs to new turn IDs by sequential alignment
|
|
230
|
-
// Both sequences follow U-A-U-A pattern; user turns align 1:1, assistant turns between same user pair merge
|
|
231
|
-
oldToNew = new Map(); // old ID → new ID
|
|
232
|
-
let oi = 0, ni = 0;
|
|
233
|
-
while (oi < oldIds.length && ni < newIds.length) {
|
|
234
|
-
if (oldIds[oi].startsWith('U') && newIds[ni].startsWith('U')) {
|
|
235
|
-
oldToNew.set(oldIds[oi], newIds[ni]);
|
|
236
|
-
oi++;
|
|
237
|
-
ni++;
|
|
238
|
-
}
|
|
239
|
-
else if (oldIds[oi].startsWith('A') && newIds[ni].startsWith('A')) {
|
|
240
|
-
// Map this old A and all consecutive old A's to this one new A
|
|
241
|
-
const targetNewA = newIds[ni];
|
|
242
|
-
while (oi < oldIds.length && oldIds[oi].startsWith('A')) {
|
|
243
|
-
oldToNew.set(oldIds[oi], targetNewA);
|
|
244
|
-
oi++;
|
|
245
|
-
}
|
|
246
|
-
ni++;
|
|
247
|
-
}
|
|
248
|
-
else if (oldIds[oi].startsWith('A')) {
|
|
249
|
-
// Old has A but new has U — old A's before this U map to previous new A
|
|
250
|
-
oi++;
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
ni++;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
// New sections that have no mapping from old = genuinely new turns
|
|
257
|
-
const mappedNewIds = new Set(oldToNew.values());
|
|
258
|
-
const appendSections = newSections.filter(s => {
|
|
259
|
-
const m = s.match(/^## ([UA]\d+)/);
|
|
260
|
-
return m && !mappedNewIds.has(m[1]);
|
|
261
|
-
});
|
|
262
|
-
// Build new v0 turn → token count map (for recalculating [cN,P%])
|
|
263
|
-
const newV0Tokens = new Map();
|
|
264
|
-
for (const section of newSections) {
|
|
265
|
-
const m = section.match(/^## ([UA]\d+).*\n/);
|
|
266
|
-
if (m) {
|
|
267
|
-
const body = section.slice(m[0].length).trim();
|
|
268
|
-
newV0Tokens.set(m[1], estimateTokens(body));
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
// Process vN files IN ORDER (v1 first, then v2, then v3...)
|
|
272
|
-
// so that v2 can read v1's updated markers as its history chain.
|
|
273
|
-
const sortedVersionKeys = Object.keys(existing.versions)
|
|
274
|
-
.filter(k => k !== 'v0')
|
|
275
|
-
.sort((a, b) => parseInt(a.replace('v', '')) - parseInt(b.replace('v', '')));
|
|
276
|
-
// Track previous version's markers for building history chains
|
|
277
|
-
// Start with v0 (no markers = 100% for all turns)
|
|
278
|
-
let prevVersionMarkers = new Map(); // newId → marker string (e.g. "[c1,60%]")
|
|
279
|
-
for (const vkey of sortedVersionKeys) {
|
|
280
|
-
const ventry = existing.versions[vkey];
|
|
281
|
-
const vPath = path.join(convDir, ventry.file);
|
|
282
|
-
if (!fs.existsSync(vPath))
|
|
283
|
-
continue;
|
|
284
|
-
const level = parseInt(vkey.replace('v', '')) || 1;
|
|
285
|
-
try {
|
|
286
|
-
const vContent = fs.readFileSync(vPath, 'utf-8');
|
|
287
|
-
const vSections = vContent.split(/(?=^## [UA]\d+)/m).filter(Boolean);
|
|
288
|
-
// Merge bodies per new ID
|
|
289
|
-
const mergedBodies = new Map();
|
|
290
|
-
const mergedOrder = [];
|
|
291
|
-
for (const section of vSections) {
|
|
292
|
-
const idMatch = section.match(/^## ([UA]\d+).*\n/);
|
|
293
|
-
if (!idMatch)
|
|
294
|
-
continue;
|
|
295
|
-
const oldId = idMatch[1];
|
|
296
|
-
const body = section.slice(idMatch[0].length);
|
|
297
|
-
const newId = oldToNew.get(oldId);
|
|
298
|
-
if (!newId)
|
|
299
|
-
continue;
|
|
300
|
-
if (mergedBodies.has(newId)) {
|
|
301
|
-
mergedBodies.set(newId, mergedBodies.get(newId) + '\n' + body);
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
mergedBodies.set(newId, body);
|
|
305
|
-
mergedOrder.push(newId);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
// Rebuild with markers: current level P% + history from previous version's markers
|
|
309
|
-
const rebuilt = [];
|
|
310
|
-
const thisVersionMarkers = new Map();
|
|
311
|
-
for (const newId of mergedOrder) {
|
|
312
|
-
const body = mergedBodies.get(newId);
|
|
313
|
-
const vTurnTokens = estimateTokens(body.trim());
|
|
314
|
-
const origTokens = newV0Tokens.get(newId) ?? vTurnTokens;
|
|
315
|
-
let marker = '';
|
|
316
|
-
if (origTokens > 0 && vTurnTokens < origTokens * 0.95) {
|
|
317
|
-
const pct = Math.round(vTurnTokens / origTokens * 100);
|
|
318
|
-
// Get history chain from previous version's marker for this turn
|
|
319
|
-
const prevMarker = prevVersionMarkers.get(newId) || '';
|
|
320
|
-
const prevChain = prevMarker.replace(/^\[/, '').replace(/\]$/, '').trim();
|
|
321
|
-
marker = prevChain
|
|
322
|
-
? ` [c${level},${pct}%;${prevChain}]`
|
|
323
|
-
: ` [c${level},${pct}%]`;
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
326
|
-
// Not condensed at this level — carry forward previous version's marker
|
|
327
|
-
const prevMarker = prevVersionMarkers.get(newId) || '';
|
|
328
|
-
if (prevMarker)
|
|
329
|
-
marker = ` ${prevMarker}`;
|
|
330
|
-
}
|
|
331
|
-
thisVersionMarkers.set(newId, marker.trim());
|
|
332
|
-
rebuilt.push(`## ${newId}${marker}`);
|
|
333
|
-
rebuilt.push(body);
|
|
334
|
-
rebuilt.push('');
|
|
335
|
-
}
|
|
336
|
-
// Append genuinely new turns (raw, no markers)
|
|
337
|
-
if (appendSections.length > 0) {
|
|
338
|
-
rebuilt.push(...appendSections);
|
|
339
|
-
}
|
|
340
|
-
(0, config_1.atomicWriteSync)(vPath, rebuilt.join('\n'));
|
|
341
|
-
prevVersionMarkers = thisVersionMarkers; // Pass to next version
|
|
342
|
-
}
|
|
343
|
-
catch { /* skip */ }
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
const startedAt = chatBlocks[0]?.timestamp || new Date().toISOString();
|
|
347
|
-
const endedAt = chatBlocks[chatBlocks.length - 1]?.timestamp || new Date().toISOString();
|
|
348
|
-
const firstUserBlock = chatBlocks.find(b => b.role === 'user');
|
|
349
|
-
const firstUserText = firstUserBlock?.blocks.find(b => b.type === 'text')?.content || '';
|
|
350
|
-
const summary = firstUserText.slice(0, 50).replace(/\n/g, ' ').trim() || '(无摘要)';
|
|
351
|
-
// Update token counts for all versions
|
|
352
|
-
const updatedVersions = { ...(existing?.versions ?? {}), v0: { file: 'v0.md', tokens } };
|
|
353
|
-
// Recount tokens for all vN files (they may have been merged/appended)
|
|
354
|
-
if (existing) {
|
|
355
|
-
for (const [vkey, ventry] of Object.entries(updatedVersions)) {
|
|
356
|
-
if (vkey === 'v0')
|
|
357
|
-
continue;
|
|
358
|
-
const vPath = path.join(convDir, ventry.file);
|
|
359
|
-
if (fs.existsSync(vPath)) {
|
|
360
|
-
try {
|
|
361
|
-
const vContent = fs.readFileSync(vPath, 'utf-8');
|
|
362
|
-
updatedVersions[vkey] = { ...ventry, tokens: estimateTokens(vContent) };
|
|
363
|
-
}
|
|
364
|
-
catch { /* keep old count */ }
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
// Remap cohesion_map and expand_stats.by_turn if turn IDs changed
|
|
369
|
-
let cohesionMap = existing?.cohesion_map ?? {};
|
|
370
|
-
let expandStats = existing?.expand_stats ?? { total_llm: 0, total_user: 0, by_turn: {}, recent: [] };
|
|
371
|
-
if (existing && hadOldV0) {
|
|
372
|
-
// Check if oldToNew mapping exists (it's defined in the block above)
|
|
373
|
-
// Rebuild cohesion_map with new IDs
|
|
374
|
-
const oldCohesion = existing.cohesion_map ?? {};
|
|
375
|
-
const newCohesion = {};
|
|
376
|
-
for (const [oldId, val] of Object.entries(oldCohesion)) {
|
|
377
|
-
const newId = oldToNew?.get(oldId);
|
|
378
|
-
if (newId && !(newId in newCohesion))
|
|
379
|
-
newCohesion[newId] = val;
|
|
380
|
-
}
|
|
381
|
-
cohesionMap = newCohesion;
|
|
382
|
-
// Rebuild expand_stats.by_turn with new IDs (sum counts for merged turns)
|
|
383
|
-
const oldByTurn = existing.expand_stats?.by_turn ?? {};
|
|
384
|
-
const newByTurn = {};
|
|
385
|
-
for (const [oldId, count] of Object.entries(oldByTurn)) {
|
|
386
|
-
const newId = oldToNew?.get(oldId);
|
|
387
|
-
if (newId)
|
|
388
|
-
newByTurn[newId] = (newByTurn[newId] ?? 0) + count;
|
|
389
|
-
}
|
|
390
|
-
expandStats = { ...expandStats, by_turn: newByTurn };
|
|
391
|
-
}
|
|
392
|
-
const meta = {
|
|
393
|
-
jsonl_file: jsonlName,
|
|
394
|
-
started_at: startedAt,
|
|
395
|
-
ended_at: endedAt,
|
|
396
|
-
turns,
|
|
397
|
-
summary,
|
|
398
|
-
original_tokens: tokens,
|
|
399
|
-
sync_status: 'complete',
|
|
400
|
-
versions: updatedVersions,
|
|
401
|
-
latest: existing?.latest ?? 'v0',
|
|
402
|
-
cohesion_map: cohesionMap,
|
|
403
|
-
expand_stats: expandStats,
|
|
404
|
-
reorganize_count: existing?.reorganize_count ?? 0,
|
|
405
|
-
last_reorganize_at: existing?.last_reorganize_at ?? null,
|
|
406
|
-
};
|
|
407
|
-
writeMeta(convDir, meta);
|
|
408
|
-
return convId;
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* Collect all JSONL files for a project.
|
|
412
|
-
* Claude: flat directory per project.
|
|
413
|
-
* Codex: nested date dirs, filter by cwd in session_meta.
|
|
414
|
-
*/
|
|
415
|
-
function collectJsonlFiles(projectFolder, cliTool) {
|
|
416
|
-
const { getAdapter } = require('../adapters');
|
|
417
|
-
const adapter = getAdapter(cliTool);
|
|
418
|
-
// Codex has getSessionFilesForProject that filters by cwd
|
|
419
|
-
if (typeof adapter.getSessionFilesForProject === 'function') {
|
|
420
|
-
return adapter.getSessionFilesForProject(projectFolder);
|
|
421
|
-
}
|
|
422
|
-
// Claude/default: flat directory with session files belonging to this project
|
|
423
|
-
const sessionDir = adapter.getSessionDir(projectFolder);
|
|
424
|
-
if (!sessionDir || !fs.existsSync(sessionDir))
|
|
425
|
-
return [];
|
|
426
|
-
const ext = typeof adapter.getSessionFileExtension === 'function'
|
|
427
|
-
? adapter.getSessionFileExtension()
|
|
428
|
-
: '.jsonl';
|
|
429
|
-
try {
|
|
430
|
-
return fs.readdirSync(sessionDir)
|
|
431
|
-
.filter(f => f.endsWith(ext))
|
|
432
|
-
.map(f => path.join(sessionDir, f));
|
|
433
|
-
}
|
|
434
|
-
catch {
|
|
435
|
-
return [];
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
/**
|
|
439
|
-
* Scan JSONL files and sync any not yet in .ccweb/information/.
|
|
440
|
-
*/
|
|
441
|
-
function compensationSync(projectFolder, cliTool, parseLineBlocksFn, force = false) {
|
|
442
|
-
const jsonlFiles = collectJsonlFiles(projectFolder, cliTool);
|
|
443
|
-
if (jsonlFiles.length === 0)
|
|
444
|
-
return { synced: 0, updated: 0, errors: 0 };
|
|
445
|
-
const dir = infoDir(projectFolder);
|
|
446
|
-
const existingIds = new Set(listConversationIds(projectFolder));
|
|
447
|
-
let synced = 0;
|
|
448
|
-
let updated = 0;
|
|
449
|
-
let errors = 0;
|
|
450
|
-
for (const filePath of jsonlFiles) {
|
|
451
|
-
const fileName = path.basename(filePath);
|
|
452
|
-
const convId = fileName.replace(/\.(jsonl|json)$/, '');
|
|
453
|
-
// Check if needs sync: new, JSONL newer than v0.md, or force
|
|
454
|
-
const convDir = path.join(dir, convId);
|
|
455
|
-
const isNew = !existingIds.has(convId);
|
|
456
|
-
if (!isNew && !force) {
|
|
457
|
-
try {
|
|
458
|
-
const jsonlMtime = fs.statSync(filePath).mtimeMs;
|
|
459
|
-
const v0Path = path.join(convDir, 'v0.md');
|
|
460
|
-
if (fs.existsSync(v0Path)) {
|
|
461
|
-
const v0Mtime = fs.statSync(v0Path).mtimeMs;
|
|
462
|
-
if (jsonlMtime <= v0Mtime)
|
|
463
|
-
continue;
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
catch { /* sync anyway */ }
|
|
467
|
-
}
|
|
468
|
-
try {
|
|
469
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
470
|
-
let blocks = [];
|
|
471
|
-
// Whole-file JSON tools (Gemini): use parseSessionFile
|
|
472
|
-
const { getAdapter } = require('../adapters');
|
|
473
|
-
const currentAdapter = getAdapter(cliTool);
|
|
474
|
-
if (typeof currentAdapter.parseSessionFile === 'function') {
|
|
475
|
-
blocks = currentAdapter.parseSessionFile(content);
|
|
476
|
-
}
|
|
477
|
-
else {
|
|
478
|
-
// JSONL tools: parse line by line
|
|
479
|
-
const lines = content.split('\n').filter(l => l.trim());
|
|
480
|
-
for (const line of lines) {
|
|
481
|
-
const block = parseLineBlocksFn(line);
|
|
482
|
-
if (block)
|
|
483
|
-
blocks.push(block);
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
const result = syncFromJsonl(projectFolder, filePath, blocks);
|
|
487
|
-
if (result) {
|
|
488
|
-
if (isNew)
|
|
489
|
-
synced++;
|
|
490
|
-
else
|
|
491
|
-
updated++;
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
catch {
|
|
495
|
-
errors++;
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
return { synced, updated, errors };
|
|
499
|
-
}
|
|
500
|
-
//# sourceMappingURL=conversation-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-sync.js","sourceRoot":"","sources":["../../src/information/conversation-sync.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,EAAE;AACF,+CAA+C;AAC/C,wCAAwC;AACxC,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAc/E,0BAEC;AAMD,4BAQC;AAED,8BAEC;AAGD,kDAWC;AA8FD,sCA+OC;AAmCD,4CA6DC;AA3dD,uCAAyB;AACzB,2CAA6B;AAC7B,sCAA4C;AAI5C,MAAM,QAAQ,GAAG,aAAa,CAAC;AAC/B,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,gBAAgB;AAEhB,SAAgB,OAAO,CAAC,aAAqB;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAe;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,SAAS,CAAC,OAAe,EAAE,IAAsB;IAC/D,IAAA,wBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,uEAAuE;AACvE,SAAgB,mBAAmB,CAAC,aAAqB;IACvD,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;uBAC9C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,KAAK,CAAC;YAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,0CAA0C;AAE1C,SAAS,eAAe,CAAC,IAAmB;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc;gBAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC;YAClF,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG,CAAC;QAClC,CAAC;QACD,OAAO,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,eAAe,CAAC,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAChC,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,MAAM,CAAC,MAAM,GAAG,eAAe;YAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC;QACvF,OAAO,MAAM,MAAM,EAAE,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAgB;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACpC,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACvC,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,WAAW,GAAG,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAmB;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,mDAAmD;IACnD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAClF,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACtC,2CAA2C;YAC3C,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC3D,WAAW,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,CAAC,EAAE,CAAC;YACN,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,YAAY,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,OAAO,YAAY,EAAE,CAAC,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,uCAAuC;AAEvC;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,aAAqB,EACrB,SAAiB,EACjB,UAAuB;IAEvB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,4BAA4B;IAEpE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAExD,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,yBAAyB;IACzB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEvC,qBAAqB;IACrB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEnC,gCAAgC;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED,kBAAkB;IAClB,IAAA,wBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAEtD,sEAAsE;IACtE,IAAI,QAAQ,GAA+B,IAAI,CAAC;IAEhD,gCAAgC;IAChC,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACzB,0CAA0C;QAC1C,uDAAuD;QACvD,qFAAqF;QACrF,iFAAiF;QACjF,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEtE,gFAAgF;QAChF,kFAAkF;QAClF,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnH,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnH,2DAA2D;QAC3D,4GAA4G;QAC5G,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,kBAAkB;QACxD,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACnB,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAChD,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7D,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC,EAAE,EAAE,CAAC;gBAAC,EAAE,EAAE,CAAC;YACb,CAAC;iBAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpE,+DAA+D;gBAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC9B,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBACrC,EAAE,EAAE,CAAC;gBACP,CAAC;gBACD,EAAE,EAAE,CAAC;YACP,CAAC;iBAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,wEAAwE;gBACxE,EAAE,EAAE,CAAC;YACP,CAAC;iBAAM,CAAC;gBACN,EAAE,EAAE,CAAC;YACP,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,kEAAkE;QAClE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/C,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,iEAAiE;QACjE,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;aACrD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;aACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/E,+DAA+D;QAC/D,kDAAkD;QAClD,IAAI,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,0CAA0C;QAE9F,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,SAAS;YAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAEnD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAErE,0BAA0B;gBAC1B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;gBAC/C,MAAM,WAAW,GAAa,EAAE,CAAC;gBACjC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;oBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;oBACnD,IAAI,CAAC,OAAO;wBAAE,SAAS;oBACvB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACzB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,KAAK,GAAG,QAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnC,IAAI,CAAC,KAAK;wBAAE,SAAS;oBAErB,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5B,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;oBAClE,CAAC;yBAAM,CAAC;wBACN,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAC9B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC;gBAED,mFAAmF;gBACnF,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;gBAErD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;oBACtC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;oBAEzD,IAAI,MAAM,GAAG,EAAE,CAAC;oBAChB,IAAI,UAAU,GAAG,CAAC,IAAI,WAAW,GAAG,UAAU,GAAG,IAAI,EAAE,CAAC;wBACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;wBACvD,iEAAiE;wBACjE,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBACvD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC1E,MAAM,GAAG,SAAS;4BAChB,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,SAAS,GAAG;4BACrC,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;oBAC7B,CAAC;yBAAM,CAAC;wBACN,wEAAwE;wBACxE,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBACvD,IAAI,UAAU;4BAAE,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC5C,CAAC;oBAED,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;gBAED,+CAA+C;gBAC/C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;gBAClC,CAAC;gBAED,IAAA,wBAAe,EAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3C,kBAAkB,GAAG,kBAAkB,CAAC,CAAC,uBAAuB;YAClE,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEzF,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;IACzF,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC;IAEjF,uCAAuC;IACvC,MAAM,eAAe,GAAwB,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9G,uEAAuE;IACvE,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAC7D,IAAI,IAAI,KAAK,IAAI;gBAAE,SAAS;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBACjD,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1E,CAAC;gBAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,IAAI,WAAW,GAAG,QAAQ,EAAE,YAAY,IAAI,EAAE,CAAC;IAC/C,IAAI,WAAW,GAAG,QAAQ,EAAE,YAAY,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACrG,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACzB,qEAAqE;QACrE,oCAAoC;QACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;QAChD,MAAM,WAAW,GAAkC,EAAE,CAAC;QACtD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC;gBAAE,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QACjE,CAAC;QACD,WAAW,GAAG,WAAW,CAAC;QAE1B,0EAA0E;QAC1E,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;QACvD,MAAM,SAAS,GAA2B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,KAAK;gBAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QAChE,CAAC;QACD,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,IAAI,GAAqB;QAC7B,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,OAAO;QACjB,KAAK;QACL,OAAO;QACP,eAAe,EAAE,MAAM;QACvB,WAAW,EAAE,UAAU;QACvB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAI;QAChC,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,WAAW;QACzB,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,IAAI,CAAC;QACjD,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,IAAI,IAAI;KACzD,CAAC;IACF,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,aAAqB,EACrB,OAAe;IAEf,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpC,0DAA0D;IAC1D,IAAI,OAAO,OAAO,CAAC,yBAAyB,KAAK,UAAU,EAAE,CAAC;QAC5D,OAAO,OAAO,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED,8EAA8E;IAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IACzD,MAAM,GAAG,GAAG,OAAO,OAAO,CAAC,uBAAuB,KAAK,UAAU;QAC/D,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE;QACnC,CAAC,CAAC,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;aAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,aAAqB,EACrB,OAAe,EACf,iBAAqD,EACrD,KAAK,GAAG,KAAK;IAEb,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAEzE,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;IAEhE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAEvD,6DAA6D;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;oBAC5C,IAAI,UAAU,IAAI,OAAO;wBAAE,SAAS;gBACtC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,MAAM,GAAgB,EAAE,CAAC;YAE7B,uDAAuD;YACvD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,OAAO,cAAc,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;gBAC1D,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,kCAAkC;gBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBACtC,IAAI,KAAK;wBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9D,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,KAAK;oBAAE,MAAM,EAAE,CAAC;;oBAAM,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export interface ConversationMeta {
|
|
2
|
-
jsonl_file: string;
|
|
3
|
-
started_at: string;
|
|
4
|
-
ended_at: string;
|
|
5
|
-
turns: number;
|
|
6
|
-
summary: string;
|
|
7
|
-
original_tokens: number;
|
|
8
|
-
sync_status: 'complete' | 'partial';
|
|
9
|
-
versions: Record<string, VersionEntry>;
|
|
10
|
-
latest: string;
|
|
11
|
-
cohesion_map: Record<string, number | null>;
|
|
12
|
-
expand_stats: ExpandStats;
|
|
13
|
-
reorganize_count: number;
|
|
14
|
-
last_reorganize_at: string | null;
|
|
15
|
-
}
|
|
16
|
-
export interface VersionEntry {
|
|
17
|
-
file: string;
|
|
18
|
-
tokens: number;
|
|
19
|
-
created_at?: string;
|
|
20
|
-
action?: 'condense' | 'reorganize';
|
|
21
|
-
base?: string;
|
|
22
|
-
high_attention_turns?: string[];
|
|
23
|
-
}
|
|
24
|
-
export interface ExpandStats {
|
|
25
|
-
total_llm: number;
|
|
26
|
-
total_user: number;
|
|
27
|
-
by_turn: Record<string, number>;
|
|
28
|
-
recent: ExpandRecord[];
|
|
29
|
-
}
|
|
30
|
-
export interface ExpandRecord {
|
|
31
|
-
from: string;
|
|
32
|
-
to: string;
|
|
33
|
-
at: string;
|
|
34
|
-
source: 'llm' | 'user';
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/information/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5C,YAAY,EAAE,WAAW,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/information/types.ts"],"names":[],"mappings":";AAAA,mCAAmC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buoyancy.d.ts","sourceRoot":"","sources":["../../src/memory-pool/buoyancy.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,GACjB,MAAM,CAKR"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// backend/src/memory-pool/buoyancy.ts
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.computeBuoyancy = computeBuoyancy;
|
|
5
|
-
function computeBuoyancy(B0, H, alpha, lambda, t, t_last, permanent) {
|
|
6
|
-
const base = B0 + alpha * H;
|
|
7
|
-
if (permanent)
|
|
8
|
-
return Math.round(base * 100) / 100;
|
|
9
|
-
const decay = Math.pow(lambda, Math.max(0, t - t_last));
|
|
10
|
-
return Math.round(base * decay * 100) / 100;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=buoyancy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buoyancy.js","sourceRoot":"","sources":["../../src/memory-pool/buoyancy.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAEtC,0CAaC;AAbD,SAAgB,eAAe,CAC7B,EAAU,EACV,CAAS,EACT,KAAa,EACb,MAAc,EACd,CAAS,EACT,MAAc,EACd,SAAkB;IAElB,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAC5B,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAC9C,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { PoolJson, SourcesJson, SyncResult } from './types';
|
|
2
|
-
export declare function getGlobalPoolDir(): string;
|
|
3
|
-
export declare function readSources(): SourcesJson;
|
|
4
|
-
export declare function writeSources(data: SourcesJson): void;
|
|
5
|
-
export declare function isGlobalPoolInitialized(): boolean;
|
|
6
|
-
export declare function ensureGlobalPool(): void;
|
|
7
|
-
export declare function readGlobalPool(): PoolJson | null;
|
|
8
|
-
export declare function computeGlobalT(initializedAt: string): number;
|
|
9
|
-
export declare function registerProject(projectId: string, projectName: string, poolPath: string): Promise<void>;
|
|
10
|
-
export declare function removeSource(projectId: string): Promise<boolean>;
|
|
11
|
-
export declare function syncToGlobal(): Promise<SyncResult>;
|
|
12
|
-
//# sourceMappingURL=global-pool-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"global-pool-manager.d.ts","sourceRoot":"","sources":["../../src/memory-pool/global-pool-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAe,UAAU,EAAgB,MAAM,SAAS,CAAC;AAWvF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAQD,wBAAgB,WAAW,IAAI,WAAW,CAQzC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAEpD;AAID,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAoBvC;AAED,wBAAgB,cAAc,IAAI,QAAQ,GAAG,IAAI,CAEhD;AAID,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAI5D;AAID,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB7G;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWtE;AAID,wBAAsB,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,CA8JxD"}
|