tianxincode 1.0.36 → 1.0.37

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 (145) hide show
  1. package/dist/api/deploy.routes.d.ts +2 -0
  2. package/dist/api/deploy.routes.d.ts.map +1 -0
  3. package/dist/api/deploy.routes.js +78 -0
  4. package/dist/api/deploy.routes.js.map +1 -0
  5. package/dist/api/index.d.ts.map +1 -1
  6. package/dist/api/index.js +8 -2
  7. package/dist/api/index.js.map +1 -1
  8. package/dist/api/songbing.routes.d.ts +10 -0
  9. package/dist/api/songbing.routes.d.ts.map +1 -0
  10. package/dist/api/songbing.routes.js +259 -0
  11. package/dist/api/songbing.routes.js.map +1 -0
  12. package/dist/api/system.routes.d.ts +2 -0
  13. package/dist/api/system.routes.d.ts.map +1 -0
  14. package/dist/api/system.routes.js +12 -0
  15. package/dist/api/system.routes.js.map +1 -0
  16. package/dist/api/websocket/caller.websocket.d.ts +65 -0
  17. package/dist/api/websocket/caller.websocket.d.ts.map +1 -0
  18. package/dist/api/websocket/caller.websocket.js +271 -0
  19. package/dist/api/websocket/caller.websocket.js.map +1 -0
  20. package/dist/api/websocket/websocket.service.d.ts +1 -0
  21. package/dist/api/websocket/websocket.service.d.ts.map +1 -1
  22. package/dist/api/websocket/websocket.service.js +7 -0
  23. package/dist/api/websocket/websocket.service.js.map +1 -1
  24. package/dist/api/zihao.routes.d.ts +2 -0
  25. package/dist/api/zihao.routes.d.ts.map +1 -0
  26. package/dist/api/zihao.routes.js +231 -0
  27. package/dist/api/zihao.routes.js.map +1 -0
  28. package/dist/components/Header.d.ts.map +1 -1
  29. package/dist/components/Header.js +2 -2
  30. package/dist/components/Header.js.map +1 -1
  31. package/dist/config/tx.config.d.ts +4 -0
  32. package/dist/config/tx.config.d.ts.map +1 -1
  33. package/dist/config/tx.config.js +6 -0
  34. package/dist/config/tx.config.js.map +1 -1
  35. package/dist/modules/ai/agents/caller/agent_tool.d.ts +2 -0
  36. package/dist/modules/ai/agents/caller/agent_tool.d.ts.map +1 -0
  37. package/dist/modules/ai/agents/caller/agent_tool.js +11 -0
  38. package/dist/modules/ai/agents/caller/agent_tool.js.map +1 -0
  39. package/dist/modules/ai/agents/caller/caller.agent.d.ts +112 -0
  40. package/dist/modules/ai/agents/caller/caller.agent.d.ts.map +1 -0
  41. package/dist/modules/ai/agents/caller/caller.agent.js +357 -0
  42. package/dist/modules/ai/agents/caller/caller.agent.js.map +1 -0
  43. package/dist/modules/ai/agents/caller/prompts/role.txt +51 -0
  44. package/dist/modules/ai/agents/caller/types.d.ts +36 -0
  45. package/dist/modules/ai/agents/caller/types.d.ts.map +1 -0
  46. package/dist/modules/ai/agents/caller/types.js +2 -0
  47. package/dist/modules/ai/agents/caller/types.js.map +1 -0
  48. package/dist/modules/ai/agents/index.d.ts +2 -0
  49. package/dist/modules/ai/agents/index.d.ts.map +1 -1
  50. package/dist/modules/ai/agents/index.js +2 -0
  51. package/dist/modules/ai/agents/index.js.map +1 -1
  52. package/dist/modules/db/db.service.d.ts +3 -1
  53. package/dist/modules/db/db.service.d.ts.map +1 -1
  54. package/dist/modules/db/db.service.js +39 -9
  55. package/dist/modules/db/db.service.js.map +1 -1
  56. package/dist/modules/deploy/deploy.service.d.ts +20 -0
  57. package/dist/modules/deploy/deploy.service.d.ts.map +1 -0
  58. package/dist/modules/deploy/deploy.service.js +213 -0
  59. package/dist/modules/deploy/deploy.service.js.map +1 -0
  60. package/dist/repository/zihao-config.repository.d.ts +21 -0
  61. package/dist/repository/zihao-config.repository.d.ts.map +1 -0
  62. package/dist/repository/zihao-config.repository.js +57 -0
  63. package/dist/repository/zihao-config.repository.js.map +1 -0
  64. package/dist/service/config-export-import.service.d.ts +1 -1
  65. package/dist/service/config-export-import.service.d.ts.map +1 -1
  66. package/dist/service/config-export-import.service.js +21 -36
  67. package/dist/service/config-export-import.service.js.map +1 -1
  68. package/dist/services/callerChat/callerChat.service.d.ts +44 -0
  69. package/dist/services/callerChat/callerChat.service.d.ts.map +1 -0
  70. package/dist/services/callerChat/callerChat.service.js +241 -0
  71. package/dist/services/callerChat/callerChat.service.js.map +1 -0
  72. package/dist/services/callerChat/callerChat.types.d.ts +64 -0
  73. package/dist/services/callerChat/callerChat.types.d.ts.map +1 -0
  74. package/dist/services/callerChat/callerChat.types.js +2 -0
  75. package/dist/services/callerChat/callerChat.types.js.map +1 -0
  76. package/dist/services/callerChat/index.d.ts +5 -0
  77. package/dist/services/callerChat/index.d.ts.map +1 -0
  78. package/dist/services/callerChat/index.js +4 -0
  79. package/dist/services/callerChat/index.js.map +1 -0
  80. package/dist/services/zihao.service.d.ts +51 -0
  81. package/dist/services/zihao.service.d.ts.map +1 -0
  82. package/dist/services/zihao.service.js +241 -0
  83. package/dist/services/zihao.service.js.map +1 -0
  84. package/dist/utils/crypto.d.ts +3 -0
  85. package/dist/utils/crypto.d.ts.map +1 -0
  86. package/dist/utils/crypto.js +24 -0
  87. package/dist/utils/crypto.js.map +1 -0
  88. package/dist/utils/version.d.ts +2 -0
  89. package/dist/utils/version.d.ts.map +1 -0
  90. package/dist/utils/version.js +14 -0
  91. package/dist/utils/version.js.map +1 -0
  92. package/package.json +2 -4
  93. package/scripts/copy-txt.js +29 -0
  94. package/txcode/release/release-zihao/node-zihao.js +291 -0
  95. package/txcode/release/release-zihao/package.json +3 -0
  96. package/web/dist/assets/{AiLogsView-Cv8w3JX1.js → AiLogsView-DyWYCMia.js} +1 -1
  97. package/web/dist/assets/{ConfirmDialog-B2yzQuvd.js → ConfirmDialog-B7xoYLNo.js} +1 -1
  98. package/web/dist/assets/{CustomActionsView-_hM0pRcy.js → CustomActionsView-Bz0FJhS4.js} +1 -1
  99. package/web/dist/assets/DevWorkflowView-CU2_o5uq.js +16 -0
  100. package/web/dist/assets/DevWorkflowView-Cc_t3ltj.css +1 -0
  101. package/web/dist/assets/DevWorkflowViewApp-CPTC7cf7.css +1 -0
  102. package/web/dist/assets/{DevWorkflowView-DohieDSf.js → DevWorkflowViewApp-pt4oKglX.js} +3 -3
  103. package/web/dist/assets/GitChanges-BUX-THfQ.css +1 -0
  104. package/web/dist/assets/{GitChanges-DDe_6u85.js → GitChanges-Y__3euKt.js} +1 -1
  105. package/web/dist/assets/GitChangesApp-CBXkCoKT.css +1 -0
  106. package/web/dist/assets/{GitChangesApp-CL1Thr5s.js → GitChangesApp-n1OxZEvL.js} +2 -2
  107. package/web/dist/assets/Layout-CilYY1KK.js +1 -0
  108. package/web/dist/assets/Layout-F1hcCAml.css +1 -0
  109. package/web/dist/assets/{TasksView-xMHsriK8.js → TasksView-CHnpwvyb.js} +1 -1
  110. package/web/dist/assets/{TerminalView-yAYSdJhK.js → TerminalView-C3s5BbKP.js} +2 -2
  111. package/web/dist/assets/{TerminalView-BU5wZZv4.css → TerminalView-aUwce7Dc.css} +1 -1
  112. package/web/dist/assets/{WikiView-WSmZSUD4.js → WikiView-B10BVOEI.js} +1 -1
  113. package/web/dist/assets/WikiView-DVYaOvoT.css +1 -0
  114. package/web/dist/assets/{cssMode-DAFBuufZ.js → cssMode-D518Vum_.js} +1 -1
  115. package/web/dist/assets/deployView-C1Cms1QG.css +1 -0
  116. package/web/dist/assets/deployView-D4BgJiy-.js +1 -0
  117. package/web/dist/assets/fileZihao-BQ2XDoAg.js +2 -0
  118. package/web/dist/assets/{freemarker2-DNjMoL3I.js → freemarker2-DRNJ6FYB.js} +1 -1
  119. package/web/dist/assets/{handlebars-CI6a8bmi.js → handlebars-mubTvOO1.js} +1 -1
  120. package/web/dist/assets/{html-BzDyi5Kp.js → html-DS4rz_hZ.js} +1 -1
  121. package/web/dist/assets/{htmlMode-DRFNvtRP.js → htmlMode-D87cKX8Z.js} +1 -1
  122. package/web/dist/assets/{index-C-t6olJL.css → index-BQkX4XfJ.css} +1 -1
  123. package/web/dist/assets/{index-CCrQqi2p.js → index-dOZe8hsN.js} +141 -141
  124. package/web/dist/assets/{javascript-BTgrYGeW.js → javascript-DyGvY_0Y.js} +1 -1
  125. package/web/dist/assets/{jsonMode-CWbUiI5N.js → jsonMode-ixGH1Eb2.js} +1 -1
  126. package/web/dist/assets/{liquid-BGY04Uf8.js → liquid-BgvfOJcH.js} +1 -1
  127. package/web/dist/assets/{mdx-D6dsdcdg.js → mdx-DUbMPmbc.js} +1 -1
  128. package/web/dist/assets/{python-CnHJvjfT.js → python-CYK0c6tb.js} +1 -1
  129. package/web/dist/assets/{razor-DhAzX9OF.js → razor-CC84D436.js} +1 -1
  130. package/web/dist/assets/{tsMode-LptgMcDM.js → tsMode-C-wonHgC.js} +1 -1
  131. package/web/dist/assets/{typescript-CRkTlUxm.js → typescript-DzuJLwji.js} +1 -1
  132. package/web/dist/assets/{xml-Cq77HlTB.js → xml-CMPFw__l.js} +1 -1
  133. package/web/dist/assets/{yaml-CvADBvr4.js → yaml-BYzkFta5.js} +1 -1
  134. package/web/dist/index.html +2 -2
  135. package/test-email.ts +0 -95
  136. package/test-ws.ts +0 -80
  137. package/web/dist/assets/DevWorkflowView-B0-9SCCJ.js +0 -16
  138. package/web/dist/assets/DevWorkflowView-DEua6ZP6.css +0 -1
  139. package/web/dist/assets/DevWorkflowView-Uh_DAlVd.css +0 -1
  140. package/web/dist/assets/GitChanges-4daAIVgB.css +0 -1
  141. package/web/dist/assets/GitChangesApp-D8TsaOlK.css +0 -1
  142. package/web/dist/assets/Layout-BC2y9QuA.js +0 -1
  143. package/web/dist/assets/Layout-Bdat6mEM.css +0 -1
  144. package/web/dist/assets/WikiView-OxwIcazz.css +0 -1
  145. package/web/dist/assets/fileOss-WFJXsHsR.js +0 -3
@@ -0,0 +1,2 @@
1
+ export declare const deployRouter: import("express-serve-static-core").Router;
2
+ //# sourceMappingURL=deploy.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.routes.d.ts","sourceRoot":"","sources":["../../src/api/deploy.routes.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY,4CAAW,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { Router } from 'express';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ import multer from 'multer';
6
+ import { deployService } from '../modules/deploy/deploy.service.js';
7
+ export const deployRouter = Router();
8
+ const upload = multer({
9
+ storage: multer.diskStorage({
10
+ destination: (req, file, cb) => {
11
+ const dir = path.join(os.tmpdir(), 'txcode-deploy-uploads');
12
+ if (!fs.existsSync(dir))
13
+ fs.mkdirSync(dir, { recursive: true });
14
+ cb(null, dir);
15
+ },
16
+ filename: (req, file, cb) => {
17
+ const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
18
+ cb(null, uniqueSuffix + '-' + file.originalname);
19
+ }
20
+ }),
21
+ limits: { fileSize: 2 * 1024 * 1024 * 1024 }
22
+ });
23
+ function getProjectPath(req) {
24
+ const projectPath = (req.query.projectPath || req.body?.projectPath);
25
+ if (projectPath)
26
+ return projectPath;
27
+ try {
28
+ const configPath = path.join(process.cwd(), '.txcode', 'config.json');
29
+ if (fs.existsSync(configPath)) {
30
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
31
+ return config.currentProjectPath || process.cwd();
32
+ }
33
+ }
34
+ catch { }
35
+ return process.cwd();
36
+ }
37
+ deployRouter.get('/check-release', (req, res) => {
38
+ try {
39
+ const projectPath = getProjectPath(req);
40
+ const result = deployService.checkReleaseMd(projectPath);
41
+ res.json({ success: true, data: result });
42
+ }
43
+ catch (error) {
44
+ console.error('[deploy.routes] check-release error:', error);
45
+ res.status(500).json({ success: false, error: '检查部署文档失败' });
46
+ }
47
+ });
48
+ deployRouter.post('/download-url', async (req, res) => {
49
+ try {
50
+ const { url } = req.body;
51
+ if (!url) {
52
+ return res.status(400).json({ success: false, error: 'url必填' });
53
+ }
54
+ const projectPath = req.body.projectPath || getProjectPath(req);
55
+ const result = await deployService.downloadFromUrl(url, projectPath);
56
+ res.json({ success: true, data: result });
57
+ }
58
+ catch (error) {
59
+ console.error('[deploy.routes] download-url error:', error);
60
+ res.status(500).json({ success: false, error: '下载失败' });
61
+ }
62
+ });
63
+ deployRouter.post('/upload-archive', upload.single('file'), async (req, res) => {
64
+ try {
65
+ const file = req.file;
66
+ if (!file) {
67
+ return res.status(400).json({ success: false, error: '未上传文件' });
68
+ }
69
+ const projectPath = req.body.projectPath || getProjectPath(req);
70
+ const result = await deployService.uploadArchive(file.path, projectPath);
71
+ res.json({ success: true, data: result });
72
+ }
73
+ catch (error) {
74
+ console.error('[deploy.routes] upload-archive error:', error);
75
+ res.status(500).json({ success: false, error: '上传解压失败' });
76
+ }
77
+ });
78
+ //# sourceMappingURL=deploy.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.routes.js","sourceRoot":"","sources":["../../src/api/deploy.routes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,eAAO,MAAM,SAAS,4CAAW,CAAC;AA2BlC,mBAAmB,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+BH,eAAO,MAAM,SAAS,4CAAW,CAAC;AA+BlC,mBAAmB,gBAAgB,CAAC"}
package/dist/api/index.js CHANGED
@@ -23,8 +23,11 @@ import { specsRouter } from './specs.routes.js';
23
23
  import { wikiRouter } from './wiki.routes.js';
24
24
  import { memoryRouter } from './memory.routes.js';
25
25
  import { devlogRouter } from './devlog.routes.js';
26
- import { ossRouter } from './oss.routes.js';
26
+ import { systemRouter } from './system.routes.js';
27
+ import { zihaoRouter } from './zihao.routes.js';
27
28
  import { configExportImportRouter } from './config-export-import.routes.js';
29
+ import { deployRouter } from './deploy.routes.js';
30
+ import { songbingRouter } from './songbing.routes.js';
28
31
  export const apiRouter = Router();
29
32
  apiRouter.use('/chat', chatRouter);
30
33
  apiRouter.use('/sessions', sessionRouter);
@@ -48,6 +51,9 @@ apiRouter.use('/specs', specsRouter);
48
51
  apiRouter.use('/wiki', wikiRouter);
49
52
  apiRouter.use('/memory', memoryRouter);
50
53
  apiRouter.use('/devlog', devlogRouter);
51
- apiRouter.use('/oss', ossRouter);
54
+ apiRouter.use('/zihao', zihaoRouter);
55
+ apiRouter.use('/deploy', deployRouter);
52
56
  apiRouter.use('/settings', configExportImportRouter);
57
+ apiRouter.use('/songbing', songbingRouter);
58
+ apiRouter.use('/system', systemRouter);
53
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 松饼AI 认证 & 模型同步路由
3
+ *
4
+ * - GET /api/songbing/config -> 返回松饼平台配置
5
+ * - POST /api/songbing/auth/start -> 清理旧数据 + 生成临时Key
6
+ * - POST /api/songbing/auth/verify -> 轮询验证Key,active=true时自动写入providers/models
7
+ * - POST /api/songbing/sync-models -> 手动同步模型
8
+ */
9
+ export declare const songbingRouter: import("express-serve-static-core").Router;
10
+ //# sourceMappingURL=songbing.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"songbing.routes.d.ts","sourceRoot":"","sources":["../../src/api/songbing.routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,eAAO,MAAM,cAAc,4CAAW,CAAC"}
@@ -0,0 +1,259 @@
1
+ /**
2
+ * 松饼AI 认证 & 模型同步路由
3
+ *
4
+ * - GET /api/songbing/config -> 返回松饼平台配置
5
+ * - POST /api/songbing/auth/start -> 清理旧数据 + 生成临时Key
6
+ * - POST /api/songbing/auth/verify -> 轮询验证Key,active=true时自动写入providers/models
7
+ * - POST /api/songbing/sync-models -> 手动同步模型
8
+ */
9
+ import { Router } from 'express';
10
+ import { dbService } from '../modules/db/db.service.js';
11
+ import { configService } from '../modules/config/config.service.js';
12
+ import config, { getSongbingApiBaseUrl } from '../config/tx.config.js';
13
+ import { v4 as uuidv4 } from 'uuid';
14
+ export const songbingRouter = Router();
15
+ const OFFICIAL_PROVIDER_NAME = '自建AI平台';
16
+ const OFFICIAL_PROVIDER_ID = 'songbing-official-001';
17
+ const pendingAuthMap = new Map();
18
+ function getPlatformUrl(customUrl) {
19
+ return customUrl || config.songbing?.platformUrl;
20
+ }
21
+ function getApiBaseUrl(customUrl) {
22
+ if (customUrl) {
23
+ return customUrl.replace(/\/$/, '') + '/api/v1';
24
+ }
25
+ return getSongbingApiBaseUrl();
26
+ }
27
+ /**
28
+ * GET /api/songbing/config
29
+ */
30
+ songbingRouter.get('/config', (_req, res) => {
31
+ res.json({
32
+ success: true,
33
+ data: {
34
+ platformUrl: getPlatformUrl(),
35
+ apiBaseUrl: getApiBaseUrl(),
36
+ },
37
+ });
38
+ });
39
+ /**
40
+ * POST /api/songbing/auth/start
41
+ */
42
+ songbingRouter.post('/auth/start', async (req, res) => {
43
+ try {
44
+ const { platformUrl } = req.body || {};
45
+ const resolvedPlatformUrl = platformUrl || getPlatformUrl();
46
+ const resolvedApiBaseUrl = getApiBaseUrl(resolvedPlatformUrl);
47
+ const placeholderKey = `pending_${Date.now()}`;
48
+ const pendingAuthEntry = {
49
+ platformUrl: resolvedPlatformUrl,
50
+ apiBaseUrl: resolvedApiBaseUrl,
51
+ };
52
+ pendingAuthMap.set(placeholderKey, pendingAuthEntry);
53
+ const result = dbService.transaction(() => {
54
+ dbService.run(`DELETE FROM models WHERE provider_id = ? OR provider_id IN (SELECT id FROM providers WHERE name IN (?, ?))`, [OFFICIAL_PROVIDER_ID, '松饼AI', OFFICIAL_PROVIDER_NAME]);
55
+ dbService.run(`DELETE FROM providers WHERE name IN (?, ?)`, ['松饼AI', OFFICIAL_PROVIDER_NAME]);
56
+ dbService.run(`DELETE FROM provider_auth WHERE provider_name IN (?, ?)`, ['松饼AI', OFFICIAL_PROVIDER_NAME]);
57
+ configService.addProvider({
58
+ id: OFFICIAL_PROVIDER_ID,
59
+ name: OFFICIAL_PROVIDER_NAME,
60
+ apiKey: placeholderKey,
61
+ baseUrl: resolvedApiBaseUrl,
62
+ enabled: false,
63
+ isDefault: false,
64
+ });
65
+ });
66
+ const resp = await fetch(`${resolvedPlatformUrl}/api/appkey/generate_appkey`, {
67
+ method: 'POST',
68
+ headers: { 'Content-Type': 'application/json' },
69
+ body: '{}',
70
+ });
71
+ if (!resp.ok) {
72
+ return res.status(502).json({ success: false, error: `generate_appkey 失败: ${resp.status}` });
73
+ }
74
+ const body = await resp.json();
75
+ const { key, auth_url } = body.data || {};
76
+ if (!key) {
77
+ return res.status(502).json({ success: false, error: '响应缺少 key' });
78
+ }
79
+ pendingAuthEntry.realKey = key;
80
+ const authId = uuidv4();
81
+ const storedAuthUrl = auth_url || '';
82
+ const storedPlatformUrl = resolvedPlatformUrl;
83
+ dbService.run(`INSERT INTO provider_auth (id, provider_name, key, auth_url, active) VALUES (?, ?, ?, ?, 0)`, [authId, OFFICIAL_PROVIDER_NAME, key, storedAuthUrl]);
84
+ res.json({
85
+ success: true,
86
+ data: { key, auth_url },
87
+ });
88
+ }
89
+ catch (e) {
90
+ res.status(500).json({ success: false, error: e.message || String(e) });
91
+ }
92
+ });
93
+ /**
94
+ * POST /api/songbing/auth/verify
95
+ */
96
+ songbingRouter.post('/auth/verify', async (req, res) => {
97
+ try {
98
+ const { key } = req.body;
99
+ if (!key) {
100
+ return res.status(400).json({ success: false, error: 'key 必填' });
101
+ }
102
+ const provider = dbService.get('SELECT base_url FROM providers WHERE api_key = ?', [key]);
103
+ let platformUrl = getPlatformUrl();
104
+ let resolvedApiBaseUrl = '';
105
+ let pendingAuth = pendingAuthMap.get(key);
106
+ if (!pendingAuth) {
107
+ for (const auth of pendingAuthMap.values()) {
108
+ if (auth.realKey === key) {
109
+ pendingAuth = auth;
110
+ break;
111
+ }
112
+ }
113
+ }
114
+ if (pendingAuth) {
115
+ platformUrl = pendingAuth.platformUrl;
116
+ resolvedApiBaseUrl = pendingAuth.apiBaseUrl;
117
+ }
118
+ else if (provider?.base_url) {
119
+ platformUrl = provider.base_url.replace(/\/api\/v1$/, '');
120
+ resolvedApiBaseUrl = provider.base_url;
121
+ }
122
+ const resp = await fetch(`${platformUrl}/api/appkey/verify_appkey`, {
123
+ method: 'POST',
124
+ headers: { 'Content-Type': 'application/json' },
125
+ body: JSON.stringify({ key }),
126
+ });
127
+ if (!resp.ok) {
128
+ return res.status(502).json({ success: false, error: `verify_appkey 失败: ${resp.status}` });
129
+ }
130
+ const body = await resp.json();
131
+ const active = body?.data?.active === true;
132
+ if (active) {
133
+ dbService.run(`UPDATE provider_auth SET active = 1, updated_at = CURRENT_TIMESTAMP WHERE key = ? AND provider_name IN (?, ?)`, [key, '松饼AI', OFFICIAL_PROVIDER_NAME]);
134
+ const existing = dbService.get('SELECT id FROM providers WHERE name IN (?, ?)', ['松饼AI', OFFICIAL_PROVIDER_NAME]);
135
+ if (!existing) {
136
+ configService.addProvider({
137
+ id: OFFICIAL_PROVIDER_ID,
138
+ name: OFFICIAL_PROVIDER_NAME,
139
+ apiKey: key,
140
+ baseUrl: resolvedApiBaseUrl || getApiBaseUrl(platformUrl),
141
+ enabled: true,
142
+ isDefault: false,
143
+ });
144
+ }
145
+ else {
146
+ configService.updateProvider(OFFICIAL_PROVIDER_ID, {
147
+ apiKey: key,
148
+ baseUrl: resolvedApiBaseUrl || provider?.base_url,
149
+ enabled: true,
150
+ });
151
+ }
152
+ const syncResult = await syncModelsFromSongbing();
153
+ pendingAuthMap.delete(key);
154
+ res.json({
155
+ success: true,
156
+ data: {
157
+ active: true,
158
+ providerId: OFFICIAL_PROVIDER_ID,
159
+ syncedModels: syncResult.count,
160
+ },
161
+ });
162
+ }
163
+ else {
164
+ res.json({
165
+ success: true,
166
+ data: { active: false },
167
+ });
168
+ }
169
+ }
170
+ catch (e) {
171
+ res.status(500).json({ success: false, error: e.message || String(e) });
172
+ }
173
+ });
174
+ /**
175
+ * POST /api/songbing/sync-models
176
+ */
177
+ songbingRouter.post('/sync-models', async (_req, res) => {
178
+ try {
179
+ const provider = dbService.get('SELECT id FROM providers WHERE name = ?', [OFFICIAL_PROVIDER_NAME]);
180
+ if (!provider) {
181
+ return res.status(400).json({ success: false, error: '请先完成认证' });
182
+ }
183
+ const result = await syncModelsFromSongbing();
184
+ res.json({
185
+ success: true,
186
+ data: { count: result.count, models: result.models },
187
+ });
188
+ }
189
+ catch (e) {
190
+ res.status(500).json({ success: false, error: e.message || String(e) });
191
+ }
192
+ });
193
+ /**
194
+ * POST /api/songbing/auth/cancel
195
+ */
196
+ songbingRouter.post('/auth/cancel', async (_req, res) => {
197
+ try {
198
+ dbService.transaction(() => {
199
+ dbService.run(`DELETE FROM models WHERE provider_id = ? OR provider_id IN (SELECT id FROM providers WHERE name IN (?, ?))`, [OFFICIAL_PROVIDER_ID, '松饼AI', OFFICIAL_PROVIDER_NAME]);
200
+ dbService.run(`DELETE FROM providers WHERE name IN (?, ?)`, ['松饼AI', OFFICIAL_PROVIDER_NAME]);
201
+ dbService.run(`DELETE FROM provider_auth WHERE provider_name IN (?, ?)`, ['松饼AI', OFFICIAL_PROVIDER_NAME]);
202
+ });
203
+ res.json({
204
+ success: true,
205
+ data: { message: '已取消认证' },
206
+ });
207
+ }
208
+ catch (e) {
209
+ res.status(500).json({ success: false, error: e.message || String(e) });
210
+ }
211
+ });
212
+ /**
213
+ * 从松饼平台拉取模型列表并写入 models 表
214
+ */
215
+ async function syncModelsFromSongbing() {
216
+ const provider = dbService.get('SELECT base_url FROM providers WHERE name = ?', [OFFICIAL_PROVIDER_NAME]);
217
+ let platformUrl = getPlatformUrl();
218
+ if (provider?.base_url) {
219
+ platformUrl = provider.base_url.replace(/\/api\/v1$/, '');
220
+ }
221
+ dbService.run(`DELETE FROM models WHERE provider_id = ?`, [OFFICIAL_PROVIDER_ID]);
222
+ const resp = await fetch(`${platformUrl}/api/common/scene_models?scene_code=txcode`);
223
+ if (!resp.ok) {
224
+ throw new Error(`scene_models 请求失败: ${resp.status}`);
225
+ }
226
+ const result = await resp.json();
227
+ const scenes = result.data || [];
228
+ const modelCodes = [];
229
+ const modelNames = {};
230
+ for (const scene of scenes) {
231
+ const models = scene.models || [];
232
+ for (const m of models) {
233
+ if (m.model_code && !modelCodes.includes(m.model_code)) {
234
+ modelCodes.push(m.model_code);
235
+ modelNames[m.model_code] = m.model_name || m.model_code;
236
+ }
237
+ }
238
+ }
239
+ const syncedModels = [];
240
+ for (const modelCode of modelCodes) {
241
+ const existing = dbService.get('SELECT id FROM models WHERE provider_id = ? AND id = ?', [OFFICIAL_PROVIDER_ID, `songbing-${modelCode}`]);
242
+ if (!existing) {
243
+ const modelId = `songbing-${modelCode}`;
244
+ configService.addModel({
245
+ id: modelId,
246
+ providerId: OFFICIAL_PROVIDER_ID,
247
+ name: modelNames[modelCode],
248
+ contextWindow: 4096,
249
+ maxOutputTokens: 4096,
250
+ supportsVision: false,
251
+ supportsTools: true,
252
+ enabled: true,
253
+ });
254
+ syncedModels.push(modelNames[modelCode]);
255
+ }
256
+ }
257
+ return { count: syncedModels.length, models: syncedModels };
258
+ }
259
+ //# sourceMappingURL=songbing.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"songbing.routes.js","sourceRoot":"","sources":["../../src/api/songbing.routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const systemRouter: import("express-serve-static-core").Router;
2
+ //# sourceMappingURL=system.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.routes.d.ts","sourceRoot":"","sources":["../../src/api/system.routes.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,4CAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Router } from 'express';
2
+ import { getVersion } from '../utils/version.js';
3
+ export const systemRouter = Router();
4
+ systemRouter.get('/info', (_req, res) => {
5
+ res.json({
6
+ success: true,
7
+ data: {
8
+ version: getVersion(),
9
+ },
10
+ });
11
+ });
12
+ //# sourceMappingURL=system.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.routes.js","sourceRoot":"","sources":["../../src/api/system.routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC;AAErC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;IACzD,GAAG,CAAC,IAAI,CAAC;QACP,OAAO,EAAE,IAAI;QACb,IAAI,EAAE;YACJ,OAAO,EAAE,UAAU,EAAE;SACtB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Caller WebSocket 处理器
3
+ *
4
+ * 处理 /ws/caller 路径的 WebSocket 消息
5
+ * 供外部系统(A系统)接入,将 txcode 作为 AI 编码底层服务使用
6
+ *
7
+ * 协议流程:
8
+ * 1. 客户端连接 → 广播 connected
9
+ * 2. 客户端发送 init(callbackUrl + projectPath + 扩展工具)→ 注册项目 → 创建会话 → 广播 init_ready
10
+ * 3. 客户端发送 chat → 创建 CallerAgent → AI 推理循环 → 广播 step/done
11
+ * 4. 内置工具本地执行,扩展工具 HTTP POST 到 callbackUrl
12
+ * 5. 所有 S→C 消息广播给所有 /ws/caller 客户端,客户端根据 sessionId 过滤
13
+ */
14
+ import { WebSocket } from 'ws';
15
+ export declare class CallerWebSocketHandler {
16
+ private wsClients;
17
+ private abortControllers;
18
+ /**
19
+ * 处理新的 WebSocket 连接
20
+ * 注册消息/关闭事件,发送 connected 消息
21
+ */
22
+ handle(ws: WebSocket): void;
23
+ /**
24
+ * 广播消息给所有已连接的 /ws/caller 客户端
25
+ * 每条消息携带 sessionId,客户端自行过滤
26
+ */
27
+ private broadcast;
28
+ /** 消息路由:根据 type 分发到对应处理方法 */
29
+ private handleMessage;
30
+ /**
31
+ * 处理 init 消息
32
+ *
33
+ * 校验项:
34
+ * - callbackUrl 必填且仅允许 http/https 协议
35
+ * - projectPath 必填,目录不存在则自动创建
36
+ *
37
+ * 执行:
38
+ * 1. 解析 projectPath 为绝对路径,目录不存在则 mkdir
39
+ * 2. 通过 projectService.createProject 注册项目(已存在则复用)
40
+ * 3. 调用 callerChatService.initAgent 创建会话 + 注册扩展工具
41
+ * 4. 广播 init_ready(含 sessionId, toolsCount)
42
+ */
43
+ private handleInit;
44
+ /**
45
+ * 处理 stop 消息
46
+ * 通过 AbortController 中断正在进行的 AI 任务
47
+ * 同时将 session 状态重置为 idle
48
+ */
49
+ private handleStop;
50
+ /**
51
+ * 处理 chat 消息
52
+ *
53
+ * 流程:
54
+ * 1. 校验 sessionId / message
55
+ * 2. 获取或创建 session(断线重连时复用已有 session)
56
+ * 3. 如果已有运行中任务则先 abort
57
+ * 4. 创建 AbortController 注册到 abortControllers
58
+ * 5. 调用 callerChatService.handleChat 执行 AI 对话
59
+ * 6. 通过 onStep 回调广播 step 和 tool_call(扩展工具)
60
+ * 7. 广播 done 或 error / stopped
61
+ */
62
+ private handleChat;
63
+ }
64
+ export declare const callerWebSocketHandler: CallerWebSocketHandler;
65
+ //# sourceMappingURL=caller.websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caller.websocket.d.ts","sourceRoot":"","sources":["../../../src/api/websocket/caller.websocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAS9B,qBAAa,sBAAsB;IACjC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,gBAAgB,CAA0C;IAElE;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAkB3B;;;OAGG;IACH,OAAO,CAAC,SAAS;IASjB,6BAA6B;YACf,aAAa;IAqB3B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,UAAU;IAqDlB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;;;;;;;;OAWG;YACW,UAAU;CA8GzB;AAED,eAAO,MAAM,sBAAsB,wBAA+B,CAAA"}