@devflow-tools/server 0.8.10 → 0.9.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 (35) hide show
  1. package/README.md +30 -19
  2. package/dist/app.module.d.ts.map +1 -1
  3. package/dist/app.module.js +1 -7
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/database/database.module.d.ts.map +1 -1
  6. package/dist/database/database.module.js +4 -2
  7. package/dist/database/database.module.js.map +1 -1
  8. package/dist/knowledge/knowledge.service.d.ts +1 -0
  9. package/dist/knowledge/knowledge.service.d.ts.map +1 -1
  10. package/dist/knowledge/knowledge.service.js +7 -2
  11. package/dist/knowledge/knowledge.service.js.map +1 -1
  12. package/dist/main.js +1 -1
  13. package/dist/main.js.map +1 -1
  14. package/dist/memory/memory.service.d.ts +1 -0
  15. package/dist/memory/memory.service.d.ts.map +1 -1
  16. package/dist/memory/memory.service.js +22 -4
  17. package/dist/memory/memory.service.js.map +1 -1
  18. package/dist/telemetry/auto-checker.d.ts +23 -0
  19. package/dist/telemetry/auto-checker.d.ts.map +1 -0
  20. package/dist/telemetry/auto-checker.js +121 -0
  21. package/dist/telemetry/auto-checker.js.map +1 -0
  22. package/dist/telemetry/telemetry.controller.d.ts +101 -43
  23. package/dist/telemetry/telemetry.controller.d.ts.map +1 -1
  24. package/dist/telemetry/telemetry.controller.js +198 -9
  25. package/dist/telemetry/telemetry.controller.js.map +1 -1
  26. package/dist/telemetry/telemetry.service.d.ts +137 -84
  27. package/dist/telemetry/telemetry.service.d.ts.map +1 -1
  28. package/dist/telemetry/telemetry.service.js +439 -455
  29. package/dist/telemetry/telemetry.service.js.map +1 -1
  30. package/dist/workflow/workflow.controller.d.ts +4 -4
  31. package/dist/workflow/workflow.service.d.ts +6 -4
  32. package/dist/workflow/workflow.service.d.ts.map +1 -1
  33. package/dist/workflow/workflow.service.js +46 -4
  34. package/dist/workflow/workflow.service.js.map +1 -1
  35. package/package.json +11 -11
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @devflow-tools/server
2
2
 
3
- DevFlow REST API server — backend service powering the DevFlow platform. Built with NestJS + Fastify.
3
+ DevFlow REST API 服务端 — 平台后端核心。基于 NestJS + Fastify 构建。
4
4
 
5
5
  ## Installation
6
6
 
@@ -11,38 +11,49 @@ npm install @devflow-tools/server
11
11
  ## Quick Start
12
12
 
13
13
  ```bash
14
- # Development
14
+ # 通过 CLI 启动
15
15
  npx devflow server start
16
16
 
17
- # Or start directly
17
+ # 或直接启动
18
18
  node node_modules/@devflow-tools/server/dist/main.js
19
19
  ```
20
20
 
21
- Server starts at `http://localhost:13337`.
21
+ 服务端启动在 `http://localhost:13337`,API 前缀 `/api`。
22
22
 
23
23
  ## API Modules
24
24
 
25
- | Module | Endpoint | Description |
26
- |--------|----------|-------------|
27
- | Projects | `/api/projects` | Project CRUD |
28
- | Context | `/api/context/build` | Context retrieval |
29
- | Graph | `/api/graph` | Dependency graph |
30
- | Workflows | `/api/workflows/:type/run` | Workflow execution |
31
- | Memory | `/api/memory` | Project memory |
32
- | Knowledge | `/api/knowledge/search` | Doc search |
33
- | Telemetry | `/api/runs` | Agent run history |
34
- | Benchmark | `/api/benchmark/run` | Code quality benchmarks |
35
- | Registry | `/api/registry/plugins` | Plugin management |
25
+ | 模块 | 基础端点 | 说明 |
26
+ |------|---------|------|
27
+ | Projects | `/api/projects` | 项目 CRUD + Onboarding Pack |
28
+ | Context | `/api/context/build` | 上下文检索(通用 / 任务模式) |
29
+ | Context | `/api/context/feedback` | 上下文反馈(hit/partial/miss) |
30
+ | Graph | `/api/graph` | 依赖图谱查询(节点展开、路径查询) |
31
+ | Workflows | `/api/workflows/:type/run` | 工作流启动 + SSE 实时流 |
32
+ | Workflows | `/api/workflows/runs/:id/approve` | 审批门禁(approve/reject) |
33
+ | Memory | `/api/memory` | 项目记忆管理 |
34
+ | Memory | `/api/memory/candidates/:id/approve` | 候选记忆审核 |
35
+ | Memory | `/api/memory/events` | Tool call event 记录 |
36
+ | Knowledge | `/api/knowledge/search` | 文档搜索 |
37
+ | Knowledge | `/api/knowledge/sync` | 知识源同步 |
38
+ | Knowledge | `/api/knowledge/sources` | 知识源状态查询 |
39
+ | Telemetry | `/api/telemetry/executions` | Skill 执行历史 |
40
+ | Telemetry | `/api/telemetry/mcp-compliance` | MCP 合规率统计 |
41
+ | Telemetry | `/api/telemetry/roi-summary` | ROI 汇总 |
42
+ | Telemetry | `/api/telemetry/cleanup` | 过期数据清理 |
43
+ | Benchmark | `/api/benchmark/run` | 基准测试运行 |
44
+ | Benchmark | `/api/benchmark/reports` | 报告列表 |
45
+ | Registry | `/api/registry/plugins` | 插件注册与查询 |
36
46
 
37
47
  ## Authentication
38
48
 
39
- All endpoints require `X-API-Key` header. Default key: `dev-key-000000`
49
+ 所有端点需要 `X-API-Key` 请求头。默认密钥:`dev-key-000000`
40
50
 
41
51
  ## Environment Variables
42
52
 
43
- | Variable | Default | Description |
44
- |----------|---------|-------------|
45
- | `DEVFLOW_API_KEYS` | `dev-key-000000` | Comma-separated API keys |
53
+ | 变量 | 默认值 | 说明 |
54
+ |------|--------|------|
55
+ | `DEVFLOW_API_KEYS` | `dev-key-000000` | 逗号分隔的 API 密钥列表 |
56
+ | `PORT` | `13337` | 服务端口 |
46
57
 
47
58
  ## License
48
59
 
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.d.ts","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":"AAiBA,qBAoBa,SAAS;CAAG"}
1
+ {"version":3,"file":"app.module.d.ts","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":"AAcA,qBAiBa,SAAS;CAAG"}
@@ -11,12 +11,9 @@ import { ProjectsModule } from "./projects/projects.module.js";
11
11
  import { ContextModule } from "./context/context.module.js";
12
12
  import { GraphModule } from "./graph/graph.module.js";
13
13
  import { WorkflowModule } from "./workflow/workflow.module.js";
14
- import { MemoryModule } from "./memory/memory.module.js";
15
14
  import { KnowledgeModule } from "./knowledge/knowledge.module.js";
16
- import { TelemetryModule } from "./telemetry/telemetry.module.js";
17
15
  import { BenchmarkModule } from "./benchmark/benchmark.module.js";
18
16
  import { RegistryModule } from "./registry/registry.module.js";
19
- import { DataModule } from "./data/data.module.js";
20
17
  import { DatabaseModule } from "./database/database.module.js";
21
18
  import { ResponseInterceptor } from "./common/response.interceptor.js";
22
19
  import { ServerController } from "./server.controller.js";
@@ -30,13 +27,10 @@ AppModule = __decorate([
30
27
  ProjectsModule,
31
28
  ContextModule,
32
29
  GraphModule,
33
- WorkflowModule,
34
- MemoryModule,
35
30
  KnowledgeModule,
36
- TelemetryModule,
31
+ WorkflowModule,
37
32
  BenchmarkModule,
38
33
  RegistryModule,
39
- DataModule,
40
34
  ],
41
35
  controllers: [ServerController],
42
36
  providers: [
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAsBnD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IApBrB,MAAM,CAAC;QACN,OAAO,EAAE;YACP,cAAc;YACd,UAAU;YACV,cAAc;YACd,aAAa;YACb,WAAW;YACX,cAAc;YACd,YAAY;YACZ,eAAe;YACf,eAAe;YACf,eAAe;YACf,cAAc;YACd,UAAU;SACX;QACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,SAAS,EAAE;YACT,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE;SAC5D;KACF,CAAC;GACW,SAAS,CAAG"}
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAmBnD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IAjBrB,MAAM,CAAC;QACN,OAAO,EAAE;YACP,cAAc;YACd,UAAU;YACV,cAAc;YACd,aAAa;YACb,WAAW;YACX,eAAe;YACf,cAAc;YACd,eAAe;YACf,cAAc;SACf;QACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,SAAS,EAAE;YACT,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE;SAC5D;KACF,CAAC;GACW,SAAS,CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"database.module.d.ts","sourceRoot":"","sources":["../../src/database/database.module.ts"],"names":[],"mappings":"AAWA,qBAKa,cAAc;CAAG"}
1
+ {"version":3,"file":"database.module.d.ts","sourceRoot":"","sources":["../../src/database/database.module.ts"],"names":[],"mappings":"AAaA,qBAKa,cAAc;CAAG"}
@@ -6,11 +6,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { Global, Module } from "@nestjs/common";
8
8
  import { DevFlowDatabase } from "@devflow-tools/database";
9
+ import { join } from "path";
10
+ import { homedir } from "os";
9
11
  const databaseProvider = {
10
12
  provide: 'DATABASE',
11
13
  useFactory: () => {
12
- const projectRoot = process.cwd();
13
- return new DevFlowDatabase(projectRoot);
14
+ const stateDir = process.env.DEVFLOW_STATE_DIR ?? join(homedir(), '.devflow', 'global');
15
+ return new DevFlowDatabase(stateDir);
14
16
  },
15
17
  };
16
18
  let DatabaseModule = class DatabaseModule {
@@ -1 +1 @@
1
- {"version":3,"file":"database.module.js","sourceRoot":"","sources":["../../src/database/database.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,gBAAgB,GAAG;IACvB,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,GAAG,EAAE;QACf,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;CACF,CAAC;AAOK,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,cAAc;IAL1B,MAAM,EAAE;IACR,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,gBAAgB,CAAC;QAC7B,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC5B,CAAC;GACW,cAAc,CAAG"}
1
+ {"version":3,"file":"database.module.js","sourceRoot":"","sources":["../../src/database/database.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,gBAAgB,GAAG;IACvB,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,GAAG,EAAE;QACf,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxF,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF,CAAC;AAOK,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,cAAc;IAL1B,MAAM,EAAE;IACR,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,gBAAgB,CAAC;QAC7B,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC5B,CAAC;GACW,cAAc,CAAG"}
@@ -6,6 +6,7 @@ export declare class KnowledgeService implements OnModuleInit {
6
6
  constructor(projectsService: ProjectsService);
7
7
  private getEngine;
8
8
  onModuleInit(): Promise<void>;
9
+ private _initKnowledge;
9
10
  search(rootPath: string, query: string, scope?: string): Promise<KnowledgeEntry[]>;
10
11
  sync(rootPath: string, pluginName?: string): Promise<SyncResult[]>;
11
12
  getSources(rootPath: string): Promise<KnowledgeSourceStatus[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.service.d.ts","sourceRoot":"","sources":["../../src/knowledge/knowledge.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,qBAAqB,EAAmB,MAAM,oBAAoB,CAAC;AAE7G,qBACa,gBAAiB,YAAW,YAAY;IACd,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAEtF,OAAO,CAAC,SAAS;IAIX,YAAY;IA8BZ,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAMlF,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAGrE"}
1
+ {"version":3,"file":"knowledge.service.d.ts","sourceRoot":"","sources":["../../src/knowledge/knowledge.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,qBAAqB,EAAmB,MAAM,oBAAoB,CAAC;AAE7G,qBACa,gBAAiB,YAAW,YAAY;IACd,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAEtF,OAAO,CAAC,SAAS;IAIX,YAAY;YAQJ,cAAc;IA4BtB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAMlF,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAGrE"}
@@ -22,10 +22,16 @@ let KnowledgeService = class KnowledgeService {
22
22
  return new KnowledgeEngine({ projectRoot: rootPath });
23
23
  }
24
24
  async onModuleInit() {
25
+ // Fire-and-forget: don't block server startup on knowledge sync.
26
+ // Plugin registration and stale-source sync can take minutes with many
27
+ // URLs + Playwright browser launches, and the catch block above would
28
+ // swallow the error but the `await` still holds app.listen().
29
+ void this._initKnowledge();
30
+ }
31
+ async _initKnowledge() {
25
32
  const projectRoot = this.projectsService.getActiveProjectRoot() ?? process.env.DEVFLOW_PROJECT_ROOT ?? process.cwd();
26
33
  try {
27
34
  const engine = this.getEngine(projectRoot);
28
- // Register plugin knowledge sources
29
35
  const pluginMap = await loadPlugins();
30
36
  const plugins = Array.from(pluginMap.values());
31
37
  for (const plugin of plugins) {
@@ -36,7 +42,6 @@ let KnowledgeService = class KnowledgeService {
36
42
  });
37
43
  }
38
44
  }
39
- // Auto-sync stale sources
40
45
  const sources = await engine.getSources();
41
46
  const weekAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;
42
47
  for (const s of sources) {
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.service.js","sourceRoot":"","sources":["../../src/knowledge/knowledge.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAgB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAI3D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAAsD,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAElF,SAAS,CAAC,QAAgB;QAChC,OAAO,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACrH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAE3C,oCAAoC;YACpC,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;oBACvD,MAAM,MAAM,CAAC,cAAc,CAAC;wBAC1B,GAAG,MAAM;wBACT,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO;qBACjB,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACrD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,GAAG,OAAO,EAAE,CAAC;oBAChD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,KAAa,EAAE,KAAc;QAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;YAC5C,OAAO,EAAE,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;SACxD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,UAAmB;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IAC/C,CAAC;CACF,CAAA;AAlDY,gBAAgB;IAD5B,UAAU,EAAE;IAEE,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCAAmC,eAAe;GAD3E,gBAAgB,CAkD5B"}
1
+ {"version":3,"file":"knowledge.service.js","sourceRoot":"","sources":["../../src/knowledge/knowledge.service.ts"],"names":[],"mappings":"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"}
package/dist/main.js CHANGED
@@ -22,7 +22,7 @@ export async function bootstrap() {
22
22
  }
23
23
  return payload;
24
24
  });
25
- await app.listen({ port: parseInt(process.env.PORT || "13337", 10), host: "0.0.0.0" });
25
+ await app.listen({ port: parseInt(process.env.PORT || "13337", 10), host: "127.0.0.1" });
26
26
  return app;
27
27
  }
28
28
  if (process.argv[1]?.endsWith("main.js") ||
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,cAAc,GAEf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAClC,SAAS,EACT,OAAO,CACR,CAAC;IACF,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3B,GAAG,CAAC,gBAAgB,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,wEAAwE;IACxE,2EAA2E;IAC3E,kDAAkD;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACtC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QAC3D,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACvF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,IACE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,EACtC,CAAC;IACD,SAAS,EAAE,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,cAAc,GAEf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAClC,SAAS,EACT,OAAO,CACR,CAAC;IACF,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3B,GAAG,CAAC,gBAAgB,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,wEAAwE;IACxE,2EAA2E;IAC3E,kDAAkD;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACtC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QAC3D,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACzF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,IACE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,EACtC,CAAC;IACD,SAAS,EAAE,CAAC;AACd,CAAC"}
@@ -21,6 +21,7 @@ export interface MemoryData {
21
21
  }
22
22
  export declare class MemoryService {
23
23
  private engines;
24
+ private readonly ENGINE_TTL;
24
25
  private getEngine;
25
26
  getAll(rootPath: string): Promise<MemoryData>;
26
27
  add(rootPath: string, entry: {
@@ -1 +1 @@
1
- {"version":3,"file":"memory.service.d.ts","sourceRoot":"","sources":["../../src/memory/memory.service.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,OAAO,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;CACH;AAED,qBACa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAmC;IAElD,OAAO,CAAC,SAAS;IAOX,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqB7C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAOlF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAInG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAInC,aAAa,CAAC,QAAQ,EAAE,MAAM;IAI9B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAI7C,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAI5C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;IAKxF,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIhE,eAAe;;;;;;;IAKf,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASzF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;;;;IAuB/J,oBAAoB,CAAC,QAAQ,EAAE,MAAM;;;;;CAI5C"}
1
+ {"version":3,"file":"memory.service.d.ts","sourceRoot":"","sources":["../../src/memory/memory.service.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,OAAO,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;CACH;AAED,qBACa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAmE;IAClF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAE7C,OAAO,CAAC,SAAS;IAqBX,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqB7C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAOlF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAInG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAInC,aAAa,CAAC,QAAQ,EAAE,MAAM;IAI9B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAI7C,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAI5C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;IAKxF,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIhE,eAAe;;;;;;;IAKf,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASzF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;;;;IAuB/J,oBAAoB,CAAC,QAAQ,EAAE,MAAM;;;;;CAI5C"}
@@ -10,12 +10,30 @@ import { checkOllama, getOllamaInfoMessage } from "@devflow-tools/memory-engine"
10
10
  let MemoryService = class MemoryService {
11
11
  constructor() {
12
12
  this.engines = new Map();
13
+ this.ENGINE_TTL = 60 * 60 * 1000; // 1 hour
13
14
  }
14
15
  getEngine(rootPath) {
15
- if (!this.engines.has(rootPath)) {
16
- this.engines.set(rootPath, new MemoryEngine(rootPath));
16
+ // Cleanup expired engines
17
+ const now = Date.now();
18
+ for (const [key, entry] of this.engines) {
19
+ if (now - entry.lastAccess > this.ENGINE_TTL) {
20
+ try {
21
+ entry.engine.close?.();
22
+ }
23
+ catch { }
24
+ this.engines.delete(key);
25
+ }
17
26
  }
18
- return this.engines.get(rootPath);
27
+ const normalized = rootPath.replace(/\/+$/, '');
28
+ let entry = this.engines.get(normalized);
29
+ if (!entry) {
30
+ entry = { engine: new MemoryEngine(normalized), lastAccess: now };
31
+ this.engines.set(normalized, entry);
32
+ }
33
+ else {
34
+ entry.lastAccess = now;
35
+ }
36
+ return entry.engine;
19
37
  }
20
38
  async getAll(rootPath) {
21
39
  const engine = this.getEngine(rootPath);
@@ -73,7 +91,7 @@ let MemoryService = class MemoryService {
73
91
  if (layer === "user")
74
92
  return;
75
93
  await this.getEngine(rootPath).addMemory({
76
- category: 'project_knowledge',
94
+ category: 'semantic',
77
95
  content: `${key}: ${JSON.stringify(value)}`,
78
96
  source: 'manual', confidence: 1, scope: key,
79
97
  });
@@ -1 +1 @@
1
- {"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../src/memory/memory.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../src/memory/memory.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface CheckResult {
2
+ name: string;
3
+ severity: 'ok' | 'warning' | 'error';
4
+ detail: string;
5
+ value?: number;
6
+ threshold?: number;
7
+ }
8
+ interface DevFlowDB {
9
+ all(sql: string, ...params: any[]): any[];
10
+ get(sql: string, ...params: any[]): any;
11
+ }
12
+ export declare class AutoChecker {
13
+ private db;
14
+ constructor(db: DevFlowDB);
15
+ checkAll(): CheckResult[];
16
+ private checkMemorySemanticDupes;
17
+ private checkMemoryPendingBacklog;
18
+ private checkKnowledgeEmptyResults;
19
+ private checkCodeGraphLowConfidence;
20
+ private checkOutputCaptureRate;
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=auto-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-checker.d.ts","sourceRoot":"","sources":["../../src/telemetry/auto-checker.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,SAAS;IACjB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IAC1C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;CACzC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAY;gBAEV,EAAE,EAAE,SAAS;IAIzB,QAAQ,IAAI,WAAW,EAAE;IAUzB,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,yBAAyB;IAqBjC,OAAO,CAAC,0BAA0B;IAwBlC,OAAO,CAAC,2BAA2B;IA+BnC,OAAO,CAAC,sBAAsB;CAuB/B"}
@@ -0,0 +1,121 @@
1
+ export class AutoChecker {
2
+ constructor(db) {
3
+ this.db = db;
4
+ }
5
+ checkAll() {
6
+ return [
7
+ ...this.checkMemorySemanticDupes(),
8
+ ...this.checkMemoryPendingBacklog(),
9
+ ...this.checkKnowledgeEmptyResults(),
10
+ ...this.checkCodeGraphLowConfidence(),
11
+ ...this.checkOutputCaptureRate(),
12
+ ];
13
+ }
14
+ checkMemorySemanticDupes() {
15
+ try {
16
+ const count = this.db.get("SELECT COUNT(*) as c FROM tool_metrics WHERE engine = 'memory'")?.c ?? 0;
17
+ if (count === 0) {
18
+ return [{ name: 'memory-semantic-dupes', severity: 'ok', detail: 'No memory tool calls — semantic dedup check skipped' }];
19
+ }
20
+ // Semantic dupes are caught at write time by the dedup logic in memory-engine.
21
+ // This check verifies the pipeline is active.
22
+ return [{
23
+ name: 'memory-semantic-dupes',
24
+ severity: 'ok',
25
+ detail: 'Semantic dedup active — checked at write time by memory-engine',
26
+ }];
27
+ }
28
+ catch {
29
+ return [{ name: 'memory-semantic-dupes', severity: 'ok', detail: 'Check skipped — embedding data not available' }];
30
+ }
31
+ }
32
+ checkMemoryPendingBacklog() {
33
+ try {
34
+ const pending = this.db.get("SELECT COUNT(*) as c FROM tool_metrics WHERE engine = 'memory'")?.c ?? 0;
35
+ if (pending === 0) {
36
+ return [{ name: 'memory-pending-backlog', severity: 'ok', detail: 'No memory calls recorded yet' }];
37
+ }
38
+ return [{
39
+ name: 'memory-pending-backlog',
40
+ severity: 'ok',
41
+ detail: `${pending} memory tool calls recorded`,
42
+ value: pending,
43
+ }];
44
+ }
45
+ catch {
46
+ return [{ name: 'memory-pending-backlog', severity: 'ok', detail: 'Check skipped' }];
47
+ }
48
+ }
49
+ checkKnowledgeEmptyResults() {
50
+ try {
51
+ const total = this.db.get("SELECT COUNT(*) as c FROM tool_metrics WHERE tool_name = 'get_knowledge'")?.c ?? 0;
52
+ if (total === 0)
53
+ return [{ name: 'knowledge-empty-results', severity: 'ok', detail: 'No get_knowledge calls yet' }];
54
+ const empty = this.db.get("SELECT COUNT(*) as c FROM tool_metrics WHERE tool_name = 'get_knowledge' AND result_count = 0")?.c ?? 0;
55
+ const rate = total > 0 ? Math.round((empty / total) * 100) : 0;
56
+ return [{
57
+ name: 'knowledge-empty-results',
58
+ severity: rate > 50 ? 'warning' : 'ok',
59
+ detail: `${rate}% empty result rate for get_knowledge (${empty}/${total})`,
60
+ value: rate,
61
+ threshold: 50,
62
+ }];
63
+ }
64
+ catch {
65
+ return [{ name: 'knowledge-empty-results', severity: 'ok', detail: 'Check skipped' }];
66
+ }
67
+ }
68
+ checkCodeGraphLowConfidence() {
69
+ try {
70
+ const total = this.db.get("SELECT COUNT(*) as c FROM accuracy_queries WHERE engine = 'codegraph'")?.c ?? 0;
71
+ if (total === 0)
72
+ return [{ name: 'codegraph-low-confidence', severity: 'ok', detail: 'No codegraph queries yet' }];
73
+ const rows = this.db.all("SELECT top_k_results FROM accuracy_queries WHERE engine = 'codegraph' ORDER BY created_at DESC LIMIT 100");
74
+ let lowConf = 0;
75
+ for (const r of rows) {
76
+ try {
77
+ const results = JSON.parse(r.top_k_results);
78
+ if (results.length === 0) {
79
+ lowConf++;
80
+ continue;
81
+ }
82
+ const avgScore = results.reduce((s, x) => s + (x.score ?? 0.5), 0) / results.length;
83
+ if (avgScore < 0.3)
84
+ lowConf++;
85
+ }
86
+ catch { /* skip malformed JSON */ }
87
+ }
88
+ const rate = total > 0 ? Math.round((lowConf / Math.min(total, 100)) * 100) : 0;
89
+ return [{
90
+ name: 'codegraph-low-confidence',
91
+ severity: rate > 30 ? 'warning' : 'ok',
92
+ detail: `${rate}% of recent codegraph queries have low confidence (avg score < 0.3)`,
93
+ value: rate,
94
+ threshold: 30,
95
+ }];
96
+ }
97
+ catch {
98
+ return [{ name: 'codegraph-low-confidence', severity: 'ok', detail: 'Check skipped' }];
99
+ }
100
+ }
101
+ checkOutputCaptureRate() {
102
+ try {
103
+ const total = this.db.get("SELECT COUNT(*) as c FROM tool_call_events WHERE is_mcp_tool = 1")?.c ?? 0;
104
+ if (total === 0)
105
+ return [{ name: 'output-capture-rate', severity: 'ok', detail: 'No MCP tool calls yet' }];
106
+ const withOutput = this.db.get("SELECT COUNT(*) as c FROM tool_call_events WHERE is_mcp_tool = 1 AND output IS NOT NULL")?.c ?? 0;
107
+ const rate = total > 0 ? Math.round((withOutput / total) * 100) : 0;
108
+ return [{
109
+ name: 'output-capture-rate',
110
+ severity: rate < 80 ? 'error' : rate < 95 ? 'warning' : 'ok',
111
+ detail: `${rate}% of MCP tool calls have output captured (${withOutput}/${total})`,
112
+ value: rate,
113
+ threshold: 95,
114
+ }];
115
+ }
116
+ catch {
117
+ return [{ name: 'output-capture-rate', severity: 'ok', detail: 'Check skipped' }];
118
+ }
119
+ }
120
+ }
121
+ //# sourceMappingURL=auto-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-checker.js","sourceRoot":"","sources":["../../src/telemetry/auto-checker.ts"],"names":[],"mappings":"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"}