@devflow-tools/server 0.8.9 → 0.8.11

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 (36) 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.controller.d.ts +1 -4
  9. package/dist/knowledge/knowledge.controller.d.ts.map +1 -1
  10. package/dist/knowledge/knowledge.controller.js +1 -1
  11. package/dist/knowledge/knowledge.controller.js.map +1 -1
  12. package/dist/knowledge/knowledge.service.d.ts +1 -0
  13. package/dist/knowledge/knowledge.service.d.ts.map +1 -1
  14. package/dist/knowledge/knowledge.service.js +7 -2
  15. package/dist/knowledge/knowledge.service.js.map +1 -1
  16. package/dist/main.d.ts.map +1 -1
  17. package/dist/main.js +16 -2
  18. package/dist/main.js.map +1 -1
  19. package/dist/memory/memory.service.d.ts +1 -0
  20. package/dist/memory/memory.service.d.ts.map +1 -1
  21. package/dist/memory/memory.service.js +21 -3
  22. package/dist/memory/memory.service.js.map +1 -1
  23. package/dist/telemetry/telemetry.controller.d.ts +45 -45
  24. package/dist/telemetry/telemetry.controller.d.ts.map +1 -1
  25. package/dist/telemetry/telemetry.controller.js +85 -9
  26. package/dist/telemetry/telemetry.controller.js.map +1 -1
  27. package/dist/telemetry/telemetry.service.d.ts +87 -85
  28. package/dist/telemetry/telemetry.service.d.ts.map +1 -1
  29. package/dist/telemetry/telemetry.service.js +395 -462
  30. package/dist/telemetry/telemetry.service.js.map +1 -1
  31. package/dist/workflow/workflow.controller.d.ts +4 -4
  32. package/dist/workflow/workflow.service.d.ts +6 -4
  33. package/dist/workflow/workflow.service.d.ts.map +1 -1
  34. package/dist/workflow/workflow.service.js +46 -4
  35. package/dist/workflow/workflow.service.js.map +1 -1
  36. 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"}
@@ -10,9 +10,6 @@ export declare class KnowledgeController {
10
10
  rootPath?: string;
11
11
  pluginName?: string;
12
12
  }, xProject?: string): Promise<import("@devflow-tools/sdk").SyncResult[]>;
13
- getSources(rootPath?: string, xProject?: string): Promise<{
14
- ok: boolean;
15
- data: import("@devflow-tools/sdk").KnowledgeSourceStatus[];
16
- }>;
13
+ getSources(rootPath?: string, xProject?: string): Promise<import("@devflow-tools/sdk").KnowledgeSourceStatus[]>;
17
14
  }
18
15
  //# sourceMappingURL=knowledge.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.controller.d.ts","sourceRoot":"","sources":["../../src/knowledge/knowledge.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,qBACa,mBAAmB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADP,OAAO,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,eAAe;IAGrE,OAAO,CAAC,eAAe;IAOjB,MAAM,CAAoB,QAAQ,CAAC,EAAE,MAAM,EAAc,CAAC,CAAC,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,MAAM,EAAgC,QAAQ,CAAC,EAAE,MAAM;IAKpJ,IAAI,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM;IAK9G,UAAU,CAAoB,QAAQ,CAAC,EAAE,MAAM,EAAgC,QAAQ,CAAC,EAAE,MAAM;;;;CAGvG"}
1
+ {"version":3,"file":"knowledge.controller.d.ts","sourceRoot":"","sources":["../../src/knowledge/knowledge.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,qBACa,mBAAmB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADP,OAAO,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,eAAe;IAGrE,OAAO,CAAC,eAAe;IAOjB,MAAM,CAAoB,QAAQ,CAAC,EAAE,MAAM,EAAc,CAAC,CAAC,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,MAAM,EAAgC,QAAQ,CAAC,EAAE,MAAM;IAKpJ,IAAI,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM;IAK9G,UAAU,CAAoB,QAAQ,CAAC,EAAE,MAAM,EAAgC,QAAQ,CAAC,EAAE,MAAM;CAGvG"}
@@ -31,7 +31,7 @@ let KnowledgeController = class KnowledgeController {
31
31
  return this.service.sync(this.resolveRootPath(body.rootPath, xProject), body.pluginName);
32
32
  }
33
33
  async getSources(rootPath, xProject) {
34
- return { ok: true, data: await this.service.getSources(this.resolveRootPath(rootPath, xProject)) };
34
+ return this.service.getSources(this.resolveRootPath(rootPath, xProject));
35
35
  }
36
36
  };
37
37
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.controller.js","sourceRoot":"","sources":["../../src/knowledge/knowledge.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAG3D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YAC6C,OAAyB,EAC1B,QAAyB;QADxB,YAAO,GAAP,OAAO,CAAkB;QAC1B,aAAQ,GAAR,QAAQ,CAAiB;IAClE,CAAC;IAEI,eAAe,CAAC,QAAiB,EAAE,QAAiB;QAC1D,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAC9E,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,mBAAmB,CAAC,oDAAoD,CAAC,CAAC;QACnG,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAoB,QAAiB,EAAc,CAAU,EAAkB,KAAc,EAAgC,QAAiB;QACxJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IACvF,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAAS,IAAgD,EAAgC,QAAiB;QAClH,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3F,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAoB,QAAiB,EAAgC,QAAiB;QACpG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;IACrG,CAAC;CACF,CAAA;AAbO;IADL,GAAG,CAAC,QAAQ,CAAC;IACA,WAAA,KAAK,CAAC,UAAU,CAAC,CAAA;IAAqB,WAAA,KAAK,CAAC,GAAG,CAAC,CAAA;IAAc,WAAA,KAAK,CAAC,OAAO,CAAC,CAAA;IAAkB,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;iDAEvI;AAGK;IADL,IAAI,CAAC,MAAM,CAAC;IACD,WAAA,IAAI,EAAE,CAAA;IAAoD,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;+CAEjG;AAGK;IADL,GAAG,CAAC,SAAS,CAAC;IACG,WAAA,KAAK,CAAC,UAAU,CAAC,CAAA;IAAqB,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;qDAEnF;AAzBU,mBAAmB;IAD/B,UAAU,CAAC,WAAW,CAAC;IAGnB,WAAA,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACxB,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCAD4B,gBAAgB;QAChB,eAAe;GAH1D,mBAAmB,CA0B/B"}
1
+ {"version":3,"file":"knowledge.controller.js","sourceRoot":"","sources":["../../src/knowledge/knowledge.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAG3D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YAC6C,OAAyB,EAC1B,QAAyB;QADxB,YAAO,GAAP,OAAO,CAAkB;QAC1B,aAAQ,GAAR,QAAQ,CAAiB;IAClE,CAAC;IAEI,eAAe,CAAC,QAAiB,EAAE,QAAiB;QAC1D,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAC9E,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,mBAAmB,CAAC,oDAAoD,CAAC,CAAC;QACnG,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAoB,QAAiB,EAAc,CAAU,EAAkB,KAAc,EAAgC,QAAiB;QACxJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IACvF,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAAS,IAAgD,EAAgC,QAAiB;QAClH,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3F,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAoB,QAAiB,EAAgC,QAAiB;QACpG,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF,CAAA;AAbO;IADL,GAAG,CAAC,QAAQ,CAAC;IACA,WAAA,KAAK,CAAC,UAAU,CAAC,CAAA;IAAqB,WAAA,KAAK,CAAC,GAAG,CAAC,CAAA;IAAc,WAAA,KAAK,CAAC,OAAO,CAAC,CAAA;IAAkB,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;iDAEvI;AAGK;IADL,IAAI,CAAC,MAAM,CAAC;IACD,WAAA,IAAI,EAAE,CAAA;IAAoD,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;+CAEjG;AAGK;IADL,GAAG,CAAC,SAAS,CAAC;IACG,WAAA,KAAK,CAAC,UAAU,CAAC,CAAA;IAAqB,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;qDAEnF;AAzBU,mBAAmB;IAD/B,UAAU,CAAC,WAAW,CAAC;IAGnB,WAAA,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACxB,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCAD4B,gBAAgB;QAChB,eAAe;GAH1D,mBAAmB,CA0B/B"}
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAEL,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAIlC,wBAAsB,SAAS,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAUjE"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAEL,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAKlC,wBAAsB,SAAS,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAyBjE"}
package/dist/main.js CHANGED
@@ -1,14 +1,28 @@
1
1
  import "reflect-metadata";
2
2
  import { NestFactory } from "@nestjs/core";
3
3
  import { FastifyAdapter, } from "@nestjs/platform-fastify";
4
+ import { Readable } from "node:stream";
4
5
  import { AppModule } from "./app.module.js";
5
6
  import { HttpExceptionFilter } from "./common/http-exception.filter.js";
6
7
  export async function bootstrap() {
7
- const app = await NestFactory.create(AppModule, new FastifyAdapter());
8
+ const adapter = new FastifyAdapter();
9
+ const app = await NestFactory.create(AppModule, adapter);
8
10
  app.setGlobalPrefix("api");
9
11
  app.useGlobalFilters(new HttpExceptionFilter());
10
12
  app.enableCors({ origin: true, credentials: true });
11
- await app.listen({ port: parseInt(process.env.PORT || "13337", 10), host: "0.0.0.0" });
13
+ // Handle empty JSON body — browsers send Content-Type: application/json
14
+ // with Content-Length: 0 on POST requests that have no body, and Fastify's
15
+ // default JSON parser throws on an empty payload.
16
+ const fastify = adapter.getInstance();
17
+ fastify.addHook("preParsing", async (req, _reply, payload) => {
18
+ if (req.headers["content-length"] === "0") {
19
+ const body = Buffer.from("{}");
20
+ req.headers["content-length"] = String(body.length);
21
+ return Readable.from([body]);
22
+ }
23
+ return payload;
24
+ });
25
+ await app.listen({ port: parseInt(process.env.PORT || "13337", 10), host: "127.0.0.1" });
12
26
  return app;
13
27
  }
14
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,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAClC,SAAS,EACT,IAAI,cAAc,EAAE,CACrB,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;IACpD,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);
@@ -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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"}
@@ -6,34 +6,25 @@ export declare class TelemetryController {
6
6
  private readonly memoryService;
7
7
  private readonly projectsService;
8
8
  constructor(service: TelemetryService, memoryService: MemoryService, projectsService: ProjectsService);
9
- listRuns(limit?: string, offset?: string, source?: string): Promise<{
10
- id: any;
11
- agent: any;
12
- mode: any;
13
- source: any;
14
- status: any;
15
- startedAt: any;
16
- tokenUsed: any;
17
- }[]>;
9
+ listRuns(limit?: string, offset?: string, source?: string): Promise<any>;
18
10
  getRun(id: string): Promise<any>;
19
- getTimeline(from?: string, to?: string): Promise<any[]>;
11
+ getTimeline(from?: string, to?: string): Promise<any>;
20
12
  getRunEvents(runId: string): Promise<any>;
21
13
  getRunStats(runId: string): Promise<import("@devflow-tools/sdk").RunStats | {
22
14
  totalEvents: any;
23
15
  llmCalls: number;
24
- totalTokens: any;
16
+ totalTokens: number;
25
17
  toolUses: any;
26
18
  fileReads: number;
27
19
  fileWrites: number;
28
20
  bashCommands: number;
29
21
  errors: any;
30
- totalDuration: any;
22
+ totalDuration: number;
31
23
  mcpToolCalls: any;
32
24
  directToolCalls: any;
33
- mcpComplianceRate: any;
25
+ mcpComplianceRate: number;
34
26
  }>;
35
27
  completeRun(runId: string): Promise<{
36
- ok: boolean;
37
28
  extracted: number;
38
29
  }>;
39
30
  getStats(days?: string): Promise<{
@@ -42,9 +33,9 @@ export declare class TelemetryController {
42
33
  to: string;
43
34
  };
44
35
  summary: {
45
- totalRuns: number;
46
- completedRuns: number;
47
- failedRuns: number;
36
+ totalRuns: any;
37
+ completedRuns: any;
38
+ failedRuns: any;
48
39
  totalTokens: number;
49
40
  totalLlmCalls: number;
50
41
  totalToolUses: number;
@@ -52,32 +43,45 @@ export declare class TelemetryController {
52
43
  };
53
44
  byDay: {
54
45
  runs: number;
55
- tokens: number;
56
46
  date: string;
47
+ tokens: number;
57
48
  }[];
58
- byWorkflow: {
59
- name: string;
60
- runs: number;
61
- successRate: number;
62
- avgDuration: number;
63
- }[];
64
- byPlugin: {
65
- name: string;
66
- runs: number;
67
- successRate: number;
68
- }[];
49
+ byWorkflow: never[];
50
+ byPlugin: never[];
69
51
  }>;
70
- getRoiSummary(days?: string): Promise<import("@devflow-tools/sdk").RoiSummary>;
52
+ getRoiSummary(days?: string): Promise<any>;
71
53
  cleanup(body: {
72
54
  olderThanDays?: number;
73
55
  }): Promise<{
56
+ removedRuns: number;
57
+ }>;
58
+ cleanupStale(): Promise<{
74
59
  ok: boolean;
75
- data: {
76
- removedRuns: number;
77
- };
60
+ }>;
61
+ createSession(body: {
62
+ id: string;
63
+ projectRoot: string;
64
+ startedAt: number;
65
+ label?: string;
66
+ }): Promise<{
67
+ id: string;
68
+ }>;
69
+ listSessions(limit?: string, offset?: string, projectRoot?: string): Promise<any[]>;
70
+ getSession(id: string): Promise<any>;
71
+ getSessionEvents(sessionId: string): Promise<any[]>;
72
+ closeSession(sessionId: string, body: {
73
+ finishedAt: number;
74
+ }): Promise<{}>;
75
+ startSessionSkillExecution(sessionId: string, body: {
76
+ executionId: string;
77
+ skillName: string;
78
+ startedAt: number;
79
+ }): Promise<{
80
+ executionId: string;
78
81
  }>;
79
82
  startSkillExecution(body: {
80
83
  executionId: string;
84
+ sessionId?: string;
81
85
  skillName: string;
82
86
  startedAt: number;
83
87
  }): Promise<{
@@ -86,6 +90,7 @@ export declare class TelemetryController {
86
90
  recordToolCall(event: {
87
91
  eventId: string;
88
92
  executionId: string;
93
+ sessionId?: string;
89
94
  timestamp: number;
90
95
  toolName: string;
91
96
  toolType: string;
@@ -93,8 +98,8 @@ export declare class TelemetryController {
93
98
  mcpToolName?: string;
94
99
  mcpEnforced: boolean;
95
100
  mcpFallback: boolean;
101
+ kind?: string;
96
102
  input: unknown;
97
- tokensUsed: number;
98
103
  duration: number;
99
104
  blocked: boolean;
100
105
  blockReason?: string;
@@ -103,11 +108,11 @@ export declare class TelemetryController {
103
108
  }>;
104
109
  updateToolCallOutput(body: {
105
110
  eventId: string;
106
- executionId: string;
111
+ sessionId?: string;
107
112
  output: unknown;
108
- }): Promise<{
109
- ok: boolean;
110
- }>;
113
+ completedAt?: number;
114
+ duration?: number;
115
+ }): Promise<{}>;
111
116
  completeSkillExecution(body: {
112
117
  executionId: string;
113
118
  finishedAt: number;
@@ -117,17 +122,12 @@ export declare class TelemetryController {
117
122
  mcpToolCalls: number;
118
123
  directToolCalls: number;
119
124
  subagentCount: number;
120
- totalTokens: number;
121
125
  totalDuration: number;
122
126
  mcpComplianceRate: number;
123
127
  };
124
128
  }): Promise<{}>;
125
- getExecutions(limit?: string, skillName?: string): Promise<{
126
- data: any[];
127
- }>;
128
- getExecutionEvents(executionId: string): Promise<{
129
- data: any[];
130
- }>;
129
+ getExecutions(limit?: string, skillName?: string): Promise<any[]>;
130
+ getExecutionEvents(executionId: string): Promise<any[]>;
131
131
  getMcpCompliance(): Promise<{
132
132
  overall: number;
133
133
  bySkill: Record<string, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.controller.d.ts","sourceRoot":"","sources":["../../src/telemetry/telemetry.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,qBACa,mBAAmB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAFd,OAAO,EAAE,gBAAgB,EAC5B,aAAa,EAAE,aAAa,EAC1B,eAAe,EAAE,eAAe;IAItE,QAAQ,CAAiB,KAAK,CAAC,EAAE,MAAM,EAAmB,MAAM,CAAC,EAAE,MAAM,EAAmB,MAAM,CAAC,EAAE,MAAM;;;;;;;;;IAK3G,MAAM,CAAc,EAAE,EAAE,MAAM;IAO9B,WAAW,CAAgB,IAAI,CAAC,EAAE,MAAM,EAAe,EAAE,CAAC,EAAE,MAAM;IAKlE,YAAY,CAAiB,KAAK,EAAE,MAAM;IAK1C,WAAW,CAAiB,KAAK,EAAE,MAAM;;;;;;;;;;;;;;IAKzC,WAAW,CAAc,KAAK,EAAE,MAAM;;;;IAYtC,QAAQ,CAAgB,IAAI,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKrC,aAAa,CAAgB,IAAI,CAAC,EAAE,MAAM;IAK1C,OAAO,CAAS,IAAI,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;IAMhD,mBAAmB,CACf,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;;;IAOvE,cAAc,CACV,KAAK,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QACxD,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QACvD,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QACjE,KAAK,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QACrD,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KACxC;;;IAOG,oBAAoB,CAChB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE;;;IAOnE,sBAAsB,CAClB,IAAI,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QACxC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;QAC/B,OAAO,EAAE;YACP,cAAc,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAC7C,eAAe,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAC/C,WAAW,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAC3C,iBAAiB,EAAE,MAAM,CAAC;SAC3B,CAAC;KACH;IAOG,aAAa,CACD,KAAK,CAAC,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,MAAM;;;IAOlC,kBAAkB,CAAc,WAAW,EAAE,MAAM;;;IAMnD,gBAAgB;;;;;CAGvB"}
1
+ {"version":3,"file":"telemetry.controller.d.ts","sourceRoot":"","sources":["../../src/telemetry/telemetry.controller.ts"],"names":[],"mappings":"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"}