@devflow-tools/server 0.6.1 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +1 -1
  2. package/dist/app.module.d.ts.map +1 -1
  3. package/dist/app.module.js +10 -0
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/benchmark/benchmark.controller.d.ts +18 -4
  6. package/dist/benchmark/benchmark.controller.d.ts.map +1 -1
  7. package/dist/benchmark/benchmark.controller.js +20 -12
  8. package/dist/benchmark/benchmark.controller.js.map +1 -1
  9. package/dist/benchmark/benchmark.service.d.ts +23 -5
  10. package/dist/benchmark/benchmark.service.d.ts.map +1 -1
  11. package/dist/benchmark/benchmark.service.js +82 -19
  12. package/dist/benchmark/benchmark.service.js.map +1 -1
  13. package/dist/context/context.controller.d.ts +4 -0
  14. package/dist/context/context.controller.d.ts.map +1 -1
  15. package/dist/context/context.controller.js +6 -1
  16. package/dist/context/context.controller.js.map +1 -1
  17. package/dist/context/context.controller.spec.d.ts +2 -0
  18. package/dist/context/context.controller.spec.d.ts.map +1 -0
  19. package/dist/context/context.controller.spec.js +191 -0
  20. package/dist/context/context.controller.spec.js.map +1 -0
  21. package/dist/context/context.module.d.ts.map +1 -1
  22. package/dist/context/context.module.js +2 -1
  23. package/dist/context/context.module.js.map +1 -1
  24. package/dist/context/context.service.d.ts +18 -1
  25. package/dist/context/context.service.d.ts.map +1 -1
  26. package/dist/context/context.service.js +35 -4
  27. package/dist/context/context.service.js.map +1 -1
  28. package/dist/data/data.controller.d.ts +19 -0
  29. package/dist/data/data.controller.d.ts.map +1 -0
  30. package/dist/data/data.controller.js +78 -0
  31. package/dist/data/data.controller.js.map +1 -0
  32. package/dist/data/data.controller.spec.d.ts +2 -0
  33. package/dist/data/data.controller.spec.d.ts.map +1 -0
  34. package/dist/data/data.controller.spec.js +85 -0
  35. package/dist/data/data.controller.spec.js.map +1 -0
  36. package/dist/data/data.module.d.ts +3 -0
  37. package/dist/data/data.module.d.ts.map +1 -0
  38. package/dist/data/data.module.js +22 -0
  39. package/dist/data/data.module.js.map +1 -0
  40. package/dist/data/data.service.d.ts +54 -0
  41. package/dist/data/data.service.d.ts.map +1 -0
  42. package/dist/data/data.service.js +99 -0
  43. package/dist/data/data.service.js.map +1 -0
  44. package/dist/data/data.service.spec.d.ts +2 -0
  45. package/dist/data/data.service.spec.d.ts.map +1 -0
  46. package/dist/data/data.service.spec.js +148 -0
  47. package/dist/data/data.service.spec.js.map +1 -0
  48. package/dist/main.js +1 -1
  49. package/dist/main.js.map +1 -1
  50. package/dist/projects/projects.controller.d.ts +1 -0
  51. package/dist/projects/projects.controller.d.ts.map +1 -1
  52. package/dist/projects/projects.controller.js +14 -1
  53. package/dist/projects/projects.controller.js.map +1 -1
  54. package/dist/projects/projects.controller.spec.d.ts +2 -0
  55. package/dist/projects/projects.controller.spec.d.ts.map +1 -0
  56. package/dist/projects/projects.controller.spec.js +81 -0
  57. package/dist/projects/projects.controller.spec.js.map +1 -0
  58. package/dist/projects/projects.service.d.ts +1 -0
  59. package/dist/projects/projects.service.d.ts.map +1 -1
  60. package/dist/projects/projects.service.js +12 -0
  61. package/dist/projects/projects.service.js.map +1 -1
  62. package/dist/registry/registry.controller.d.ts +1 -0
  63. package/dist/registry/registry.controller.d.ts.map +1 -1
  64. package/dist/registry/registry.controller.js +10 -0
  65. package/dist/registry/registry.controller.js.map +1 -1
  66. package/dist/registry/registry.module.d.ts.map +1 -1
  67. package/dist/registry/registry.module.js +2 -1
  68. package/dist/registry/registry.module.js.map +1 -1
  69. package/dist/registry/registry.service.d.ts +12 -2
  70. package/dist/registry/registry.service.d.ts.map +1 -1
  71. package/dist/registry/registry.service.js +87 -6
  72. package/dist/registry/registry.service.js.map +1 -1
  73. package/dist/telemetry/telemetry.controller.d.ts.map +1 -1
  74. package/dist/telemetry/telemetry.controller.js +9 -5
  75. package/dist/telemetry/telemetry.controller.js.map +1 -1
  76. package/dist/telemetry/telemetry.service.d.ts +56 -2
  77. package/dist/telemetry/telemetry.service.d.ts.map +1 -1
  78. package/dist/telemetry/telemetry.service.js +217 -3
  79. package/dist/telemetry/telemetry.service.js.map +1 -1
  80. package/dist/workflow/workflow.service.d.ts +3 -1
  81. package/dist/workflow/workflow.service.d.ts.map +1 -1
  82. package/dist/workflow/workflow.service.js +18 -0
  83. package/dist/workflow/workflow.service.js.map +1 -1
  84. package/package.json +11 -10
@@ -0,0 +1,148 @@
1
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
2
+ import { DataService } from './data.service.js';
3
+ describe('DataService', () => {
4
+ let service;
5
+ let mockTelemetry;
6
+ beforeEach(() => {
7
+ mockTelemetry = {
8
+ recordEvent: vi.fn(),
9
+ getStats: vi.fn(),
10
+ };
11
+ service = new DataService(mockTelemetry);
12
+ });
13
+ it('should be defined', () => {
14
+ expect(service).toBeDefined();
15
+ });
16
+ describe('recordTelemetryEvent', () => {
17
+ it('should record telemetry event via TelemetryService', async () => {
18
+ const event = {
19
+ toolName: 'react_review_hooks',
20
+ args: { query: 'test' },
21
+ durationMs: 1000,
22
+ success: true,
23
+ pluginName: 'react',
24
+ metadata: { projectRoot: '/test' },
25
+ };
26
+ await service.recordTelemetryEvent(event);
27
+ expect(mockTelemetry.recordEvent).toHaveBeenCalledWith(expect.objectContaining({
28
+ kind: 'tool_use',
29
+ data: expect.objectContaining({
30
+ toolName: 'react_review_hooks',
31
+ }),
32
+ }));
33
+ });
34
+ });
35
+ describe('getProjectStats', () => {
36
+ it('should return null for unknown project', async () => {
37
+ await expect(service.getProjectStats('/unknown')).resolves.toBeNull();
38
+ });
39
+ it('should return stats after update', async () => {
40
+ await service.updateProjectStats('/test', { totalRuns: 5, successfulRuns: 4 });
41
+ const stats = await service.getProjectStats('/test');
42
+ expect(stats).toMatchObject({
43
+ projectRoot: '/test',
44
+ totalRuns: 5,
45
+ successfulRuns: 4,
46
+ });
47
+ });
48
+ });
49
+ describe('updateProjectStats', () => {
50
+ it('should create stats for new project', async () => {
51
+ const stats = await service.updateProjectStats('/new', { totalRuns: 1 });
52
+ expect(stats.projectRoot).toBe('/new');
53
+ expect(stats.totalRuns).toBe(1);
54
+ expect(stats.lastActiveAt).toBeGreaterThan(0);
55
+ });
56
+ it('should merge with existing stats', async () => {
57
+ await service.updateProjectStats('/p', { totalRuns: 1, successfulRuns: 1 });
58
+ const updated = await service.updateProjectStats('/p', { totalRuns: 2 });
59
+ expect(updated.totalRuns).toBe(2);
60
+ expect(updated.successfulRuns).toBe(1);
61
+ });
62
+ });
63
+ describe('recordBenchmarkResult', () => {
64
+ it('should store benchmark results', () => {
65
+ const result = {
66
+ scenarioId: 'scenario-1',
67
+ mode: 'devflow',
68
+ prepTimeMs: 100,
69
+ tokenCount: 500,
70
+ firstPassSuccess: true,
71
+ reworkCount: 0,
72
+ durationMs: 2000,
73
+ timestamp: Date.now(),
74
+ };
75
+ service.recordBenchmarkResult(result);
76
+ expect(service.getBenchmarkResults()).toContainEqual(result);
77
+ });
78
+ });
79
+ describe('getBenchmarkResults', () => {
80
+ it('should return all results when no projectRoot filter', () => {
81
+ service.recordBenchmarkResult({
82
+ scenarioId: 's1',
83
+ mode: 'baseline',
84
+ prepTimeMs: 50,
85
+ tokenCount: 300,
86
+ firstPassSuccess: false,
87
+ reworkCount: 1,
88
+ durationMs: 3000,
89
+ timestamp: Date.now(),
90
+ });
91
+ expect(service.getBenchmarkResults().length).toBe(1);
92
+ });
93
+ it('should filter by projectRoot via scenarioId -> projectStats mapping', async () => {
94
+ await service.updateProjectStats('/test', { totalRuns: 1 });
95
+ const matchingResult = {
96
+ scenarioId: '/test',
97
+ mode: 'devflow',
98
+ prepTimeMs: 100,
99
+ tokenCount: 500,
100
+ firstPassSuccess: true,
101
+ reworkCount: 0,
102
+ durationMs: 2000,
103
+ timestamp: Date.now(),
104
+ };
105
+ const nonMatchingResult = {
106
+ scenarioId: '/other',
107
+ mode: 'baseline',
108
+ prepTimeMs: 50,
109
+ tokenCount: 300,
110
+ firstPassSuccess: false,
111
+ reworkCount: 1,
112
+ durationMs: 3000,
113
+ timestamp: Date.now(),
114
+ };
115
+ service.recordBenchmarkResult(matchingResult);
116
+ service.recordBenchmarkResult(nonMatchingResult);
117
+ const filtered = service.getBenchmarkResults('/test');
118
+ expect(filtered).toHaveLength(1);
119
+ expect(filtered[0]).toEqual(matchingResult);
120
+ });
121
+ it('should return empty array when scenarioId has no matching projectStats (fragile pre-stats case)', () => {
122
+ service.recordBenchmarkResult({
123
+ scenarioId: '/no-stats',
124
+ mode: 'devflow',
125
+ prepTimeMs: 100,
126
+ tokenCount: 500,
127
+ firstPassSuccess: true,
128
+ reworkCount: 0,
129
+ durationMs: 2000,
130
+ timestamp: Date.now(),
131
+ });
132
+ // scenarioId has no entry in projectStats, so lookup returns undefined -> not equal to '/test'
133
+ const filtered = service.getBenchmarkResults('/test');
134
+ expect(filtered).toEqual([]);
135
+ });
136
+ });
137
+ describe('getPluginEffectiveness', () => {
138
+ it('should return an empty array (stub)', async () => {
139
+ const result = await service.getPluginEffectiveness();
140
+ expect(result).toEqual([]);
141
+ });
142
+ it('should return an empty array when called with a plugin name (stub)', async () => {
143
+ const result = await service.getPluginEffectiveness('react');
144
+ expect(result).toEqual([]);
145
+ });
146
+ });
147
+ });
148
+ //# sourceMappingURL=data.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.service.spec.js","sourceRoot":"","sources":["../../src/data/data.service.spec.ts"],"names":[],"mappings":"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"}
package/dist/main.js CHANGED
@@ -8,7 +8,7 @@ export async function bootstrap() {
8
8
  app.setGlobalPrefix("api");
9
9
  app.useGlobalFilters(new HttpExceptionFilter());
10
10
  app.enableCors({ origin: true, credentials: true });
11
- await app.listen({ port: 3100, host: "0.0.0.0" });
11
+ await app.listen({ port: 13337, host: "0.0.0.0" });
12
12
  return app;
13
13
  }
14
14
  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,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAClD,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,EACpC,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,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,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACnD,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,EACpC,CAAC;IACD,SAAS,EAAE,CAAC;AACd,CAAC"}
@@ -3,6 +3,7 @@ export declare class ProjectsController {
3
3
  private readonly service;
4
4
  constructor(service: ProjectsService);
5
5
  list(): Promise<ProjectDto[]>;
6
+ getOnboardingPackByRoot(rootPath: string): Promise<OnboardingPackResponse | null>;
6
7
  getById(id: string): Promise<ProjectDto>;
7
8
  getOnboardingPack(id: string): Promise<OnboardingPackResponse>;
8
9
  create(body: {
@@ -1 +1 @@
1
- {"version":3,"file":"projects.controller.d.ts","sourceRoot":"","sources":["../../src/projects/projects.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE5F,qBACa,kBAAkB;IACQ,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,eAAe;IAGxE,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAG7B,OAAO,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAGrD,iBAAiB,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAM3E,MAAM,CAAS,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAG/F,OAAO,CAAS,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAM1E,SAAS,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAKjD,MAAM,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACrD"}
1
+ {"version":3,"file":"projects.controller.d.ts","sourceRoot":"","sources":["../../src/projects/projects.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE5F,qBACa,kBAAkB;IACQ,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,eAAe;IAGxE,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAG7B,uBAAuB,CAAoB,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAQpG,OAAO,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAGrD,iBAAiB,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAM3E,MAAM,CAAS,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAG/F,OAAO,CAAS,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAM1E,SAAS,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAKjD,MAAM,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACrD"}
@@ -10,13 +10,19 @@ 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, Post, Delete, Param, Body, Inject } from "@nestjs/common";
13
+ import { Controller, Get, Post, Delete, Param, Body, Query, Inject, BadRequestException } from "@nestjs/common";
14
14
  import { ProjectsService } from "./projects.service.js";
15
15
  let ProjectsController = class ProjectsController {
16
16
  constructor(service) {
17
17
  this.service = service;
18
18
  }
19
19
  async list() { return this.service.list(); }
20
+ async getOnboardingPackByRoot(rootPath) {
21
+ if (!rootPath) {
22
+ throw new BadRequestException("rootPath is required");
23
+ }
24
+ return this.service.getOnboardingPackByRoot(rootPath);
25
+ }
20
26
  async getById(id) { return this.service.getById(id); }
21
27
  async getOnboardingPack(id) {
22
28
  const project = await this.service.getById(id);
@@ -38,6 +44,13 @@ __decorate([
38
44
  __metadata("design:paramtypes", []),
39
45
  __metadata("design:returntype", Promise)
40
46
  ], ProjectsController.prototype, "list", null);
47
+ __decorate([
48
+ Get("onboarding-pack"),
49
+ __param(0, Query("rootPath")),
50
+ __metadata("design:type", Function),
51
+ __metadata("design:paramtypes", [String]),
52
+ __metadata("design:returntype", Promise)
53
+ ], ProjectsController.prototype, "getOnboardingPackByRoot", null);
41
54
  __decorate([
42
55
  Get(":id"),
43
56
  __param(0, Param("id")),
@@ -1 +1 @@
1
- {"version":3,"file":"projects.controller.js","sourceRoot":"","sources":["../../src/projects/projects.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAsC,MAAM,uBAAuB,CAAC;AAGrF,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAAsD,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAG5E,AAAN,KAAK,CAAC,IAAI,KAA4B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAG7D,AAAN,KAAK,CAAC,OAAO,CAAc,EAAU,IAAyB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAG1F,AAAN,KAAK,CAAC,iBAAiB,CAAc,EAAU;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAS,IAA0D,IAAyB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAGrI,AAAN,KAAK,CAAC,OAAO,CAAS,IAA0B;QAC9C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS;QACb,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAC3D,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAc,EAAU,IAAmB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACzF,CAAA;AA3BO;IADL,GAAG,EAAE;;;;8CAC6D;AAG7D;IADL,GAAG,CAAC,KAAK,CAAC;IACI,WAAA,KAAK,CAAC,IAAI,CAAC,CAAA;;;;iDAAsE;AAG1F;IADL,GAAG,CAAC,qBAAqB,CAAC;IACF,WAAA,KAAK,CAAC,IAAI,CAAC,CAAA;;;;2DAGnC;AAGK;IADL,IAAI,EAAE;IACO,WAAA,IAAI,EAAE,CAAA;;;;gDAAuH;AAGrI;IADL,IAAI,CAAC,SAAS,CAAC;IACD,WAAA,IAAI,EAAE,CAAA;;;;iDAGpB;AAGK;IADL,GAAG,CAAC,QAAQ,CAAC;;;;mDAGb;AAGK;IADL,MAAM,CAAC,KAAK,CAAC;IACA,WAAA,KAAK,CAAC,IAAI,CAAC,CAAA;;;;gDAA+D;AA9B7E,kBAAkB;IAD9B,UAAU,CAAC,UAAU,CAAC;IAER,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCAA2B,eAAe;GADnE,kBAAkB,CA+B9B"}
1
+ {"version":3,"file":"projects.controller.js","sourceRoot":"","sources":["../../src/projects/projects.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAAE,eAAe,EAAsC,MAAM,uBAAuB,CAAC;AAGrF,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAAsD,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAG5E,AAAN,KAAK,CAAC,IAAI,KAA4B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAG7D,AAAN,KAAK,CAAC,uBAAuB,CAAoB,QAAgB;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAc,EAAU,IAAyB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAG1F,AAAN,KAAK,CAAC,iBAAiB,CAAc,EAAU;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAS,IAA0D,IAAyB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAGrI,AAAN,KAAK,CAAC,OAAO,CAAS,IAA0B;QAC9C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS;QACb,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAC3D,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAc,EAAU,IAAmB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACzF,CAAA;AAnCO;IADL,GAAG,EAAE;;;;8CAC6D;AAG7D;IADL,GAAG,CAAC,iBAAiB,CAAC;IACQ,WAAA,KAAK,CAAC,UAAU,CAAC,CAAA;;;;iEAK/C;AAGK;IADL,GAAG,CAAC,KAAK,CAAC;IACI,WAAA,KAAK,CAAC,IAAI,CAAC,CAAA;;;;iDAAsE;AAG1F;IADL,GAAG,CAAC,qBAAqB,CAAC;IACF,WAAA,KAAK,CAAC,IAAI,CAAC,CAAA;;;;2DAGnC;AAGK;IADL,IAAI,EAAE;IACO,WAAA,IAAI,EAAE,CAAA;;;;gDAAuH;AAGrI;IADL,IAAI,CAAC,SAAS,CAAC;IACD,WAAA,IAAI,EAAE,CAAA;;;;iDAGpB;AAGK;IADL,GAAG,CAAC,QAAQ,CAAC;;;;mDAGb;AAGK;IADL,MAAM,CAAC,KAAK,CAAC;IACA,WAAA,KAAK,CAAC,IAAI,CAAC,CAAA;;;;gDAA+D;AAtC7E,kBAAkB;IAD9B,UAAU,CAAC,UAAU,CAAC;IAER,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCAA2B,eAAe;GADnE,kBAAkB,CAuC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=projects.controller.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.controller.spec.d.ts","sourceRoot":"","sources":["../../src/projects/projects.controller.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
2
+ import { Test } from '@nestjs/testing';
3
+ import { BadRequestException } from '@nestjs/common';
4
+ import { ProjectsController } from './projects.controller.js';
5
+ import { ProjectsService } from './projects.service.js';
6
+ describe('ProjectsController', () => {
7
+ let controller;
8
+ let service;
9
+ const mockService = {
10
+ list: vi.fn().mockResolvedValue([]),
11
+ getById: vi.fn().mockResolvedValue({
12
+ id: 'proj_1',
13
+ name: 'test',
14
+ rootPath: '/test/project',
15
+ createdAt: Date.now(),
16
+ }),
17
+ getOnboardingPack: vi.fn().mockResolvedValue({
18
+ projectName: 'test',
19
+ createdAt: new Date().toISOString(),
20
+ root: '/test/project',
21
+ stats: { files: 1, symbols: 1, graphNodes: 1 },
22
+ stack: { languages: [], frameworks: [], buildTools: [], testTools: [] },
23
+ keyModules: [],
24
+ keyFiles: [],
25
+ keySymbols: [],
26
+ architectureLayers: [],
27
+ recommendedPlugins: [],
28
+ recommendedWorkflows: [],
29
+ recommendedQueries: [],
30
+ }),
31
+ getOnboardingPackByRoot: vi.fn().mockResolvedValue(null),
32
+ create: vi.fn().mockResolvedValue({
33
+ id: 'proj_1',
34
+ name: 'test',
35
+ rootPath: '/test/project',
36
+ createdAt: Date.now(),
37
+ }),
38
+ setActiveProject: vi.fn(),
39
+ getActiveProjectRoot: vi.fn().mockReturnValue('/test/project'),
40
+ delete: vi.fn().mockResolvedValue(undefined),
41
+ };
42
+ beforeEach(async () => {
43
+ vi.clearAllMocks();
44
+ const module = await Test.createTestingModule({
45
+ controllers: [ProjectsController],
46
+ providers: [
47
+ {
48
+ provide: ProjectsService,
49
+ useValue: mockService,
50
+ },
51
+ ],
52
+ }).compile();
53
+ controller = module.get(ProjectsController);
54
+ service = module.get(ProjectsService);
55
+ });
56
+ it('should be defined', () => {
57
+ expect(controller).toBeDefined();
58
+ });
59
+ describe('GET /projects/onboarding-pack (by rootPath)', () => {
60
+ it('should query by rootPath', async () => {
61
+ const rootPath = '/test/project';
62
+ mockService.getOnboardingPackByRoot.mockResolvedValue({
63
+ projectName: 'test',
64
+ });
65
+ const result = await controller.getOnboardingPackByRoot(rootPath);
66
+ expect(service.getOnboardingPackByRoot).toHaveBeenCalledWith(rootPath);
67
+ expect(result).toEqual({ projectName: 'test' });
68
+ });
69
+ it('should throw BadRequestException when rootPath is missing', async () => {
70
+ await expect(controller.getOnboardingPackByRoot('')).rejects.toThrow(BadRequestException);
71
+ expect(service.getOnboardingPackByRoot).not.toHaveBeenCalled();
72
+ });
73
+ it('should return null when onboarding pack does not exist', async () => {
74
+ mockService.getOnboardingPackByRoot.mockResolvedValue(null);
75
+ const result = await controller.getOnboardingPackByRoot('/empty/project');
76
+ expect(service.getOnboardingPackByRoot).toHaveBeenCalledWith('/empty/project');
77
+ expect(result).toBeNull();
78
+ });
79
+ });
80
+ });
81
+ //# sourceMappingURL=projects.controller.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.controller.spec.js","sourceRoot":"","sources":["../../src/projects/projects.controller.spec.ts"],"names":[],"mappings":"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"}
@@ -56,5 +56,6 @@ export declare class ProjectsService {
56
56
  }): Promise<ProjectDto>;
57
57
  delete(id: string): Promise<void>;
58
58
  getOnboardingPack(rootPath: string): Promise<OnboardingPackResponse>;
59
+ getOnboardingPackByRoot(rootPath: string): Promise<OnboardingPackResponse | null>;
59
60
  }
60
61
  //# sourceMappingURL=projects.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects.service.d.ts","sourceRoot":"","sources":["../../src/projects/projects.service.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChG,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,kBAAkB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,qBACa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,iBAAiB,CAA2D;IAEpF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAI/B,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMxC,MAAM,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAUxF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAS3E"}
1
+ {"version":3,"file":"projects.service.d.ts","sourceRoot":"","sources":["../../src/projects/projects.service.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChG,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,kBAAkB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,qBACa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,iBAAiB,CAA2D;IAEpF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAI/B,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMxC,MAAM,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAUxF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAUpE,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;CAWxF"}
@@ -51,6 +51,18 @@ let ProjectsService = class ProjectsService {
51
51
  }
52
52
  return JSON.parse(readFileSync(packPath, "utf-8"));
53
53
  }
54
+ async getOnboardingPackByRoot(rootPath) {
55
+ const packPath = join(rootPath, ".devflow", "onboarding-pack.json");
56
+ try {
57
+ if (!existsSync(packPath)) {
58
+ return null;
59
+ }
60
+ return JSON.parse(readFileSync(packPath, "utf-8"));
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ }
54
66
  };
55
67
  ProjectsService = __decorate([
56
68
  Injectable()
@@ -1 +1 @@
1
- {"version":3,"file":"projects.service.js","sourceRoot":"","sources":["../../src/projects/projects.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects.service.js","sourceRoot":"","sources":["../../src/projects/projects.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AA0B9C,IAAM,eAAe,GAArB,MAAM,eAAe;IAArB;QACG,aAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;QACzC,sBAAiB,GAAkB,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,IAAI,CAAC;IAwDtF,CAAC;IAtDC,gBAAgB,CAAC,QAAgB;QAC/B,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;IACpC,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACzI,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA2D;QACtE,MAAM,EAAE,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,OAAO,GAAe,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC1H,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7J,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,iBAAiB,CAAC;gBAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,sDAAsD,EAAE,OAAO,EAAE,EAAE,EAAE;aAC3H,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,QAAgB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AA1DY,eAAe;IAD3B,UAAU,EAAE;GACA,eAAe,CA0D3B"}
@@ -3,6 +3,7 @@ export declare class RegistryController {
3
3
  private readonly service;
4
4
  constructor(service: RegistryService);
5
5
  list(search?: string, tag?: string): Promise<import("./registry.service.js").PluginMeta[]>;
6
+ getPluginEffectiveness(rootPath?: string): Promise<import("@devflow-tools/sdk").PluginEffectivenessSummary[]>;
6
7
  getByName(name: string): Promise<import("./registry.service.js").PluginMeta>;
7
8
  publish(body: {
8
9
  npmPackage: string;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.controller.d.ts","sourceRoot":"","sources":["../../src/registry/registry.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,qBACa,kBAAkB;IACQ,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,eAAe;IAGxE,IAAI,CAAkB,MAAM,CAAC,EAAE,MAAM,EAAgB,GAAG,CAAC,EAAE,MAAM;IAKjE,SAAS,CAAgB,IAAI,EAAE,MAAM;IAKrC,OAAO,CAAS,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;IAKnG,OAAO,CAAS,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM;;;;IAK1G,SAAS,CAAgB,IAAI,EAAE,MAAM,EAAU,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM;;;;CAGlI"}
1
+ {"version":3,"file":"registry.controller.d.ts","sourceRoot":"","sources":["../../src/registry/registry.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,qBACa,kBAAkB;IACQ,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,eAAe;IAGxE,IAAI,CAAkB,MAAM,CAAC,EAAE,MAAM,EAAgB,GAAG,CAAC,EAAE,MAAM;IAKjE,sBAAsB,CAAoB,QAAQ,CAAC,EAAE,MAAM;IAK3D,SAAS,CAAgB,IAAI,EAAE,MAAM;IAKrC,OAAO,CAAS,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;IAKnG,OAAO,CAAS,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM;;;;IAK1G,SAAS,CAAgB,IAAI,EAAE,MAAM,EAAU,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAgC,QAAQ,CAAC,EAAE,MAAM;;;;CAGlI"}
@@ -19,6 +19,9 @@ let RegistryController = class RegistryController {
19
19
  async list(search, tag) {
20
20
  return this.service.list(search, tag);
21
21
  }
22
+ async getPluginEffectiveness(rootPath) {
23
+ return this.service.getPluginEffectiveness(rootPath);
24
+ }
22
25
  async getByName(name) {
23
26
  return this.service.getByName(name);
24
27
  }
@@ -40,6 +43,13 @@ __decorate([
40
43
  __metadata("design:paramtypes", [String, String]),
41
44
  __metadata("design:returntype", Promise)
42
45
  ], RegistryController.prototype, "list", null);
46
+ __decorate([
47
+ Get("plugins/effectiveness"),
48
+ __param(0, Query("rootPath")),
49
+ __metadata("design:type", Function),
50
+ __metadata("design:paramtypes", [String]),
51
+ __metadata("design:returntype", Promise)
52
+ ], RegistryController.prototype, "getPluginEffectiveness", null);
43
53
  __decorate([
44
54
  Get("plugins/:name"),
45
55
  __param(0, Param("name")),
@@ -1 +1 @@
1
- {"version":3,"file":"registry.controller.js","sourceRoot":"","sources":["../../src/registry/registry.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAAsD,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAG5E,AAAN,KAAK,CAAC,IAAI,CAAkB,MAAe,EAAgB,GAAY;QACrE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAgB,IAAY;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,IAAmF;QACvG,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,IAAyC,EAAgC,QAAiB;QAC9G,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;IACpE,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAgB,IAAY,EAAU,IAA2B,EAAgC,QAAiB;QAC/H,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;IACjE,CAAC;CACF,CAAA;AAvBO;IADL,GAAG,CAAC,SAAS,CAAC;IACH,WAAA,KAAK,CAAC,QAAQ,CAAC,CAAA;IAAmB,WAAA,KAAK,CAAC,KAAK,CAAC,CAAA;;;;8CAEzD;AAGK;IADL,GAAG,CAAC,eAAe,CAAC;IACJ,WAAA,KAAK,CAAC,MAAM,CAAC,CAAA;;;;mDAE7B;AAGK;IADL,IAAI,CAAC,SAAS,CAAC;IACD,WAAA,IAAI,EAAE,CAAA;;;;iDAEpB;AAGK;IADL,IAAI,CAAC,iBAAiB,CAAC;IACT,WAAA,IAAI,EAAE,CAAA;IAA6C,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;iDAE7F;AAGK;IADL,IAAI,CAAC,yBAAyB,CAAC;IACf,WAAA,KAAK,CAAC,MAAM,CAAC,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;IAA+B,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;mDAE9G;AA1BU,kBAAkB;IAD9B,UAAU,CAAC,UAAU,CAAC;IAER,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCAA2B,eAAe;GADnE,kBAAkB,CA2B9B"}
1
+ {"version":3,"file":"registry.controller.js","sourceRoot":"","sources":["../../src/registry/registry.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAAsD,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAG5E,AAAN,KAAK,CAAC,IAAI,CAAkB,MAAe,EAAgB,GAAY;QACrE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAGK,AAAN,KAAK,CAAC,sBAAsB,CAAoB,QAAiB;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAgB,IAAY;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,IAAmF;QACvG,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,IAAyC,EAAgC,QAAiB;QAC9G,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;IACpE,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAgB,IAAY,EAAU,IAA2B,EAAgC,QAAiB;QAC/H,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;IACjE,CAAC;CACF,CAAA;AA5BO;IADL,GAAG,CAAC,SAAS,CAAC;IACH,WAAA,KAAK,CAAC,QAAQ,CAAC,CAAA;IAAmB,WAAA,KAAK,CAAC,KAAK,CAAC,CAAA;;;;8CAEzD;AAGK;IADL,GAAG,CAAC,uBAAuB,CAAC;IACC,WAAA,KAAK,CAAC,UAAU,CAAC,CAAA;;;;gEAE9C;AAGK;IADL,GAAG,CAAC,eAAe,CAAC;IACJ,WAAA,KAAK,CAAC,MAAM,CAAC,CAAA;;;;mDAE7B;AAGK;IADL,IAAI,CAAC,SAAS,CAAC;IACD,WAAA,IAAI,EAAE,CAAA;;;;iDAEpB;AAGK;IADL,IAAI,CAAC,iBAAiB,CAAC;IACT,WAAA,IAAI,EAAE,CAAA;IAA6C,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;iDAE7F;AAGK;IADL,IAAI,CAAC,yBAAyB,CAAC;IACf,WAAA,KAAK,CAAC,MAAM,CAAC,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;IAA+B,WAAA,OAAO,CAAC,mBAAmB,CAAC,CAAA;;;;mDAE9G;AA/BU,kBAAkB;IAD9B,UAAU,CAAC,UAAU,CAAC;IAER,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCAA2B,eAAe;GADnE,kBAAkB,CAgC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.module.d.ts","sourceRoot":"","sources":["../../src/registry/registry.module.ts"],"names":[],"mappings":"AAIA,qBACa,cAAc;CAAG"}
1
+ {"version":3,"file":"registry.module.d.ts","sourceRoot":"","sources":["../../src/registry/registry.module.ts"],"names":[],"mappings":"AAKA,qBACa,cAAc;CAAG"}
@@ -7,10 +7,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { Module } from "@nestjs/common";
8
8
  import { RegistryService } from "./registry.service.js";
9
9
  import { RegistryController } from "./registry.controller.js";
10
+ import { TelemetryModule } from "../telemetry/telemetry.module.js";
10
11
  let RegistryModule = class RegistryModule {
11
12
  };
12
13
  RegistryModule = __decorate([
13
- Module({ controllers: [RegistryController], providers: [RegistryService], exports: [RegistryService] })
14
+ Module({ imports: [TelemetryModule], controllers: [RegistryController], providers: [RegistryService], exports: [RegistryService] })
14
15
  ], RegistryModule);
15
16
  export { RegistryModule };
16
17
  //# sourceMappingURL=registry.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.module.js","sourceRoot":"","sources":["../../src/registry/registry.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGvD,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,cAAc;IAD1B,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;GAC3F,cAAc,CAAG"}
1
+ {"version":3,"file":"registry.module.js","sourceRoot":"","sources":["../../src/registry/registry.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAG5D,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,cAAc;IAD1B,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;GACvH,cAAc,CAAG"}
@@ -1,3 +1,5 @@
1
+ import { TelemetryService } from "../telemetry/telemetry.service.js";
2
+ import type { PluginEffectivenessSummary } from "@devflow-tools/sdk";
1
3
  export interface PluginMeta {
2
4
  name: string;
3
5
  npmPackage: string;
@@ -7,7 +9,10 @@ export interface PluginMeta {
7
9
  createdAt: number;
8
10
  }
9
11
  export declare class RegistryService {
12
+ private readonly telemetryService;
10
13
  private plugins;
14
+ private installRecords;
15
+ constructor(telemetryService: TelemetryService);
11
16
  list(search?: string, tag?: string): Promise<PluginMeta[]>;
12
17
  getByName(name: string): Promise<PluginMeta>;
13
18
  publish(input: {
@@ -16,13 +21,18 @@ export declare class RegistryService {
16
21
  description: string;
17
22
  tags?: string[];
18
23
  }): Promise<PluginMeta>;
19
- install(name: string, _rootPath?: string): Promise<{
24
+ install(name: string, rootPath?: string): Promise<{
20
25
  ok: boolean;
21
26
  name: string;
22
27
  }>;
23
- uninstall(name: string, _rootPath?: string): Promise<{
28
+ uninstall(name: string, rootPath?: string): Promise<{
24
29
  ok: boolean;
25
30
  name: string;
26
31
  }>;
32
+ recordPluginInstall(pluginName: string, projectRoot: string): Promise<void>;
33
+ recordPluginUninstall(pluginName: string, projectRoot: string): Promise<void>;
34
+ listInstalledProjects(pluginName: string): Promise<string[]>;
35
+ buildPluginEffectiveness(pluginName: string): Promise<PluginEffectivenessSummary>;
36
+ getPluginEffectiveness(projectRoot?: string): Promise<PluginEffectivenessSummary[]>;
27
37
  }
28
38
  //# sourceMappingURL=registry.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.service.d.ts","sourceRoot":"","sources":["../../src/registry/registry.service.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBACa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAiC;IAE1C,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAY1D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAM5C,OAAO,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAclH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAcjF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAK1F"}
1
+ {"version":3,"file":"registry.service.d.ts","sourceRoot":"","sources":["../../src/registry/registry.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,KAAK,EAAE,0BAA0B,EAA6C,MAAM,oBAAoB,CAAC;AAEhH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBACa,eAAe;IAIY,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAHvE,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,cAAc,CAA6B;gBAEI,gBAAgB,EAAE,gBAAgB;IAEnF,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAY1D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAM5C,OAAO,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAclH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBhF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IASlF,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3E,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7E,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAM5D,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAiCjF,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC;CAc1F"}