@tom2012/cc-web 2026.6.17-b → 2026.9.6-c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/CHANGELOG.json +96 -21
  2. package/backend/dist/adapters/claude-adapter.d.ts +4 -0
  3. package/backend/dist/adapters/claude-adapter.d.ts.map +1 -1
  4. package/backend/dist/adapters/claude-adapter.js +18 -2
  5. package/backend/dist/adapters/claude-adapter.js.map +1 -1
  6. package/backend/dist/adapters/types.d.ts +8 -0
  7. package/backend/dist/adapters/types.d.ts.map +1 -1
  8. package/backend/dist/auth.d.ts.map +0 -0
  9. package/backend/dist/config.d.ts +0 -0
  10. package/backend/dist/config.js +0 -0
  11. package/backend/dist/config.js.map +0 -0
  12. package/backend/dist/hooks-manager.d.ts +0 -1
  13. package/backend/dist/hooks-manager.d.ts.map +1 -1
  14. package/backend/dist/hooks-manager.js +19 -19
  15. package/backend/dist/hooks-manager.js.map +1 -1
  16. package/backend/dist/index.d.ts.map +1 -1
  17. package/backend/dist/index.js +76 -1
  18. package/backend/dist/index.js.map +1 -1
  19. package/backend/dist/logger.d.ts.map +1 -1
  20. package/backend/dist/logger.js +3 -0
  21. package/backend/dist/logger.js.map +1 -1
  22. package/backend/dist/routes/auth.d.ts +0 -0
  23. package/backend/dist/routes/auth.d.ts.map +0 -0
  24. package/backend/dist/routes/auth.js.map +0 -0
  25. package/backend/dist/routes/projects.d.ts.map +0 -0
  26. package/backend/dist/routes/projects.js.map +0 -0
  27. package/backend/dist/session-manager.d.ts +0 -0
  28. package/backend/dist/session-manager.d.ts.map +0 -0
  29. package/backend/dist/session-manager.js +0 -0
  30. package/backend/dist/session-manager.js.map +0 -0
  31. package/backend/dist/terminal-manager.d.ts +10 -1
  32. package/backend/dist/terminal-manager.d.ts.map +1 -1
  33. package/backend/dist/terminal-manager.js +19 -2
  34. package/backend/dist/terminal-manager.js.map +1 -1
  35. package/backend/dist/types.d.ts +0 -0
  36. package/backend/dist/types.d.ts.map +0 -0
  37. package/backend/dist/types.js +0 -0
  38. package/backend/dist/types.js.map +0 -0
  39. package/frontend/dist/assets/{ChatOverlay-Dp1BzsYb.js → ChatOverlay-CymdKeQK.js} +1 -1
  40. package/frontend/dist/assets/{ClaudeMemPage-CpzMjJnb.js → ClaudeMemPage-BZ4UtUoz.js} +1 -1
  41. package/frontend/dist/assets/{GraphPreview-DDY1yVOX.js → GraphPreview-21EwV_e_.js} +1 -1
  42. package/frontend/dist/assets/{MobilePage-BnnE820D.js → MobilePage-99vv9cWh.js} +3 -3
  43. package/frontend/dist/assets/{NotebookPage-BOiYcs-l.js → NotebookPage-B-mcSRJm.js} +1 -1
  44. package/frontend/dist/assets/{OfficePreview-C5N2gr8-.js → OfficePreview-C3rHS2Te.js} +2 -2
  45. package/frontend/dist/assets/{PdfPreview-COG-9AQa.js → PdfPreview-B-toyaoA.js} +1 -1
  46. package/frontend/dist/assets/{ProjectPage-ARPH_J5o.js → ProjectPage-CShqyrUl.js} +4 -4
  47. package/frontend/dist/assets/{ProjectSettingsPage-CMWcT-5r.js → ProjectSettingsPage-FxkEGuUP.js} +1 -1
  48. package/frontend/dist/assets/{SettingsPage-BMrIDtg8.js → SettingsPage-B-bqNp6b.js} +1 -1
  49. package/frontend/dist/assets/{SkillHubPage-Bq93A7Rt.js → SkillHubPage-DN79j9Is.js} +1 -1
  50. package/frontend/dist/assets/{check-circle-2-BGT1eH1f.js → check-circle-2-DRT7EX5I.js} +1 -1
  51. package/frontend/dist/assets/{chevron-down-Bbg11n9i.js → chevron-down-DdtdiM4b.js} +1 -1
  52. package/frontend/dist/assets/{chevron-left-BmStQriC.js → chevron-left-Chv-EE6G.js} +1 -1
  53. package/frontend/dist/assets/{file-text-D9WjmbhK.js → file-text-D3ZDULSr.js} +1 -1
  54. package/frontend/dist/assets/{index-EFhMcMWk.js → index-BIGQ6n-i.js} +2 -2
  55. package/frontend/dist/assets/index-BpdaJxoa.css +1 -0
  56. package/frontend/dist/assets/{index-BRqvDxO6.js → index-CH1oLpmL.js} +1 -1
  57. package/frontend/dist/assets/{index-Bhp9CVTp.js → index-Dbm49BgL.js} +1 -1
  58. package/frontend/dist/assets/{index-COZnAgez.js → index-xJR85RJZ.js} +1 -1
  59. package/frontend/dist/assets/{jszip.min-Dyo__hKc.js → jszip.min-CMcZF4_M.js} +1 -1
  60. package/frontend/dist/assets/{save-CAjdgnp7.js → save-Dhw-I0uF.js} +1 -1
  61. package/frontend/dist/assets/{search-DmWhhICR.js → search-zoOED2R0.js} +1 -1
  62. package/frontend/dist/assets/{select-DAfsBGCS.js → select-B7xEE81_.js} +1 -1
  63. package/frontend/dist/assets/{tabs-zra46FZv.js → tabs-BCHX4LWy.js} +1 -1
  64. package/frontend/dist/assets/{textarea-BG4Tvy0e.js → textarea-CGPmR1Ae.js} +1 -1
  65. package/frontend/dist/index.html +2 -2
  66. package/package.json +36 -10
  67. package/backend/dist/backup/config.d.ts +0 -10
  68. package/backend/dist/backup/config.d.ts.map +0 -1
  69. package/backend/dist/backup/config.js +0 -128
  70. package/backend/dist/backup/config.js.map +0 -1
  71. package/backend/dist/backup/engine.d.ts +0 -22
  72. package/backend/dist/backup/engine.d.ts.map +0 -1
  73. package/backend/dist/backup/engine.js +0 -298
  74. package/backend/dist/backup/engine.js.map +0 -1
  75. package/backend/dist/backup/providers/dropbox.d.ts +0 -25
  76. package/backend/dist/backup/providers/dropbox.d.ts.map +0 -1
  77. package/backend/dist/backup/providers/dropbox.js +0 -320
  78. package/backend/dist/backup/providers/dropbox.js.map +0 -1
  79. package/backend/dist/backup/providers/google-drive.d.ts +0 -29
  80. package/backend/dist/backup/providers/google-drive.d.ts.map +0 -1
  81. package/backend/dist/backup/providers/google-drive.js +0 -303
  82. package/backend/dist/backup/providers/google-drive.js.map +0 -1
  83. package/backend/dist/backup/providers/index.d.ts +0 -3
  84. package/backend/dist/backup/providers/index.d.ts.map +0 -1
  85. package/backend/dist/backup/providers/index.js +0 -19
  86. package/backend/dist/backup/providers/index.js.map +0 -1
  87. package/backend/dist/backup/providers/onedrive.d.ts +0 -29
  88. package/backend/dist/backup/providers/onedrive.d.ts.map +0 -1
  89. package/backend/dist/backup/providers/onedrive.js +0 -317
  90. package/backend/dist/backup/providers/onedrive.js.map +0 -1
  91. package/backend/dist/backup/scheduler.d.ts +0 -6
  92. package/backend/dist/backup/scheduler.d.ts.map +0 -1
  93. package/backend/dist/backup/scheduler.js +0 -55
  94. package/backend/dist/backup/scheduler.js.map +0 -1
  95. package/backend/dist/backup/types.d.ts +0 -73
  96. package/backend/dist/backup/types.d.ts.map +0 -1
  97. package/backend/dist/backup/types.js +0 -4
  98. package/backend/dist/backup/types.js.map +0 -1
  99. package/backend/dist/chat-process-manager.d.ts +0 -45
  100. package/backend/dist/chat-process-manager.d.ts.map +0 -1
  101. package/backend/dist/chat-process-manager.js +0 -258
  102. package/backend/dist/chat-process-manager.js.map +0 -1
  103. package/backend/dist/flows/runner.d.ts +0 -37
  104. package/backend/dist/flows/runner.d.ts.map +0 -1
  105. package/backend/dist/flows/runner.js +0 -660
  106. package/backend/dist/flows/runner.js.map +0 -1
  107. package/backend/dist/flows/store.d.ts +0 -40
  108. package/backend/dist/flows/store.d.ts.map +0 -1
  109. package/backend/dist/flows/store.js +0 -284
  110. package/backend/dist/flows/store.js.map +0 -1
  111. package/backend/dist/flows/types.d.ts +0 -176
  112. package/backend/dist/flows/types.d.ts.map +0 -1
  113. package/backend/dist/flows/types.js +0 -25
  114. package/backend/dist/flows/types.js.map +0 -1
  115. package/backend/dist/information/condenser.d.ts +0 -12
  116. package/backend/dist/information/condenser.d.ts.map +0 -1
  117. package/backend/dist/information/condenser.js +0 -568
  118. package/backend/dist/information/condenser.js.map +0 -1
  119. package/backend/dist/information/conversation-sync.d.ts +0 -22
  120. package/backend/dist/information/conversation-sync.d.ts.map +0 -1
  121. package/backend/dist/information/conversation-sync.js +0 -500
  122. package/backend/dist/information/conversation-sync.js.map +0 -1
  123. package/backend/dist/information/types.d.ts +0 -36
  124. package/backend/dist/information/types.d.ts.map +0 -1
  125. package/backend/dist/information/types.js +0 -4
  126. package/backend/dist/information/types.js.map +0 -1
  127. package/backend/dist/memory-pool/buoyancy.d.ts +0 -2
  128. package/backend/dist/memory-pool/buoyancy.d.ts.map +0 -1
  129. package/backend/dist/memory-pool/buoyancy.js +0 -12
  130. package/backend/dist/memory-pool/buoyancy.js.map +0 -1
  131. package/backend/dist/memory-pool/global-pool-manager.d.ts +0 -12
  132. package/backend/dist/memory-pool/global-pool-manager.d.ts.map +0 -1
  133. package/backend/dist/memory-pool/global-pool-manager.js +0 -295
  134. package/backend/dist/memory-pool/global-pool-manager.js.map +0 -1
  135. package/backend/dist/memory-pool/pool-lock.d.ts +0 -2
  136. package/backend/dist/memory-pool/pool-lock.d.ts.map +0 -1
  137. package/backend/dist/memory-pool/pool-lock.js +0 -31
  138. package/backend/dist/memory-pool/pool-lock.js.map +0 -1
  139. package/backend/dist/memory-pool/pool-manager.d.ts +0 -57
  140. package/backend/dist/memory-pool/pool-manager.d.ts.map +0 -1
  141. package/backend/dist/memory-pool/pool-manager.js +0 -322
  142. package/backend/dist/memory-pool/pool-manager.js.map +0 -1
  143. package/backend/dist/memory-pool/templates.d.ts +0 -5
  144. package/backend/dist/memory-pool/templates.d.ts.map +0 -1
  145. package/backend/dist/memory-pool/templates.js +0 -234
  146. package/backend/dist/memory-pool/templates.js.map +0 -1
  147. package/backend/dist/memory-pool/types.d.ts +0 -61
  148. package/backend/dist/memory-pool/types.d.ts.map +0 -1
  149. package/backend/dist/memory-pool/types.js +0 -4
  150. package/backend/dist/memory-pool/types.js.map +0 -1
  151. package/backend/dist/plan-control/checker.d.ts +0 -3
  152. package/backend/dist/plan-control/checker.d.ts.map +0 -1
  153. package/backend/dist/plan-control/checker.js +0 -103
  154. package/backend/dist/plan-control/checker.js.map +0 -1
  155. package/backend/dist/plan-control/executor.d.ts +0 -93
  156. package/backend/dist/plan-control/executor.d.ts.map +0 -1
  157. package/backend/dist/plan-control/executor.js +0 -955
  158. package/backend/dist/plan-control/executor.js.map +0 -1
  159. package/backend/dist/plan-control/parser.d.ts +0 -12
  160. package/backend/dist/plan-control/parser.d.ts.map +0 -1
  161. package/backend/dist/plan-control/parser.js +0 -216
  162. package/backend/dist/plan-control/parser.js.map +0 -1
  163. package/backend/dist/plan-control/templates.d.ts +0 -4
  164. package/backend/dist/plan-control/templates.d.ts.map +0 -1
  165. package/backend/dist/plan-control/templates.js +0 -271
  166. package/backend/dist/plan-control/templates.js.map +0 -1
  167. package/backend/dist/plan-control/types.d.ts +0 -102
  168. package/backend/dist/plan-control/types.d.ts.map +0 -1
  169. package/backend/dist/plan-control/types.js +0 -12
  170. package/backend/dist/plan-control/types.js.map +0 -1
  171. package/backend/dist/routes/backup.d.ts +0 -4
  172. package/backend/dist/routes/backup.d.ts.map +0 -1
  173. package/backend/dist/routes/backup.js +0 -274
  174. package/backend/dist/routes/backup.js.map +0 -1
  175. package/backend/dist/routes/flows.d.ts +0 -5
  176. package/backend/dist/routes/flows.d.ts.map +0 -1
  177. package/backend/dist/routes/flows.js +0 -457
  178. package/backend/dist/routes/flows.js.map +0 -1
  179. package/backend/dist/routes/global-flows.d.ts +0 -3
  180. package/backend/dist/routes/global-flows.d.ts.map +0 -1
  181. package/backend/dist/routes/global-flows.js +0 -90
  182. package/backend/dist/routes/global-flows.js.map +0 -1
  183. package/backend/dist/routes/information.d.ts +0 -3
  184. package/backend/dist/routes/information.d.ts.map +0 -1
  185. package/backend/dist/routes/information.js +0 -159
  186. package/backend/dist/routes/information.js.map +0 -1
  187. package/backend/dist/routes/memory-pool.d.ts +0 -3
  188. package/backend/dist/routes/memory-pool.d.ts.map +0 -1
  189. package/backend/dist/routes/memory-pool.js +0 -837
  190. package/backend/dist/routes/memory-pool.js.map +0 -1
  191. package/backend/dist/routes/plan-control.d.ts +0 -15
  192. package/backend/dist/routes/plan-control.d.ts.map +0 -1
  193. package/backend/dist/routes/plan-control.js +0 -337
  194. package/backend/dist/routes/plan-control.js.map +0 -1
  195. package/backend/dist/routes/share.d.ts +0 -3
  196. package/backend/dist/routes/share.d.ts.map +0 -1
  197. package/backend/dist/routes/share.js +0 -167
  198. package/backend/dist/routes/share.js.map +0 -1
  199. package/backend/dist/routes/sounds.d.ts +0 -3
  200. package/backend/dist/routes/sounds.d.ts.map +0 -1
  201. package/backend/dist/routes/sounds.js +0 -285
  202. package/backend/dist/routes/sounds.js.map +0 -1
  203. package/backend/dist/tracks/__tests__/verify-starter-templates.d.ts +0 -24
  204. package/backend/dist/tracks/__tests__/verify-starter-templates.d.ts.map +0 -1
  205. package/backend/dist/tracks/__tests__/verify-starter-templates.js +0 -175
  206. package/backend/dist/tracks/__tests__/verify-starter-templates.js.map +0 -1
  207. package/backend/dist/tracks/__tests__/verify-track-cancel.d.ts +0 -23
  208. package/backend/dist/tracks/__tests__/verify-track-cancel.d.ts.map +0 -1
  209. package/backend/dist/tracks/__tests__/verify-track-cancel.js +0 -153
  210. package/backend/dist/tracks/__tests__/verify-track-cancel.js.map +0 -1
  211. package/backend/dist/tracks/__tests__/verify-track-t1.d.ts +0 -11
  212. package/backend/dist/tracks/__tests__/verify-track-t1.d.ts.map +0 -1
  213. package/backend/dist/tracks/__tests__/verify-track-t1.js +0 -293
  214. package/backend/dist/tracks/__tests__/verify-track-t1.js.map +0 -1
  215. package/backend/dist/tracks/__tests__/verify-track.d.ts +0 -20
  216. package/backend/dist/tracks/__tests__/verify-track.d.ts.map +0 -1
  217. package/backend/dist/tracks/__tests__/verify-track.js +0 -187
  218. package/backend/dist/tracks/__tests__/verify-track.js.map +0 -1
  219. package/backend/dist/tracks/registry.d.ts +0 -61
  220. package/backend/dist/tracks/registry.d.ts.map +0 -1
  221. package/backend/dist/tracks/registry.js +0 -202
  222. package/backend/dist/tracks/registry.js.map +0 -1
  223. package/backend/dist/tracks/track-runner.d.ts +0 -69
  224. package/backend/dist/tracks/track-runner.d.ts.map +0 -1
  225. package/backend/dist/tracks/track-runner.js +0 -158
  226. package/backend/dist/tracks/track-runner.js.map +0 -1
  227. package/backend/dist/tracks/train-loader.d.ts +0 -44
  228. package/backend/dist/tracks/train-loader.d.ts.map +0 -1
  229. package/backend/dist/tracks/train-loader.js +0 -32
  230. package/backend/dist/tracks/train-loader.js.map +0 -1
  231. package/backend/dist/tracks/types-train.d.ts +0 -12
  232. package/backend/dist/tracks/types-train.d.ts.map +0 -1
  233. package/backend/dist/tracks/types-train.js +0 -13
  234. package/backend/dist/tracks/types-train.js.map +0 -1
  235. package/backend/dist/usage-terminal.d.ts +0 -18
  236. package/backend/dist/usage-terminal.d.ts.map +0 -1
  237. package/backend/dist/usage-terminal.js +0 -191
  238. package/backend/dist/usage-terminal.js.map +0 -1
  239. package/frontend/dist/assets/index-GfCaMXPO.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":"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"}
@@ -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,4 +0,0 @@
1
- "use strict";
2
- // backend/src/information/types.ts
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/information/types.ts"],"names":[],"mappings":";AAAA,mCAAmC"}
@@ -1,2 +0,0 @@
1
- export declare function computeBuoyancy(B0: number, H: number, alpha: number, lambda: number, t: number, t_last: number, permanent: boolean): number;
2
- //# sourceMappingURL=buoyancy.d.ts.map
@@ -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"}