@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,158 +0,0 @@
1
- "use strict";
2
- /**
3
- * TrackRunner — thin wrapper around train-lang's runFile that wires
4
- * the CcwebTrainAdapter + WorkflowDataWatcher + writeProtocolHint into
5
- * a single ergonomic API for the rest of the ccweb backend.
6
- *
7
- * Lifecycle:
8
- * const runner = createTrackRunner({ ... deps ... })
9
- * const result = await runner.run(absTrackPath)
10
- * // result.ok / result.value / result.error
11
- *
12
- * Cancel mid-run: runner.cancel() → AbortController fires → train
13
- * short-circuits next fai dispatch + adapter reports FaiCancelled.
14
- *
15
- * train-lang is ESM and ccweb backend is CommonJS, so we use a
16
- * dynamic import (cached at first call). This is the standard
17
- * CJS→ESM interop pattern.
18
- *
19
- * 详见 ~/Obsidian/Base/cc-web/工作轨重构规划.md §9 T0。
20
- */
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.createTrackRunner = createTrackRunner;
23
- const ccweb_train_adapter_1 = require("./ccweb-train-adapter");
24
- const ask_user_bridge_1 = require("./ask-user-bridge");
25
- const train_loader_1 = require("./train-loader");
26
- async function loadTrain() {
27
- // Reuse the shared cache in train-loader.ts so multiple consumers
28
- // (TrackRunner, AskUserBuiltin factory, any future host extension)
29
- // get the same module instance — avoids ESM module-graph duplication
30
- // and removes the double-cache foot-gun.
31
- return (0, train_loader_1.loadTrainCore)();
32
- }
33
- function createTrackRunner(deps) {
34
- let state = null;
35
- let abortController = null;
36
- let taskIndexCounter = 0;
37
- function updateState(patch) {
38
- if (!state)
39
- return;
40
- state = { ...state, ...patch };
41
- deps.onState?.(state);
42
- }
43
- return {
44
- async run(absTrackPath, args = []) {
45
- const train = await loadTrain();
46
- const runId = deps.runId ?? `track-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
47
- state = {
48
- runId,
49
- trackFilename: absTrackPath.split('/').pop() ?? absTrackPath,
50
- startedAt: Date.now(),
51
- status: 'running',
52
- };
53
- deps.onState?.(state);
54
- abortController = new AbortController();
55
- // Start watcher just before run begins
56
- deps.watcher.start();
57
- const adapter = (0, ccweb_train_adapter_1.createCcwebTrainAdapter)({
58
- projectId: deps.projectId,
59
- runId,
60
- injector: deps.injector,
61
- watcher: deps.watcher,
62
- nextTaskIndex: () => {
63
- const i = taskIndexCounter++;
64
- updateState({ currentTaskIndex: i });
65
- return i;
66
- },
67
- logger: deps.logger,
68
- });
69
- // Build extraBuiltins map (currently: __ccweb_ask_user if bridge provided)
70
- const extraBuiltins = new Map();
71
- if (deps.askUserBridge) {
72
- const askUserFn = await (0, ask_user_bridge_1.createAskUserBuiltin)(deps.askUserBridge, runId, abortController.signal);
73
- extraBuiltins.set('__ccweb_ask_user', askUserFn);
74
- }
75
- try {
76
- const result = await train.runFile(absTrackPath, {
77
- args,
78
- adapter,
79
- maxFaiAttempts: deps.maxFaiAttempts ?? 3,
80
- defaultFaiTimeoutMs: deps.defaultFaiTimeoutMs ?? 600000,
81
- writeProtocolHint: (0, ccweb_train_adapter_1.buildCcwebWriteProtocolHint)(),
82
- signal: abortController.signal,
83
- extraBuiltins,
84
- });
85
- if (result.lexErrors.length > 0 || result.parseErrors.length > 0) {
86
- const message = `parse errors in ${absTrackPath} (${result.lexErrors.length + result.parseErrors.length})`;
87
- updateState({
88
- status: 'failed',
89
- endedAt: Date.now(),
90
- error: { errorType: 'ParseError', message },
91
- });
92
- return { ok: false, value: null, error: { errorType: 'ParseError', message } };
93
- }
94
- if (!result.ok) {
95
- const exc = result.error;
96
- const errObj = exc
97
- ? {
98
- errorType: exc.errorType ?? 'RuntimeError',
99
- message: exc.message,
100
- code: exc.code,
101
- }
102
- : { errorType: 'RuntimeError', message: 'unknown failure' };
103
- const finalStatus = errObj.errorType === 'UserCancelError' ? 'cancelled' : 'failed';
104
- updateState({ status: finalStatus, endedAt: Date.now(), error: errObj });
105
- return { ok: false, value: null, error: errObj };
106
- }
107
- updateState({
108
- status: 'completed',
109
- endedAt: Date.now(),
110
- result: result.value,
111
- });
112
- return { ok: true, value: result.value };
113
- }
114
- catch (err) {
115
- // NEVER-THROW contract: runFile / builtin / adapter throws (incl.
116
- // ask_user reject during abort) MUST be converted into TrackRunResult.
117
- // Without this catch the throw escapes runner.run, registry.ts's
118
- // `void runner.run(...).then(...)` has no .catch, and the global
119
- // unhandledRejection handler (logger.ts) calls process.exit(1).
120
- // → entire ccweb daemon dies whenever a track with pending ask_user
121
- // is aborted. (Repro: v-15-f / v-15-g logs, 2026-05-16 07:35 / 07:36.)
122
- const aborted = abortController?.signal.aborted ?? false;
123
- const e = err;
124
- const errObj = aborted
125
- ? {
126
- errorType: 'UserCancelError',
127
- message: e?.message ?? 'cancelled',
128
- }
129
- : {
130
- errorType: e?.errorType ?? 'RuntimeError',
131
- message: e?.message ?? String(err),
132
- code: e?.code,
133
- };
134
- const finalStatus = aborted ? 'cancelled' : 'failed';
135
- updateState({ status: finalStatus, endedAt: Date.now(), error: errObj });
136
- return { ok: false, value: null, error: errObj };
137
- }
138
- finally {
139
- deps.watcher.stop();
140
- if (deps.askUserBridge && state) {
141
- // Drain any pending ask_user that the bridge still holds.
142
- deps.askUserBridge.cancelAllForRun(state.runId, 'run ended');
143
- }
144
- abortController = null;
145
- }
146
- },
147
- cancel() {
148
- if (abortController) {
149
- abortController.abort();
150
- deps.logger?.info?.('[TrackRunner] cancel requested');
151
- }
152
- },
153
- getState() {
154
- return state;
155
- },
156
- };
157
- }
158
- //# sourceMappingURL=track-runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"track-runner.js","sourceRoot":"","sources":["../../src/tracks/track-runner.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Dynamic loader for train-lang (ESM) from ccweb backend (CommonJS).
3
- *
4
- * `import('@tom2012/train-core')` is rewritten by ts-node/tsc as `require()`
5
- * which fails because train-lang is ESM-only. Wrapping the expression in
6
- * `new Function(...)` defers it past the TS compiler, leaving a native
7
- * dynamic import at runtime.
8
- *
9
- * Single cache for the whole process. Idempotent.
10
- */
11
- import type { Value, BuiltinFunction } from './types-train';
12
- /**
13
- * Minimal facade over @tom2012/train-core. Only the entry points we use
14
- * from CJS code are listed; keep the type narrow so we don't leak ESM
15
- * types across the boundary and so changes to train-lang surface here
16
- * loudly.
17
- */
18
- export interface TrainCoreModule {
19
- makeBuiltin: (name: string, call: (args: Value[]) => Value | Promise<Value>) => BuiltinFunction;
20
- runFile: (absPath: string, opts: unknown) => Promise<{
21
- ok: boolean;
22
- value: unknown;
23
- error?: {
24
- errorType?: string;
25
- message: string;
26
- code?: string;
27
- };
28
- lexErrors: ReadonlyArray<unknown>;
29
- parseErrors: ReadonlyArray<unknown>;
30
- }>;
31
- TrainException: new (...args: unknown[]) => Error & {
32
- errorType: string;
33
- message: string;
34
- code?: string;
35
- };
36
- }
37
- export declare function loadTrainCore(): Promise<TrainCoreModule>;
38
- /**
39
- * Async wrapper for makeBuiltin — loads train-lang on first call and
40
- * forwards the rest. Use whenever you need to construct a BuiltinFunction
41
- * from CommonJS code.
42
- */
43
- export declare function makeBuiltinDynamic(name: string, call: (args: Value[]) => Value | Promise<Value>): Promise<BuiltinFunction>;
44
- //# sourceMappingURL=train-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"train-loader.d.ts","sourceRoot":"","sources":["../../src/tracks/train-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAO3D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAC5C,eAAe,CAAA;IACpB,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;QACnD,EAAE,EAAE,OAAO,CAAA;QACX,KAAK,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE;YACN,SAAS,CAAC,EAAE,MAAM,CAAA;YAClB,OAAO,EAAE,MAAM,CAAA;YACf,IAAI,CAAC,EAAE,MAAM,CAAA;SACd,CAAA;QACD,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;QACjC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KACpC,CAAC,CAAA;IACF,cAAc,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,KAAK,GAAG;QAClD,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAID,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAK9D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAC9C,OAAO,CAAC,eAAe,CAAC,CAG1B"}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- /**
3
- * Dynamic loader for train-lang (ESM) from ccweb backend (CommonJS).
4
- *
5
- * `import('@tom2012/train-core')` is rewritten by ts-node/tsc as `require()`
6
- * which fails because train-lang is ESM-only. Wrapping the expression in
7
- * `new Function(...)` defers it past the TS compiler, leaving a native
8
- * dynamic import at runtime.
9
- *
10
- * Single cache for the whole process. Idempotent.
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.loadTrainCore = loadTrainCore;
14
- exports.makeBuiltinDynamic = makeBuiltinDynamic;
15
- const dynamicImport = new Function('p', 'return import(p)');
16
- let modPromise = null;
17
- async function loadTrainCore() {
18
- if (!modPromise) {
19
- modPromise = dynamicImport('@tom2012/train-core');
20
- }
21
- return modPromise;
22
- }
23
- /**
24
- * Async wrapper for makeBuiltin — loads train-lang on first call and
25
- * forwards the rest. Use whenever you need to construct a BuiltinFunction
26
- * from CommonJS code.
27
- */
28
- async function makeBuiltinDynamic(name, call) {
29
- const train = await loadTrainCore();
30
- return train.makeBuiltin(name, call);
31
- }
32
- //# sourceMappingURL=train-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"train-loader.js","sourceRoot":"","sources":["../../src/tracks/train-loader.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAwCH,sCAKC;AAOD,gDAMC;AAtDD,MAAM,aAAa,GAAG,IAAI,QAAQ,CAChC,GAAG,EACH,kBAAkB,CACgB,CAAA;AA+BpC,IAAI,UAAU,GAAoC,IAAI,CAAA;AAE/C,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,aAAa,CAAC,qBAAqB,CAA6B,CAAA;IAC/E,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,IAA+C;IAE/C,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAA;IACnC,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Re-export train-lang types for CommonJS consumers.
3
- *
4
- * train-lang is ESM-only, so direct `import { Value } from '@tom2012/train-core'`
5
- * in ts-node CJS mode is risky (TS sometimes resolves types fine, but
6
- * isolatedModules / module resolution corner cases can break it).
7
- *
8
- * Using `import type` here is purely a compile-time alias — the import
9
- * is fully erased at JS emit, so no runtime require() is generated.
10
- */
11
- export type { Value, BuiltinFunction, TrainException, RuntimeContext, } from '@tom2012/train-core';
12
- //# sourceMappingURL=types-train.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-train.d.ts","sourceRoot":"","sources":["../../src/tracks/types-train.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,EACV,KAAK,EACL,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,qBAAqB,CAAA"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- /**
3
- * Re-export train-lang types for CommonJS consumers.
4
- *
5
- * train-lang is ESM-only, so direct `import { Value } from '@tom2012/train-core'`
6
- * in ts-node CJS mode is risky (TS sometimes resolves types fine, but
7
- * isolatedModules / module resolution corner cases can break it).
8
- *
9
- * Using `import type` here is purely a compile-time alias — the import
10
- * is fully erased at JS emit, so no runtime require() is generated.
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- //# sourceMappingURL=types-train.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-train.js","sourceRoot":"","sources":["../../src/tracks/types-train.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG"}
@@ -1,18 +0,0 @@
1
- export interface UsageBucket {
2
- utilization?: number;
3
- resetAt?: string;
4
- }
5
- export interface UsageInfo {
6
- planName?: string;
7
- fiveHour?: UsageBucket;
8
- sevenDay?: UsageBucket;
9
- sevenDaySonnet?: UsageBucket;
10
- sevenDayOpus?: UsageBucket;
11
- }
12
- export declare function queryUsage(): Promise<UsageInfo>;
13
- export declare function clearUsageCache(): void;
14
- export declare const usageTerminal: {
15
- queryUsage: typeof queryUsage;
16
- clearUsageCache: typeof clearUsageCache;
17
- };
18
- //# sourceMappingURL=usage-terminal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-terminal.d.ts","sourceRoot":"","sources":["../src/usage-terminal.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,YAAY,CAAC,EAAE,WAAW,CAAC;CAC5B;AAoJD,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAMrD;AAiCD,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAGD,eAAO,MAAM,aAAa;;;CAAkC,CAAC"}
@@ -1,191 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.usageTerminal = void 0;
37
- exports.queryUsage = queryUsage;
38
- exports.clearUsageCache = clearUsageCache;
39
- const https = __importStar(require("https"));
40
- const os = __importStar(require("os"));
41
- const fs = __importStar(require("fs"));
42
- const path = __importStar(require("path"));
43
- const crypto = __importStar(require("crypto"));
44
- const child_process_1 = require("child_process");
45
- const logger_1 = require("./logger");
46
- const log = (0, logger_1.modLogger)('adapter');
47
- const CACHE_TTL_MS = 5 * 60000;
48
- let memCache = null;
49
- function getHashedServiceName(homeDir) {
50
- const configDir = path.join(homeDir, '.claude');
51
- const normalized = configDir.replace(/\\/g, '/').toLowerCase();
52
- const hash = crypto.createHash('sha256').update(normalized).digest('hex').slice(0, 8);
53
- return `Claude Code-credentials-${hash}`;
54
- }
55
- function tryKeychainService(serviceName) {
56
- try {
57
- const raw = (0, child_process_1.execFileSync)('/usr/bin/security', ['find-generic-password', '-s', serviceName, '-w'], { timeout: 3000, stdio: ['ignore', 'pipe', 'ignore'] }).toString().trim();
58
- if (!raw)
59
- return null;
60
- const data = JSON.parse(raw);
61
- const token = data.claudeAiOauth?.accessToken;
62
- if (!token)
63
- return null;
64
- const expiresAt = data.claudeAiOauth?.expiresAt;
65
- if (expiresAt && expiresAt < Date.now())
66
- return null;
67
- return { accessToken: token, subscriptionType: data.claudeAiOauth?.subscriptionType };
68
- }
69
- catch {
70
- return null;
71
- }
72
- }
73
- function readCredentials() {
74
- const homeDir = os.homedir();
75
- // Try hashed service name (Claude Code 2.x)
76
- const hashed = tryKeychainService(getHashedServiceName(homeDir));
77
- if (hashed)
78
- return hashed;
79
- // Try legacy service name
80
- const legacy = tryKeychainService('Claude Code-credentials');
81
- if (legacy)
82
- return legacy;
83
- // Fall back to .credentials.json
84
- try {
85
- const credPath = path.join(homeDir, '.claude', '.credentials.json');
86
- const data = JSON.parse(fs.readFileSync(credPath, 'utf-8'));
87
- const token = data.claudeAiOauth?.accessToken;
88
- if (!token)
89
- return null;
90
- return { accessToken: token, subscriptionType: data.claudeAiOauth?.subscriptionType };
91
- }
92
- catch {
93
- return null;
94
- }
95
- }
96
- function fetchApi(accessToken) {
97
- return new Promise((resolve, reject) => {
98
- const req = https.request({
99
- hostname: 'api.anthropic.com',
100
- path: '/api/oauth/usage',
101
- method: 'GET',
102
- headers: {
103
- 'Authorization': `Bearer ${accessToken}`,
104
- 'anthropic-beta': 'oauth-2025-04-20',
105
- 'User-Agent': 'claude-code/2.1',
106
- },
107
- }, (res) => {
108
- let body = '';
109
- res.on('data', (chunk) => { body += chunk.toString(); });
110
- res.on('end', () => {
111
- if (res.statusCode !== 200) {
112
- reject(new Error(`HTTP ${res.statusCode}: ${body}`));
113
- return;
114
- }
115
- try {
116
- resolve(JSON.parse(body));
117
- }
118
- catch {
119
- reject(new Error('Invalid JSON response'));
120
- }
121
- });
122
- });
123
- req.setTimeout(15000, () => { req.destroy(); reject(new Error('Timeout')); });
124
- req.on('error', reject);
125
- req.end();
126
- });
127
- }
128
- const PLAN_NAMES = {
129
- pro: 'Pro',
130
- max: 'Max',
131
- max_5x: 'Max 5×',
132
- max_20x: 'Max 20×',
133
- claude_max: 'Max',
134
- free: 'Free',
135
- };
136
- function getPlanName(subscriptionType) {
137
- if (!subscriptionType)
138
- return undefined;
139
- const key = subscriptionType.toLowerCase();
140
- return PLAN_NAMES[key] ?? (subscriptionType.charAt(0).toUpperCase() + subscriptionType.slice(1));
141
- }
142
- function clamp(v) {
143
- if (v == null || !Number.isFinite(v))
144
- return undefined;
145
- return Math.round(Math.max(0, Math.min(100, v)));
146
- }
147
- // ── Public API ──────────────────────────────────────────────────────────────
148
- let queryInProgress = null;
149
- async function queryUsage() {
150
- if (memCache && Date.now() - memCache.at < CACHE_TTL_MS)
151
- return memCache.data;
152
- if (queryInProgress)
153
- return queryInProgress;
154
- queryInProgress = _fetch().finally(() => { queryInProgress = null; });
155
- return queryInProgress;
156
- }
157
- async function _fetch() {
158
- const creds = readCredentials();
159
- if (!creds) {
160
- log.warn({ api: 'usage' }, 'no claude credentials found');
161
- return {};
162
- }
163
- try {
164
- const resp = await fetchApi(creds.accessToken);
165
- function toBucket(b) {
166
- if (!b || b.utilization == null)
167
- return undefined;
168
- return { utilization: clamp(b.utilization), resetAt: b.resets_at ?? undefined };
169
- }
170
- const info = {
171
- planName: getPlanName(creds.subscriptionType),
172
- fiveHour: toBucket(resp.five_hour),
173
- sevenDay: toBucket(resp.seven_day),
174
- sevenDaySonnet: toBucket(resp.seven_day_sonnet),
175
- sevenDayOpus: toBucket(resp.seven_day_opus),
176
- };
177
- memCache = { data: info, at: Date.now() };
178
- log.debug({ api: 'usage', planName: info.planName }, 'usage fetched');
179
- return info;
180
- }
181
- catch (err) {
182
- log.warn({ err, api: 'usage' }, 'usage fetch failed');
183
- return {};
184
- }
185
- }
186
- function clearUsageCache() {
187
- memCache = null;
188
- }
189
- // Legacy export for compatibility
190
- exports.usageTerminal = { queryUsage, clearUsageCache };
191
- //# sourceMappingURL=usage-terminal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-terminal.js","sourceRoot":"","sources":["../src/usage-terminal.ts"],"names":[],"mappings":"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"}