@reskill/agent-aware-server 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 kanyun-inc
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,67 +1,73 @@
1
1
  # @reskill/agent-aware-server
2
2
 
3
- Agent-aware Server 提供 HTTP API 来收集用户交互行为和页面报错信息,并通过智能检测器主动发现问题。
3
+ Agent-aware Server provides HTTP APIs to collect user interaction behaviors and page errors, with intelligent detectors for proactive issue discovery.
4
4
 
5
- ## 功能特性
5
+ [简体中文](./README.zh-CN.md)
6
6
 
7
- ### 1. 数据收集
7
+ ## Features
8
8
 
9
- - **行为数据收集**:从 `http://localhost:4100` 接收 SDK 上报的用户交互数据
10
- - **错误数据收集**:收集运行时错误、Promise 异常和 Console 错误
9
+ ### 1. Data Collection
11
10
 
12
- ### 2. 智能检测器
11
+ - **Behavior Data Collection**: Receives user interaction data from SDK at `http://localhost:4100`
12
+ - **Error Data Collection**: Collects runtime errors, Promise rejections, and console errors
13
13
 
14
- 重构后的架构包含两个独立的检测器:
14
+ ### 2. Intelligent Detectors
15
15
 
16
- #### BehaviorDetector(行为检测器)
17
- - 检测消极的用户交互行为
18
- - 触发条件:
19
- - 挫折指数 >= 70(Critical)
20
- - 挫折指数 50-70(Warning)
21
- - 愤怒点击 >= 3 次(Warning)
22
- - 死点击 >= 2 次(Warning)
23
- - 输出文件:`.agent-aware/behavior.json`
16
+ The refactored architecture includes two independent detectors:
24
17
 
25
- #### AlertDetector(错误检测器)
26
- - 检测高危的运行时错误
27
- - 触发条件:
28
- - 错误数 >= 1(Critical
29
- - 输出文件:`.agent-aware/error.json`
18
+ #### BehaviorDetector
19
+ - Detects negative user interaction behaviors
20
+ - Trigger conditions:
21
+ - Frustration score >= 70 (Critical)
22
+ - Frustration score 50-70 (Warning)
23
+ - Rage clicks >= 3 (Warning)
24
+ - Dead clicks >= 2 (Warning)
25
+ - Output file: `.agent-aware/alert/behavior.json`
30
26
 
31
- ### 3. 数据存储
27
+ #### AlertDetector (Error Detector)
28
+ - Detects high-risk runtime errors
29
+ - Trigger conditions:
30
+ - Error count >= 1 (Critical)
31
+ - Output file: `.agent-aware/alert/error.json`
32
32
 
33
- **详细数据存储在包根目录的 `data/` 目录**:
34
- - `data/behaviors.json`:所有行为详细数据(最多 1000 条)
35
- - `data/errors.json`:所有错误详细数据(最多 1000 条)
33
+ ### 3. Data Storage
36
34
 
37
- **检测文件输出到用户项目根目录的 `.agent-aware/` 目录**:
38
- - `.agent-aware/behavior.json`:行为检测结果
39
- - `.agent-aware/error.json`:错误检测结果
35
+ **All data is stored in the `.agent-aware/` directory under the user's project root**:
40
36
 
41
- ## 使用方式
37
+ ```
38
+ .agent-aware/
39
+ ├── alert/ # Alert files (for Agent monitoring)
40
+ │ ├── behavior.json # Behavior detection alerts (max 100 history)
41
+ │ └── error.json # Error detection alerts (max 100 history)
42
+ └── detail/ # Detail data files (for HTTP API queries)
43
+ ├── behaviors.json # Behavior detail data (max 1000 entries)
44
+ └── errors.json # Error detail data (max 1000 entries)
45
+ ```
46
+
47
+ ## Usage
42
48
 
43
- ### 安装
49
+ ### Installation (Recommended as project dev dependency)
44
50
 
45
51
  ```bash
46
- npm install @reskill/agent-aware-server
52
+ npm install --save-dev @reskill/agent-aware-server
47
53
  ```
48
54
 
49
- ### 启动服务
55
+ ### Starting the Server
50
56
 
51
- #### 方式 1:使用 CLI(推荐)
57
+ #### Method 1: Using CLI (Recommended)
52
58
 
53
59
  ```bash
54
- # 默认启动(输出到当前目录)
60
+ # Default start (output to current directory)
55
61
  npx agent-aware-server start
56
62
 
57
- # 指定项目根目录
63
+ # Specify project root directory
58
64
  npx agent-aware-server start --project-root /path/to/project
59
65
 
60
- # 使用环境变量(优先级最高)
66
+ # Use environment variable (highest priority)
61
67
  USER_PROJECT_ROOT=/path/to/project npx agent-aware-server start
62
68
  ```
63
69
 
64
- #### 方式 2:编程方式
70
+ #### Method 2: Programmatic
65
71
 
66
72
  ```typescript
67
73
  import { serve } from '@hono/node-server'
@@ -72,11 +78,11 @@ import { BehaviorDetector } from '@reskill/agent-aware-server/detector/behaviorD
72
78
  import { AlertDetector } from '@reskill/agent-aware-server/detector/alertDetector'
73
79
 
74
80
  const PORT = 4100
75
- const DATA_DIR = './data'
76
81
  const PROJECT_ROOT = process.env.USER_PROJECT_ROOT || process.cwd()
77
82
 
78
- const store = new BehaviorStore(DATA_DIR)
79
- const errorStore = new ErrorStore(DATA_DIR)
83
+ // All components use PROJECT_ROOT, data stored in .agent-aware/ directory
84
+ const store = new BehaviorStore(PROJECT_ROOT)
85
+ const errorStore = new ErrorStore(PROJECT_ROOT)
80
86
  const behaviorDetector = new BehaviorDetector(PROJECT_ROOT)
81
87
  const alertDetector = new AlertDetector(PROJECT_ROOT)
82
88
 
@@ -92,106 +98,118 @@ console.log(`Server running on http://localhost:${PORT}`)
92
98
 
93
99
  ## HTTP API
94
100
 
95
- ### 行为相关
101
+ ### Behavior Related
96
102
 
97
- - **POST /behaviors** - 接收行为数据(SDK 上报)
98
- - **GET /behaviors** - 查询行为数据
99
- - 参数:`types`(可选)、`limit`(可选)
100
- - **GET /summary** - 获取行为摘要
101
- - **GET /hotspots** - 获取交互热点
102
- - 参数:`limit`(可选)
103
- - **DELETE /behaviors** - 清空行为数据
103
+ - **POST /behaviors** - Receive behavior data (SDK reports)
104
+ - **GET /behaviors** - Query behavior data
105
+ - Parameters: `types` (optional), `limit` (optional)
106
+ - **GET /behaviors/summary** - Get behavior summary
107
+ - **GET /hotspots** - Get interaction hotspots
108
+ - Parameters: `limit` (optional)
109
+ - **DELETE /behaviors** - Clear behavior data
104
110
 
105
- ### 错误相关
111
+ ### Error Related
106
112
 
107
- - **POST /errors** - 接收错误数据(SDK 上报)
108
- - **GET /errors** - 查询错误数据
109
- - 参数:`errorTypes`(可选)、`limit`(可选)
110
- - **GET /errors/summary** - 获取错误摘要
111
- - **DELETE /errors** - 清空错误数据
113
+ - **POST /errors** - Receive error data (SDK reports)
114
+ - **GET /errors** - Query error data
115
+ - Parameters: `errorTypes` (optional), `limit` (optional)
116
+ - **GET /errors/summary** - Get error summary
117
+ - **DELETE /errors** - Clear error data
112
118
 
113
- ### 健康检查
119
+ ### Health Check
114
120
 
115
- - **GET /health** - 健康检查
121
+ - **GET /health** - Health check
116
122
 
117
- ## 项目根目录配置
123
+ ## Project Root Configuration
118
124
 
119
- 检测器输出文件的位置由以下优先级决定:
125
+ The output file location is determined by the following priority:
120
126
 
121
- 1. **环境变量** `USER_PROJECT_ROOT`(优先级最高)
122
- 2. **启动参数** `--project-root`
123
- 3. **默认值** `process.cwd()`(当前工作目录)
127
+ 1. **Environment variable** `USER_PROJECT_ROOT` (highest priority)
128
+ 2. **Startup parameter** `--project-root`
129
+ 3. **Default** `process.cwd()` (current working directory)
124
130
 
125
- ## 输出文件示例
131
+ ## Output File Examples
126
132
 
127
- ### behavior.json
133
+ Alert files retain history (max 100 entries) in the following format:
134
+
135
+ ### alert/behavior.json
128
136
 
129
137
  ```json
130
138
  {
131
- "timestamp": "2026-01-30T10:30:00.000Z",
132
- "severity": "critical",
133
- "type": "frustration",
134
- "summary": "检测到用户挫折行为",
135
- "details": {
136
- "frustrationScore": 75,
137
- "rageClickCount": 5,
138
- "deadClickCount": 3,
139
- "totalInteractions": 50
140
- }
139
+ "version": "1.0",
140
+ "alerts": [
141
+ {
142
+ "timestamp": "2026-01-30T10:30:00.000Z",
143
+ "severity": "critical",
144
+ "type": "frustration",
145
+ "summary": "检测到用户挫折行为(挫折指数: 75)",
146
+ "details": {
147
+ "frustrationScore": 75,
148
+ "rageClickCount": 5,
149
+ "deadClickCount": 3,
150
+ "totalInteractions": 50
151
+ }
152
+ }
153
+ ]
141
154
  }
142
155
  ```
143
156
 
144
- ### error.json
157
+ ### alert/error.json
145
158
 
146
159
  ```json
147
160
  {
148
- "timestamp": "2026-01-30T10:30:00.000Z",
149
- "severity": "critical",
150
- "type": "error",
151
- "summary": "检测到 3 个运行时错误",
152
- "details": {
153
- "totalErrors": 3,
154
- "runtimeErrorCount": 2,
155
- "unhandledRejectionCount": 1,
156
- "consoleErrorCount": 0,
157
- "recentErrors": [
158
- {
159
- "id": "uuid-1",
160
- "timestamp": 1738233000000,
161
- "errorType": "runtime",
162
- "message": "Cannot read property 'foo' of undefined"
161
+ "version": "1.0",
162
+ "alerts": [
163
+ {
164
+ "timestamp": "2026-01-30T10:30:00.000Z",
165
+ "severity": "critical",
166
+ "type": "error",
167
+ "summary": "检测到 3 个运行时错误",
168
+ "details": {
169
+ "totalErrors": 3,
170
+ "runtimeErrorCount": 2,
171
+ "unhandledRejectionCount": 1,
172
+ "consoleErrorCount": 0,
173
+ "recentErrors": [
174
+ {
175
+ "id": "uuid-1",
176
+ "timestamp": 1738233000000,
177
+ "errorType": "runtime",
178
+ "message": "Cannot read property 'foo' of undefined"
179
+ }
180
+ ]
163
181
  }
164
- ]
165
- }
182
+ }
183
+ ]
166
184
  }
167
185
  ```
168
186
 
169
- ## 冷却期机制
187
+ ## Cooldown Mechanism
170
188
 
171
- 为避免告警风暴,每个检测器都有 10 秒的冷却期:
172
- - 同一检测器的文件写入间隔至少 10
173
- - 冷却期内的新问题会累积到下次写入
189
+ To prevent alert storms, each detector has a 10-second cooldown period:
190
+ - Minimum 10 seconds between file writes for the same detector
191
+ - New issues during cooldown are accumulated for the next write
174
192
 
175
- ## 架构说明
193
+ ## Architecture
176
194
 
177
- 基于 [SPEC-SRV-005: Detector 架构重构](../../specs/server/005-detector-refactor.md)
195
+ Based on [SPEC-SRV-005: Detector Architecture Refactor](../../specs/server/005-detector-refactor.md)
178
196
 
179
- ### 设计原则
197
+ ### Design Principles
180
198
 
181
- 1. **职责分离**:BehaviorDetector AlertDetector 各司其职
182
- 2. **异步检测**:检测逻辑不阻塞 API 响应
183
- 3. **容错设计**:文件写入失败不影响数据接收
184
- 4. **独立工作**:每个检测器独立工作,互不干扰
199
+ 1. **Separation of Concerns**: BehaviorDetector and AlertDetector have distinct responsibilities
200
+ 2. **Asynchronous Detection**: Detection logic doesn't block API responses
201
+ 3. **Fault Tolerant**: File write failures don't affect data reception
202
+ 4. **Independent Operation**: Each detector works independently without interference
185
203
 
186
- ## 开发
204
+ ## Development
187
205
 
188
- ### 运行测试
206
+ ### Run Tests
189
207
 
190
208
  ```bash
191
209
  npm test
192
210
  ```
193
211
 
194
- ### 构建
212
+ ### Build
195
213
 
196
214
  ```bash
197
215
  npm run build
@@ -0,0 +1,220 @@
1
+ # @reskill/agent-aware-server
2
+
3
+ Agent-aware Server 提供 HTTP API 来收集用户交互行为和页面报错信息,并通过智能检测器主动发现问题。
4
+
5
+ [English](./README.md)
6
+
7
+ ## 功能特性
8
+
9
+ ### 1. 数据收集
10
+
11
+ - **行为数据收集**:从 `http://localhost:4100` 接收 SDK 上报的用户交互数据
12
+ - **错误数据收集**:收集运行时错误、Promise 异常和 Console 错误
13
+
14
+ ### 2. 智能检测器
15
+
16
+ 重构后的架构包含两个独立的检测器:
17
+
18
+ #### BehaviorDetector(行为检测器)
19
+ - 检测消极的用户交互行为
20
+ - 触发条件:
21
+ - 挫折指数 >= 70(Critical)
22
+ - 挫折指数 50-70(Warning)
23
+ - 愤怒点击 >= 3 次(Warning)
24
+ - 死点击 >= 2 次(Warning)
25
+ - 输出文件:`.agent-aware/alert/behavior.json`
26
+
27
+ #### AlertDetector(错误检测器)
28
+ - 检测高危的运行时错误
29
+ - 触发条件:
30
+ - 错误数 >= 1(Critical)
31
+ - 输出文件:`.agent-aware/alert/error.json`
32
+
33
+ ### 3. 数据存储
34
+
35
+ **所有数据统一存储到用户项目根目录的 `.agent-aware/` 目录**:
36
+
37
+ ```
38
+ .agent-aware/
39
+ ├── alert/ # 检测告警文件(供 Agent 监控)
40
+ │ ├── behavior.json # 行为检测告警(最多 100 条历史)
41
+ │ └── error.json # 错误检测告警(最多 100 条历史)
42
+ └── detail/ # 详细数据文件(供 HTTP API 查询)
43
+ ├── behaviors.json # 行为详细数据(最多 1000 条)
44
+ └── errors.json # 错误详细数据(最多 1000 条)
45
+ ```
46
+
47
+ ## 使用方式
48
+
49
+ ### 安装(推荐项目级别开发依赖)
50
+
51
+ ```bash
52
+ npm install --save-dev @reskill/agent-aware-server
53
+ ```
54
+
55
+ ### 启动服务
56
+
57
+ #### 方式 1:使用 CLI(推荐)
58
+
59
+ ```bash
60
+ # 默认启动(输出到当前目录)
61
+ npx agent-aware-server start
62
+
63
+ # 指定项目根目录
64
+ npx agent-aware-server start --project-root /path/to/project
65
+
66
+ # 使用环境变量(优先级最高)
67
+ USER_PROJECT_ROOT=/path/to/project npx agent-aware-server start
68
+ ```
69
+
70
+ #### 方式 2:编程方式
71
+
72
+ ```typescript
73
+ import { serve } from '@hono/node-server'
74
+ import { createHttpApi } from '@reskill/agent-aware-server/httpApi'
75
+ import { BehaviorStore } from '@reskill/agent-aware-server/store/behaviorStore'
76
+ import { ErrorStore } from '@reskill/agent-aware-server/store/errorStore'
77
+ import { BehaviorDetector } from '@reskill/agent-aware-server/detector/behaviorDetector'
78
+ import { AlertDetector } from '@reskill/agent-aware-server/detector/alertDetector'
79
+
80
+ const PORT = 4100
81
+ const PROJECT_ROOT = process.env.USER_PROJECT_ROOT || process.cwd()
82
+
83
+ // 所有组件统一使用 PROJECT_ROOT,数据存储在 .agent-aware/ 目录下
84
+ const store = new BehaviorStore(PROJECT_ROOT)
85
+ const errorStore = new ErrorStore(PROJECT_ROOT)
86
+ const behaviorDetector = new BehaviorDetector(PROJECT_ROOT)
87
+ const alertDetector = new AlertDetector(PROJECT_ROOT)
88
+
89
+ const app = createHttpApi(store, errorStore, behaviorDetector, alertDetector)
90
+
91
+ serve({
92
+ fetch: app.fetch,
93
+ port: PORT,
94
+ })
95
+
96
+ console.log(`Server running on http://localhost:${PORT}`)
97
+ ```
98
+
99
+ ## HTTP API
100
+
101
+ ### 行为相关
102
+
103
+ - **POST /behaviors** - 接收行为数据(SDK 上报)
104
+ - **GET /behaviors** - 查询行为数据
105
+ - 参数:`types`(可选)、`limit`(可选)
106
+ - **GET /behaviors/summary** - 获取行为摘要
107
+ - **GET /hotspots** - 获取交互热点
108
+ - 参数:`limit`(可选)
109
+ - **DELETE /behaviors** - 清空行为数据
110
+
111
+ ### 错误相关
112
+
113
+ - **POST /errors** - 接收错误数据(SDK 上报)
114
+ - **GET /errors** - 查询错误数据
115
+ - 参数:`errorTypes`(可选)、`limit`(可选)
116
+ - **GET /errors/summary** - 获取错误摘要
117
+ - **DELETE /errors** - 清空错误数据
118
+
119
+ ### 健康检查
120
+
121
+ - **GET /health** - 健康检查
122
+
123
+ ## 项目根目录配置
124
+
125
+ 检测器输出文件的位置由以下优先级决定:
126
+
127
+ 1. **环境变量** `USER_PROJECT_ROOT`(优先级最高)
128
+ 2. **启动参数** `--project-root`
129
+ 3. **默认值** `process.cwd()`(当前工作目录)
130
+
131
+ ## 输出文件示例
132
+
133
+ 告警文件保留历史记录(最多 100 条),新格式如下:
134
+
135
+ ### alert/behavior.json
136
+
137
+ ```json
138
+ {
139
+ "version": "1.0",
140
+ "alerts": [
141
+ {
142
+ "timestamp": "2026-01-30T10:30:00.000Z",
143
+ "severity": "critical",
144
+ "type": "frustration",
145
+ "summary": "检测到用户挫折行为",
146
+ "details": {
147
+ "frustrationScore": 75,
148
+ "rageClickCount": 5,
149
+ "deadClickCount": 3,
150
+ "totalInteractions": 50
151
+ }
152
+ }
153
+ ]
154
+ }
155
+ ```
156
+
157
+ ### alert/error.json
158
+
159
+ ```json
160
+ {
161
+ "version": "1.0",
162
+ "alerts": [
163
+ {
164
+ "timestamp": "2026-01-30T10:30:00.000Z",
165
+ "severity": "critical",
166
+ "type": "error",
167
+ "summary": "检测到 3 个运行时错误",
168
+ "details": {
169
+ "totalErrors": 3,
170
+ "runtimeErrorCount": 2,
171
+ "unhandledRejectionCount": 1,
172
+ "consoleErrorCount": 0,
173
+ "recentErrors": [
174
+ {
175
+ "id": "uuid-1",
176
+ "timestamp": 1738233000000,
177
+ "errorType": "runtime",
178
+ "message": "Cannot read property 'foo' of undefined"
179
+ }
180
+ ]
181
+ }
182
+ }
183
+ ]
184
+ }
185
+ ```
186
+
187
+ ## 冷却期机制
188
+
189
+ 为避免告警风暴,每个检测器都有 10 秒的冷却期:
190
+ - 同一检测器的文件写入间隔至少 10 秒
191
+ - 冷却期内的新问题会累积到下次写入
192
+
193
+ ## 架构说明
194
+
195
+ 基于 [SPEC-SRV-005: Detector 架构重构](../../specs/server/005-detector-refactor.md)
196
+
197
+ ### 设计原则
198
+
199
+ 1. **职责分离**:BehaviorDetector 和 AlertDetector 各司其职
200
+ 2. **异步检测**:检测逻辑不阻塞 API 响应
201
+ 3. **容错设计**:文件写入失败不影响数据接收
202
+ 4. **独立工作**:每个检测器独立工作,互不干扰
203
+
204
+ ## 开发
205
+
206
+ ### 运行测试
207
+
208
+ ```bash
209
+ npm test
210
+ ```
211
+
212
+ ### 构建
213
+
214
+ ```bash
215
+ npm run build
216
+ ```
217
+
218
+ ## License
219
+
220
+ MIT
package/dist/cli.d.ts CHANGED
@@ -6,6 +6,10 @@
6
6
  *
7
7
  * 使用方式:
8
8
  * npx agent-aware-server start [--project-root <path>]
9
+ *
10
+ * 所有输出文件统一到 <project-root>/.agent-aware/ 目录:
11
+ * - .agent-aware/alert/ - 检测告警文件
12
+ * - .agent-aware/detail/ - 详细数据文件
9
13
  */
10
14
  export {};
11
15
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
package/dist/cli.js CHANGED
@@ -6,6 +6,10 @@
6
6
  *
7
7
  * 使用方式:
8
8
  * npx agent-aware-server start [--project-root <path>]
9
+ *
10
+ * 所有输出文件统一到 <project-root>/.agent-aware/ 目录:
11
+ * - .agent-aware/alert/ - 检测告警文件
12
+ * - .agent-aware/detail/ - 详细数据文件
9
13
  */
10
14
  import { serve } from '@hono/node-server';
11
15
  import { createHttpApi } from './httpApi.js';
@@ -14,7 +18,6 @@ import { ErrorStore } from './store/errorStore.js';
14
18
  import { BehaviorDetector } from './detector/behaviorDetector.js';
15
19
  import { AlertDetector } from './detector/alertDetector.js';
16
20
  const HTTP_PORT = 4100;
17
- const DATA_DIR = './data';
18
21
  function parseArgs() {
19
22
  const args = process.argv.slice(2);
20
23
  let projectRoot = process.env.USER_PROJECT_ROOT || process.cwd();
@@ -27,8 +30,9 @@ function parseArgs() {
27
30
  }
28
31
  function start() {
29
32
  const { projectRoot } = parseArgs();
30
- const store = new BehaviorStore(DATA_DIR);
31
- const errorStore = new ErrorStore(DATA_DIR);
33
+ // 所有组件统一使用 projectRoot,输出到 .agent-aware/ 目录
34
+ const store = new BehaviorStore(projectRoot);
35
+ const errorStore = new ErrorStore(projectRoot);
32
36
  const behaviorDetector = new BehaviorDetector(projectRoot);
33
37
  const alertDetector = new AlertDetector(projectRoot);
34
38
  const app = createHttpApi(store, errorStore, behaviorDetector, alertDetector);
@@ -39,12 +43,15 @@ function start() {
39
43
  ║ ║
40
44
  ║ HTTP API: http://localhost:${HTTP_PORT} ║
41
45
  ║ Project Root: ${projectRoot.slice(0, 38).padEnd(38)}║
42
- Output: ${(projectRoot + '/.agent-aware/').slice(0, 47).padEnd(47)}
46
+
47
+ ║ Output: ║
48
+ ║ Alert: .agent-aware/alert/ ║
49
+ ║ Detail: .agent-aware/detail/ ║
43
50
  ║ ║
44
51
  ║ Endpoints: ║
45
52
  ║ POST /behaviors - SDK 上报行为数据 ║
46
53
  ║ GET /behaviors - 查询行为列表 ║
47
- ║ GET /summary - 获取行为摘要
54
+ ║ GET /behaviors/summary - 获取行为摘要
48
55
  ║ GET /hotspots - 获取交互热点 ║
49
56
  ║ DELETE /behaviors - 清空行为数据 ║
50
57
  ║ POST /errors - SDK 上报错误数据 ║
@@ -76,6 +83,15 @@ Agent-aware CLI
76
83
  环境变量:
77
84
  USER_PROJECT_ROOT 用户项目根目录(优先级高于 --project-root)
78
85
 
86
+ 输出目录结构:
87
+ <project-root>/.agent-aware/
88
+ ├── alert/ # 检测告警文件(供 Agent 监控)
89
+ │ ├── behavior.json # 行为检测告警
90
+ │ └── error.json # 错误检测告警
91
+ └── detail/ # 详细数据文件(供 HTTP API 查询)
92
+ ├── behaviors.json # 行为详细数据
93
+ └── errors.json # 错误详细数据
94
+
79
95
  示例:
80
96
  npx agent-aware-server start
81
97
  npx agent-aware-server start --project-root /path/to/project
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,MAAM,SAAS,GAAG,IAAI,CAAA;AACtB,MAAM,QAAQ,GAAG,QAAQ,CAAA;AAEzB,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEhE,uBAAuB;IACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACvD,IAAI,gBAAgB,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1D,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,CAAA;AACxB,CAAC;AAED,SAAS,KAAK;IACZ,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAA;IAEnC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAC1D,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAA;IACpD,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,CAAC,GAAG,CAAC;;;;;iCAKmB,SAAS;oBACtB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;cACzC,CAAC,WAAW,GAAG,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;;;;;;;;;;;;;;CAcrE,CAAC,CAAA;IAEA,KAAK,CAAC;QACJ,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AAC5C,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;CAmBb,CAAC,CAAA;AACF,CAAC;AAED,MAAM;AACN,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAE/B,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,OAAO,CAAC;IACb,KAAK,SAAS;QACZ,KAAK,EAAE,CAAA;QACP,MAAK;IACP,KAAK,QAAQ,CAAC;IACd,KAAK,IAAI;QACP,QAAQ,EAAE,CAAA;QACV,MAAK;IACP;QACE,OAAO,CAAC,KAAK,CAAC,SAAS,OAAO,EAAE,CAAC,CAAA;QACjC,QAAQ,EAAE,CAAA;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,MAAM,SAAS,GAAG,IAAI,CAAA;AAEtB,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEhE,uBAAuB;IACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACvD,IAAI,gBAAgB,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1D,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,CAAA;AACxB,CAAC;AAED,SAAS,KAAK;IACZ,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAA;IAEnC,4CAA4C;IAC5C,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;IAC9C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAC1D,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAA;IACpD,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,CAAC,GAAG,CAAC;;;;;iCAKmB,SAAS;oBACtB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;CAkBtD,CAAC,CAAA;IAEA,KAAK,CAAC;QACJ,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AAC5C,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Bb,CAAC,CAAA;AACF,CAAC;AAED,MAAM;AACN,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAE/B,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,OAAO,CAAC;IACb,KAAK,SAAS;QACZ,KAAK,EAAE,CAAA;QACP,MAAK;IACP,KAAK,QAAQ,CAAC;IACd,KAAK,IAAI;QACP,QAAQ,EAAE,CAAA;QACV,MAAK;IACP;QACE,OAAO,CAAC,KAAK,CAAC,SAAS,OAAO,EAAE,CAAC,CAAA;QACjC,QAAQ,EAAE,CAAA;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}
@@ -7,10 +7,14 @@
7
7
  import type { ErrorSummary } from '../types';
8
8
  export type IssueSeverity = 'critical' | 'warning' | 'info';
9
9
  export declare class AlertDetector {
10
- private agentAwareDir;
10
+ private alertDir;
11
11
  private errorPath;
12
12
  private lastAlertTime;
13
- constructor(outputDir?: string);
13
+ /**
14
+ * @param projectRoot 用户项目根目录,告警将写入 <projectRoot>/.agent-aware/alert/
15
+ * 默认从环境变量 USER_PROJECT_ROOT 读取,如果未设置则使用 process.cwd()
16
+ */
17
+ constructor(projectRoot?: string);
14
18
  /**
15
19
  * 计算严重级别
16
20
  */
@@ -20,7 +24,11 @@ export declare class AlertDetector {
20
24
  */
21
25
  checkAndAlert(errorSummary: ErrorSummary): Promise<void>;
22
26
  /**
23
- * 写入 error.json
27
+ * 读取现有的告警数据
28
+ */
29
+ private readAlerts;
30
+ /**
31
+ * 写入 error.json(保留历史记录,最多 100 条)
24
32
  */
25
33
  private writeAlert;
26
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"alertDetector.d.ts","sourceRoot":"","sources":["../../src/detector/alertDetector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAM5C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;AAqB3D,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAY;gBAErB,SAAS,GAAE,MAAsB;IAK7C;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,aAAa;IAS5D;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9D;;OAEG;YACW,UAAU;IASxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAG5B"}
1
+ {"version":3,"file":"alertDetector.d.ts","sourceRoot":"","sources":["../../src/detector/alertDetector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAiB5C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;AA0B3D,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAY;IAEjC;;;OAGG;gBACS,WAAW,GAAE,MAAgC;IAKzD;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,aAAa;IAS5D;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9D;;OAEG;YACW,UAAU;IAUxB;;OAEG;YACW,UAAU;IAqBxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAG5B"}
@@ -4,16 +4,30 @@
4
4
  *
5
5
  * 职责:检测高危的运行时错误
6
6
  */
7
- import { writeFile, mkdir } from 'node:fs/promises';
7
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
8
8
  import { join } from 'node:path';
9
9
  const AGENT_AWARE_DIR = '.agent-aware';
10
+ const ALERT_DIR = 'alert';
10
11
  const ERROR_FILE = 'error.json';
11
12
  const ALERT_COOLDOWN_MS = 10000; // 10 秒冷却期
13
+ const MAX_ALERTS = 100; // 最多保留 100 条历史记录
14
+ const STORAGE_VERSION = '1.0';
15
+ /**
16
+ * 获取默认的项目根目录
17
+ * 优先级:环境变量 USER_PROJECT_ROOT > process.cwd()
18
+ */
19
+ function getDefaultProjectRoot() {
20
+ return process.env.USER_PROJECT_ROOT || process.cwd();
21
+ }
12
22
  export class AlertDetector {
13
- constructor(outputDir = process.cwd()) {
23
+ /**
24
+ * @param projectRoot 用户项目根目录,告警将写入 <projectRoot>/.agent-aware/alert/
25
+ * 默认从环境变量 USER_PROJECT_ROOT 读取,如果未设置则使用 process.cwd()
26
+ */
27
+ constructor(projectRoot = getDefaultProjectRoot()) {
14
28
  this.lastAlertTime = 0;
15
- this.agentAwareDir = join(outputDir, AGENT_AWARE_DIR);
16
- this.errorPath = join(this.agentAwareDir, ERROR_FILE);
29
+ this.alertDir = join(projectRoot, AGENT_AWARE_DIR, ALERT_DIR);
30
+ this.errorPath = join(this.alertDir, ERROR_FILE);
17
31
  }
18
32
  /**
19
33
  * 计算严重级别
@@ -61,12 +75,33 @@ export class AlertDetector {
61
75
  this.lastAlertTime = now;
62
76
  }
63
77
  /**
64
- * 写入 error.json
78
+ * 读取现有的告警数据
79
+ */
80
+ async readAlerts() {
81
+ try {
82
+ const content = await readFile(this.errorPath, 'utf-8');
83
+ return JSON.parse(content);
84
+ }
85
+ catch {
86
+ // 文件不存在或损坏,返回空数据
87
+ return { version: STORAGE_VERSION, alerts: [] };
88
+ }
89
+ }
90
+ /**
91
+ * 写入 error.json(保留历史记录,最多 100 条)
65
92
  */
66
93
  async writeAlert(alert) {
67
94
  try {
68
- await mkdir(this.agentAwareDir, { recursive: true });
69
- await writeFile(this.errorPath, JSON.stringify(alert, null, 2), 'utf-8');
95
+ await mkdir(this.alertDir, { recursive: true });
96
+ // 读取现有数据
97
+ const data = await this.readAlerts();
98
+ // 追加新告警
99
+ data.alerts.push(alert);
100
+ // 限制数量(FIFO)
101
+ while (data.alerts.length > MAX_ALERTS) {
102
+ data.alerts.shift();
103
+ }
104
+ await writeFile(this.errorPath, JSON.stringify(data, null, 2), 'utf-8');
70
105
  }
71
106
  catch (error) {
72
107
  console.error('Failed to write error alert:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"alertDetector.js","sourceRoot":"","sources":["../../src/detector/alertDetector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,MAAM,eAAe,GAAG,cAAc,CAAA;AACtC,MAAM,UAAU,GAAG,YAAY,CAAA;AAC/B,MAAM,iBAAiB,GAAG,KAAK,CAAA,CAAC,UAAU;AAuB1C,MAAM,OAAO,aAAa;IAKxB,YAAY,YAAoB,OAAO,CAAC,GAAG,EAAE;QAFrC,kBAAa,GAAW,CAAC,CAAA;QAG/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;QACrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IACvD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,YAA0B;QAC1C,gBAAgB;QAChB,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,YAA0B;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;QAErD,aAAa;QACb,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAM;QACR,CAAC;QAED,QAAQ;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,iBAAiB,EAAE,CAAC;YACjD,OAAM;QACR,CAAC;QAED,gBAAgB;QAChB,MAAM,IAAI,CAAC,UAAU,CAAC;YACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ;YACR,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;YAC/C,OAAO,EAAE;gBACP,WAAW,EAAE,YAAY,CAAC,WAAW;gBACrC,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;gBACjD,uBAAuB,EAAE,YAAY,CAAC,uBAAuB;gBAC7D,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;gBACjD,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACtD,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;iBAC7B,CAAC,CAAC;aACJ;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,aAAa,GAAG,GAAG,CAAA;IAC1B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,KAAiB;QACxC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACpD,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,YAA0B;QACpD,OAAO,OAAO,YAAY,CAAC,WAAW,SAAS,CAAA;IACjD,CAAC;CACF"}
1
+ {"version":3,"file":"alertDetector.js","sourceRoot":"","sources":["../../src/detector/alertDetector.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,14 @@
7
7
  import type { Summary } from '../types';
8
8
  export type IssueSeverity = 'critical' | 'warning' | 'info';
9
9
  export declare class BehaviorDetector {
10
- private agentAwareDir;
10
+ private alertDir;
11
11
  private behaviorPath;
12
12
  private lastAlertTime;
13
- constructor(outputDir?: string);
13
+ /**
14
+ * @param projectRoot 用户项目根目录,告警将写入 <projectRoot>/.agent-aware/alert/
15
+ * 默认从环境变量 USER_PROJECT_ROOT 读取,如果未设置则使用 process.cwd()
16
+ */
17
+ constructor(projectRoot?: string);
14
18
  /**
15
19
  * 计算严重级别
16
20
  */
@@ -20,7 +24,11 @@ export declare class BehaviorDetector {
20
24
  */
21
25
  checkAndAlert(summary: Summary): Promise<void>;
22
26
  /**
23
- * 写入 behavior.json
27
+ * 读取现有的告警数据
28
+ */
29
+ private readAlerts;
30
+ /**
31
+ * 写入 behavior.json(保留历史记录,最多 100 条)
24
32
  */
25
33
  private writeAlert;
26
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"behaviorDetector.d.ts","sourceRoot":"","sources":["../../src/detector/behaviorDetector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAMvC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;AAe3D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,aAAa,CAAY;gBAErB,SAAS,GAAE,MAAsB;IAK7C;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa;IAoBlD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BpD;;OAEG;YACW,UAAU;IASxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAM5B"}
1
+ {"version":3,"file":"behaviorDetector.d.ts","sourceRoot":"","sources":["../../src/detector/behaviorDetector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAiBvC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;AAoB3D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,aAAa,CAAY;IAEjC;;;OAGG;gBACS,WAAW,GAAE,MAAgC;IAKzD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa;IAoBlD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BpD;;OAEG;YACW,UAAU;IAUxB;;OAEG;YACW,UAAU;IAqBxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAM5B"}
@@ -4,16 +4,30 @@
4
4
  *
5
5
  * 职责:检测消极的用户交互行为
6
6
  */
7
- import { writeFile, mkdir } from 'node:fs/promises';
7
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
8
8
  import { join } from 'node:path';
9
9
  const AGENT_AWARE_DIR = '.agent-aware';
10
+ const ALERT_DIR = 'alert';
10
11
  const BEHAVIOR_FILE = 'behavior.json';
11
12
  const ALERT_COOLDOWN_MS = 10000; // 10 秒冷却期
13
+ const MAX_ALERTS = 100; // 最多保留 100 条历史记录
14
+ const STORAGE_VERSION = '1.0';
15
+ /**
16
+ * 获取默认的项目根目录
17
+ * 优先级:环境变量 USER_PROJECT_ROOT > process.cwd()
18
+ */
19
+ function getDefaultProjectRoot() {
20
+ return process.env.USER_PROJECT_ROOT || process.cwd();
21
+ }
12
22
  export class BehaviorDetector {
13
- constructor(outputDir = process.cwd()) {
23
+ /**
24
+ * @param projectRoot 用户项目根目录,告警将写入 <projectRoot>/.agent-aware/alert/
25
+ * 默认从环境变量 USER_PROJECT_ROOT 读取,如果未设置则使用 process.cwd()
26
+ */
27
+ constructor(projectRoot = getDefaultProjectRoot()) {
14
28
  this.lastAlertTime = 0;
15
- this.agentAwareDir = join(outputDir, AGENT_AWARE_DIR);
16
- this.behaviorPath = join(this.agentAwareDir, BEHAVIOR_FILE);
29
+ this.alertDir = join(projectRoot, AGENT_AWARE_DIR, ALERT_DIR);
30
+ this.behaviorPath = join(this.alertDir, BEHAVIOR_FILE);
17
31
  }
18
32
  /**
19
33
  * 计算严重级别
@@ -65,12 +79,33 @@ export class BehaviorDetector {
65
79
  this.lastAlertTime = now;
66
80
  }
67
81
  /**
68
- * 写入 behavior.json
82
+ * 读取现有的告警数据
83
+ */
84
+ async readAlerts() {
85
+ try {
86
+ const content = await readFile(this.behaviorPath, 'utf-8');
87
+ return JSON.parse(content);
88
+ }
89
+ catch {
90
+ // 文件不存在或损坏,返回空数据
91
+ return { version: STORAGE_VERSION, alerts: [] };
92
+ }
93
+ }
94
+ /**
95
+ * 写入 behavior.json(保留历史记录,最多 100 条)
69
96
  */
70
97
  async writeAlert(alert) {
71
98
  try {
72
- await mkdir(this.agentAwareDir, { recursive: true });
73
- await writeFile(this.behaviorPath, JSON.stringify(alert, null, 2), 'utf-8');
99
+ await mkdir(this.alertDir, { recursive: true });
100
+ // 读取现有数据
101
+ const data = await this.readAlerts();
102
+ // 追加新告警
103
+ data.alerts.push(alert);
104
+ // 限制数量(FIFO)
105
+ while (data.alerts.length > MAX_ALERTS) {
106
+ data.alerts.shift();
107
+ }
108
+ await writeFile(this.behaviorPath, JSON.stringify(data, null, 2), 'utf-8');
74
109
  }
75
110
  catch (error) {
76
111
  console.error('Failed to write behavior alert:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"behaviorDetector.js","sourceRoot":"","sources":["../../src/detector/behaviorDetector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"behaviorDetector.js","sourceRoot":"","sources":["../../src/detector/behaviorDetector.ts"],"names":[],"mappings":"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"}
package/dist/httpApi.js CHANGED
@@ -52,8 +52,8 @@ export function createHttpApi(store, errorStore, behaviorDetector, alertDetector
52
52
  const behaviors = await store.query({ types, limit });
53
53
  return c.json(behaviors);
54
54
  });
55
- // GET /summary - 获取行为摘要
56
- app.get('/summary', async (c) => {
55
+ // GET /behaviors/summary - 获取行为摘要
56
+ app.get('/behaviors/summary', async (c) => {
57
57
  const summary = await store.getSummary();
58
58
  return c.json(summary);
59
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"httpApi.js","sourceRoot":"","sources":["../src/httpApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpApi.js","sourceRoot":"","sources":["../src/httpApi.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,14 @@
1
1
  /**
2
- * Agent-aware Server 入口
3
- * HTTP Server (Hono)
4
- * 基于 SPEC-SRV-005: Detector 架构重构
2
+ * Agent-aware Server 包入口
3
+ * 基于 SPEC-SRV-006: Package Entry Architecture
4
+ *
5
+ * 此文件只导出公共 API,不执行任何代码(无副作用)
6
+ * 服务器启动入口请使用 cli.ts
5
7
  */
6
- export {};
8
+ export { createHttpApi } from './httpApi';
9
+ export { BehaviorStore } from './store/behaviorStore';
10
+ export { ErrorStore } from './store/errorStore';
11
+ export { BehaviorDetector } from './detector/behaviorDetector';
12
+ export { AlertDetector } from './detector/alertDetector';
13
+ export type { Behavior, Summary, Hotspot, ErrorRecord, ErrorSummary } from './types';
7
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAGzC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGxD,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -1,41 +1,16 @@
1
1
  /**
2
- * Agent-aware Server 入口
3
- * HTTP Server (Hono)
4
- * 基于 SPEC-SRV-005: Detector 架构重构
2
+ * Agent-aware Server 包入口
3
+ * 基于 SPEC-SRV-006: Package Entry Architecture
4
+ *
5
+ * 此文件只导出公共 API,不执行任何代码(无副作用)
6
+ * 服务器启动入口请使用 cli.ts
5
7
  */
6
- import { serve } from '@hono/node-server';
7
- import { createHttpApi } from './httpApi';
8
- import { BehaviorStore } from './store/behaviorStore';
9
- import { ErrorStore } from './store/errorStore';
10
- import { BehaviorDetector } from './detector/behaviorDetector';
11
- import { AlertDetector } from './detector/alertDetector';
12
- const PORT = 4100;
13
- const DATA_DIR = './data';
14
- // 检测器输出到用户项目根目录
15
- // 优先级:环境变量 > process.cwd()
16
- const PROJECT_ROOT = process.env.USER_PROJECT_ROOT || process.cwd();
17
- const store = new BehaviorStore(DATA_DIR);
18
- const errorStore = new ErrorStore(DATA_DIR);
19
- const behaviorDetector = new BehaviorDetector(PROJECT_ROOT);
20
- const alertDetector = new AlertDetector(PROJECT_ROOT);
21
- const app = createHttpApi(store, errorStore, behaviorDetector, alertDetector);
22
- console.log(`[AgentAware Server] Starting on port ${PORT}...`);
23
- console.log(`[AgentAware Server] Project root: ${PROJECT_ROOT}`);
24
- console.log(`[AgentAware Server] Output directory: ${PROJECT_ROOT}/.agent-aware/`);
25
- serve({
26
- fetch: app.fetch,
27
- port: PORT,
28
- });
29
- console.log(`[AgentAware Server] HTTP API listening on http://localhost:${PORT}`);
30
- console.log(`[AgentAware Server] Endpoints:`);
31
- console.log(` POST /behaviors - 接收行为数据`);
32
- console.log(` GET /behaviors - 查询行为数据`);
33
- console.log(` GET /summary - 获取行为摘要`);
34
- console.log(` GET /hotspots - 获取交互热点`);
35
- console.log(` GET /health - 健康检查`);
36
- console.log(` DELETE /behaviors - 清空行为数据`);
37
- console.log(` POST /errors - 接收错误数据`);
38
- console.log(` GET /errors - 查询错误数据`);
39
- console.log(` GET /errors/summary - 获取错误摘要`);
40
- console.log(` DELETE /errors - 清空错误数据`);
8
+ // 核心函数
9
+ export { createHttpApi } from './httpApi';
10
+ // 存储
11
+ export { BehaviorStore } from './store/behaviorStore';
12
+ export { ErrorStore } from './store/errorStore';
13
+ // 检测器
14
+ export { BehaviorDetector } from './detector/behaviorDetector';
15
+ export { AlertDetector } from './detector/alertDetector';
41
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,MAAM,IAAI,GAAG,IAAI,CAAA;AACjB,MAAM,QAAQ,GAAG,QAAQ,CAAA;AACzB,gBAAgB;AAChB,2BAA2B;AAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;AAEnE,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAA;AACzC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;AAC3C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAA;AAC3D,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,CAAA;AACrD,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;AAE7E,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,KAAK,CAAC,CAAA;AAC9D,OAAO,CAAC,GAAG,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAA;AAChE,OAAO,CAAC,GAAG,CAAC,yCAAyC,YAAY,gBAAgB,CAAC,CAAA;AAElF,KAAK,CAAC;IACJ,KAAK,EAAE,GAAG,CAAC,KAAK;IAChB,IAAI,EAAE,IAAI;CACX,CAAC,CAAA;AAEF,OAAO,CAAC,GAAG,CAAC,8DAA8D,IAAI,EAAE,CAAC,CAAA;AACjF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;AAC7C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AACjD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AACjD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AACjD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AACjD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;AAC/C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AACjD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AACjD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AACjD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AACjD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO;AACP,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,KAAK;AACL,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,MAAM;AACN,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA"}
@@ -1,12 +1,18 @@
1
1
  /**
2
2
  * BehaviorStore - 行为数据存储
3
3
  * 基于 SPEC-SRV-002
4
+ *
5
+ * 更新:存储路径统一到 .agent-aware/detail/ 目录
4
6
  */
5
7
  import type { Behavior, QueryOptions, Summary, Hotspot } from '../types';
6
8
  export declare class BehaviorStore {
7
- private dataDir;
9
+ private detailDir;
8
10
  private filePath;
9
- constructor(dataDir?: string);
11
+ /**
12
+ * @param projectRoot 用户项目根目录,数据将存储在 <projectRoot>/.agent-aware/detail/
13
+ * 默认从环境变量 USER_PROJECT_ROOT 读取,如果未设置则使用 process.cwd()
14
+ */
15
+ constructor(projectRoot?: string);
10
16
  /**
11
17
  * 添加单条行为
12
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"behaviorStore.d.ts","sourceRoot":"","sources":["../../src/store/behaviorStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,QAAQ,EAER,YAAY,EACZ,OAAO,EACP,OAAO,EACR,MAAM,UAAU,CAAA;AAMjB,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,OAAO,GAAE,MAAiB;IAKtC;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C;;OAEG;IACG,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACG,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAe5D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAwBpC;;OAEG;IACG,WAAW,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAiCxD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;YACW,IAAI;IAUlB;;OAEG;YACW,KAAK;CAKpB"}
1
+ {"version":3,"file":"behaviorStore.d.ts","sourceRoot":"","sources":["../../src/store/behaviorStore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,QAAQ,EAER,YAAY,EACZ,OAAO,EACP,OAAO,EACR,MAAM,UAAU,CAAA;AAgBjB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAQ;IAExB;;;OAGG;gBACS,WAAW,GAAE,MAAgC;IAKzD;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C;;OAEG;IACG,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACG,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAe5D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAwBpC;;OAEG;IACG,WAAW,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAiCxD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;YACW,IAAI;IAUlB;;OAEG;YACW,KAAK;CAKpB"}
@@ -1,16 +1,31 @@
1
1
  /**
2
2
  * BehaviorStore - 行为数据存储
3
3
  * 基于 SPEC-SRV-002
4
+ *
5
+ * 更新:存储路径统一到 .agent-aware/detail/ 目录
4
6
  */
5
7
  import { readFile, writeFile, mkdir } from 'node:fs/promises';
6
8
  import { join } from 'node:path';
9
+ const AGENT_AWARE_DIR = '.agent-aware';
10
+ const DETAIL_DIR = 'detail';
7
11
  const DATA_FILE = 'behaviors.json';
8
12
  const MAX_BEHAVIORS = 1000;
9
13
  const STORAGE_VERSION = '1.0';
14
+ /**
15
+ * 获取默认的项目根目录
16
+ * 优先级:环境变量 USER_PROJECT_ROOT > process.cwd()
17
+ */
18
+ function getDefaultProjectRoot() {
19
+ return process.env.USER_PROJECT_ROOT || process.cwd();
20
+ }
10
21
  export class BehaviorStore {
11
- constructor(dataDir = './data') {
12
- this.dataDir = dataDir;
13
- this.filePath = join(dataDir, DATA_FILE);
22
+ /**
23
+ * @param projectRoot 用户项目根目录,数据将存储在 <projectRoot>/.agent-aware/detail/
24
+ * 默认从环境变量 USER_PROJECT_ROOT 读取,如果未设置则使用 process.cwd()
25
+ */
26
+ constructor(projectRoot = getDefaultProjectRoot()) {
27
+ this.detailDir = join(projectRoot, AGENT_AWARE_DIR, DETAIL_DIR);
28
+ this.filePath = join(this.detailDir, DATA_FILE);
14
29
  }
15
30
  /**
16
31
  * 添加单条行为
@@ -119,7 +134,7 @@ export class BehaviorStore {
119
134
  */
120
135
  async write(data) {
121
136
  // 确保目录存在
122
- await mkdir(this.dataDir, { recursive: true });
137
+ await mkdir(this.detailDir, { recursive: true });
123
138
  await writeFile(this.filePath, JSON.stringify(data, null, 2), 'utf-8');
124
139
  }
125
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"behaviorStore.js","sourceRoot":"","sources":["../../src/store/behaviorStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"behaviorStore.js","sourceRoot":"","sources":["../../src/store/behaviorStore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAShC,MAAM,eAAe,GAAG,cAAc,CAAA;AACtC,MAAM,UAAU,GAAG,QAAQ,CAAA;AAC3B,MAAM,SAAS,GAAG,gBAAgB,CAAA;AAClC,MAAM,aAAa,GAAG,IAAI,CAAA;AAC1B,MAAM,eAAe,GAAG,KAAK,CAAA;AAE7B;;;GAGG;AACH,SAAS,qBAAqB;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;AACvD,CAAC;AAED,MAAM,OAAO,aAAa;IAIxB;;;OAGG;IACH,YAAY,cAAsB,qBAAqB,EAAE;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,CAAA;QAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,QAAkB;QAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,YAAwB;QACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;QAEpC,OAAO;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACxB,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,UAAwB,EAAE;QACpC,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,OAAO,CAAA;QACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAE9B,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAA;QAE5B,QAAQ;QACR,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACzD,CAAC;QAED,YAAY;QACZ,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAEhC,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAA;QAC1C,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,MAAM,CAAA;QAC9E,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,MAAM,CAAA;QAC9E,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CACvD,CAAC,MAAM,CAAA;QAER,MAAM,gBAAgB,GACpB,WAAW,GAAG,CAAC;YACb,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,GAAG,cAAc,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;YACpF,CAAC,CAAC,CAAC,CAAA;QAEP,OAAO;YACL,iBAAiB;YACjB,gBAAgB;YAChB,cAAc;YACd,cAAc;SACf,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAE9B,kBAAkB;QAClB,MAAM,aAAa,GAAG,IAAI,GAAG,EAA4C,CAAA;QAEzE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAA;YACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAE5C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,KAAK,EAAE,CAAA;YAClB,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;oBAC1B,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;iBAC3B,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,QAAQ;QACR,MAAM,QAAQ,GAAc,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;aAC5D,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,QAAQ;YACR,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,gBAAgB,EAAE,KAAK,CAAC,KAAK;SAC9B,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;aACvD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAElB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACtD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;YACjB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,CAAA;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,KAAK,CAAC,IAAiB;QACnC,SAAS;QACT,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAChD,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IACxE,CAAC;CACF"}
@@ -1,12 +1,18 @@
1
1
  /**
2
2
  * ErrorStore - 错误数据存储
3
3
  * 基于 SPEC-SRV-003: Errors API
4
+ *
5
+ * 更新:存储路径统一到 .agent-aware/detail/ 目录
4
6
  */
5
7
  import type { ErrorRecord, ErrorQueryOptions, ErrorSummary } from '../types';
6
8
  export declare class ErrorStore {
7
- private dataDir;
9
+ private detailDir;
8
10
  private filePath;
9
- constructor(dataDir?: string);
11
+ /**
12
+ * @param projectRoot 用户项目根目录,数据将存储在 <projectRoot>/.agent-aware/detail/
13
+ * 默认从环境变量 USER_PROJECT_ROOT 读取,如果未设置则使用 process.cwd()
14
+ */
15
+ constructor(projectRoot?: string);
10
16
  /**
11
17
  * 添加单条错误
12
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errorStore.d.ts","sourceRoot":"","sources":["../../src/store/errorStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,WAAW,EAEX,iBAAiB,EACjB,YAAY,EACb,MAAM,UAAU,CAAA;AAMjB,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,OAAO,GAAE,MAAiB;IAKtC;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACG,KAAK,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAepE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAuBzC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;YACW,IAAI;IAUlB;;OAEG;YACW,KAAK;CAKpB"}
1
+ {"version":3,"file":"errorStore.d.ts","sourceRoot":"","sources":["../../src/store/errorStore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,WAAW,EAEX,iBAAiB,EACjB,YAAY,EACb,MAAM,UAAU,CAAA;AAgBjB,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAQ;IAExB;;;OAGG;gBACS,WAAW,GAAE,MAAgC;IAKzD;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACG,KAAK,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAepE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAuBzC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;YACW,IAAI;IAUlB;;OAEG;YACW,KAAK;CAKpB"}
@@ -1,16 +1,31 @@
1
1
  /**
2
2
  * ErrorStore - 错误数据存储
3
3
  * 基于 SPEC-SRV-003: Errors API
4
+ *
5
+ * 更新:存储路径统一到 .agent-aware/detail/ 目录
4
6
  */
5
7
  import { readFile, writeFile, mkdir } from 'node:fs/promises';
6
8
  import { join } from 'node:path';
9
+ const AGENT_AWARE_DIR = '.agent-aware';
10
+ const DETAIL_DIR = 'detail';
7
11
  const DATA_FILE = 'errors.json';
8
12
  const MAX_ERRORS = 1000;
9
13
  const STORAGE_VERSION = '1.0';
14
+ /**
15
+ * 获取默认的项目根目录
16
+ * 优先级:环境变量 USER_PROJECT_ROOT > process.cwd()
17
+ */
18
+ function getDefaultProjectRoot() {
19
+ return process.env.USER_PROJECT_ROOT || process.cwd();
20
+ }
10
21
  export class ErrorStore {
11
- constructor(dataDir = './data') {
12
- this.dataDir = dataDir;
13
- this.filePath = join(dataDir, DATA_FILE);
22
+ /**
23
+ * @param projectRoot 用户项目根目录,数据将存储在 <projectRoot>/.agent-aware/detail/
24
+ * 默认从环境变量 USER_PROJECT_ROOT 读取,如果未设置则使用 process.cwd()
25
+ */
26
+ constructor(projectRoot = getDefaultProjectRoot()) {
27
+ this.detailDir = join(projectRoot, AGENT_AWARE_DIR, DETAIL_DIR);
28
+ this.filePath = join(this.detailDir, DATA_FILE);
14
29
  }
15
30
  /**
16
31
  * 添加单条错误
@@ -88,7 +103,7 @@ export class ErrorStore {
88
103
  */
89
104
  async write(data) {
90
105
  // 确保目录存在
91
- await mkdir(this.dataDir, { recursive: true });
106
+ await mkdir(this.detailDir, { recursive: true });
92
107
  await writeFile(this.filePath, JSON.stringify(data, null, 2), 'utf-8');
93
108
  }
94
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errorStore.js","sourceRoot":"","sources":["../../src/store/errorStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errorStore.js","sourceRoot":"","sources":["../../src/store/errorStore.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reskill/agent-aware-server",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "description": "Agent-aware RUM Server - HTTP API for user behavior tracking",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -43,8 +43,8 @@
43
43
  },
44
44
  "scripts": {
45
45
  "build": "tsc",
46
- "dev": "tsx watch src/index.ts",
47
- "start": "node dist/index.js",
46
+ "dev": "tsx watch src/cli.ts start",
47
+ "start": "node dist/cli.js start",
48
48
  "test": "vitest run",
49
49
  "test:watch": "vitest",
50
50
  "typecheck": "tsc --noEmit"