@devflow-tools/server 0.8.10 → 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 (31) 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 +21 -3
  17. package/dist/memory/memory.service.js.map +1 -1
  18. package/dist/telemetry/telemetry.controller.d.ts +45 -45
  19. package/dist/telemetry/telemetry.controller.d.ts.map +1 -1
  20. package/dist/telemetry/telemetry.controller.js +85 -9
  21. package/dist/telemetry/telemetry.controller.js.map +1 -1
  22. package/dist/telemetry/telemetry.service.d.ts +87 -85
  23. package/dist/telemetry/telemetry.service.d.ts.map +1 -1
  24. package/dist/telemetry/telemetry.service.js +395 -462
  25. package/dist/telemetry/telemetry.service.js.map +1 -1
  26. package/dist/workflow/workflow.controller.d.ts +4 -4
  27. package/dist/workflow/workflow.service.d.ts +6 -4
  28. package/dist/workflow/workflow.service.d.ts.map +1 -1
  29. package/dist/workflow/workflow.service.js +46 -4
  30. package/dist/workflow/workflow.service.js.map +1 -1
  31. 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);
@@ -1 +1 @@
1
- {"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../src/memory/memory.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AA0B1E,IAAM,aAAa,GAAnB,MAAM,aAAa;IAAnB;QACG,YAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IA2GpD,CAAC;IAzGS,SAAS,CAAC,QAAgB;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3C,MAAM,CAAC,YAAY,EAAE;YACrB,WAAW,EAAE;SACd,CAAC,CAAC;QACH,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClD,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK;gBACxC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU;aACjD,CAAC,CAAC;YACH,MAAM,EAAE;gBACN,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;gBACpD,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS;gBAClE,WAAW,EAAE,oBAAoB,CAAC,MAAM,CAAC;aAC1C;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,QAAgB,EAAE,KAA4D;QACtF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;YACxC,QAAQ,EAAE,KAAK,CAAC,QAAe,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO;YACvD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,EAAU,EAAE,OAA8D;QACvG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,OAAc,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,EAAU;QACvC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,EAAU;QACjD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,EAAU;QAChD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,KAAa,EAAE,IAAgD;QAC5F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,MAAsC;QACpE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,KAAa,EAAE,GAAW,EAAE,KAAc;QAC7E,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO;QAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;YACvC,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC3C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,KAAiI;QACnK,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,MAAM,CAAC,WAAW,CAAC;YACvB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBACtD,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC,CAAC;QAEJ,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,oBAAoB,EAAE,CAAC;IACvC,CAAC;CACF,CAAA;AA5GY,aAAa;IADzB,UAAU,EAAE;GACA,aAAa,CA4GzB"}
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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"}
@@ -38,11 +38,11 @@ let TelemetryController = class TelemetryController {
38
38
  return this.service.getRunStats(runId);
39
39
  }
40
40
  async completeRun(runId) {
41
- await this.service.endRun(runId, { status: "success", tokenUsed: 0 });
41
+ await this.service.endRun(runId, { status: "success" });
42
42
  const events = await this.service.getRunEvents(runId);
43
43
  const rootPath = this.projectsService.getActiveProjectRoot();
44
44
  const result = await this.memoryService.extract(rootPath ?? "", events);
45
- return { ok: true, extracted: Array.isArray(result) ? result.length : 0 };
45
+ return { extracted: Array.isArray(result) ? result.length : 0 };
46
46
  }
47
47
  async getStats(days) {
48
48
  return this.service.getStats(Number(days) || 7);
@@ -52,7 +52,33 @@ let TelemetryController = class TelemetryController {
52
52
  }
53
53
  async cleanup(body) {
54
54
  const count = await this.service.cleanup(body.olderThanDays ?? 30);
55
- return { ok: true, data: { removedRuns: count } };
55
+ return { removedRuns: count };
56
+ }
57
+ async cleanupStale() {
58
+ await this.service.cleanupStaleRecords();
59
+ return { ok: true };
60
+ }
61
+ // ---- Sessions ----
62
+ async createSession(body) {
63
+ await this.service.createSession(body);
64
+ return { id: body.id };
65
+ }
66
+ async listSessions(limit, offset, projectRoot) {
67
+ return this.service.listSessions(Number(limit) || 20, Number(offset) || 0, projectRoot);
68
+ }
69
+ async getSession(id) {
70
+ return this.service.getSession(id);
71
+ }
72
+ async getSessionEvents(sessionId) {
73
+ return this.service.getSessionEvents(sessionId);
74
+ }
75
+ async closeSession(sessionId, body) {
76
+ await this.service.closeSession(sessionId, body.finishedAt);
77
+ return {};
78
+ }
79
+ async startSessionSkillExecution(sessionId, body) {
80
+ await this.service.createSkillExecution({ ...body, sessionId });
81
+ return { executionId: body.executionId };
56
82
  }
57
83
  async startSkillExecution(body) {
58
84
  await this.service.recordExecutionStart(body);
@@ -63,20 +89,18 @@ let TelemetryController = class TelemetryController {
63
89
  return { eventId: event.eventId };
64
90
  }
65
91
  async updateToolCallOutput(body) {
66
- await this.service.updateToolCallOutput(body.eventId, body.output);
67
- return { ok: true };
92
+ await this.service.updateToolCallOutput(body.eventId, body.output, body.completedAt, body.duration);
93
+ return {};
68
94
  }
69
95
  async completeSkillExecution(body) {
70
96
  await this.service.recordExecutionComplete(body);
71
97
  return {};
72
98
  }
73
99
  async getExecutions(limit, skillName) {
74
- const executions = await this.service.getExecutions(Number(limit) || 20, skillName);
75
- return { data: executions };
100
+ return this.service.getExecutions(Number(limit) || 20, skillName);
76
101
  }
77
102
  async getExecutionEvents(executionId) {
78
- const events = await this.service.getExecutionEvents(executionId);
79
- return { data: events };
103
+ return this.service.getExecutionEvents(executionId);
80
104
  }
81
105
  async getMcpCompliance() {
82
106
  return await this.service.getMcpCompliance();
@@ -148,6 +172,58 @@ __decorate([
148
172
  __metadata("design:paramtypes", [Object]),
149
173
  __metadata("design:returntype", Promise)
150
174
  ], TelemetryController.prototype, "cleanup", null);
175
+ __decorate([
176
+ Post("cleanup-stale"),
177
+ __metadata("design:type", Function),
178
+ __metadata("design:paramtypes", []),
179
+ __metadata("design:returntype", Promise)
180
+ ], TelemetryController.prototype, "cleanupStale", null);
181
+ __decorate([
182
+ Post("sessions"),
183
+ __param(0, Body()),
184
+ __metadata("design:type", Function),
185
+ __metadata("design:paramtypes", [Object]),
186
+ __metadata("design:returntype", Promise)
187
+ ], TelemetryController.prototype, "createSession", null);
188
+ __decorate([
189
+ Get("sessions"),
190
+ __param(0, Query("limit")),
191
+ __param(1, Query("offset")),
192
+ __param(2, Query("projectRoot")),
193
+ __metadata("design:type", Function),
194
+ __metadata("design:paramtypes", [String, String, String]),
195
+ __metadata("design:returntype", Promise)
196
+ ], TelemetryController.prototype, "listSessions", null);
197
+ __decorate([
198
+ Get("sessions/:id"),
199
+ __param(0, Param("id")),
200
+ __metadata("design:type", Function),
201
+ __metadata("design:paramtypes", [String]),
202
+ __metadata("design:returntype", Promise)
203
+ ], TelemetryController.prototype, "getSession", null);
204
+ __decorate([
205
+ Get("sessions/:id/events"),
206
+ __param(0, Param("id")),
207
+ __metadata("design:type", Function),
208
+ __metadata("design:paramtypes", [String]),
209
+ __metadata("design:returntype", Promise)
210
+ ], TelemetryController.prototype, "getSessionEvents", null);
211
+ __decorate([
212
+ Post("sessions/:id/close"),
213
+ __param(0, Param("id")),
214
+ __param(1, Body()),
215
+ __metadata("design:type", Function),
216
+ __metadata("design:paramtypes", [String, Object]),
217
+ __metadata("design:returntype", Promise)
218
+ ], TelemetryController.prototype, "closeSession", null);
219
+ __decorate([
220
+ Post("sessions/:id/skill-executions"),
221
+ __param(0, Param("id")),
222
+ __param(1, Body()),
223
+ __metadata("design:type", Function),
224
+ __metadata("design:paramtypes", [String, Object]),
225
+ __metadata("design:returntype", Promise)
226
+ ], TelemetryController.prototype, "startSessionSkillExecution", null);
151
227
  __decorate([
152
228
  Post("skill-execution/start"),
153
229
  __param(0, Body()),