personalac 1.3.0

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 (229) hide show
  1. package/README.md +249 -0
  2. package/bin/personalac.js +215 -0
  3. package/dist/agent/context.d.ts +39 -0
  4. package/dist/agent/context.d.ts.map +1 -0
  5. package/dist/agent/context.js +163 -0
  6. package/dist/agent/context.js.map +1 -0
  7. package/dist/agent/executors.d.ts +40 -0
  8. package/dist/agent/executors.d.ts.map +1 -0
  9. package/dist/agent/executors.js +177 -0
  10. package/dist/agent/executors.js.map +1 -0
  11. package/dist/agent/index.d.ts +61 -0
  12. package/dist/agent/index.d.ts.map +1 -0
  13. package/dist/agent/index.js +907 -0
  14. package/dist/agent/index.js.map +1 -0
  15. package/dist/agent/planner.d.ts +15 -0
  16. package/dist/agent/planner.d.ts.map +1 -0
  17. package/dist/agent/planner.js +81 -0
  18. package/dist/agent/planner.js.map +1 -0
  19. package/dist/agent/scheduler.d.ts +22 -0
  20. package/dist/agent/scheduler.d.ts.map +1 -0
  21. package/dist/agent/scheduler.js +178 -0
  22. package/dist/agent/scheduler.js.map +1 -0
  23. package/dist/database/index.d.ts +5 -0
  24. package/dist/database/index.d.ts.map +1 -0
  25. package/dist/database/index.js +283 -0
  26. package/dist/database/index.js.map +1 -0
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +141 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/middleware/auth.middleware.d.ts +6 -0
  32. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  33. package/dist/middleware/auth.middleware.js +19 -0
  34. package/dist/middleware/auth.middleware.js.map +1 -0
  35. package/dist/routes/agent.routes.d.ts +3 -0
  36. package/dist/routes/agent.routes.d.ts.map +1 -0
  37. package/dist/routes/agent.routes.js +101 -0
  38. package/dist/routes/agent.routes.js.map +1 -0
  39. package/dist/routes/auth.routes.d.ts +3 -0
  40. package/dist/routes/auth.routes.d.ts.map +1 -0
  41. package/dist/routes/auth.routes.js +66 -0
  42. package/dist/routes/auth.routes.js.map +1 -0
  43. package/dist/routes/chat.routes.d.ts +3 -0
  44. package/dist/routes/chat.routes.d.ts.map +1 -0
  45. package/dist/routes/chat.routes.js +80 -0
  46. package/dist/routes/chat.routes.js.map +1 -0
  47. package/dist/routes/data.routes.d.ts +3 -0
  48. package/dist/routes/data.routes.d.ts.map +1 -0
  49. package/dist/routes/data.routes.js +16 -0
  50. package/dist/routes/data.routes.js.map +1 -0
  51. package/dist/routes/email.routes.d.ts +3 -0
  52. package/dist/routes/email.routes.d.ts.map +1 -0
  53. package/dist/routes/email.routes.js +18 -0
  54. package/dist/routes/email.routes.js.map +1 -0
  55. package/dist/routes/goals.routes.d.ts +3 -0
  56. package/dist/routes/goals.routes.d.ts.map +1 -0
  57. package/dist/routes/goals.routes.js +45 -0
  58. package/dist/routes/goals.routes.js.map +1 -0
  59. package/dist/routes/plans.routes.d.ts +3 -0
  60. package/dist/routes/plans.routes.d.ts.map +1 -0
  61. package/dist/routes/plans.routes.js +19 -0
  62. package/dist/routes/plans.routes.js.map +1 -0
  63. package/dist/routes/settings.routes.d.ts +3 -0
  64. package/dist/routes/settings.routes.d.ts.map +1 -0
  65. package/dist/routes/settings.routes.js +29 -0
  66. package/dist/routes/settings.routes.js.map +1 -0
  67. package/dist/routes/workspace.routes.d.ts +3 -0
  68. package/dist/routes/workspace.routes.d.ts.map +1 -0
  69. package/dist/routes/workspace.routes.js +28 -0
  70. package/dist/routes/workspace.routes.js.map +1 -0
  71. package/dist/services/auth.service.d.ts +32 -0
  72. package/dist/services/auth.service.d.ts.map +1 -0
  73. package/dist/services/auth.service.js +110 -0
  74. package/dist/services/auth.service.js.map +1 -0
  75. package/dist/services/data.service.d.ts +47 -0
  76. package/dist/services/data.service.d.ts.map +1 -0
  77. package/dist/services/data.service.js +139 -0
  78. package/dist/services/data.service.js.map +1 -0
  79. package/dist/services/email.service.d.ts +23 -0
  80. package/dist/services/email.service.d.ts.map +1 -0
  81. package/dist/services/email.service.js +316 -0
  82. package/dist/services/email.service.js.map +1 -0
  83. package/dist/services/notify.service.d.ts +2 -0
  84. package/dist/services/notify.service.d.ts.map +1 -0
  85. package/dist/services/notify.service.js +21 -0
  86. package/dist/services/notify.service.js.map +1 -0
  87. package/dist/services/plan.service.d.ts +21 -0
  88. package/dist/services/plan.service.d.ts.map +1 -0
  89. package/dist/services/plan.service.js +96 -0
  90. package/dist/services/plan.service.js.map +1 -0
  91. package/dist/services/resource.service.d.ts +27 -0
  92. package/dist/services/resource.service.d.ts.map +1 -0
  93. package/dist/services/resource.service.js +150 -0
  94. package/dist/services/resource.service.js.map +1 -0
  95. package/dist/services/settings.service.d.ts +41 -0
  96. package/dist/services/settings.service.d.ts.map +1 -0
  97. package/dist/services/settings.service.js +254 -0
  98. package/dist/services/settings.service.js.map +1 -0
  99. package/dist/services/sobriety.service.d.ts +41 -0
  100. package/dist/services/sobriety.service.d.ts.map +1 -0
  101. package/dist/services/sobriety.service.js +243 -0
  102. package/dist/services/sobriety.service.js.map +1 -0
  103. package/dist/services/workspace.service.d.ts +71 -0
  104. package/dist/services/workspace.service.d.ts.map +1 -0
  105. package/dist/services/workspace.service.js +265 -0
  106. package/dist/services/workspace.service.js.map +1 -0
  107. package/dist/tools/chat-tools.d.ts +2 -0
  108. package/dist/tools/chat-tools.d.ts.map +1 -0
  109. package/dist/tools/chat-tools.js +419 -0
  110. package/dist/tools/chat-tools.js.map +1 -0
  111. package/dist/tools/index.d.ts +19 -0
  112. package/dist/tools/index.d.ts.map +1 -0
  113. package/dist/tools/index.js +27 -0
  114. package/dist/tools/index.js.map +1 -0
  115. package/package.json +38 -0
  116. package/public/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  117. package/public/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  118. package/public/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  119. package/public/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  120. package/public/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  121. package/public/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  122. package/public/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  123. package/public/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  124. package/public/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  125. package/public/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  126. package/public/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  127. package/public/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  128. package/public/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  129. package/public/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  130. package/public/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  131. package/public/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  132. package/public/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  133. package/public/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  134. package/public/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  135. package/public/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  136. package/public/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  137. package/public/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  138. package/public/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  139. package/public/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  140. package/public/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  141. package/public/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  142. package/public/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  143. package/public/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  144. package/public/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  145. package/public/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  146. package/public/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  147. package/public/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  148. package/public/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  149. package/public/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  150. package/public/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  151. package/public/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  152. package/public/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  153. package/public/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  154. package/public/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  155. package/public/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  156. package/public/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  157. package/public/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  158. package/public/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  159. package/public/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  160. package/public/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  161. package/public/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  162. package/public/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  163. package/public/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  164. package/public/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  165. package/public/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  166. package/public/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  167. package/public/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  168. package/public/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  169. package/public/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  170. package/public/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  171. package/public/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  172. package/public/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  173. package/public/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  174. package/public/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  175. package/public/assets/_baseUniq-DiHtXYsr.js +1 -0
  176. package/public/assets/arc-Bv1zbXf7.js +1 -0
  177. package/public/assets/architectureDiagram-Q4EWVU46-EbiUvXBr.js +36 -0
  178. package/public/assets/blockDiagram-DXYQGD6D-B-4wwQNT.js +132 -0
  179. package/public/assets/c4Diagram-AHTNJAMY-brLyKMPJ.js +10 -0
  180. package/public/assets/channel-Me4d6Y1x.js +1 -0
  181. package/public/assets/chunk-4BX2VUAB-DMh-4Nye.js +1 -0
  182. package/public/assets/chunk-4TB4RGXK-CSr1z2CQ.js +206 -0
  183. package/public/assets/chunk-55IACEB6-xN0xmcvD.js +1 -0
  184. package/public/assets/chunk-EDXVE4YY-CkCM3j5E.js +1 -0
  185. package/public/assets/chunk-FMBD7UC4-B-mDgsjM.js +15 -0
  186. package/public/assets/chunk-OYMX7WX6-DK8dg9K4.js +231 -0
  187. package/public/assets/chunk-QZHKN3VN-BZGbFOdK.js +1 -0
  188. package/public/assets/chunk-YZCP3GAM-BTmFmMer.js +1 -0
  189. package/public/assets/classDiagram-6PBFFD2Q-BXgAb5m4.js +1 -0
  190. package/public/assets/classDiagram-v2-HSJHXN6E-BXgAb5m4.js +1 -0
  191. package/public/assets/clone-rnECnpTI.js +1 -0
  192. package/public/assets/cose-bilkent-S5V4N54A-BBqCwo63.js +1 -0
  193. package/public/assets/cytoscape.esm-BQk4lpUV.js +331 -0
  194. package/public/assets/dagre-KV5264BT-DLeQYvAA.js +4 -0
  195. package/public/assets/defaultLocale-DX6XiGOO.js +1 -0
  196. package/public/assets/diagram-5BDNPKRD-D85z2LaM.js +10 -0
  197. package/public/assets/diagram-G4DWMVQ6-4AvBmvcP.js +24 -0
  198. package/public/assets/diagram-MMDJMWI5-DRNEGNZA.js +43 -0
  199. package/public/assets/diagram-TYMM5635-C_oGwrmX.js +24 -0
  200. package/public/assets/erDiagram-SMLLAGMA-DDSp8ANa.js +85 -0
  201. package/public/assets/flowDiagram-DWJPFMVM-B1Wy36da.js +162 -0
  202. package/public/assets/ganttDiagram-T4ZO3ILL-CQ7VWheo.js +292 -0
  203. package/public/assets/gitGraphDiagram-UUTBAWPF-BhvM7s41.js +106 -0
  204. package/public/assets/graph-fatjTp1h.js +1 -0
  205. package/public/assets/index-1PrEnCZL.js +677 -0
  206. package/public/assets/index-DcsnItNp.css +1 -0
  207. package/public/assets/infoDiagram-42DDH7IO-4eawOC2G.js +2 -0
  208. package/public/assets/init-Gi6I4Gst.js +1 -0
  209. package/public/assets/ishikawaDiagram-UXIWVN3A-CJWfG1fv.js +70 -0
  210. package/public/assets/journeyDiagram-VCZTEJTY-C4Zx3dpF.js +139 -0
  211. package/public/assets/kanban-definition-6JOO6SKY-CV1vDcC8.js +89 -0
  212. package/public/assets/layout-CX0IDv3q.js +1 -0
  213. package/public/assets/linear-C8hMcu9f.js +1 -0
  214. package/public/assets/min-BaxMGW9J.js +1 -0
  215. package/public/assets/mindmap-definition-QFDTVHPH-KzGyX4Em.js +96 -0
  216. package/public/assets/ordinal-Cboi1Yqb.js +1 -0
  217. package/public/assets/pieDiagram-DEJITSTG-Dp2x5kvP.js +30 -0
  218. package/public/assets/quadrantDiagram-34T5L4WZ-B4yqA6XF.js +7 -0
  219. package/public/assets/requirementDiagram-MS252O5E-DEjN_2tG.js +84 -0
  220. package/public/assets/sankeyDiagram-XADWPNL6-BKm_F5FA.js +10 -0
  221. package/public/assets/sequenceDiagram-FGHM5R23-07BCMKjW.js +157 -0
  222. package/public/assets/stateDiagram-FHFEXIEX-DVz6GtR8.js +1 -0
  223. package/public/assets/stateDiagram-v2-QKLJ7IA2-DYiYr0PB.js +1 -0
  224. package/public/assets/timeline-definition-GMOUNBTQ-C0u67FqY.js +120 -0
  225. package/public/assets/vennDiagram-DHZGUBPP-BiAlMVLe.js +34 -0
  226. package/public/assets/wardley-RL74JXVD-BnWyuHzf.js +162 -0
  227. package/public/assets/wardleyDiagram-NUSXRM2D-DEL2Lx6S.js +20 -0
  228. package/public/assets/xychartDiagram-5P7HB3ND-ILdmj7ok.js +7 -0
  229. package/public/index.html +17 -0
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getDB = getDB;
7
+ exports.initDatabase = initDatabase;
8
+ exports.closeDatabase = closeDatabase;
9
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const fs_1 = __importDefault(require("fs"));
12
+ let db;
13
+ function getDB() {
14
+ if (!db)
15
+ throw new Error('Database not initialized. Call initDatabase() first.');
16
+ return db;
17
+ }
18
+ function initDatabase() {
19
+ const dataDir = process.env.DATA_DIR || path_1.default.join(process.cwd(), 'data');
20
+ if (!fs_1.default.existsSync(dataDir))
21
+ fs_1.default.mkdirSync(dataDir, { recursive: true });
22
+ const dbPath = path_1.default.join(dataDir, 'personalac.db');
23
+ console.log(`[DB] Initializing at: ${dbPath}`);
24
+ db = new better_sqlite3_1.default(dbPath);
25
+ db.pragma('journal_mode = WAL');
26
+ db.pragma('foreign_keys = OFF');
27
+ db.pragma('synchronous = NORMAL');
28
+ createTables();
29
+ createIndexes();
30
+ runMigrations();
31
+ console.log('[DB] Initialized successfully');
32
+ }
33
+ function createTables() {
34
+ // User table — 1.3新增,支持登录和多端同步
35
+ db.exec(`
36
+ CREATE TABLE IF NOT EXISTS User (
37
+ id TEXT PRIMARY KEY,
38
+ username TEXT UNIQUE NOT NULL,
39
+ sync_token TEXT UNIQUE NOT NULL,
40
+ display_name TEXT,
41
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
42
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
43
+ delete_flag INTEGER NOT NULL DEFAULT 0
44
+ )
45
+ `);
46
+ db.exec(`
47
+ CREATE TABLE IF NOT EXISTS Plan (
48
+ id TEXT PRIMARY KEY,
49
+ student_id TEXT NOT NULL DEFAULT 'superadmin',
50
+ title TEXT NOT NULL,
51
+ description TEXT,
52
+ subjects TEXT NOT NULL,
53
+ status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('active', 'archived')),
54
+ create_user TEXT,
55
+ update_user TEXT,
56
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
57
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
58
+ delete_flag INTEGER NOT NULL DEFAULT 0
59
+ )
60
+ `);
61
+ db.exec(`
62
+ CREATE TABLE IF NOT EXISTS Resource (
63
+ id TEXT PRIMARY KEY,
64
+ uploader_id TEXT NOT NULL DEFAULT 'superadmin',
65
+ file_name TEXT NOT NULL,
66
+ file_path TEXT NOT NULL,
67
+ file_type TEXT NOT NULL,
68
+ file_size INTEGER NOT NULL DEFAULT 0,
69
+ subject TEXT,
70
+ source_email VARCHAR(200),
71
+ parsed_text TEXT,
72
+ create_user TEXT,
73
+ update_user TEXT,
74
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
75
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
76
+ delete_flag INTEGER NOT NULL DEFAULT 0
77
+ )
78
+ `);
79
+ db.exec(`
80
+ CREATE TABLE IF NOT EXISTS LearningRecord (
81
+ id TEXT PRIMARY KEY,
82
+ student_id TEXT NOT NULL DEFAULT 'superadmin',
83
+ subject TEXT NOT NULL,
84
+ topic TEXT NOT NULL,
85
+ score INTEGER,
86
+ duration_minutes INTEGER DEFAULT 0,
87
+ note TEXT,
88
+ record_date INTEGER NOT NULL,
89
+ create_user TEXT,
90
+ update_user TEXT,
91
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
92
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
93
+ delete_flag INTEGER NOT NULL DEFAULT 0
94
+ )
95
+ `);
96
+ db.exec(`
97
+ CREATE TABLE IF NOT EXISTS KnowledgePoint (
98
+ id TEXT PRIMARY KEY,
99
+ student_id TEXT NOT NULL DEFAULT 'superadmin',
100
+ subject TEXT NOT NULL,
101
+ topic TEXT NOT NULL,
102
+ weakness_score REAL NOT NULL DEFAULT 0.5,
103
+ attempt_count INTEGER NOT NULL DEFAULT 0,
104
+ last_practiced INTEGER,
105
+ create_user TEXT,
106
+ update_user TEXT,
107
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
108
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
109
+ delete_flag INTEGER NOT NULL DEFAULT 0
110
+ )
111
+ `);
112
+ db.exec(`
113
+ CREATE TABLE IF NOT EXISTS AgentLog (
114
+ id TEXT PRIMARY KEY,
115
+ student_id TEXT DEFAULT 'superadmin',
116
+ action_type TEXT NOT NULL,
117
+ action_detail TEXT,
118
+ trigger_type TEXT NOT NULL,
119
+ model_used TEXT,
120
+ status TEXT NOT NULL DEFAULT 'success' CHECK(status IN ('success', 'failed', 'pending')),
121
+ error_message TEXT,
122
+ create_user TEXT,
123
+ update_user TEXT,
124
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
125
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
126
+ delete_flag INTEGER NOT NULL DEFAULT 0
127
+ )
128
+ `);
129
+ db.exec(`
130
+ CREATE TABLE IF NOT EXISTS ScheduleConfig (
131
+ id TEXT PRIMARY KEY,
132
+ student_id TEXT NOT NULL DEFAULT 'superadmin',
133
+ cron_expression TEXT NOT NULL,
134
+ description TEXT,
135
+ last_run INTEGER,
136
+ next_run INTEGER,
137
+ status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('active', 'paused', 'deleted')),
138
+ create_user TEXT,
139
+ update_user TEXT,
140
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
141
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
142
+ delete_flag INTEGER NOT NULL DEFAULT 0
143
+ )
144
+ `);
145
+ db.exec(`
146
+ CREATE TABLE IF NOT EXISTS MessageLog (
147
+ id TEXT PRIMARY KEY,
148
+ user_id TEXT DEFAULT 'superadmin',
149
+ direction TEXT NOT NULL CHECK(direction IN ('inbound', 'outbound')),
150
+ message_type TEXT NOT NULL DEFAULT 'text',
151
+ content TEXT NOT NULL,
152
+ attachment_path TEXT,
153
+ status TEXT NOT NULL DEFAULT 'sent' CHECK(status IN ('sent', 'failed', 'pending')),
154
+ create_user TEXT,
155
+ update_user TEXT,
156
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
157
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
158
+ delete_flag INTEGER NOT NULL DEFAULT 0
159
+ )
160
+ `);
161
+ db.exec(`
162
+ CREATE TABLE IF NOT EXISTS Settings (
163
+ id TEXT PRIMARY KEY,
164
+ key TEXT UNIQUE NOT NULL,
165
+ value TEXT NOT NULL,
166
+ encrypted INTEGER NOT NULL DEFAULT 0,
167
+ create_user TEXT,
168
+ update_user TEXT,
169
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
170
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
171
+ delete_flag INTEGER NOT NULL DEFAULT 0
172
+ )
173
+ `);
174
+ db.exec(`
175
+ CREATE TABLE IF NOT EXISTS FileIndex (
176
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
177
+ file_path TEXT NOT NULL,
178
+ file_name VARCHAR(200),
179
+ file_type VARCHAR(50),
180
+ file_size INTEGER,
181
+ category VARCHAR(50),
182
+ student_id TEXT DEFAULT 'superadmin',
183
+ source_email VARCHAR(200),
184
+ description TEXT,
185
+ tags TEXT,
186
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
187
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
188
+ delete_flag INTEGER DEFAULT 0
189
+ )
190
+ `);
191
+ db.exec(`
192
+ CREATE TABLE IF NOT EXISTS AgentTask (
193
+ id TEXT PRIMARY KEY,
194
+ task_type VARCHAR(50) NOT NULL,
195
+ student_id TEXT DEFAULT 'superadmin',
196
+ status VARCHAR(20) DEFAULT 'pending',
197
+ trigger_type VARCHAR(30),
198
+ input_summary TEXT,
199
+ output TEXT,
200
+ error TEXT,
201
+ started_at INTEGER,
202
+ completed_at INTEGER,
203
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
204
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
205
+ delete_flag INTEGER DEFAULT 0
206
+ )
207
+ `);
208
+ db.exec(`
209
+ CREATE TABLE IF NOT EXISTS StudentGoal (
210
+ id TEXT PRIMARY KEY,
211
+ student_id TEXT NOT NULL,
212
+ exam_type TEXT,
213
+ exam_date INTEGER,
214
+ school_progress TEXT,
215
+ guardian_notes TEXT,
216
+ create_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
217
+ update_time INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
218
+ delete_flag INTEGER NOT NULL DEFAULT 0
219
+ )
220
+ `);
221
+ db.exec(`
222
+ CREATE TABLE IF NOT EXISTS SobrietySnapshot (
223
+ student_id TEXT PRIMARY KEY,
224
+ snapshot TEXT NOT NULL,
225
+ generated_at INTEGER NOT NULL,
226
+ notified_at INTEGER,
227
+ last_urgency TEXT
228
+ )
229
+ `);
230
+ // FTS5 全文索引 — 1.3新增
231
+ db.exec(`
232
+ CREATE VIRTUAL TABLE IF NOT EXISTS ResourceFTS USING fts5(
233
+ resource_id UNINDEXED,
234
+ file_name,
235
+ subject,
236
+ parsed_text,
237
+ content=Resource,
238
+ content_rowid=rowid
239
+ )
240
+ `);
241
+ }
242
+ function createIndexes() {
243
+ db.exec(`
244
+ CREATE INDEX IF NOT EXISTS idx_user_sync_token ON User(sync_token) WHERE delete_flag = 0;
245
+ CREATE INDEX IF NOT EXISTS idx_plan_student_id ON Plan(student_id) WHERE delete_flag = 0;
246
+ CREATE INDEX IF NOT EXISTS idx_resource_uploader ON Resource(uploader_id) WHERE delete_flag = 0;
247
+ CREATE INDEX IF NOT EXISTS idx_resource_subject ON Resource(subject) WHERE delete_flag = 0;
248
+ CREATE INDEX IF NOT EXISTS idx_learning_record_student ON LearningRecord(student_id) WHERE delete_flag = 0;
249
+ CREATE INDEX IF NOT EXISTS idx_knowledge_point_student ON KnowledgePoint(student_id) WHERE delete_flag = 0;
250
+ CREATE INDEX IF NOT EXISTS idx_agent_log_student ON AgentLog(student_id) WHERE delete_flag = 0;
251
+ CREATE INDEX IF NOT EXISTS idx_agent_task_student ON AgentTask(student_id) WHERE delete_flag = 0;
252
+ CREATE INDEX IF NOT EXISTS idx_agent_task_status ON AgentTask(status) WHERE delete_flag = 0;
253
+ CREATE INDEX IF NOT EXISTS idx_file_index_student ON FileIndex(student_id) WHERE delete_flag = 0;
254
+ `);
255
+ }
256
+ function runMigrations() {
257
+ const cols = [
258
+ ['KnowledgePoint', 'confidence', 'REAL DEFAULT 0.5'],
259
+ ['KnowledgePoint', 'data_source', "TEXT DEFAULT 'agent_observed'"],
260
+ ['KnowledgePoint', 'error_types', 'TEXT'],
261
+ ['KnowledgePoint', 'stability', 'REAL DEFAULT 1.0'],
262
+ ['User', 'role', "TEXT DEFAULT 'guardian'"],
263
+ ['User', 'student_name', 'TEXT'],
264
+ ['User', 'student_grade', 'TEXT'],
265
+ ['User', 'guardian_id', 'TEXT'],
266
+ ['KnowledgePoint', 'root_cause', 'TEXT'],
267
+ ['KnowledgePoint', 'explanation_log', 'TEXT'],
268
+ ['KnowledgePoint', 'prerequisites', 'TEXT'],
269
+ ];
270
+ for (const [table, col, def] of cols) {
271
+ try {
272
+ db.exec(`ALTER TABLE ${table} ADD COLUMN ${col} ${def}`);
273
+ }
274
+ catch { /* already exists */ }
275
+ }
276
+ }
277
+ function closeDatabase() {
278
+ if (db) {
279
+ db.close();
280
+ console.log('[DB] Closed');
281
+ }
282
+ }
283
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":";;;;;AAMA,sBAGC;AAED,oCAiBC;AAmQD,sCAKC;AApSD,oEAAqC;AACrC,gDAAuB;AACvB,4CAAmB;AAEnB,IAAI,EAAqB,CAAA;AAEzB,SAAgB,KAAK;IACnB,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAChF,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAgB,YAAY;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;IACxE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,YAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvE,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAClD,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAA;IAE9C,EAAE,GAAG,IAAI,wBAAQ,CAAC,MAAM,CAAC,CAAA;IACzB,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;IAEjC,YAAY,EAAE,CAAA;IACd,aAAa,EAAE,CAAA;IACf,aAAa,EAAE,CAAA;IAEf,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;AAC9C,CAAC;AAED,SAAS,YAAY;IACnB,+BAA+B;IAC/B,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;GAUP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;GAcP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;GAiBP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;GAgBP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;GAeP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;GAgBP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;GAeP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;GAeP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;GAgBP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;GAgBP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;GAQP,CAAC,CAAA;IAEF,oBAAoB;IACpB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;GASP,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;GAWP,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,IAAI,GAA+B;QACvC,CAAC,gBAAgB,EAAE,YAAY,EAAI,kBAAkB,CAAC;QACtD,CAAC,gBAAgB,EAAE,aAAa,EAAG,+BAA+B,CAAC;QACnE,CAAC,gBAAgB,EAAE,aAAa,EAAG,MAAM,CAAC;QAC1C,CAAC,gBAAgB,EAAE,WAAW,EAAK,kBAAkB,CAAC;QACtD,CAAC,MAAM,EAAY,MAAM,EAAc,yBAAyB,CAAC;QACjE,CAAC,MAAM,EAAY,cAAc,EAAM,MAAM,CAAC;QAC9C,CAAC,MAAM,EAAY,eAAe,EAAK,MAAM,CAAC;QAC9C,CAAC,MAAM,EAAY,aAAa,EAAO,MAAM,CAAC;QAC9C,CAAC,gBAAgB,EAAE,YAAY,EAAQ,MAAM,CAAC;QAC9C,CAAC,gBAAgB,EAAE,iBAAiB,EAAG,MAAM,CAAC;QAC9C,CAAC,gBAAgB,EAAE,eAAe,EAAK,MAAM,CAAC;KAC/C,CAAA;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,eAAe,KAAK,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED,SAAgB,aAAa;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAA;QACV,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAC5B,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import './tools/chat-tools';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,oBAAoB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_1 = __importDefault(require("express"));
7
+ const cors_1 = __importDefault(require("cors"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const database_1 = require("./database");
10
+ const auth_service_1 = require("./services/auth.service");
11
+ const agent_1 = require("./agent");
12
+ const email_service_1 = require("./services/email.service");
13
+ const settings_service_1 = require("./services/settings.service");
14
+ require("./tools/chat-tools"); // 注册所有聊天工具
15
+ const auth_routes_1 = __importDefault(require("./routes/auth.routes"));
16
+ const settings_routes_1 = __importDefault(require("./routes/settings.routes"));
17
+ const plans_routes_1 = __importDefault(require("./routes/plans.routes"));
18
+ const agent_routes_1 = __importDefault(require("./routes/agent.routes"));
19
+ const email_routes_1 = __importDefault(require("./routes/email.routes"));
20
+ const chat_routes_1 = __importDefault(require("./routes/chat.routes"));
21
+ const data_routes_1 = __importDefault(require("./routes/data.routes"));
22
+ const workspace_routes_1 = __importDefault(require("./routes/workspace.routes"));
23
+ const goals_routes_1 = __importDefault(require("./routes/goals.routes"));
24
+ const PORT = Number(process.env.PORT) || 3000;
25
+ const app = (0, express_1.default)();
26
+ app.use((0, cors_1.default)({ origin: process.env.CORS_ORIGIN || 'http://localhost:5173', credentials: true }));
27
+ app.use(express_1.default.json({ limit: '50mb' }));
28
+ app.use(express_1.default.urlencoded({ extended: true }));
29
+ // ── CLI 下载(仅服务器模式提供;本地版跳过)────────────────────────────
30
+ const cliDir = process.env.CLI_DIR || path_1.default.join(__dirname, '../cli');
31
+ const cliEnabled = require('fs').existsSync(path_1.default.join(cliDir, 'pac.js'));
32
+ if (cliEnabled) {
33
+ app.get('/cli/pac.js', (_req, res) => {
34
+ res.setHeader('Content-Type', 'application/javascript');
35
+ res.setHeader('Content-Disposition', 'attachment; filename="pac.js"');
36
+ res.sendFile(path_1.default.join(cliDir, 'pac.js'), (err) => {
37
+ if (err)
38
+ res.status(404).send('CLI file not found');
39
+ });
40
+ });
41
+ }
42
+ if (cliEnabled) {
43
+ app.get('/cli/install.sh', (req, res) => {
44
+ const serverUrl = `${req.protocol}://${req.get('host')}`;
45
+ res.setHeader('Content-Type', 'text/plain; charset=utf-8');
46
+ res.send(`#!/bin/sh
47
+ # PersonalAC CLI 一键安装
48
+ # 使用: curl -fsSL ${serverUrl}/cli/install.sh | sh
49
+ set -e
50
+
51
+ BIN_DIR="\${HOME}/.local/bin"
52
+ BIN="\${BIN_DIR}/pac"
53
+
54
+ if ! command -v node >/dev/null 2>&1; then
55
+ echo "错误: 需要 Node.js 18+,请先安装 Node.js" >&2
56
+ exit 1
57
+ fi
58
+
59
+ mkdir -p "\${BIN_DIR}"
60
+ echo "==> 下载 PersonalAC CLI..."
61
+ curl -fsSL "${serverUrl}/cli/pac.js" -o "\${BIN}"
62
+ chmod +x "\${BIN}"
63
+
64
+ echo "==> 安装完成: \${BIN}"
65
+ echo ""
66
+
67
+ # 提示加入 PATH(如果 ~/.local/bin 不在 PATH 里)
68
+ case ":\${PATH}:" in
69
+ *":\${BIN_DIR}:"*) ;;
70
+ *)
71
+ echo "提示: 将以下内容加入 ~/.bashrc 或 ~/.zshrc:"
72
+ echo " export PATH=\"\\\$HOME/.local/bin:\\\$PATH\""
73
+ echo ""
74
+ ;;
75
+ esac
76
+
77
+ echo "下一步:"
78
+ echo " pac login ${serverUrl}"
79
+ `);
80
+ });
81
+ }
82
+ // 静态前端(生产环境)— FRONTEND_DIST 环境变量允许本地 npm 包覆盖路径
83
+ const frontendDist = process.env.FRONTEND_DIST || path_1.default.join(__dirname, '../../frontend/dist');
84
+ app.use(express_1.default.static(frontendDist));
85
+ // API 路由
86
+ app.use('/api/auth', auth_routes_1.default);
87
+ app.use('/api/settings', settings_routes_1.default);
88
+ app.use('/api/plans', plans_routes_1.default);
89
+ app.use('/api/agent', agent_routes_1.default);
90
+ app.use('/api/email', email_routes_1.default);
91
+ app.use('/api/chat', chat_routes_1.default);
92
+ app.use('/api/data', data_routes_1.default);
93
+ app.use('/api/workspace', workspace_routes_1.default);
94
+ app.use('/api/goals', goals_routes_1.default);
95
+ // 前端 SPA fallback
96
+ app.get('*', (_req, res) => {
97
+ res.sendFile(path_1.default.join(frontendDist, 'index.html'), (err) => {
98
+ if (err)
99
+ res.status(404).send('Frontend not built. Run: cd frontend && npm run build');
100
+ });
101
+ });
102
+ async function start() {
103
+ // 初始化数据库
104
+ (0, database_1.initDatabase)();
105
+ const { syncToken } = (0, auth_service_1.ensureAdminAccount)();
106
+ console.log(`\n====================================`);
107
+ console.log(` PersonalAC v1.3`);
108
+ console.log(` http://localhost:${PORT}`);
109
+ console.log(` Sync Token: ${syncToken}`);
110
+ console.log(`====================================\n`);
111
+ // 启动 Agent
112
+ const engine = new agent_1.AgentEngine();
113
+ engine.init();
114
+ // 恢复邮件轮询
115
+ const emailConfig = (0, settings_service_1.getRawEmailConfig)();
116
+ if (emailConfig) {
117
+ try {
118
+ email_service_1.emailService.startPolling();
119
+ }
120
+ catch (err) {
121
+ console.warn('[Email] Auto-start polling failed:', err);
122
+ }
123
+ }
124
+ app.listen(PORT, () => {
125
+ console.log(`[Server] Listening on port ${PORT}`);
126
+ });
127
+ // 优雅关闭
128
+ const shutdown = () => {
129
+ email_service_1.emailService.stopPolling();
130
+ engine.scheduler.destroy();
131
+ (0, database_1.closeDatabase)();
132
+ process.exit(0);
133
+ };
134
+ process.on('SIGINT', () => { console.log('\n[Server] Shutting down...'); shutdown(); });
135
+ process.on('SIGTERM', shutdown);
136
+ }
137
+ start().catch((err) => {
138
+ console.error('[Server] Failed to start:', err);
139
+ process.exit(1);
140
+ });
141
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ export interface AuthRequest extends Request {
3
+ userId?: string;
4
+ }
5
+ export declare function requireAuth(req: AuthRequest, res: Response, next: NextFunction): void;
6
+ //# sourceMappingURL=auth.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGzD,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAgBrF"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requireAuth = requireAuth;
4
+ const auth_service_1 = require("../services/auth.service");
5
+ function requireAuth(req, res, next) {
6
+ const token = req.headers['x-sync-token'] || req.cookies?.syncToken;
7
+ if (!token) {
8
+ res.status(401).json({ success: false, error: '未登录,请先登录' });
9
+ return;
10
+ }
11
+ const user = (0, auth_service_1.getUserBySyncToken)(token);
12
+ if (!user) {
13
+ res.status(401).json({ success: false, error: '访问码无效,请重新登录' });
14
+ return;
15
+ }
16
+ req.userId = user.id;
17
+ next();
18
+ }
19
+ //# sourceMappingURL=auth.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":";;AAOA,kCAgBC;AAtBD,2DAA6D;AAM7D,SAAgB,WAAW,CAAC,GAAgB,EAAE,GAAa,EAAE,IAAkB;IAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAW,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,CAAA;IAE7E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;QAC3D,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,iCAAkB,EAAC,KAAK,CAAC,CAAA;IACtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;QAC9D,OAAM;IACR,CAAC;IAED,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;IACpB,IAAI,EAAE,CAAA;AACR,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=agent.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.routes.d.ts","sourceRoot":"","sources":["../../src/routes/agent.routes.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,MAAM,4CAAW,CAAA;AAwFvB,eAAe,MAAM,CAAA"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const express_1 = require("express");
4
+ const agent_1 = require("../agent");
5
+ const auth_middleware_1 = require("../middleware/auth.middleware");
6
+ const database_1 = require("../database");
7
+ const router = (0, express_1.Router)();
8
+ router.use(auth_middleware_1.requireAuth);
9
+ router.get('/logs', (req, res) => {
10
+ try {
11
+ const limit = Number(req.query.limit) || 50;
12
+ const db = (0, database_1.getDB)();
13
+ const logs = db.prepare(`
14
+ SELECT id, student_id, action_type, action_detail, trigger_type, model_used, status, error_message, create_time
15
+ FROM AgentLog
16
+ WHERE student_id = ? AND delete_flag = 0
17
+ ORDER BY create_time DESC LIMIT ?
18
+ `).all(req.userId, limit);
19
+ res.json({ success: true, data: logs });
20
+ }
21
+ catch (err) {
22
+ res.json({ success: false, error: err instanceof Error ? err.message : String(err) });
23
+ }
24
+ });
25
+ router.get('/tasks', (req, res) => {
26
+ try {
27
+ const { status, page = '1', pageSize = '20' } = req.query;
28
+ const db = (0, database_1.getDB)();
29
+ const offset = (Number(page) - 1) * Number(pageSize);
30
+ const ALLOWED_STATUS = ['pending', 'running', 'completed', 'failed'];
31
+ const safeStatus = status && ALLOWED_STATUS.includes(status) ? status : null;
32
+ const whereStatus = safeStatus ? 'AND status = ?' : '';
33
+ const params = safeStatus
34
+ ? [req.userId, safeStatus, Number(pageSize), offset]
35
+ : [req.userId, Number(pageSize), offset];
36
+ const countParams = safeStatus ? [req.userId, safeStatus] : [req.userId];
37
+ const tasks = db.prepare(`
38
+ SELECT id, task_type, student_id, status, trigger_type, input_summary, output, error, started_at, completed_at, create_time
39
+ FROM AgentTask
40
+ WHERE student_id = ? AND delete_flag = 0 ${whereStatus}
41
+ ORDER BY create_time DESC LIMIT ? OFFSET ?
42
+ `).all(...params);
43
+ const { total } = db.prepare(`
44
+ SELECT COUNT(*) AS total FROM AgentTask
45
+ WHERE student_id = ? AND delete_flag = 0 ${whereStatus}
46
+ `).get(...countParams);
47
+ res.json({ success: true, data: { tasks, total, page: Number(page), pageSize: Number(pageSize) } });
48
+ }
49
+ catch (err) {
50
+ res.json({ success: false, error: err instanceof Error ? err.message : String(err) });
51
+ }
52
+ });
53
+ router.post('/run', async (req, res) => {
54
+ const engine = (0, agent_1.getAgentEngine)();
55
+ if (!engine) {
56
+ res.json({ success: false, error: 'Agent 引擎未初始化' });
57
+ return;
58
+ }
59
+ try {
60
+ await engine.runAutonomousCycle(req.userId);
61
+ res.json({ success: true, data: { message: 'Agent 周期执行完毕' } });
62
+ }
63
+ catch (err) {
64
+ res.json({ success: false, error: err instanceof Error ? err.message : String(err) });
65
+ }
66
+ });
67
+ router.post('/report', async (req, res) => {
68
+ const engine = (0, agent_1.getAgentEngine)();
69
+ if (!engine) {
70
+ res.json({ success: false, error: 'Agent 引擎未初始化' });
71
+ return;
72
+ }
73
+ try {
74
+ await engine.generateDailyReview(req.userId);
75
+ res.json({ success: true, data: { message: '日报已生成' } });
76
+ }
77
+ catch (err) {
78
+ res.json({ success: false, error: err instanceof Error ? err.message : String(err) });
79
+ }
80
+ });
81
+ router.post('/dnd', (req, res) => {
82
+ const engine = (0, agent_1.getAgentEngine)();
83
+ if (!engine) {
84
+ res.json({ success: false, error: 'Agent 未初始化' });
85
+ return;
86
+ }
87
+ const { start, end } = req.body;
88
+ engine.setDoNotDisturb(start, end);
89
+ res.json({ success: true, data: { message: '勿扰模式已设置' } });
90
+ });
91
+ router.delete('/dnd', (req, res) => {
92
+ const engine = (0, agent_1.getAgentEngine)();
93
+ if (!engine) {
94
+ res.json({ success: false, error: 'Agent 未初始化' });
95
+ return;
96
+ }
97
+ engine.clearDoNotDisturb();
98
+ res.json({ success: true, data: { message: '勿扰模式已清除' } });
99
+ });
100
+ exports.default = router;
101
+ //# sourceMappingURL=agent.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.routes.js","sourceRoot":"","sources":["../../src/routes/agent.routes.ts"],"names":[],"mappings":";;AAAA,qCAAgC;AAChC,oCAAyC;AACzC,mEAAwE;AACxE,0CAAmC;AAEnC,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAA;AACvB,MAAM,CAAC,GAAG,CAAC,6BAAW,CAAC,CAAA;AAEvB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAC3C,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAA;QAClB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAKvB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACzB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvF,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,GAAG,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,KAA+B,CAAA;QACnF,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAA;QAClB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QACpD,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;QACpE,MAAM,UAAU,GAAG,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;QAE5E,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAA;QACtD,MAAM,MAAM,GAAc,UAAU;YAClC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YACpD,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;QAC1C,MAAM,WAAW,GAAc,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEnF,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC;;;iDAGoB,WAAW;;KAEvD,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;QAEjB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC;;iDAEgB,WAAW;KACvD,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,CAAsB,CAAA;QAE3C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;IACrG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvF,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAG,EAAE,EAAE;IAClD,MAAM,MAAM,GAAG,IAAA,sBAAc,GAAE,CAAA;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAC5E,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAO,CAAC,CAAA;QAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvF,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAG,EAAE,EAAE;IACrD,MAAM,MAAM,GAAG,IAAA,sBAAc,GAAE,CAAA;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAC5E,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAO,CAAC,CAAA;QAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvF,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;IAC5C,MAAM,MAAM,GAAG,IAAA,sBAAc,GAAE,CAAA;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAC1E,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IAC/B,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAClC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;AAC3D,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;IAC9C,MAAM,MAAM,GAAG,IAAA,sBAAc,GAAE,CAAA;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAC1E,MAAM,CAAC,iBAAiB,EAAE,CAAA;IAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;AAC3D,CAAC,CAAC,CAAA;AAEF,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=auth.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.routes.d.ts","sourceRoot":"","sources":["../../src/routes/auth.routes.ts"],"names":[],"mappings":"AASA,QAAA,MAAM,MAAM,4CAAW,CAAA;AA2DvB,eAAe,MAAM,CAAA"}