codingbuddy 5.1.3 → 5.2.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 (128) hide show
  1. package/README.md +9 -0
  2. package/dist/src/app.module.js +2 -0
  3. package/dist/src/app.module.js.map +1 -1
  4. package/dist/src/cli/cli.d.ts +3 -3
  5. package/dist/src/cli/cli.js +118 -1
  6. package/dist/src/cli/cli.js.map +1 -1
  7. package/dist/src/cli/cli.types.d.ts +14 -0
  8. package/dist/src/cli/init/init.constants.js +0 -1
  9. package/dist/src/cli/init/init.constants.js.map +1 -1
  10. package/dist/src/cli/plugin/install.command.d.ts +10 -0
  11. package/dist/src/cli/plugin/install.command.js +31 -0
  12. package/dist/src/cli/plugin/install.command.js.map +1 -0
  13. package/dist/src/cli/plugin/plugins.command.d.ts +9 -0
  14. package/dist/src/cli/plugin/plugins.command.js +51 -0
  15. package/dist/src/cli/plugin/plugins.command.js.map +1 -0
  16. package/dist/src/cli/plugin/search.command.d.ts +9 -0
  17. package/dist/src/cli/plugin/search.command.js +53 -0
  18. package/dist/src/cli/plugin/search.command.js.map +1 -0
  19. package/dist/src/cli/plugin/uninstall.command.d.ts +12 -0
  20. package/dist/src/cli/plugin/uninstall.command.js +79 -0
  21. package/dist/src/cli/plugin/uninstall.command.js.map +1 -0
  22. package/dist/src/cli/plugin/update.command.d.ts +11 -0
  23. package/dist/src/cli/plugin/update.command.js +103 -0
  24. package/dist/src/cli/plugin/update.command.js.map +1 -0
  25. package/dist/src/context/briefing-loader.service.d.ts +27 -0
  26. package/dist/src/context/briefing-loader.service.js +124 -0
  27. package/dist/src/context/briefing-loader.service.js.map +1 -0
  28. package/dist/src/context/briefing.service.d.ts +27 -0
  29. package/dist/src/context/briefing.service.js +181 -0
  30. package/dist/src/context/briefing.service.js.map +1 -0
  31. package/dist/src/context/briefing.types.d.ts +13 -0
  32. package/dist/src/context/briefing.types.js +6 -0
  33. package/dist/src/context/briefing.types.js.map +1 -0
  34. package/dist/src/context/context.module.js +16 -2
  35. package/dist/src/context/context.module.js.map +1 -1
  36. package/dist/src/context/index.d.ts +2 -0
  37. package/dist/src/context/index.js +2 -0
  38. package/dist/src/context/index.js.map +1 -1
  39. package/dist/src/main.js +0 -17
  40. package/dist/src/main.js.map +1 -1
  41. package/dist/src/mcp/handlers/briefing.handler.d.ts +12 -0
  42. package/dist/src/mcp/handlers/briefing.handler.js +71 -0
  43. package/dist/src/mcp/handlers/briefing.handler.js.map +1 -0
  44. package/dist/src/mcp/handlers/index.d.ts +4 -0
  45. package/dist/src/mcp/handlers/index.js +9 -1
  46. package/dist/src/mcp/handlers/index.js.map +1 -1
  47. package/dist/src/mcp/handlers/quality-report.handler.d.ts +12 -0
  48. package/dist/src/mcp/handlers/quality-report.handler.js +75 -0
  49. package/dist/src/mcp/handlers/quality-report.handler.js.map +1 -0
  50. package/dist/src/mcp/handlers/resume.handler.d.ts +12 -0
  51. package/dist/src/mcp/handlers/resume.handler.js +63 -0
  52. package/dist/src/mcp/handlers/resume.handler.js.map +1 -0
  53. package/dist/src/mcp/handlers/rule-impact.handler.d.ts +23 -0
  54. package/dist/src/mcp/handlers/rule-impact.handler.js +241 -0
  55. package/dist/src/mcp/handlers/rule-impact.handler.js.map +1 -0
  56. package/dist/src/mcp/handlers/skill.handler.js +2 -2
  57. package/dist/src/mcp/handlers/skill.handler.js.map +1 -1
  58. package/dist/src/mcp/mcp.module.js +6 -0
  59. package/dist/src/mcp/mcp.module.js.map +1 -1
  60. package/dist/src/plugin/plugin-installer.service.d.ts +41 -0
  61. package/dist/src/plugin/plugin-installer.service.js +183 -0
  62. package/dist/src/plugin/plugin-installer.service.js.map +1 -0
  63. package/dist/src/plugin/plugin-manifest.schema.d.ts +21 -0
  64. package/dist/src/plugin/plugin-manifest.schema.js +45 -0
  65. package/dist/src/plugin/plugin-manifest.schema.js.map +1 -0
  66. package/dist/src/plugin/plugin.module.d.ts +2 -0
  67. package/dist/src/plugin/plugin.module.js +17 -0
  68. package/dist/src/plugin/plugin.module.js.map +1 -0
  69. package/dist/src/plugin/plugin.types.d.ts +7 -0
  70. package/dist/src/plugin/plugin.types.js +3 -0
  71. package/dist/src/plugin/plugin.types.js.map +1 -0
  72. package/dist/src/plugin/registry-client.d.ts +24 -0
  73. package/dist/src/plugin/registry-client.js +45 -0
  74. package/dist/src/plugin/registry-client.js.map +1 -0
  75. package/dist/src/rules/rule-event-collector.d.ts +7 -0
  76. package/dist/src/rules/rule-event-collector.js +38 -0
  77. package/dist/src/rules/rule-event-collector.js.map +1 -0
  78. package/dist/src/rules/rule-event.types.d.ts +9 -0
  79. package/dist/src/rules/rule-event.types.js +10 -0
  80. package/dist/src/rules/rule-event.types.js.map +1 -0
  81. package/dist/src/rules/rule-stats-writer.d.ts +23 -0
  82. package/dist/src/rules/rule-stats-writer.js +138 -0
  83. package/dist/src/rules/rule-stats-writer.js.map +1 -0
  84. package/dist/src/rules/rules.module.js +4 -2
  85. package/dist/src/rules/rules.module.js.map +1 -1
  86. package/dist/src/rules/rules.service.d.ts +2 -1
  87. package/dist/src/rules/rules.service.js.map +1 -1
  88. package/dist/src/rules/skill.schema.d.ts +5 -0
  89. package/dist/src/rules/skill.schema.js +6 -0
  90. package/dist/src/rules/skill.schema.js.map +1 -1
  91. package/dist/src/shared/rules-core.d.ts +2 -1
  92. package/dist/src/shared/rules-core.js +1 -0
  93. package/dist/src/shared/rules-core.js.map +1 -1
  94. package/dist/src/shared/version.d.ts +1 -1
  95. package/dist/src/shared/version.js +1 -1
  96. package/dist/src/ship/file-specialist-mapper.d.ts +9 -0
  97. package/dist/src/ship/file-specialist-mapper.js +56 -0
  98. package/dist/src/ship/file-specialist-mapper.js.map +1 -0
  99. package/dist/src/ship/quality-report.service.d.ts +6 -0
  100. package/dist/src/ship/quality-report.service.js +56 -0
  101. package/dist/src/ship/quality-report.service.js.map +1 -0
  102. package/dist/src/ship/quality-report.types.d.ts +20 -0
  103. package/dist/src/ship/quality-report.types.js +3 -0
  104. package/dist/src/ship/quality-report.types.js.map +1 -0
  105. package/dist/src/ship/ship.module.d.ts +2 -0
  106. package/dist/src/ship/ship.module.js +21 -0
  107. package/dist/src/ship/ship.module.js.map +1 -0
  108. package/dist/src/skill/skill-recommendation.service.d.ts +9 -2
  109. package/dist/src/skill/skill-recommendation.service.js +94 -16
  110. package/dist/src/skill/skill-recommendation.service.js.map +1 -1
  111. package/dist/src/skill/skill.module.js +2 -0
  112. package/dist/src/skill/skill.module.js.map +1 -1
  113. package/dist/src/tui/__perf__/memory-stability.spec.js +6 -6
  114. package/dist/src/tui/__perf__/memory-stability.spec.js.map +1 -1
  115. package/dist/src/tui/__perf__/rendering-performance.spec.js +5 -8
  116. package/dist/src/tui/__perf__/rendering-performance.spec.js.map +1 -1
  117. package/dist/src/tui/dashboard-app.spec.js +15 -15
  118. package/dist/src/tui/dashboard-app.spec.js.map +1 -1
  119. package/dist/src/tui/eventbus-ui.integration.spec.js +45 -45
  120. package/dist/src/tui/eventbus-ui.integration.spec.js.map +1 -1
  121. package/dist/src/tui/testing/tui-test-utils.d.ts +2 -0
  122. package/dist/src/tui/testing/tui-test-utils.js +25 -0
  123. package/dist/src/tui/testing/tui-test-utils.js.map +1 -0
  124. package/dist/src/tui/transport-tui.integration.spec.js +8 -8
  125. package/dist/src/tui/transport-tui.integration.spec.js.map +1 -1
  126. package/dist/src/tui-bundle.mjs +197 -36
  127. package/dist/tsconfig.build.tsbuildinfo +1 -1
  128. package/package.json +2 -2
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.RuleStatsWriter = exports.STATS_FILE_PATH = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const promises_1 = require("fs/promises");
18
+ const fs_1 = require("fs");
19
+ const path_1 = require("path");
20
+ const rule_event_collector_1 = require("./rule-event-collector");
21
+ exports.STATS_FILE_PATH = Symbol('STATS_FILE_PATH');
22
+ const DEFAULT_STATS_RELATIVE_PATH = 'docs/codingbuddy/rule-stats.json';
23
+ function createEmptyStats() {
24
+ return {
25
+ lastUpdated: new Date().toISOString(),
26
+ rules: {},
27
+ domains: {},
28
+ };
29
+ }
30
+ function aggregateEvents(events) {
31
+ const stats = createEmptyStats();
32
+ for (const event of events) {
33
+ switch (event.type) {
34
+ case 'mode_activated': {
35
+ if (!event.rule)
36
+ break;
37
+ if (!stats.rules[event.rule]) {
38
+ stats.rules[event.rule] = { applied: 0, sessions: 0 };
39
+ }
40
+ stats.rules[event.rule].applied += 1;
41
+ stats.rules[event.rule].sessions += 1;
42
+ break;
43
+ }
44
+ case 'checklist_generated':
45
+ case 'specialist_dispatched': {
46
+ if (!event.domain)
47
+ break;
48
+ if (!stats.domains[event.domain]) {
49
+ stats.domains[event.domain] = { checks: 0, issues_prevented: 0 };
50
+ }
51
+ stats.domains[event.domain].checks += 1;
52
+ break;
53
+ }
54
+ case 'violation_caught': {
55
+ if (!event.domain)
56
+ break;
57
+ if (!stats.domains[event.domain]) {
58
+ stats.domains[event.domain] = { checks: 0, issues_prevented: 0 };
59
+ }
60
+ stats.domains[event.domain].issues_prevented += 1;
61
+ break;
62
+ }
63
+ }
64
+ }
65
+ return stats;
66
+ }
67
+ function mergeStats(existing, incoming) {
68
+ const merged = {
69
+ lastUpdated: new Date().toISOString(),
70
+ rules: { ...existing.rules },
71
+ domains: { ...existing.domains },
72
+ };
73
+ for (const [name, entry] of Object.entries(incoming.rules)) {
74
+ if (merged.rules[name]) {
75
+ merged.rules[name] = {
76
+ applied: merged.rules[name].applied + entry.applied,
77
+ sessions: merged.rules[name].sessions + entry.sessions,
78
+ };
79
+ }
80
+ else {
81
+ merged.rules[name] = { ...entry };
82
+ }
83
+ }
84
+ for (const [name, entry] of Object.entries(incoming.domains)) {
85
+ if (merged.domains[name]) {
86
+ merged.domains[name] = {
87
+ checks: merged.domains[name].checks + entry.checks,
88
+ issues_prevented: merged.domains[name].issues_prevented + entry.issues_prevented,
89
+ };
90
+ }
91
+ else {
92
+ merged.domains[name] = { ...entry };
93
+ }
94
+ }
95
+ return merged;
96
+ }
97
+ let RuleStatsWriter = class RuleStatsWriter {
98
+ constructor(collector, statsPath) {
99
+ this.collector = collector;
100
+ this.statsPath = statsPath ?? (0, path_1.join)(process.cwd(), DEFAULT_STATS_RELATIVE_PATH);
101
+ }
102
+ async flush() {
103
+ const events = this.collector.flush();
104
+ if (events.length === 0) {
105
+ return;
106
+ }
107
+ const incoming = aggregateEvents(events);
108
+ const existing = await this.readExistingStats();
109
+ const merged = existing ? mergeStats(existing, incoming) : incoming;
110
+ await this.atomicWrite(merged);
111
+ }
112
+ async readExistingStats() {
113
+ try {
114
+ const raw = await (0, promises_1.readFile)(this.statsPath, 'utf-8');
115
+ return JSON.parse(raw);
116
+ }
117
+ catch {
118
+ return null;
119
+ }
120
+ }
121
+ async atomicWrite(stats) {
122
+ const dir = (0, path_1.dirname)(this.statsPath);
123
+ if (!(0, fs_1.existsSync)(dir)) {
124
+ await (0, promises_1.mkdir)(dir, { recursive: true });
125
+ }
126
+ const tmpPath = this.statsPath + '.tmp';
127
+ await (0, promises_1.writeFile)(tmpPath, JSON.stringify(stats, null, 2), 'utf-8');
128
+ await (0, promises_1.rename)(tmpPath, this.statsPath);
129
+ }
130
+ };
131
+ exports.RuleStatsWriter = RuleStatsWriter;
132
+ exports.RuleStatsWriter = RuleStatsWriter = __decorate([
133
+ (0, common_1.Injectable)(),
134
+ __param(1, (0, common_1.Optional)()),
135
+ __param(1, (0, common_1.Inject)(exports.STATS_FILE_PATH)),
136
+ __metadata("design:paramtypes", [rule_event_collector_1.RuleEventCollector, String])
137
+ ], RuleStatsWriter);
138
+ //# sourceMappingURL=rule-stats-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-stats-writer.js","sourceRoot":"","sources":["../../../src/rules/rule-stats-writer.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ exports.RulesModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const rules_service_1 = require("./rules.service");
12
12
  const rule_insights_service_1 = require("./rule-insights.service");
13
+ const rule_event_collector_1 = require("./rule-event-collector");
14
+ const rule_stats_writer_1 = require("./rule-stats-writer");
13
15
  const custom_1 = require("../custom");
14
16
  const config_module_1 = require("../config/config.module");
15
17
  let RulesModule = class RulesModule {
@@ -18,8 +20,8 @@ exports.RulesModule = RulesModule;
18
20
  exports.RulesModule = RulesModule = __decorate([
19
21
  (0, common_1.Module)({
20
22
  imports: [custom_1.CustomModule, config_module_1.CodingBuddyConfigModule],
21
- providers: [rules_service_1.RulesService, rule_insights_service_1.RuleInsightsService],
22
- exports: [rules_service_1.RulesService, rule_insights_service_1.RuleInsightsService],
23
+ providers: [rules_service_1.RulesService, rule_insights_service_1.RuleInsightsService, rule_event_collector_1.RuleEventCollector, rule_stats_writer_1.RuleStatsWriter],
24
+ exports: [rules_service_1.RulesService, rule_insights_service_1.RuleInsightsService, rule_event_collector_1.RuleEventCollector, rule_stats_writer_1.RuleStatsWriter],
23
25
  })
24
26
  ], RulesModule);
25
27
  //# sourceMappingURL=rules.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.module.js","sourceRoot":"","sources":["../../../src/rules/rules.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,mDAA+C;AAC/C,mEAA8D;AAC9D,sCAAyC;AACzC,2DAAkE;AAO3D,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IALvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,EAAE,uCAAuB,CAAC;QAChD,SAAS,EAAE,CAAC,4BAAY,EAAE,2CAAmB,CAAC;QAC9C,OAAO,EAAE,CAAC,4BAAY,EAAE,2CAAmB,CAAC;KAC7C,CAAC;GACW,WAAW,CAAG"}
1
+ {"version":3,"file":"rules.module.js","sourceRoot":"","sources":["../../../src/rules/rules.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,mDAA+C;AAC/C,mEAA8D;AAC9D,iEAA4D;AAC5D,2DAAsD;AACtD,sCAAyC;AACzC,2DAAkE;AAO3D,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IALvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,EAAE,uCAAuB,CAAC;QAChD,SAAS,EAAE,CAAC,4BAAY,EAAE,2CAAmB,EAAE,yCAAkB,EAAE,mCAAe,CAAC;QACnF,OAAO,EAAE,CAAC,4BAAY,EAAE,2CAAmB,EAAE,yCAAkB,EAAE,mCAAe,CAAC;KAClF,CAAC;GACW,WAAW,CAAG"}
@@ -1,5 +1,5 @@
1
1
  import { AgentProfile, SearchResult } from './rules.types';
2
- import type { Skill } from './skill.schema';
2
+ import type { Skill, SkillFrontmatterTrigger } from './skill.schema';
3
3
  import { CustomService } from '../custom';
4
4
  import { ConfigService } from '../config/config.service';
5
5
  export declare class RulesService {
@@ -17,6 +17,7 @@ export declare class RulesService {
17
17
  listSkillsFromDir(): Promise<Array<{
18
18
  name: string;
19
19
  description: string;
20
+ triggers?: SkillFrontmatterTrigger[];
20
21
  }>>;
21
22
  getSkill(name: string): Promise<Skill>;
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rules.service.js","sourceRoot":"","sources":["../../../src/rules/rules.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.service.js","sourceRoot":"","sources":["../../../src/rules/rules.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,2BAAgC;AAGhC,sCAA0C;AAC1C,6DAAyD;AACzD,4DAAuD;AACvD,qDAQ8B;AAGvB,IAAM,YAAY,oBAAlB,MAAM,YAAY;IAIvB,YACmB,aAA4B,EAC5B,aAA4B;QAD5B,kBAAa,GAAb,aAAa,CAAe;QAC5B,kBAAa,GAAb,aAAa,CAAe;QAL9B,WAAM,GAAG,IAAI,eAAM,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC;QAYtD,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,GAAG,IAAA,4BAAe,EAAC,SAAS,EAAE;gBACzC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;aAC/C,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iCAAiC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YAGH,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,GAAG,IAAA,4BAAe,EAAC,SAAS,EAAE;gBACzC,gBAAgB,EAAE,SAAS;aAC5B,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YAEP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YACpF,IAAI,CAAC,QAAQ,GAAG,IAAA,4BAAe,EAAC,SAAS,EAAE;gBACzC,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE;oBAC9B,IAAI,CAAC;wBACH,OAAO,IAAA,eAAU,EAAC,OAAO,CAAC,CAAC;oBAC7B,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAoB;QACvC,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,4BAAe,EAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,MAAgB;QAC3C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,2BAAW,CAAC,CAAC;QAElD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAErE,MAAM,gBAAgB,GAAG,2BAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtF,OAAO,CAAC,GAAG,gBAAgB,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,OAAQ,2BAAiC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAgB,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE5D,MAAM,KAAK,GAAiB;gBAC1B,GAAG,OAAO;gBACV,MAAM,EAAE,SAAS;aAClB,CAAC;YAGF,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;gBAC9D,IAAI,cAAc,EAAE,CAAC;oBACnB,KAAK,CAAC,aAAa,GAAG;wBACpB,GAAG,KAAK,CAAC,aAAa;wBACtB,QAAQ,EAAE,cAAc;qBACzB,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,4CAA4C,IAAI,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACtI,CAAC;YACJ,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAChF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAGvC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAE1E,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5C,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAClD,KAAK,EAAE,CAAC;gBACV,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,OAAO;oBACP,KAAK;oBACL,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,aAAa,GAAG;YACpB,eAAe;YACf,kBAAkB;YAClB,2BAA2B;YAC3B,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;SACvC,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,IAAA,8BAAiB,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QAGpF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAUD,KAAK,CAAC,iBAAiB;QAGrB,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,+BAAkB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACrF,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAQD,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,sBAAS,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,IAAI,EAAE,CAAC,CAAC;gBACxE,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AA9MY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAMuB,sBAAa;QACb,8BAAa;GANpC,YAAY,CA8MxB"}
@@ -3,10 +3,15 @@ export declare class SkillSchemaError extends Error {
3
3
  readonly details?: z.ZodError | undefined;
4
4
  constructor(message: string, details?: z.ZodError | undefined);
5
5
  }
6
+ export interface SkillFrontmatterTrigger {
7
+ pattern: string;
8
+ confidence: 'high' | 'medium' | 'low';
9
+ }
6
10
  export interface Skill {
7
11
  name: string;
8
12
  description: string;
9
13
  content: string;
10
14
  path: string;
15
+ triggers?: SkillFrontmatterTrigger[];
11
16
  }
12
17
  export declare function parseSkill(content: string, filePath: string): Skill;
@@ -13,12 +13,17 @@ class SkillSchemaError extends Error {
13
13
  }
14
14
  }
15
15
  exports.SkillSchemaError = SkillSchemaError;
16
+ const SkillFrontmatterTriggerSchema = z.object({
17
+ pattern: z.string().min(1),
18
+ confidence: z.enum(['high', 'medium', 'low']),
19
+ });
16
20
  const SkillFrontmatterSchema = z.object({
17
21
  name: z
18
22
  .string()
19
23
  .min(1)
20
24
  .regex(/^[a-z0-9-]+$/, 'Skill name must be lowercase alphanumeric with hyphens only'),
21
25
  description: z.string().min(1).max(500),
26
+ triggers: z.array(SkillFrontmatterTriggerSchema).optional(),
22
27
  });
23
28
  const FRONTMATTER_REGEX = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
24
29
  function parseFrontmatter(content) {
@@ -59,6 +64,7 @@ function parseSkill(content, filePath) {
59
64
  description: result.data.description,
60
65
  content: body,
61
66
  path: filePath,
67
+ triggers: result.data.triggers,
62
68
  };
63
69
  }
64
70
  //# sourceMappingURL=skill.schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.schema.js","sourceRoot":"","sources":["../../../src/rules/skill.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.schema.js","sourceRoot":"","sources":["../../../src/rules/skill.schema.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { AgentProfile, SearchResult } from '../rules/rules.types';
2
- import type { Skill } from '../rules/skill.schema';
2
+ import type { Skill, SkillFrontmatterTrigger } from '../rules/skill.schema';
3
3
  interface ResolveRulesDirOptions {
4
4
  envRulesDir?: string;
5
5
  packageRulesPath?: string;
@@ -23,6 +23,7 @@ export declare function searchInRuleFiles(rulesDir: string, query: string, files
23
23
  export declare function listSkillSummaries(rulesDir: string, deps?: FileSystemDeps): Promise<Array<{
24
24
  name: string;
25
25
  description: string;
26
+ triggers?: SkillFrontmatterTrigger[];
26
27
  }>>;
27
28
  export declare function loadSkill(rulesDir: string, name: string, deps?: FileSystemDeps): Promise<Skill>;
28
29
  export {};
@@ -132,6 +132,7 @@ async function listSkillSummaries(rulesDir, deps) {
132
132
  summaries.push({
133
133
  name: skill.name,
134
134
  description: skill.description,
135
+ triggers: skill.triggers,
135
136
  });
136
137
  }
137
138
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"rules-core.js","sourceRoot":"","sources":["../../../src/shared/rules-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules-core.js","sourceRoot":"","sources":["../../../src/shared/rules-core.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const VERSION = "5.1.3";
1
+ export declare const VERSION = "5.2.0";
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '5.1.3';
4
+ exports.VERSION = '5.2.0';
5
5
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,9 @@
1
+ interface MappedSpecialist {
2
+ specialist: string;
3
+ domain: string;
4
+ }
5
+ export declare class FileSpecialistMapper {
6
+ mapFile(filePath: string): MappedSpecialist[];
7
+ mapFiles(filePaths: string[]): MappedSpecialist[];
8
+ }
9
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileSpecialistMapper = void 0;
4
+ const MAPPINGS = [
5
+ {
6
+ pattern: /\.(ts|tsx)$/,
7
+ specialist: 'code-quality-specialist',
8
+ domain: 'code-quality',
9
+ },
10
+ {
11
+ pattern: /(auth|security|crypto|password|token|jwt)/i,
12
+ specialist: 'security-specialist',
13
+ domain: 'security',
14
+ },
15
+ {
16
+ pattern: /\.tsx$/,
17
+ specialist: 'accessibility-specialist',
18
+ domain: 'accessibility',
19
+ },
20
+ {
21
+ pattern: /(package\.json|webpack|vite|bundle)/i,
22
+ specialist: 'performance-specialist',
23
+ domain: 'performance',
24
+ },
25
+ ];
26
+ class FileSpecialistMapper {
27
+ mapFile(filePath) {
28
+ const matched = [];
29
+ const seen = new Set();
30
+ for (const mapping of MAPPINGS) {
31
+ if (mapping.pattern.test(filePath) && !seen.has(mapping.domain)) {
32
+ seen.add(mapping.domain);
33
+ matched.push({
34
+ specialist: mapping.specialist,
35
+ domain: mapping.domain,
36
+ });
37
+ }
38
+ }
39
+ return matched;
40
+ }
41
+ mapFiles(filePaths) {
42
+ const seen = new Set();
43
+ const result = [];
44
+ for (const filePath of filePaths) {
45
+ for (const mapped of this.mapFile(filePath)) {
46
+ if (!seen.has(mapped.domain)) {
47
+ seen.add(mapped.domain);
48
+ result.push(mapped);
49
+ }
50
+ }
51
+ }
52
+ return result;
53
+ }
54
+ }
55
+ exports.FileSpecialistMapper = FileSpecialistMapper;
56
+ //# sourceMappingURL=file-specialist-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-specialist-mapper.js","sourceRoot":"","sources":["../../../src/ship/file-specialist-mapper.ts"],"names":[],"mappings":";;;AAEA,MAAM,QAAQ,GAA4B;IACxC;QACE,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,yBAAyB;QACrC,MAAM,EAAE,cAAc;KACvB;IACD;QACE,OAAO,EAAE,4CAA4C;QACrD,UAAU,EAAE,qBAAqB;QACjC,MAAM,EAAE,UAAU;KACnB;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,0BAA0B;QACtC,MAAM,EAAE,eAAe;KACxB;IACD;QACE,OAAO,EAAE,sCAAsC;QAC/C,UAAU,EAAE,wBAAwB;QACpC,MAAM,EAAE,aAAa;KACtB;CACF,CAAC;AAOF,MAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAgB;QACtB,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC;oBACX,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,SAAmB;QAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,MAAM,GAAuB,EAAE,CAAC;QAEtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAjCD,oDAiCC"}
@@ -0,0 +1,6 @@
1
+ import type { QualityReportInput, QualityReportResult } from './quality-report.types';
2
+ export declare class QualityReportService {
3
+ private readonly mapper;
4
+ generateReport(input: QualityReportInput): Promise<QualityReportResult>;
5
+ private formatMarkdown;
6
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.QualityReportService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const file_specialist_mapper_1 = require("./file-specialist-mapper");
12
+ let QualityReportService = class QualityReportService {
13
+ constructor() {
14
+ this.mapper = new file_specialist_mapper_1.FileSpecialistMapper();
15
+ }
16
+ async generateReport(input) {
17
+ const start = Date.now();
18
+ const { changedFiles } = input;
19
+ const mappedSpecialists = this.mapper.mapFiles(changedFiles);
20
+ const domains = mappedSpecialists.map(mapped => ({
21
+ domain: mapped.domain,
22
+ specialist: mapped.specialist,
23
+ status: 'pass',
24
+ findings: [],
25
+ }));
26
+ const markdown = this.formatMarkdown(domains, changedFiles.length);
27
+ const duration = Date.now() - start;
28
+ return { domains, markdown, duration };
29
+ }
30
+ formatMarkdown(domains, fileCount) {
31
+ if (domains.length === 0) {
32
+ return '# Quality Report\n\nNo changed files to analyze.\n';
33
+ }
34
+ const lines = [
35
+ '# Quality Report',
36
+ '',
37
+ `**Files analyzed:** ${fileCount}`,
38
+ `**Domains detected:** ${domains.length}`,
39
+ '',
40
+ '| Domain | Specialist | Status | Findings |',
41
+ '|--------|-----------|--------|----------|',
42
+ ];
43
+ for (const domain of domains) {
44
+ const statusIcon = domain.status === 'pass' ? 'pass' : domain.status;
45
+ const findingsText = domain.findings.length > 0 ? domain.findings.join('; ') : 'No issues found';
46
+ lines.push(`| ${domain.domain} | ${domain.specialist} | ${statusIcon} | ${findingsText} |`);
47
+ }
48
+ lines.push('');
49
+ return lines.join('\n');
50
+ }
51
+ };
52
+ exports.QualityReportService = QualityReportService;
53
+ exports.QualityReportService = QualityReportService = __decorate([
54
+ (0, common_1.Injectable)()
55
+ ], QualityReportService);
56
+ //# sourceMappingURL=quality-report.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-report.service.js","sourceRoot":"","sources":["../../../src/ship/quality-report.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,qEAAgE;AAIzD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QACY,WAAM,GAAG,IAAI,6CAAoB,EAAE,CAAC;IA8CvD,CAAC;IA5CC,KAAK,CAAC,cAAc,CAAC,KAAyB;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;QAE/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAmB,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/D,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAe;YACvB,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAEpC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACzC,CAAC;IAEO,cAAc,CAAC,OAAuB,EAAE,SAAiB;QAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,oDAAoD,CAAC;QAC9D,CAAC;QAED,MAAM,KAAK,GAAa;YACtB,kBAAkB;YAClB,EAAE;YACF,uBAAuB,SAAS,EAAE;YAClC,yBAAyB,OAAO,CAAC,MAAM,EAAE;YACzC,EAAE;YACF,6CAA6C;YAC7C,4CAA4C;SAC7C,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACrE,MAAM,YAAY,GAChB,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAC9E,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,UAAU,MAAM,UAAU,MAAM,YAAY,IAAI,CAAC,CAAC;QAC9F,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF,CAAA;AA/CY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;GACA,oBAAoB,CA+ChC"}
@@ -0,0 +1,20 @@
1
+ export interface FileSpecialistMapping {
2
+ pattern: RegExp;
3
+ specialist: string;
4
+ domain: string;
5
+ }
6
+ export interface QualityReportInput {
7
+ changedFiles: string[];
8
+ timeout?: number;
9
+ }
10
+ export interface DomainResult {
11
+ domain: string;
12
+ specialist: string;
13
+ status: 'pass' | 'warning' | 'fail';
14
+ findings: string[];
15
+ }
16
+ export interface QualityReportResult {
17
+ domains: DomainResult[];
18
+ markdown: string;
19
+ duration: number;
20
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=quality-report.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-report.types.js","sourceRoot":"","sources":["../../../src/ship/quality-report.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare class ShipModule {
2
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ShipModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const quality_report_service_1 = require("./quality-report.service");
12
+ let ShipModule = class ShipModule {
13
+ };
14
+ exports.ShipModule = ShipModule;
15
+ exports.ShipModule = ShipModule = __decorate([
16
+ (0, common_1.Module)({
17
+ providers: [quality_report_service_1.QualityReportService],
18
+ exports: [quality_report_service_1.QualityReportService],
19
+ })
20
+ ], ShipModule);
21
+ //# sourceMappingURL=ship.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship.module.js","sourceRoot":"","sources":["../../../src/ship/ship.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qEAAgE;AAMzD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAJtB,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,6CAAoB,CAAC;QACjC,OAAO,EAAE,CAAC,6CAAoB,CAAC;KAChC,CAAC;GACW,UAAU,CAAG"}
@@ -1,6 +1,13 @@
1
+ import { type OnModuleInit } from '@nestjs/common';
1
2
  import type { RecommendSkillsResult, ListSkillsResult, ListSkillsOptions } from './skill-recommendation.types';
2
- export declare class SkillRecommendationService {
3
+ import { RulesService } from '../rules/rules.service';
4
+ export declare class SkillRecommendationService implements OnModuleInit {
5
+ private readonly rulesService;
6
+ private frontmatterTriggerCache;
7
+ constructor(rulesService: RulesService);
8
+ onModuleInit(): Promise<void>;
9
+ loadFrontmatterTriggers(): Promise<void>;
3
10
  recommendSkills(prompt: string): RecommendSkillsResult;
4
11
  private determineConfidence;
5
- listSkills(options?: ListSkillsOptions): ListSkillsResult;
12
+ listSkills(options?: ListSkillsOptions): Promise<ListSkillsResult>;
6
13
  }