@evolith/smart-cli 0.0.1-beta → 0.0.2-beta

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/ARCHITECTURE.md +667 -89
  2. package/dist/app.module.js +2 -0
  3. package/dist/app.module.js.map +1 -1
  4. package/dist/application/services/index.d.ts +14 -5
  5. package/dist/application/services/index.js +41 -3
  6. package/dist/application/services/index.js.map +1 -1
  7. package/dist/application/services/phase-transition.use-case.spec.d.ts +1 -0
  8. package/dist/application/services/phase-transition.use-case.spec.js +297 -0
  9. package/dist/application/services/phase-transition.use-case.spec.js.map +1 -0
  10. package/dist/commands/docs/docs.command.d.ts +5 -0
  11. package/dist/commands/docs/docs.command.js +159 -3
  12. package/dist/commands/docs/docs.command.js.map +1 -1
  13. package/dist/commands/drift/drift.command.d.ts +24 -0
  14. package/dist/commands/drift/drift.command.js +250 -0
  15. package/dist/commands/drift/drift.command.js.map +1 -0
  16. package/dist/commands/init/agents.command.spec.d.ts +1 -0
  17. package/dist/commands/init/agents.command.spec.js +152 -0
  18. package/dist/commands/init/agents.command.spec.js.map +1 -0
  19. package/dist/commands/init/upgrade.command.d.ts +10 -0
  20. package/dist/commands/init/upgrade.command.js +134 -1
  21. package/dist/commands/init/upgrade.command.js.map +1 -1
  22. package/dist/commands/sdlc/gate-status.command.d.ts +5 -0
  23. package/dist/commands/sdlc/gate-status.command.js +114 -0
  24. package/dist/commands/sdlc/gate-status.command.js.map +1 -0
  25. package/dist/commands/sdlc/sdlc.command.js +3 -1
  26. package/dist/commands/sdlc/sdlc.command.js.map +1 -1
  27. package/dist/commands/validate/validate.command.d.ts +4 -0
  28. package/dist/commands/validate/validate.command.js +39 -0
  29. package/dist/commands/validate/validate.command.js.map +1 -1
  30. package/dist/core/agents/agent-ruleset-builder.d.ts +30 -0
  31. package/dist/core/agents/agent-ruleset-builder.js +75 -0
  32. package/dist/core/agents/agent-ruleset-builder.js.map +1 -0
  33. package/dist/core/agents/agent-ruleset-builder.spec.d.ts +1 -0
  34. package/dist/core/agents/agent-ruleset-builder.spec.js +135 -0
  35. package/dist/core/agents/agent-ruleset-builder.spec.js.map +1 -0
  36. package/dist/core/mcp/server.d.ts +14 -9
  37. package/dist/core/mcp/server.js +236 -181
  38. package/dist/core/mcp/server.js.map +1 -1
  39. package/dist/core/services/command-history.service.spec.d.ts +1 -0
  40. package/dist/core/services/command-history.service.spec.js +166 -0
  41. package/dist/core/services/command-history.service.spec.js.map +1 -0
  42. package/dist/core/upgrade/satellite-upgrade.service.d.ts +48 -0
  43. package/dist/core/upgrade/satellite-upgrade.service.js +358 -0
  44. package/dist/core/upgrade/satellite-upgrade.service.js.map +1 -0
  45. package/dist/core/upgrade/satellite-upgrade.service.spec.d.ts +1 -0
  46. package/dist/core/upgrade/satellite-upgrade.service.spec.js +143 -0
  47. package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +1 -0
  48. package/dist/core/validators/architecture-drift.service.d.ts +68 -0
  49. package/dist/core/validators/architecture-drift.service.js +266 -0
  50. package/dist/core/validators/architecture-drift.service.js.map +1 -0
  51. package/dist/core/validators/architecture-drift.service.spec.d.ts +1 -0
  52. package/dist/core/validators/architecture-drift.service.spec.js +315 -0
  53. package/dist/core/validators/architecture-drift.service.spec.js.map +1 -0
  54. package/dist/core/validators/phase-gate-validator.service.d.ts +71 -0
  55. package/dist/core/validators/phase-gate-validator.service.js +271 -0
  56. package/dist/core/validators/phase-gate-validator.service.js.map +1 -0
  57. package/dist/core/validators/phase-gate-validator.service.spec.d.ts +1 -0
  58. package/dist/core/validators/phase-gate-validator.service.spec.js +326 -0
  59. package/dist/core/validators/phase-gate-validator.service.spec.js.map +1 -0
  60. package/dist/core/validators/ruleset-validator-architecture.spec.d.ts +1 -0
  61. package/dist/core/validators/ruleset-validator-architecture.spec.js +178 -0
  62. package/dist/core/validators/ruleset-validator-architecture.spec.js.map +1 -0
  63. package/dist/core/validators/ruleset-validator.service.d.ts +24 -0
  64. package/dist/core/validators/ruleset-validator.service.js +394 -0
  65. package/dist/core/validators/ruleset-validator.service.js.map +1 -1
  66. package/dist/core/validators/ruleset-validator.service.spec.js +4 -3
  67. package/dist/core/validators/ruleset-validator.service.spec.js.map +1 -1
  68. package/dist/domain/services/adr.service.spec.d.ts +1 -0
  69. package/dist/domain/services/adr.service.spec.js +141 -0
  70. package/dist/domain/services/adr.service.spec.js.map +1 -0
  71. package/dist/domain/services/agent-registry.service.spec.d.ts +1 -0
  72. package/dist/domain/services/agent-registry.service.spec.js +162 -0
  73. package/dist/domain/services/agent-registry.service.spec.js.map +1 -0
  74. package/dist/domain/services/standards.service.spec.d.ts +1 -0
  75. package/dist/domain/services/standards.service.spec.js +140 -0
  76. package/dist/domain/services/standards.service.spec.js.map +1 -0
  77. package/dist/domain/services/tool-usage-telemetry.service.spec.d.ts +1 -0
  78. package/dist/domain/services/tool-usage-telemetry.service.spec.js +180 -0
  79. package/dist/domain/services/tool-usage-telemetry.service.spec.js.map +1 -0
  80. package/dist/infrastructure/formatters/output-formatter.service.spec.d.ts +1 -0
  81. package/dist/infrastructure/formatters/output-formatter.service.spec.js +164 -0
  82. package/dist/infrastructure/formatters/output-formatter.service.spec.js.map +1 -0
  83. package/dist/main.js +0 -0
  84. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ruleset-validator.service.js","sourceRoot":"","sources":["../../../src/core/validators/ruleset-validator.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruleset-validator.service.js","sourceRoot":"","sources":["../../../src/core/validators/ruleset-validator.service.ts"],"names":[],"mappings":"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"}
@@ -56,15 +56,16 @@ describe('RulesetValidatorService', () => {
56
56
  });
57
57
  it('should pass when valid evolith.yaml exists', async () => {
58
58
  mockFileSystem.exists.mockResolvedValue(true);
59
- mockFileSystem.readFile.mockResolvedValue('coreRef:\n version: "1.0.0"\n path: /core');
59
+ mockFileSystem.readFile.mockResolvedValue('coreRef:\n version: "1.0.0"\n path: /core\ngovernance:\n version: "1.0.0"');
60
60
  mockConfigParser.parse.mockReturnValue({
61
- coreRef: { version: '1.0.0', path: '/core' }
61
+ coreRef: { version: '1.0.0', path: '/core' },
62
+ governance: { version: '1.0.0' }
62
63
  });
63
64
  mockFileSystem.existsSync.mockReturnValue(true);
64
65
  mockFileSystem.readdirNames.mockResolvedValue(['file.ts']);
65
66
  const result = await service.validate('/satellite');
66
- expect(result.status).toBe('passed');
67
67
  expect(result.coreRef.version).toBe('1.0.0');
68
+ expect(result.status).toMatch(/passed|warning/);
68
69
  });
69
70
  it('should warn when governance version is not declared', async () => {
70
71
  mockFileSystem.exists.mockResolvedValue(true);
@@ -1 +1 @@
1
- {"version":3,"file":"ruleset-validator.service.spec.js","sourceRoot":"","sources":["../../../src/core/validators/ruleset-validator.service.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruleset-validator.service.spec.js","sourceRoot":"","sources":["../../../src/core/validators/ruleset-validator.service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const adr_service_1 = require("./adr.service");
4
+ const mockFileSystem = {
5
+ exists: jest.fn(),
6
+ existsSync: jest.fn(),
7
+ readFile: jest.fn(),
8
+ readJson: jest.fn(),
9
+ readdirNames: jest.fn(),
10
+ writeFile: jest.fn(),
11
+ writeJson: jest.fn(),
12
+ ensureDir: jest.fn(),
13
+ remove: jest.fn(),
14
+ stat: jest.fn(),
15
+ };
16
+ describe('ADRService', () => {
17
+ let service;
18
+ beforeEach(() => {
19
+ jest.clearAllMocks();
20
+ service = new adr_service_1.ADRService(mockFileSystem, '/test');
21
+ });
22
+ describe('create', () => {
23
+ it('should create a new ADR', async () => {
24
+ mockFileSystem.exists.mockResolvedValue(false);
25
+ mockFileSystem.readdirNames.mockResolvedValue([]);
26
+ const input = {
27
+ title: 'Use Hexagonal Architecture',
28
+ context: 'We need clean separation of concerns',
29
+ decision: 'Adopt hexagonal architecture pattern',
30
+ consequences: {
31
+ positive: ['Better testability', 'Clear boundaries'],
32
+ negative: ['Initial complexity'],
33
+ },
34
+ };
35
+ const result = await service.create(input);
36
+ expect(result.id).toBe('ADR-0001');
37
+ expect(result.title).toBe(input.title);
38
+ expect(result.status).toBe('Proposed');
39
+ expect(mockFileSystem.writeJson).toHaveBeenCalled();
40
+ expect(mockFileSystem.writeFile).toHaveBeenCalled();
41
+ });
42
+ it('should increment ADR number', async () => {
43
+ mockFileSystem.exists.mockResolvedValue(true);
44
+ mockFileSystem.readdirNames.mockResolvedValue(['ADR-0001.json', 'ADR-0002.json']);
45
+ const fullAdr1 = { id: 'ADR-0001', number: 1, title: 'First', status: 'Proposed', date: '2026-01-01', context: '', decision: '', consequences: { positive: [], negative: [] } };
46
+ const fullAdr2 = { id: 'ADR-0002', number: 2, title: 'Second', status: 'Accepted', date: '2026-01-02', context: '', decision: '', consequences: { positive: [], negative: [] } };
47
+ mockFileSystem.readJson
48
+ .mockResolvedValueOnce(fullAdr1)
49
+ .mockResolvedValueOnce(fullAdr2)
50
+ .mockResolvedValueOnce(fullAdr1)
51
+ .mockResolvedValueOnce(fullAdr2);
52
+ const input = {
53
+ title: 'New ADR',
54
+ context: 'Context',
55
+ decision: 'Decision',
56
+ consequences: { positive: ['Good'], negative: ['Bad'] },
57
+ };
58
+ const result = await service.create(input);
59
+ expect(result.number).toBe(3);
60
+ expect(result.id).toBe('ADR-0003');
61
+ });
62
+ });
63
+ describe('list', () => {
64
+ it('should return empty array when directory does not exist', async () => {
65
+ mockFileSystem.exists.mockResolvedValue(false);
66
+ const result = await service.list();
67
+ expect(result).toEqual([]);
68
+ });
69
+ it('should return ADRs sorted by number descending', async () => {
70
+ mockFileSystem.exists.mockResolvedValue(true);
71
+ mockFileSystem.readdirNames.mockResolvedValue(['ADR-0001.json', 'ADR-0002.json']);
72
+ mockFileSystem.readJson
73
+ .mockResolvedValueOnce({ id: 'ADR-0001', number: 1, title: 'First', status: 'Proposed', date: '2026-01-01', context: '', decision: '', consequences: { positive: [], negative: [] } })
74
+ .mockResolvedValueOnce({ id: 'ADR-0002', number: 2, title: 'Second', status: 'Accepted', date: '2026-01-02', context: '', decision: '', consequences: { positive: [], negative: [] } });
75
+ const result = await service.list();
76
+ expect(result[0].number).toBe(2);
77
+ expect(result[1].number).toBe(1);
78
+ });
79
+ });
80
+ describe('get', () => {
81
+ it('should return ADR by id', async () => {
82
+ mockFileSystem.exists.mockResolvedValue(true);
83
+ mockFileSystem.readdirNames.mockResolvedValue(['ADR-0001.json']);
84
+ mockFileSystem.readJson.mockResolvedValue({ id: 'ADR-0001', number: 1, title: 'Test', status: 'Proposed', date: '2026-01-01', context: '', decision: '', consequences: { positive: [], negative: [] } });
85
+ const result = await service.get('ADR-0001');
86
+ expect(result?.id).toBe('ADR-0001');
87
+ });
88
+ it('should return ADR by number', async () => {
89
+ mockFileSystem.exists.mockResolvedValue(true);
90
+ mockFileSystem.readdirNames.mockResolvedValue(['ADR-0001.json']);
91
+ mockFileSystem.readJson.mockResolvedValue({ id: 'ADR-0001', number: 1, title: 'Test', status: 'Proposed', date: '2026-01-01', context: '', decision: '', consequences: { positive: [], negative: [] } });
92
+ const result = await service.get('ADR-0001');
93
+ expect(result?.id).toBe('ADR-0001');
94
+ });
95
+ it('should return undefined for non-existent ADR', async () => {
96
+ mockFileSystem.exists.mockResolvedValue(true);
97
+ mockFileSystem.readdirNames.mockResolvedValue([]);
98
+ const result = await service.get('ADR-9999');
99
+ expect(result).toBeUndefined();
100
+ });
101
+ });
102
+ describe('updateStatus', () => {
103
+ it('should update ADR status', async () => {
104
+ mockFileSystem.exists.mockResolvedValue(true);
105
+ mockFileSystem.readdirNames.mockResolvedValue(['ADR-0001.json']);
106
+ mockFileSystem.readJson.mockResolvedValue({
107
+ id: 'ADR-0001',
108
+ number: 1,
109
+ title: 'Test',
110
+ status: 'Proposed',
111
+ date: '2026-01-01',
112
+ context: '',
113
+ decision: '',
114
+ consequences: { positive: [], negative: [] },
115
+ });
116
+ const result = await service.updateStatus('ADR-0001', 'Accepted', 'Approved by board');
117
+ expect(result?.status).toBe('Accepted');
118
+ });
119
+ it('should return undefined for non-existent ADR', async () => {
120
+ mockFileSystem.exists.mockResolvedValue(true);
121
+ mockFileSystem.readdirNames.mockResolvedValue([]);
122
+ const result = await service.updateStatus('ADR-9999', 'Accepted');
123
+ expect(result).toBeUndefined();
124
+ });
125
+ });
126
+ describe('getMatrix', () => {
127
+ it('should return ADR matrix with summary', async () => {
128
+ mockFileSystem.exists.mockResolvedValue(true);
129
+ mockFileSystem.readdirNames.mockResolvedValue(['ADR-0001.json', 'ADR-0002.json']);
130
+ mockFileSystem.readJson
131
+ .mockResolvedValueOnce({ id: 'ADR-0001', number: 1, status: 'Accepted', title: '', date: '', context: '', decision: '', consequences: { positive: [], negative: [] } })
132
+ .mockResolvedValueOnce({ id: 'ADR-0002', number: 2, status: 'Proposed', title: '', date: '', context: '', decision: '', consequences: { positive: [], negative: [] } });
133
+ const matrix = await service.getMatrix();
134
+ expect(matrix.summary.total).toBe(2);
135
+ expect(matrix.summary.accepted).toBe(1);
136
+ expect(matrix.summary.proposed).toBe(1);
137
+ expect(matrix.adrs).toHaveLength(2);
138
+ });
139
+ });
140
+ });
141
+ //# sourceMappingURL=adr.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr.service.spec.js","sourceRoot":"","sources":["../../../src/domain/services/adr.service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const agent_registry_service_1 = require("./agent-registry.service");
4
+ const mockFileSystem = {
5
+ exists: jest.fn(),
6
+ existsSync: jest.fn(),
7
+ readFile: jest.fn(),
8
+ readJson: jest.fn(),
9
+ readdirNames: jest.fn(),
10
+ writeFile: jest.fn(),
11
+ writeJson: jest.fn(),
12
+ ensureDir: jest.fn(),
13
+ remove: jest.fn(),
14
+ stat: jest.fn(),
15
+ };
16
+ describe('AgentRegistryService', () => {
17
+ let service;
18
+ beforeEach(() => {
19
+ jest.clearAllMocks();
20
+ service = new agent_registry_service_1.AgentRegistryService(mockFileSystem);
21
+ });
22
+ describe('discover', () => {
23
+ it('should return empty array when agents directory does not exist', async () => {
24
+ mockFileSystem.exists.mockResolvedValue(false);
25
+ const result = await service.discover('/test-repo');
26
+ expect(result).toEqual([]);
27
+ });
28
+ it('should return agents from registry file', async () => {
29
+ mockFileSystem.exists.mockImplementation((p) => {
30
+ if (p.includes('agents-registry.json'))
31
+ return Promise.resolve(true);
32
+ if (p.includes('.evolith/agents'))
33
+ return Promise.resolve(true);
34
+ return Promise.resolve(false);
35
+ });
36
+ mockFileSystem.readJson.mockResolvedValue({
37
+ agents: [
38
+ { name: 'agent-1', version: '1.0.0', template: 'standard', rulesetFiles: [], installedAt: '2026-01-01' },
39
+ ],
40
+ lastUpdated: '2026-01-01',
41
+ });
42
+ const result = await service.discover('/test-repo');
43
+ expect(result).toHaveLength(1);
44
+ expect(result[0].name).toBe('agent-1');
45
+ });
46
+ it('should discover agents from directory structure', async () => {
47
+ mockFileSystem.exists.mockImplementation((p) => {
48
+ if (p.endsWith('agents-registry.json'))
49
+ return Promise.resolve(false);
50
+ if (p.endsWith('agent.json'))
51
+ return Promise.resolve(true);
52
+ if (p.endsWith('.evolith/agents'))
53
+ return Promise.resolve(true);
54
+ return Promise.resolve(false);
55
+ });
56
+ mockFileSystem.readdirNames.mockResolvedValue(['agent-a']);
57
+ mockFileSystem.stat.mockResolvedValue({ isDirectory: () => true });
58
+ mockFileSystem.readJson.mockResolvedValue({
59
+ name: 'agent-a',
60
+ version: '1.0.0',
61
+ template: 'standard',
62
+ rulesetFiles: [],
63
+ installedAt: '2026-01-01',
64
+ });
65
+ const result = await service.discover('/test-repo');
66
+ expect(result.length).toBe(1);
67
+ expect(result[0].name).toBe('agent-a');
68
+ });
69
+ it('should skip non-directory entries', async () => {
70
+ mockFileSystem.exists.mockImplementation((p) => {
71
+ if (p.includes('.evolith/agents'))
72
+ return Promise.resolve(true);
73
+ return Promise.resolve(false);
74
+ });
75
+ mockFileSystem.readdirNames.mockResolvedValue(['file.txt', 'agent-a']);
76
+ mockFileSystem.stat.mockImplementation((p) => {
77
+ if (p.includes('file.txt'))
78
+ return Promise.resolve({ isDirectory: () => false });
79
+ return Promise.resolve({ isDirectory: () => true });
80
+ });
81
+ const result = await service.discover('/test-repo');
82
+ expect(result).toEqual([]);
83
+ });
84
+ });
85
+ describe('register', () => {
86
+ it('should register a new agent', async () => {
87
+ mockFileSystem.exists.mockResolvedValue(false);
88
+ mockFileSystem.readJson.mockResolvedValue({ agents: [], lastUpdated: '' });
89
+ const agent = {
90
+ name: 'test-agent',
91
+ version: '1.0.0',
92
+ template: 'standard',
93
+ rulesetFiles: [],
94
+ installedAt: '2026-01-01',
95
+ };
96
+ await service.register('/test-repo', agent);
97
+ expect(mockFileSystem.ensureDir).toHaveBeenCalled();
98
+ expect(mockFileSystem.writeJson).toHaveBeenCalled();
99
+ });
100
+ it('should update existing agent', async () => {
101
+ mockFileSystem.exists.mockResolvedValue(true);
102
+ mockFileSystem.readJson.mockResolvedValue({
103
+ agents: [{ name: 'test-agent', version: '0.9.0', template: 'standard', rulesetFiles: [], installedAt: '2026-01-01' }],
104
+ lastUpdated: '2026-01-01',
105
+ });
106
+ const agent = {
107
+ name: 'test-agent',
108
+ version: '1.0.0',
109
+ template: 'standard',
110
+ rulesetFiles: [],
111
+ installedAt: '2026-01-02',
112
+ };
113
+ await service.register('/test-repo', agent);
114
+ expect(mockFileSystem.writeJson).toHaveBeenCalled();
115
+ });
116
+ });
117
+ describe('unregister', () => {
118
+ it('should remove agent from registry', async () => {
119
+ mockFileSystem.exists.mockResolvedValue(true);
120
+ mockFileSystem.readJson.mockResolvedValue({
121
+ agents: [
122
+ { name: 'agent-a', version: '1.0.0', template: 'standard', rulesetFiles: [], installedAt: '2026-01-01' },
123
+ { name: 'agent-b', version: '1.0.0', template: 'standard', rulesetFiles: [], installedAt: '2026-01-01' },
124
+ ],
125
+ lastUpdated: '2026-01-01',
126
+ });
127
+ await service.unregister('/test-repo', 'agent-a');
128
+ expect(mockFileSystem.writeJson).toHaveBeenCalled();
129
+ });
130
+ it('should do nothing if agent not found', async () => {
131
+ mockFileSystem.exists.mockResolvedValue(true);
132
+ mockFileSystem.readJson.mockResolvedValue({
133
+ agents: [{ name: 'agent-a', version: '1.0.0', template: 'standard', rulesetFiles: [], installedAt: '2026-01-01' }],
134
+ lastUpdated: '2026-01-01',
135
+ });
136
+ const result = await service.unregister('/test-repo', 'nonexistent');
137
+ expect(result).toBe(false);
138
+ });
139
+ });
140
+ describe('getAgent', () => {
141
+ it('should return agent by name', async () => {
142
+ mockFileSystem.exists.mockResolvedValue(true);
143
+ mockFileSystem.readJson.mockResolvedValue({
144
+ agents: [{ name: 'test-agent', version: '1.0.0', template: 'standard', rulesetFiles: [], installedAt: '2026-01-01' }],
145
+ lastUpdated: '2026-01-01',
146
+ });
147
+ const result = await service.getAgent('/test-repo', 'test-agent');
148
+ expect(result).toBeDefined();
149
+ expect(result?.name).toBe('test-agent');
150
+ });
151
+ it('should return undefined for non-existent agent', async () => {
152
+ mockFileSystem.exists.mockResolvedValue(true);
153
+ mockFileSystem.readJson.mockResolvedValue({
154
+ agents: [],
155
+ lastUpdated: '2026-01-01',
156
+ });
157
+ const result = await service.getAgent('/test-repo', 'nonexistent');
158
+ expect(result).toBeUndefined();
159
+ });
160
+ });
161
+ });
162
+ //# sourceMappingURL=agent-registry.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry.service.spec.js","sourceRoot":"","sources":["../../../src/domain/services/agent-registry.service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const standards_service_1 = require("./standards.service");
4
+ const mockFileSystem = {
5
+ exists: jest.fn(),
6
+ existsSync: jest.fn(),
7
+ readFile: jest.fn(),
8
+ readJson: jest.fn(),
9
+ readdirNames: jest.fn(),
10
+ writeFile: jest.fn(),
11
+ writeJson: jest.fn(),
12
+ ensureDir: jest.fn(),
13
+ remove: jest.fn(),
14
+ stat: jest.fn(),
15
+ };
16
+ describe('StandardsService', () => {
17
+ let service;
18
+ beforeEach(() => {
19
+ jest.clearAllMocks();
20
+ service = new standards_service_1.StandardsService(mockFileSystem, '/test');
21
+ });
22
+ describe('initialize', () => {
23
+ it('should create required directories', async () => {
24
+ await service.initialize();
25
+ expect(mockFileSystem.ensureDir).toHaveBeenCalledWith('/test/reference/standards');
26
+ expect(mockFileSystem.ensureDir).toHaveBeenCalledWith('/test/reference/standards/rulesets');
27
+ expect(mockFileSystem.ensureDir).toHaveBeenCalledWith('/test/reference/standards/templates');
28
+ });
29
+ it('should create index file if not exists', async () => {
30
+ mockFileSystem.exists.mockResolvedValue(false);
31
+ await service.initialize();
32
+ expect(mockFileSystem.writeJson).toHaveBeenCalledWith('/test/reference/standards/standards-index.json', expect.objectContaining({ standards: [] }));
33
+ });
34
+ it('should not overwrite existing index', async () => {
35
+ mockFileSystem.exists.mockResolvedValue(true);
36
+ await service.initialize();
37
+ expect(mockFileSystem.writeJson).not.toHaveBeenCalledWith('/test/reference/standards/standards-index.json', expect.anything());
38
+ });
39
+ });
40
+ describe('register', () => {
41
+ it('should register a new standard', async () => {
42
+ mockFileSystem.exists.mockResolvedValue(false);
43
+ const standard = {
44
+ id: 'STD-001',
45
+ name: 'Test Standard',
46
+ version: '1.0.0',
47
+ category: 'architecture',
48
+ description: 'A test standard',
49
+ rules: [],
50
+ };
51
+ await service.register(standard);
52
+ expect(mockFileSystem.ensureDir).toHaveBeenCalledWith('/test/reference/standards/architecture');
53
+ expect(mockFileSystem.writeJson).toHaveBeenCalledWith('/test/reference/standards/architecture/STD-001.json', standard);
54
+ });
55
+ it('should update index after registration', async () => {
56
+ mockFileSystem.exists.mockResolvedValue(false);
57
+ const standard = {
58
+ id: 'STD-002',
59
+ name: 'Another Standard',
60
+ version: '1.0.0',
61
+ category: 'governance',
62
+ description: 'Another test standard',
63
+ rules: [],
64
+ };
65
+ await service.register(standard);
66
+ expect(mockFileSystem.writeJson).toHaveBeenCalled();
67
+ });
68
+ });
69
+ describe('list', () => {
70
+ it('should return empty array when index does not exist', async () => {
71
+ mockFileSystem.exists.mockResolvedValue(false);
72
+ const result = await service.list();
73
+ expect(result).toEqual([]);
74
+ });
75
+ it('should return all standards from index', async () => {
76
+ mockFileSystem.exists.mockResolvedValue(true);
77
+ mockFileSystem.readJson.mockResolvedValue({
78
+ standards: [
79
+ { id: 'STD-001', name: 'Standard 1', category: 'architecture' },
80
+ { id: 'STD-002', name: 'Standard 2', category: 'governance' },
81
+ ],
82
+ });
83
+ const result = await service.list();
84
+ expect(result).toHaveLength(2);
85
+ });
86
+ it('should filter by category', async () => {
87
+ mockFileSystem.exists.mockResolvedValue(true);
88
+ mockFileSystem.readJson.mockResolvedValue({
89
+ standards: [
90
+ { id: 'STD-001', name: 'Standard 1', category: 'architecture' },
91
+ { id: 'STD-002', name: 'Standard 2', category: 'governance' },
92
+ ],
93
+ });
94
+ const result = await service.list('architecture');
95
+ expect(result).toHaveLength(1);
96
+ expect(result[0].id).toBe('STD-001');
97
+ });
98
+ });
99
+ describe('get', () => {
100
+ it('should return standard by id', async () => {
101
+ mockFileSystem.exists.mockResolvedValue(true);
102
+ mockFileSystem.readJson.mockResolvedValue({
103
+ standards: [
104
+ { id: 'STD-001', name: 'Standard 1', category: 'architecture' },
105
+ ],
106
+ });
107
+ const result = await service.get('STD-001');
108
+ expect(result).toBeDefined();
109
+ expect(result?.id).toBe('STD-001');
110
+ });
111
+ it('should return undefined for non-existent standard', async () => {
112
+ mockFileSystem.exists.mockResolvedValue(true);
113
+ mockFileSystem.readJson.mockResolvedValue({
114
+ standards: [],
115
+ });
116
+ const result = await service.get('NONEXISTENT');
117
+ expect(result).toBeUndefined();
118
+ });
119
+ });
120
+ describe('validate', () => {
121
+ it('should return validation result', async () => {
122
+ mockFileSystem.exists.mockResolvedValue(true);
123
+ mockFileSystem.readJson.mockResolvedValue({
124
+ standards: [
125
+ {
126
+ id: 'STD-001',
127
+ name: 'Test Standard',
128
+ rules: [
129
+ { id: 'R1', name: 'Rule 1', severity: 'error', description: 'Test rule' },
130
+ ],
131
+ },
132
+ ],
133
+ });
134
+ const result = await service.validate('test code');
135
+ expect(result).toHaveProperty('passed');
136
+ expect(result).toHaveProperty('results');
137
+ });
138
+ });
139
+ });
140
+ //# sourceMappingURL=standards.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards.service.spec.js","sourceRoot":"","sources":["../../../src/domain/services/standards.service.spec.ts"],"names":[],"mappings":";;AAAA,2DAAiE;AAEjE,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;IACjB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;IACrB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;IACnB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;IACnB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;IACvB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;IACjB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;CAChB,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAyB,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,GAAG,IAAI,oCAAgB,CAAC,cAAqB,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;YACnF,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,oCAAoC,CAAC,CAAC;YAC5F,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,qCAAqC,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACnD,gDAAgD,EAChD,MAAM,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAE9C,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,oBAAoB,CACvD,gDAAgD,EAChD,MAAM,CAAC,QAAQ,EAAE,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAa;gBACzB,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,cAAc;gBACxB,WAAW,EAAE,iBAAiB;gBAC9B,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wCAAwC,CAAC,CAAC;YAChG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACnD,qDAAqD,EACrD,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAa;gBACzB,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,uBAAuB;gBACpC,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;oBAC/D,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE;iBAC9D;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;oBAC/D,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE;iBAC9D;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACnB,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;iBAChE;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;yBAC1E;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}