@devflow-tools/server 0.14.4 → 0.16.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 (119) hide show
  1. package/README.md +3 -3
  2. package/bin/devflow-server.js +2 -0
  3. package/dist/app.module.d.ts.map +1 -1
  4. package/dist/app.module.js +4 -0
  5. package/dist/app.module.js.map +1 -1
  6. package/dist/auth/api-key.guard.d.ts.map +1 -1
  7. package/dist/auth/api-key.guard.js +11 -5
  8. package/dist/auth/api-key.guard.js.map +1 -1
  9. package/dist/benchmark/benchmark.controller.d.ts +7 -5
  10. package/dist/benchmark/benchmark.controller.d.ts.map +1 -1
  11. package/dist/benchmark/benchmark.controller.js +43 -4
  12. package/dist/benchmark/benchmark.controller.js.map +1 -1
  13. package/dist/benchmark/benchmark.service.d.ts +7 -9
  14. package/dist/benchmark/benchmark.service.d.ts.map +1 -1
  15. package/dist/benchmark/benchmark.service.js +27 -39
  16. package/dist/benchmark/benchmark.service.js.map +1 -1
  17. package/dist/common/dto.d.ts +0 -4
  18. package/dist/common/dto.d.ts.map +1 -1
  19. package/dist/common/http-exception.filter.d.ts.map +1 -1
  20. package/dist/common/http-exception.filter.js +4 -0
  21. package/dist/common/http-exception.filter.js.map +1 -1
  22. package/dist/context/context.controller.d.ts +2 -2
  23. package/dist/context/context.controller.d.ts.map +1 -1
  24. package/dist/context/context.controller.js +3 -0
  25. package/dist/context/context.controller.js.map +1 -1
  26. package/dist/context/context.controller.spec.js +2 -0
  27. package/dist/context/context.controller.spec.js.map +1 -1
  28. package/dist/context/context.service.d.ts +6 -13
  29. package/dist/context/context.service.d.ts.map +1 -1
  30. package/dist/context/context.service.js +30 -13
  31. package/dist/context/context.service.js.map +1 -1
  32. package/dist/database/database.module.d.ts.map +1 -1
  33. package/dist/database/database.module.js +2 -7
  34. package/dist/database/database.module.js.map +1 -1
  35. package/dist/governance/governance.controller.d.ts +16 -0
  36. package/dist/governance/governance.controller.d.ts.map +1 -0
  37. package/dist/governance/governance.controller.js +76 -0
  38. package/dist/governance/governance.controller.js.map +1 -0
  39. package/dist/governance/governance.module.d.ts +3 -0
  40. package/dist/governance/governance.module.d.ts.map +1 -0
  41. package/dist/governance/governance.module.js +16 -0
  42. package/dist/governance/governance.module.js.map +1 -0
  43. package/dist/governance/governance.service.d.ts +19 -0
  44. package/dist/governance/governance.service.d.ts.map +1 -0
  45. package/dist/governance/governance.service.js +169 -0
  46. package/dist/governance/governance.service.js.map +1 -0
  47. package/dist/knowledge/knowledge.controller.d.ts +6 -0
  48. package/dist/knowledge/knowledge.controller.d.ts.map +1 -1
  49. package/dist/knowledge/knowledge.controller.js +14 -0
  50. package/dist/knowledge/knowledge.controller.js.map +1 -1
  51. package/dist/knowledge/knowledge.service.d.ts +3 -1
  52. package/dist/knowledge/knowledge.service.d.ts.map +1 -1
  53. package/dist/knowledge/knowledge.service.js +7 -1
  54. package/dist/knowledge/knowledge.service.js.map +1 -1
  55. package/dist/live/live.controller.d.ts +5 -0
  56. package/dist/live/live.controller.d.ts.map +1 -0
  57. package/dist/live/live.controller.js +52 -0
  58. package/dist/live/live.controller.js.map +1 -0
  59. package/dist/live/live.controller.spec.d.ts +2 -0
  60. package/dist/live/live.controller.spec.d.ts.map +1 -0
  61. package/dist/live/live.controller.spec.js +25 -0
  62. package/dist/live/live.controller.spec.js.map +1 -0
  63. package/dist/live/live.module.d.ts +3 -0
  64. package/dist/live/live.module.d.ts.map +1 -0
  65. package/dist/live/live.module.js +15 -0
  66. package/dist/live/live.module.js.map +1 -0
  67. package/dist/main.d.ts.map +1 -1
  68. package/dist/main.js +25 -3
  69. package/dist/main.js.map +1 -1
  70. package/dist/memory/memory.controller.d.ts +13 -28
  71. package/dist/memory/memory.controller.d.ts.map +1 -1
  72. package/dist/memory/memory.controller.js +85 -24
  73. package/dist/memory/memory.controller.js.map +1 -1
  74. package/dist/memory/memory.service.d.ts +8 -32
  75. package/dist/memory/memory.service.d.ts.map +1 -1
  76. package/dist/memory/memory.service.js +41 -45
  77. package/dist/memory/memory.service.js.map +1 -1
  78. package/dist/projects/projects.controller.d.ts +9 -2
  79. package/dist/projects/projects.controller.d.ts.map +1 -1
  80. package/dist/projects/projects.controller.js +42 -10
  81. package/dist/projects/projects.controller.js.map +1 -1
  82. package/dist/projects/projects.controller.spec.js +59 -16
  83. package/dist/projects/projects.controller.spec.js.map +1 -1
  84. package/dist/projects/projects.module.d.ts.map +1 -1
  85. package/dist/projects/projects.module.js +10 -2
  86. package/dist/projects/projects.module.js.map +1 -1
  87. package/dist/projects/projects.service.d.ts +7 -39
  88. package/dist/projects/projects.service.d.ts.map +1 -1
  89. package/dist/projects/projects.service.js +39 -19
  90. package/dist/projects/projects.service.js.map +1 -1
  91. package/dist/projects/projects.service.spec.d.ts +2 -0
  92. package/dist/projects/projects.service.spec.d.ts.map +1 -0
  93. package/dist/projects/projects.service.spec.js +99 -0
  94. package/dist/projects/projects.service.spec.js.map +1 -0
  95. package/dist/retrieval-contract.spec.d.ts +2 -0
  96. package/dist/retrieval-contract.spec.d.ts.map +1 -0
  97. package/dist/retrieval-contract.spec.js +53 -0
  98. package/dist/retrieval-contract.spec.js.map +1 -0
  99. package/dist/telemetry/telemetry.controller.d.ts +1 -5
  100. package/dist/telemetry/telemetry.controller.d.ts.map +1 -1
  101. package/dist/telemetry/telemetry.controller.js +3 -14
  102. package/dist/telemetry/telemetry.controller.js.map +1 -1
  103. package/dist/telemetry/telemetry.controller.spec.js +8 -2
  104. package/dist/telemetry/telemetry.controller.spec.js.map +1 -1
  105. package/dist/telemetry/telemetry.service.d.ts +1 -0
  106. package/dist/telemetry/telemetry.service.d.ts.map +1 -1
  107. package/dist/telemetry/telemetry.service.js +17 -48
  108. package/dist/telemetry/telemetry.service.js.map +1 -1
  109. package/dist/workflow/workflow.controller.d.ts +8 -2
  110. package/dist/workflow/workflow.controller.d.ts.map +1 -1
  111. package/dist/workflow/workflow.service.d.ts +8 -2
  112. package/dist/workflow/workflow.service.d.ts.map +1 -1
  113. package/dist/workflow/workflow.service.js +13 -5
  114. package/dist/workflow/workflow.service.js.map +1 -1
  115. package/package.json +16 -12
  116. package/dist/common/root-path.decorator.d.ts +0 -2
  117. package/dist/common/root-path.decorator.d.ts.map +0 -1
  118. package/dist/common/root-path.decorator.js +0 -6
  119. package/dist/common/root-path.decorator.js.map +0 -1
package/README.md CHANGED
@@ -32,7 +32,7 @@ node node_modules/@devflow-tools/server/dist/main.js
32
32
  | Workflows | `/api/workflows/runs/:id/approve` | 审批门禁(approve/reject) |
33
33
  | Memory | `/api/memory` | 项目记忆管理 |
34
34
  | Memory | `/api/memory/candidates/:id/approve` | 候选记忆审核 |
35
- | Memory | `/api/memory/events` | Tool call event 记录 |
35
+ | Memory | `/api/memory/session-events` | Session tool event 记录 |
36
36
  | Knowledge | `/api/knowledge/search` | 文档搜索 |
37
37
  | Knowledge | `/api/knowledge/sync` | 知识源同步 |
38
38
  | Knowledge | `/api/knowledge/sources` | 知识源状态查询 |
@@ -46,13 +46,13 @@ node node_modules/@devflow-tools/server/dist/main.js
46
46
 
47
47
  ## Authentication
48
48
 
49
- 所有端点需要 `X-API-Key` 请求头。默认密钥:`dev-key-000000`
49
+ 除健康检查外,所有端点需要 `X-API-Key` 请求头。首次启动会生成 `~/.devflow/keys/local.key`(权限 400)。
50
50
 
51
51
  ## Environment Variables
52
52
 
53
53
  | 变量 | 默认值 | 说明 |
54
54
  |------|--------|------|
55
- | `DEVFLOW_API_KEYS` | `dev-key-000000` | 逗号分隔的 API 密钥列表 |
55
+ | `DEVFLOW_API_KEYS` | 自动生成本地密钥 | 逗号分隔的 API 密钥列表 |
56
56
  | `PORT` | `13337` | 服务端口 |
57
57
 
58
58
  ## License
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import "../dist/main.js";
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.d.ts","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":"AAcA,qBAiBa,SAAS;CAAG"}
1
+ {"version":3,"file":"app.module.d.ts","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":"AAgBA,qBAmBa,SAAS;CAAG"}
@@ -17,6 +17,8 @@ import { RegistryModule } from "./registry/registry.module.js";
17
17
  import { DatabaseModule } from "./database/database.module.js";
18
18
  import { ResponseInterceptor } from "./common/response.interceptor.js";
19
19
  import { ServerController } from "./server.controller.js";
20
+ import { LiveModule } from "./live/live.module.js";
21
+ import { GovernanceModule } from "./governance/governance.module.js";
20
22
  let AppModule = class AppModule {
21
23
  };
22
24
  AppModule = __decorate([
@@ -31,6 +33,8 @@ AppModule = __decorate([
31
33
  WorkflowModule,
32
34
  BenchmarkModule,
33
35
  RegistryModule,
36
+ LiveModule,
37
+ GovernanceModule,
34
38
  ],
35
39
  controllers: [ServerController],
36
40
  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,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
+ {"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;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAqB9D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IAnBrB,MAAM,CAAC;QACN,OAAO,EAAE;YACP,cAAc;YACd,UAAU;YACV,cAAc;YACd,aAAa;YACb,WAAW;YACX,eAAe;YACf,cAAc;YACd,eAAe;YACf,cAAc;YACd,UAAU;YACV,gBAAgB;SACjB;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":"api-key.guard.d.ts","sourceRoot":"","sources":["../../src/auth/api-key.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAWzC,qBACa,WAAY,YAAW,WAAW;IACd,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAE3D,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAgChD"}
1
+ {"version":3,"file":"api-key.guard.d.ts","sourceRoot":"","sources":["../../src/auth/api-key.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAczC,qBACa,WAAY,YAAW,WAAW;IACd,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAE3D,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAgChD"}
@@ -14,10 +14,16 @@ import { Injectable, UnauthorizedException, Inject, } from "@nestjs/common";
14
14
  import { Reflector } from "@nestjs/core";
15
15
  import { IS_PUBLIC_KEY } from "./api-key.decorator.js";
16
16
  import { AuthErrorCode } from "./errors.js";
17
- const VALID_API_KEYS = (process.env.DEVFLOW_API_KEYS ?? "dev-key-000000")
18
- .split(",")
19
- .map((k) => k.trim())
20
- .filter(Boolean);
17
+ import { getLocalApiKey } from "@devflow-tools/sdk";
18
+ function getValidApiKeys() {
19
+ const configured = process.env.DEVFLOW_API_KEYS
20
+ ?.split(",")
21
+ .map((key) => key.trim())
22
+ .filter(Boolean);
23
+ if (configured?.length)
24
+ return configured;
25
+ return [getLocalApiKey()];
26
+ }
21
27
  let ApiKeyGuard = class ApiKeyGuard {
22
28
  constructor(reflector) {
23
29
  this.reflector = reflector;
@@ -40,7 +46,7 @@ let ApiKeyGuard = class ApiKeyGuard {
40
46
  },
41
47
  });
42
48
  }
43
- if (!VALID_API_KEYS.includes(apiKey)) {
49
+ if (!getValidApiKeys().includes(apiKey)) {
44
50
  throw new UnauthorizedException({
45
51
  error: {
46
52
  code: AuthErrorCode.INVALID_API_KEY,
@@ -1 +1 @@
1
- {"version":3,"file":"api-key.guard.js","sourceRoot":"","sources":["../../src/auth/api-key.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACL,UAAU,EAGV,qBAAqB,EACrB,MAAM,GACP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,cAAc,GAAG,CACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,CACjD;KACE,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACpB,MAAM,CAAC,OAAO,CAAC,CAAC;AAGZ,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YAAuC,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE/D,WAAW,CAAC,OAAyB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,aAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAuB,CAAC;QAElE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,qBAAqB,CAAC;gBAC9B,KAAK,EAAE;oBACL,IAAI,EAAE,aAAa,CAAC,eAAe;oBACnC,OAAO,EAAE,8BAA8B;oBACvC,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,qBAAqB,CAAC;gBAC9B,KAAK,EAAE;oBACL,IAAI,EAAE,aAAa,CAAC,eAAe;oBACnC,OAAO,EAAE,iBAAiB;oBAC1B,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAnCY,WAAW;IADvB,UAAU,EAAE;IAEE,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;qCAAoB,SAAS;GADhD,WAAW,CAmCvB"}
1
+ {"version":3,"file":"api-key.guard.js","sourceRoot":"","sources":["../../src/auth/api-key.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACL,UAAU,EAGV,qBAAqB,EACrB,MAAM,GACP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,SAAS,eAAe;IACtB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC7C,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,UAAU,EAAE,MAAM;QAAE,OAAO,UAAU,CAAC;IAC1C,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;AAC5B,CAAC;AAGM,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YAAuC,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE/D,WAAW,CAAC,OAAyB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,aAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAuB,CAAC;QAElE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,qBAAqB,CAAC;gBAC9B,KAAK,EAAE;oBACL,IAAI,EAAE,aAAa,CAAC,eAAe;oBACnC,OAAO,EAAE,8BAA8B;oBACvC,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,qBAAqB,CAAC;gBAC9B,KAAK,EAAE;oBACL,IAAI,EAAE,aAAa,CAAC,eAAe;oBACnC,OAAO,EAAE,iBAAiB;oBAC1B,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAnCY,WAAW;IADvB,UAAU,EAAE;IAEE,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;qCAAoB,SAAS;GADhD,WAAW,CAmCvB"}
@@ -2,10 +2,12 @@ import { BenchmarkService } from "./benchmark.service.js";
2
2
  export declare class BenchmarkController {
3
3
  private readonly service;
4
4
  constructor(service: BenchmarkService);
5
- getResults(): Promise<{
6
- results: never[];
7
- isRealData: boolean;
8
- message: string;
9
- }>;
5
+ listReports(limit?: string): import("@devflow-tools/sdk").BenchmarkReportMeta[];
6
+ getLatestReport(suiteId?: string): import("@devflow-tools/sdk").BenchmarkSuiteReport | null;
7
+ getReport(runId: string): import("@devflow-tools/sdk").BenchmarkSuiteReport;
8
+ getResults(): {
9
+ reports: import("@devflow-tools/sdk").BenchmarkReportMeta[];
10
+ latest: import("@devflow-tools/sdk").BenchmarkSuiteReport | null;
11
+ };
10
12
  }
11
13
  //# sourceMappingURL=benchmark.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.controller.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,qBACa,mBAAmB;IACQ,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,gBAAgB;IAG1E,UAAU;;;;;CAGjB"}
1
+ {"version":3,"file":"benchmark.controller.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,qBACa,mBAAmB;IACQ,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,gBAAgB;IAGhF,WAAW,CAAiB,KAAK,CAAC,EAAE,MAAM;IAK1C,eAAe,CAAiB,OAAO,CAAC,EAAE,MAAM;IAKhD,SAAS,CAAc,KAAK,EAAE,MAAM;IAKpC,UAAU;;;;CAMX"}
@@ -10,21 +10,54 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
- import { Controller, Get, Inject } from "@nestjs/common";
13
+ import { Controller, Get, Inject, Param, Query } from "@nestjs/common";
14
14
  import { BenchmarkService } from "./benchmark.service.js";
15
15
  let BenchmarkController = class BenchmarkController {
16
16
  constructor(service) {
17
17
  this.service = service;
18
18
  }
19
- async getResults() {
20
- return this.service.getScenarioResults();
19
+ listReports(limit) {
20
+ return this.service.listReports(parseLimit(limit));
21
+ }
22
+ getLatestReport(suiteId) {
23
+ return this.service.getLatestReport(suiteId);
24
+ }
25
+ getReport(runId) {
26
+ return this.service.getReport(runId);
27
+ }
28
+ getResults() {
29
+ return {
30
+ reports: this.service.listReports(),
31
+ latest: this.service.getLatestReport(),
32
+ };
21
33
  }
22
34
  };
35
+ __decorate([
36
+ Get("reports"),
37
+ __param(0, Query("limit")),
38
+ __metadata("design:type", Function),
39
+ __metadata("design:paramtypes", [String]),
40
+ __metadata("design:returntype", void 0)
41
+ ], BenchmarkController.prototype, "listReports", null);
42
+ __decorate([
43
+ Get("reports/latest"),
44
+ __param(0, Query("suite")),
45
+ __metadata("design:type", Function),
46
+ __metadata("design:paramtypes", [String]),
47
+ __metadata("design:returntype", void 0)
48
+ ], BenchmarkController.prototype, "getLatestReport", null);
49
+ __decorate([
50
+ Get("reports/:id"),
51
+ __param(0, Param("id")),
52
+ __metadata("design:type", Function),
53
+ __metadata("design:paramtypes", [String]),
54
+ __metadata("design:returntype", void 0)
55
+ ], BenchmarkController.prototype, "getReport", null);
23
56
  __decorate([
24
57
  Get("results"),
25
58
  __metadata("design:type", Function),
26
59
  __metadata("design:paramtypes", []),
27
- __metadata("design:returntype", Promise)
60
+ __metadata("design:returntype", void 0)
28
61
  ], BenchmarkController.prototype, "getResults", null);
29
62
  BenchmarkController = __decorate([
30
63
  Controller("benchmark"),
@@ -32,4 +65,10 @@ BenchmarkController = __decorate([
32
65
  __metadata("design:paramtypes", [BenchmarkService])
33
66
  ], BenchmarkController);
34
67
  export { BenchmarkController };
68
+ function parseLimit(value) {
69
+ if (!value)
70
+ return 50;
71
+ const parsed = Number.parseInt(value, 10);
72
+ return Number.isFinite(parsed) && parsed > 0 ? Math.min(parsed, 500) : 50;
73
+ }
35
74
  //# sourceMappingURL=benchmark.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.controller.js","sourceRoot":"","sources":["../../src/benchmark/benchmark.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGnD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YAAuD,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAG9E,AAAN,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC3C,CAAC;CACF,CAAA;AAHO;IADL,GAAG,CAAC,SAAS,CAAC;;;;qDAGd;AANU,mBAAmB;IAD/B,UAAU,CAAC,WAAW,CAAC;IAET,WAAA,MAAM,CAAC,gBAAgB,CAAC,CAAA;qCAA2B,gBAAgB;GADrE,mBAAmB,CAO/B"}
1
+ {"version":3,"file":"benchmark.controller.js","sourceRoot":"","sources":["../../src/benchmark/benchmark.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGnD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YAAuD,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAGpF,WAAW,CAAiB,KAAc;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAGD,eAAe,CAAiB,OAAgB;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAGD,SAAS,CAAc,KAAa;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAGD,UAAU;QACR,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;SACvC,CAAC;IACJ,CAAC;CACF,CAAA;AArBC;IADC,GAAG,CAAC,SAAS,CAAC;IACF,WAAA,KAAK,CAAC,OAAO,CAAC,CAAA;;;;sDAE1B;AAGD;IADC,GAAG,CAAC,gBAAgB,CAAC;IACL,WAAA,KAAK,CAAC,OAAO,CAAC,CAAA;;;;0DAE9B;AAGD;IADC,GAAG,CAAC,aAAa,CAAC;IACR,WAAA,KAAK,CAAC,IAAI,CAAC,CAAA;;;;oDAErB;AAGD;IADC,GAAG,CAAC,SAAS,CAAC;;;;qDAMd;AAxBU,mBAAmB;IAD/B,UAAU,CAAC,WAAW,CAAC;IAET,WAAA,MAAM,CAAC,gBAAgB,CAAC,CAAA;qCAA2B,gBAAgB;GADrE,mBAAmB,CAyB/B;;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC"}
@@ -1,12 +1,10 @@
1
+ import type { BenchmarkReportMeta, BenchmarkSuiteReport } from "@devflow-tools/sdk";
2
+ import type { DevFlowDatabase } from "@devflow-tools/database";
1
3
  export declare class BenchmarkService {
2
- private engine;
3
- private scenarioIds;
4
- constructor();
5
- private registerDefaultScenarios;
6
- getScenarioResults(): Promise<{
7
- results: never[];
8
- isRealData: boolean;
9
- message: string;
10
- }>;
4
+ private readonly database;
5
+ constructor(database?: DevFlowDatabase);
6
+ listReports(limit?: number): BenchmarkReportMeta[];
7
+ getLatestReport(suiteId?: string): BenchmarkSuiteReport | null;
8
+ getReport(runId: string): BenchmarkSuiteReport;
11
9
  }
12
10
  //# sourceMappingURL=benchmark.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.service.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark.service.ts"],"names":[],"mappings":"AAIA,qBACa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAAgB;;IAOnC,OAAO,CAAC,wBAAwB;IA6B1B,kBAAkB;;;;;CAOzB"}
1
+ {"version":3,"file":"benchmark.service.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,qBACa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;gBAEN,QAAQ,CAAC,EAAE,eAAe;IAItE,WAAW,CAAC,KAAK,SAAK,GAAG,mBAAmB,EAAE;IAI9C,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAI9D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB;CAa/C"}
@@ -7,52 +7,40 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { Injectable } from '@nestjs/common';
11
- import { BenchmarkEngine } from '@devflow-tools/benchmark';
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Inject, Injectable, NotFoundException, Optional } from "@nestjs/common";
14
+ import { ErrorCode } from "../common/error-codes.js";
12
15
  let BenchmarkService = class BenchmarkService {
13
- constructor() {
14
- this.scenarioIds = [];
15
- this.engine = new BenchmarkEngine();
16
- this.registerDefaultScenarios();
16
+ constructor(database) {
17
+ this.database = database ?? null;
17
18
  }
18
- registerDefaultScenarios() {
19
- const scenarios = [
20
- {
21
- id: 'understand-codebase',
22
- category: 'understand',
23
- desc: '理解代码库架构',
24
- expectedFiles: 2,
25
- },
26
- {
27
- id: 'modify-component',
28
- category: 'modify',
29
- desc: '修改 React 组件',
30
- expectedFiles: 1,
31
- expectedComponents: 1,
32
- },
33
- {
34
- id: 'review-code',
35
- category: 'review',
36
- desc: '代码审查',
37
- expectedIssues: 2,
38
- },
39
- ];
40
- for (const s of scenarios) {
41
- this.engine.registerScenario(s);
42
- this.scenarioIds.push(s.id);
43
- }
19
+ listReports(limit = 50) {
20
+ return this.database?.listBenchmarkReports(limit) ?? [];
44
21
  }
45
- async getScenarioResults() {
46
- return {
47
- results: [],
48
- isRealData: false,
49
- message: 'No benchmark data yet. Real benchmarks require LLM runners — simulations are disabled to avoid misleading results.',
50
- };
22
+ getLatestReport(suiteId) {
23
+ return this.database?.getLatestBenchmarkReport(suiteId) ?? null;
24
+ }
25
+ getReport(runId) {
26
+ const report = this.database?.getBenchmarkReport(runId) ?? null;
27
+ if (!report) {
28
+ throw new NotFoundException({
29
+ error: {
30
+ code: ErrorCode.REPORT_NOT_FOUND,
31
+ message: `Benchmark report "${runId}" not found`,
32
+ details: { runId },
33
+ },
34
+ });
35
+ }
36
+ return report;
51
37
  }
52
38
  };
53
39
  BenchmarkService = __decorate([
54
40
  Injectable(),
55
- __metadata("design:paramtypes", [])
41
+ __param(0, Optional()),
42
+ __param(0, Inject("DATABASE")),
43
+ __metadata("design:paramtypes", [Function])
56
44
  ], BenchmarkService);
57
45
  export { BenchmarkService };
58
46
  //# sourceMappingURL=benchmark.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.service.js","sourceRoot":"","sources":["../../src/benchmark/benchmark.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIpD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAI3B;QAFQ,gBAAW,GAAa,EAAE,CAAC;QAGjC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAEO,wBAAwB;QAC9B,MAAM,SAAS,GAAwB;YACrC;gBACE,EAAE,EAAE,qBAAqB;gBACzB,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,SAAS;gBACf,aAAa,EAAE,CAAC;aACjB;YACD;gBACE,EAAE,EAAE,kBAAkB;gBACtB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,aAAa;gBACnB,aAAa,EAAE,CAAC;gBAChB,kBAAkB,EAAE,CAAC;aACtB;YACD;gBACE,EAAE,EAAE,aAAa;gBACjB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,MAAM;gBACZ,cAAc,EAAE,CAAC;aAClB;SACF,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO;YACL,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,oHAAoH;SAC9H,CAAC;IACJ,CAAC;CACF,CAAA;AA7CY,gBAAgB;IAD5B,UAAU,EAAE;;GACA,gBAAgB,CA6C5B"}
1
+ {"version":3,"file":"benchmark.service.js","sourceRoot":"","sources":["../../src/benchmark/benchmark.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAGjF,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG9C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAG3B,YAA4C,QAA0B;QACpE,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,KAAK,GAAG,EAAE;QACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1D,CAAC;IAED,eAAe,CAAC,OAAgB;QAC9B,OAAO,IAAI,CAAC,QAAQ,EAAE,wBAAwB,CAAuB,OAAO,CAAC,IAAI,IAAI,CAAC;IACxF,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAuB,KAAK,CAAC,IAAI,IAAI,CAAC;QACtF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,iBAAiB,CAAC;gBAC1B,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS,CAAC,gBAAgB;oBAChC,OAAO,EAAE,qBAAqB,KAAK,aAAa;oBAChD,OAAO,EAAE,EAAE,KAAK,EAAE;iBACnB;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AA5BY,gBAAgB;IAD5B,UAAU,EAAE;IAIE,WAAA,QAAQ,EAAE,CAAA;IAAE,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;;GAHhC,gBAAgB,CA4B5B"}
@@ -5,8 +5,4 @@ export interface ApiError {
5
5
  details: Record<string, unknown>;
6
6
  };
7
7
  }
8
- export interface ApiResponse<T> {
9
- ok: true;
10
- data: T;
11
- }
12
8
  //# sourceMappingURL=dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../src/common/dto.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,CAAC,CAAC;CACT"}
1
+ {"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../src/common/dto.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-exception.filter.d.ts","sourceRoot":"","sources":["../../src/common/http-exception.filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,aAAa,EAId,MAAM,gBAAgB,CAAC;AAYxB,qBACa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAE/D,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;CAyDrD"}
1
+ {"version":3,"file":"http-exception.filter.d.ts","sourceRoot":"","sources":["../../src/common/http-exception.filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,aAAa,EAId,MAAM,gBAAgB,CAAC;AAYxB,qBACa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAE/D,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;CA6DrD"}
@@ -28,6 +28,10 @@ let HttpExceptionFilter = HttpExceptionFilter_1 = class HttpExceptionFilter {
28
28
  const body = exception.getResponse();
29
29
  if (typeof body === "object" && body !== null && "error" in body) {
30
30
  const errorVal = body.error;
31
+ if (status === HttpStatus.GONE && errorVal === "GONE") {
32
+ reply.status(status).send(body);
33
+ return;
34
+ }
31
35
  // Already in ApiError format: { error: { code, message, details } }
32
36
  if (typeof errorVal === "object" && errorVal !== null && "code" in errorVal) {
33
37
  reply.status(status).send(body);
@@ -1 +1 @@
1
- {"version":3,"file":"http-exception.filter.js","sourceRoot":"","sources":["../../src/common/http-exception.filter.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAEL,KAAK,EAEL,aAAa,EACb,UAAU,EACV,MAAM,GACP,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,SAAS,iBAAiB,CAAC,MAAc;IACvC,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC,WAAW,CAAC;IACjD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC,iBAAiB,CAAC;IACvD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC,gBAAgB,CAAC;IACtD,OAAO,SAAS,CAAC,cAAc,CAAC;AAClC,CAAC;AAGM,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAAzB;QACY,WAAM,GAAG,IAAI,MAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IA2DjE,CAAC;IAzDC,KAAK,CAAC,SAAkB,EAAE,IAAmB;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAgB,CAAC;QAE9C,IAAI,SAAS,YAAY,aAAa,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YAErC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACjE,MAAM,QAAQ,GAAI,IAAgC,CAAC,KAAK,CAAC;gBACzD,oEAAoE;gBACpE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;oBAC5E,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAgB,CAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBACD,wDAAwD;gBACxD,6BAA6B;gBAC7B,MAAM,OAAO,GAAG,OAAQ,IAAgC,CAAC,OAAO,KAAK,QAAQ;oBAC3E,CAAC,CAAE,IAAgC,CAAC,OAAiB;oBACrD,CAAC,CAAC,gBAAgB,CAAC;gBACrB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;oBACxB,KAAK,EAAE;wBACL,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;wBAC/B,OAAO;wBACP,OAAO,EAAE,EAAE;qBACZ;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GACX,OAAO,IAAI,KAAK,QAAQ;gBACtB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAG,IAAgC,CAAC,OAAkB;oBACrD,gBAAgB,CAAC;YACvB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACxB,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;oBAC/B,OAAO;oBACP,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qBAAqB,EACrB,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CACjE,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC;YAClD,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS,CAAC,cAAc;gBAC9B,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,EAAE;aACZ;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA5DY,mBAAmB;IAD/B,KAAK,EAAE;GACK,mBAAmB,CA4D/B"}
1
+ {"version":3,"file":"http-exception.filter.js","sourceRoot":"","sources":["../../src/common/http-exception.filter.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ContextService, IndexStatus, FeedbackEntry } from "./context.service.js";
2
2
  import { ProjectsService } from "../projects/projects.service.js";
3
- import type { ContextResult, TaskContextResult } from "@devflow-tools/sdk";
3
+ import type { ContextResult, GetProjectContextResult } from "@devflow-tools/sdk";
4
4
  export declare class ContextController {
5
5
  private readonly service;
6
6
  private readonly projects;
@@ -21,7 +21,7 @@ export declare class ContextController {
21
21
  query: string;
22
22
  mode?: "fast" | "deep";
23
23
  maxTokens?: number;
24
- }, xProject?: string): Promise<TaskContextResult>;
24
+ }, xProject?: string): Promise<GetProjectContextResult>;
25
25
  feedback(body: {
26
26
  rootPath?: string;
27
27
  query: string;
@@ -1 +1 @@
1
- {"version":3,"file":"context.controller.d.ts","sourceRoot":"","sources":["../../src/context/context.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,qBACa,iBAAiB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADT,OAAO,EAAE,cAAc,EACtB,QAAQ,EAAE,eAAe;IAGrE,OAAO,CAAC,eAAe;IAOjB,MAAM,CAAoB,QAAQ,CAAC,EAAE,MAAM,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAO1H,KAAK,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAKjH,KAAK,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAK9K,SAAS,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKtL,QAAQ,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAUrQ,eAAe;;;;;;;IAKf,UAAU,CAAgB,IAAI,EAAE,MAAM,EAAqB,QAAQ,CAAC,EAAE,MAAM,EAAgC,QAAQ,CAAC,EAAE,MAAM;CAGpI"}
1
+ {"version":3,"file":"context.controller.d.ts","sourceRoot":"","sources":["../../src/context/context.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEjF,qBACa,iBAAiB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADT,OAAO,EAAE,cAAc,EACtB,QAAQ,EAAE,eAAe;IAGrE,OAAO,CAAC,eAAe;IAOjB,MAAM,CAAoB,QAAQ,CAAC,EAAE,MAAM,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAO1H,KAAK,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAKjH,KAAK,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAK9K,SAAS,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAQ5L,QAAQ,CAAS,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAUrQ,eAAe;;;;;;;IAKf,UAAU,CAAgB,IAAI,EAAE,MAAM,EAAqB,QAAQ,CAAC,EAAE,MAAM,EAAgC,QAAQ,CAAC,EAAE,MAAM;CAGpI"}
@@ -37,6 +37,9 @@ let ContextController = class ContextController {
37
37
  return this.service.buildContext(this.resolveRootPath(body.rootPath, xProject), body.query, body.mode ?? "fast", body.maxTokens);
38
38
  }
39
39
  async buildTask(body, xProject) {
40
+ if (typeof body.query !== 'string' || body.query.trim() === '') {
41
+ throw new BadRequestException('query is required');
42
+ }
40
43
  return this.service.buildTaskContext(this.resolveRootPath(body.rootPath, xProject), body.query, body.mode ?? "fast", body.maxTokens);
41
44
  }
42
45
  async feedback(body, xProject) {
@@ -1 +1 @@
1
- {"version":3,"file":"context.controller.js","sourceRoot":"","sources":["../../src/context/context.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.controller.js","sourceRoot":"","sources":["../../src/context/context.controller.ts"],"names":[],"mappings":"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"}
@@ -76,6 +76,8 @@ describe('ContextController', () => {
76
76
  ],
77
77
  confidence: 0.85,
78
78
  tokenCount: 1500,
79
+ _devflow_unique: { task_oriented: true },
80
+ _accuracy: { data_freshness_ms: 10, source_layer: 'composite', degradation: 'none' },
79
81
  };
80
82
  const mockService = {
81
83
  buildTaskContext: vi.fn().mockResolvedValue(mockTaskContextResult),
@@ -1 +1 @@
1
- {"version":3,"file":"context.controller.spec.js","sourceRoot":"","sources":["../../src/context/context.controller.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.controller.spec.js","sourceRoot":"","sources":["../../src/context/context.controller.spec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import type { ContextResult, TaskContextResult } from "@devflow-tools/sdk";
1
+ import type { ContextResult, GetProjectContextResult } from "@devflow-tools/sdk";
2
2
  import { DataService } from "../data/data.service.js";
3
+ import { DevFlowDatabase } from "@devflow-tools/database";
3
4
  export interface IndexStatus {
4
5
  totalFiles: number;
5
6
  totalSymbols: number;
@@ -12,23 +13,15 @@ export interface FeedbackEntry {
12
13
  timestamp: number;
13
14
  projectRoot: string;
14
15
  }
15
- export interface FeedbackInput {
16
- projectRoot: string;
17
- query: string;
18
- taskType?: string;
19
- feedback: "hit" | "partial" | "miss";
20
- contextMode?: "general" | "task";
21
- runId?: string;
22
- tokenCount?: number;
23
- }
24
16
  export declare class ContextService {
25
17
  private readonly dataService?;
26
- private feedbackEntries;
27
- constructor(dataService?: DataService | undefined);
18
+ private database?;
19
+ constructor(dataService?: DataService | undefined, database?: DevFlowDatabase);
20
+ private getDatabase;
28
21
  indexProject(rootPath: string): Promise<IndexStatus>;
29
22
  getStatus(rootPath: string): Promise<IndexStatus>;
30
23
  buildContext(rootPath: string, query: string, mode: "fast" | "deep", maxTokens?: number): Promise<ContextResult>;
31
- buildTaskContext(rootPath: string, query: string, mode: "fast" | "deep", maxTokens?: number): Promise<TaskContextResult>;
24
+ buildTaskContext(rootPath: string, query: string, mode: "fast" | "deep", maxTokens?: number): Promise<GetProjectContextResult>;
32
25
  findSymbol(rootPath: string, name: string): Promise<import("@devflow-tools/sdk").SymbolEntry[]>;
33
26
  recordFeedback(rootPath: string, query: string, feedback: "hit" | "partial" | "miss", extra?: {
34
27
  taskType?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"context.service.d.ts","sourceRoot":"","sources":["../../src/context/context.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBACa,cAAc;IAIU,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAHhE,OAAO,CAAC,eAAe,CAAuB;gBAGM,WAAW,CAAC,EAAE,WAAW,YAAA;IAGvE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAYpD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBjD,YAAY,CAChB,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GACzE,OAAO,CAAC,aAAa,CAAC;IAKnB,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GACzE,OAAO,CAAC,iBAAiB,CAAC;IAKvB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAKzC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IA4BnN,oBAAoB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAO1H"}
1
+ {"version":3,"file":"context.service.d.ts","sourceRoot":"","sources":["../../src/context/context.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAA6B,MAAM,yBAAyB,CAAC;AAErF,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBACa,cAAc;IAIU,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAHhE,OAAO,CAAC,QAAQ,CAAC,CAAkB;gBAGiB,WAAW,CAAC,EAAE,WAAW,YAAA,EAC3C,QAAQ,CAAC,EAAE,eAAe;IAK5D,OAAO,CAAC,WAAW;IAKb,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAYpD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBjD,YAAY,CAChB,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GACzE,OAAO,CAAC,aAAa,CAAC;IAKnB,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GACzE,OAAO,CAAC,uBAAuB,CAAC;IAO7B,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAKzC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAuCnN,oBAAoB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAG1H"}
@@ -11,12 +11,17 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
13
  import { Injectable, Inject, Optional } from "@nestjs/common";
14
- import { createEngines } from "@devflow-tools/context-engine";
14
+ import { createEngines, getProjectContextResult } from "@devflow-tools/context-engine";
15
15
  import { DataService } from "../data/data.service.js";
16
+ import { DevFlowDatabase, openGlobalDevFlowDatabase } from "@devflow-tools/database";
16
17
  let ContextService = class ContextService {
17
- constructor(dataService) {
18
+ constructor(dataService, database) {
18
19
  this.dataService = dataService;
19
- this.feedbackEntries = [];
20
+ this.database = database;
21
+ }
22
+ getDatabase() {
23
+ this.database ??= openGlobalDevFlowDatabase();
24
+ return this.database;
20
25
  }
21
26
  async indexProject(rootPath) {
22
27
  const { indexer, codegraph } = await createEngines(rootPath);
@@ -54,16 +59,29 @@ let ContextService = class ContextService {
54
59
  return context.build({ query, mode, maxTokens: maxTokens ?? 8000, includeGraph: mode === "deep" });
55
60
  }
56
61
  async buildTaskContext(rootPath, query, mode, maxTokens) {
57
- const { context } = await createEngines(rootPath);
58
- return context.buildTaskContext(query, { mode, maxTokens: maxTokens ?? 8000 });
62
+ const { context, codegraph } = await createEngines(rootPath);
63
+ const lastUpdated = codegraph.getStats().lastUpdated;
64
+ const freshnessMs = lastUpdated > 0 ? Date.now() - lastUpdated : 0;
65
+ return getProjectContextResult(context, { query, mode, maxTokens: maxTokens ?? 8000 }, freshnessMs);
59
66
  }
60
67
  async findSymbol(rootPath, name) {
61
68
  const { indexer } = await createEngines(rootPath);
62
69
  return indexer.findSymbol(name);
63
70
  }
64
71
  async recordFeedback(rootPath, query, feedback, extra) {
65
- const entry = { query, feedback, timestamp: Date.now(), projectRoot: rootPath };
66
- this.feedbackEntries.push(entry);
72
+ const timestamp = Date.now();
73
+ const entry = { query, feedback, timestamp, projectRoot: rootPath };
74
+ this.getDatabase().insertFeedback({
75
+ id: `feedback:${timestamp}:${Math.random().toString(36).slice(2, 9)}`,
76
+ projectRoot: rootPath,
77
+ query,
78
+ rating: feedback,
79
+ taskType: extra?.taskType,
80
+ contextMode: extra?.contextMode,
81
+ runId: extra?.runId,
82
+ tokenCount: extra?.tokenCount,
83
+ createdAt: timestamp,
84
+ });
67
85
  // Record as telemetry event so it enters the telemetry/ROI pipeline
68
86
  if (this.dataService) {
69
87
  await this.dataService.recordTelemetryEvent({
@@ -87,18 +105,17 @@ let ContextService = class ContextService {
87
105
  return entry;
88
106
  }
89
107
  async getFeedbackSummaries() {
90
- const total = this.feedbackEntries.length;
91
- const hits = this.feedbackEntries.filter(e => e.feedback === "hit").length;
92
- const partials = this.feedbackEntries.filter(e => e.feedback === "partial").length;
93
- const misses = this.feedbackEntries.filter(e => e.feedback === "miss").length;
94
- return { total, hits, partials, misses, hitRate: total > 0 ? hits / total : 0 };
108
+ return this.getDatabase().getFeedbackSummary();
95
109
  }
96
110
  };
97
111
  ContextService = __decorate([
98
112
  Injectable(),
99
113
  __param(0, Optional()),
100
114
  __param(0, Inject(DataService)),
101
- __metadata("design:paramtypes", [DataService])
115
+ __param(1, Optional()),
116
+ __param(1, Inject('DATABASE')),
117
+ __metadata("design:paramtypes", [DataService,
118
+ DevFlowDatabase])
102
119
  ], ContextService);
103
120
  export { ContextService };
104
121
  //# sourceMappingURL=context.service.js.map