@shiftleftpt/sbd-toe-mcp 0.1.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 (93) hide show
  1. package/.env.example +35 -0
  2. package/LICENSE +201 -0
  3. package/README.md +323 -0
  4. package/data/publish/algolia_docs_records.json +148847 -0
  5. package/data/publish/algolia_docs_records_enriched.json +194004 -0
  6. package/data/publish/algolia_entities_records.json +74715 -0
  7. package/data/publish/algolia_entities_records_enriched.json +177587 -0
  8. package/data/publish/algolia_index_settings.json +102 -0
  9. package/data/publish/sbd-toe-index-compact.json +111 -0
  10. package/data/reports/run_manifest.json +10 -0
  11. package/dist/backend/semantic-index-gateway.d.ts +25 -0
  12. package/dist/backend/semantic-index-gateway.js +555 -0
  13. package/dist/backend/semantic-index-gateway.js.map +1 -0
  14. package/dist/backend/semantic-index-gateway.test.d.ts +1 -0
  15. package/dist/backend/semantic-index-gateway.test.js +384 -0
  16. package/dist/backend/semantic-index-gateway.test.js.map +1 -0
  17. package/dist/bootstrap/checkout-backend.d.ts +31 -0
  18. package/dist/bootstrap/checkout-backend.js +136 -0
  19. package/dist/bootstrap/checkout-backend.js.map +1 -0
  20. package/dist/bootstrap/checkout-backend.test.d.ts +1 -0
  21. package/dist/bootstrap/checkout-backend.test.js +158 -0
  22. package/dist/bootstrap/checkout-backend.test.js.map +1 -0
  23. package/dist/bootstrap/release-checkout.d.ts +8 -0
  24. package/dist/bootstrap/release-checkout.js +168 -0
  25. package/dist/bootstrap/release-checkout.js.map +1 -0
  26. package/dist/bootstrap/release-checkout.test.d.ts +1 -0
  27. package/dist/bootstrap/release-checkout.test.js +137 -0
  28. package/dist/bootstrap/release-checkout.test.js.map +1 -0
  29. package/dist/config.d.ts +4 -0
  30. package/dist/config.js +81 -0
  31. package/dist/config.js.map +1 -0
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.js +1063 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/orchestrator/ask-manual.d.ts +13 -0
  36. package/dist/orchestrator/ask-manual.js +202 -0
  37. package/dist/orchestrator/ask-manual.js.map +1 -0
  38. package/dist/prompt/build-answer-prompt.d.ts +2 -0
  39. package/dist/prompt/build-answer-prompt.js +51 -0
  40. package/dist/prompt/build-answer-prompt.js.map +1 -0
  41. package/dist/prompt/system-prompt.d.ts +1 -0
  42. package/dist/prompt/system-prompt.js +94 -0
  43. package/dist/prompt/system-prompt.js.map +1 -0
  44. package/dist/resources/sbd-toe-resources.d.ts +18 -0
  45. package/dist/resources/sbd-toe-resources.js +164 -0
  46. package/dist/resources/sbd-toe-resources.js.map +1 -0
  47. package/dist/resources/sbd-toe-resources.test.d.ts +1 -0
  48. package/dist/resources/sbd-toe-resources.test.js +134 -0
  49. package/dist/resources/sbd-toe-resources.test.js.map +1 -0
  50. package/dist/test-utils.d.ts +153 -0
  51. package/dist/test-utils.js +176 -0
  52. package/dist/test-utils.js.map +1 -0
  53. package/dist/tools/generate-document.d.ts +22 -0
  54. package/dist/tools/generate-document.js +392 -0
  55. package/dist/tools/generate-document.js.map +1 -0
  56. package/dist/tools/generate-document.test.d.ts +1 -0
  57. package/dist/tools/generate-document.test.js +189 -0
  58. package/dist/tools/generate-document.test.js.map +1 -0
  59. package/dist/tools/map-review-scope.d.ts +20 -0
  60. package/dist/tools/map-review-scope.js +299 -0
  61. package/dist/tools/map-review-scope.js.map +1 -0
  62. package/dist/tools/map-review-scope.test.d.ts +1 -0
  63. package/dist/tools/map-review-scope.test.js +204 -0
  64. package/dist/tools/map-review-scope.test.js.map +1 -0
  65. package/dist/tools/plan-repo-governance.d.ts +41 -0
  66. package/dist/tools/plan-repo-governance.js +509 -0
  67. package/dist/tools/plan-repo-governance.js.map +1 -0
  68. package/dist/tools/plan-repo-governance.test.d.ts +1 -0
  69. package/dist/tools/plan-repo-governance.test.js +237 -0
  70. package/dist/tools/plan-repo-governance.test.js.map +1 -0
  71. package/dist/tools/structured-tools.d.ts +5 -0
  72. package/dist/tools/structured-tools.js +310 -0
  73. package/dist/tools/structured-tools.js.map +1 -0
  74. package/dist/tools/structured-tools.test.d.ts +1 -0
  75. package/dist/tools/structured-tools.test.js +459 -0
  76. package/dist/tools/structured-tools.test.js.map +1 -0
  77. package/dist/types.d.ts +160 -0
  78. package/dist/types.js +2 -0
  79. package/dist/types.js.map +1 -0
  80. package/dist/upstream/backend-contract.d.ts +3 -0
  81. package/dist/upstream/backend-contract.js +37 -0
  82. package/dist/upstream/backend-contract.js.map +1 -0
  83. package/dist/validators/ai-disclosure.d.ts +39 -0
  84. package/dist/validators/ai-disclosure.js +183 -0
  85. package/dist/validators/ai-disclosure.js.map +1 -0
  86. package/dist/validators/ai-disclosure.test.d.ts +1 -0
  87. package/dist/validators/ai-disclosure.test.js +244 -0
  88. package/dist/validators/ai-disclosure.test.js.map +1 -0
  89. package/examples/claude-desktop.json +8 -0
  90. package/examples/vscode.mcp.json +9 -0
  91. package/package.json +50 -0
  92. package/prompts/sbd-toe-chat-system.md +71 -0
  93. package/smithery.yaml +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sbd-toe-resources.js","sourceRoot":"","sources":["../../src/resources/sbd-toe-resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,134 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { buildSkillTemplateMarkdown, buildChapterApplicabilityJson, buildSetupAgentPrompt } from "./sbd-toe-resources.js";
3
+ describe("buildSkillTemplateMarkdown", () => {
4
+ it("L1 with projectRole returns non-empty string containing L1 and Cap.", () => {
5
+ const result = buildSkillTemplateMarkdown("L1", "mcp-wrapper");
6
+ expect(result).toBeTruthy();
7
+ expect(result).toContain("L1");
8
+ expect(result).toContain("Cap.");
9
+ expect(result).toContain("mcp-wrapper");
10
+ });
11
+ it("L2 with projectRole returns non-empty string containing L2", () => {
12
+ const result = buildSkillTemplateMarkdown("L2", "api-service");
13
+ expect(result.length).toBeGreaterThan(0);
14
+ expect(result).toContain("L2");
15
+ expect(result).toContain("api-service");
16
+ });
17
+ it("L3 with projectRole returns non-empty string containing L3", () => {
18
+ const result = buildSkillTemplateMarkdown("L3", "platform-service");
19
+ expect(result.length).toBeGreaterThan(0);
20
+ expect(result).toContain("L3");
21
+ });
22
+ it("invalid riskLevel L9 throws Error mentioning L9", () => {
23
+ expect(() => buildSkillTemplateMarkdown("L9", "x")).toThrow(Error);
24
+ expect(() => buildSkillTemplateMarkdown("L9", "x")).toThrow("L9");
25
+ });
26
+ it("output contains all required sections", () => {
27
+ const result = buildSkillTemplateMarkdown("L1", "mcp-wrapper");
28
+ expect(result).toContain("# SbD-ToE Skill Template");
29
+ expect(result).toContain("## Classificação de Risco");
30
+ expect(result).toContain("## Capítulos Activos");
31
+ expect(result).toContain("## Capítulos Condicionais");
32
+ expect(result).toContain("## Triggers de Consulta");
33
+ expect(result).toContain("## Requisitos Base");
34
+ });
35
+ it("L1 active chapters are all present in output", () => {
36
+ const result = buildSkillTemplateMarkdown("L1", "x");
37
+ expect(result).toContain("Cap. 01");
38
+ expect(result).toContain("Cap. 02");
39
+ expect(result).toContain("Cap. 06");
40
+ expect(result).toContain("Cap. 10");
41
+ });
42
+ it("L2 has wider active list than L1", () => {
43
+ const r1 = buildSkillTemplateMarkdown("L1", "x");
44
+ const r2 = buildSkillTemplateMarkdown("L2", "x");
45
+ // L2 has Cap. 03 and Cap. 04 active; they are only conditional in L1
46
+ expect(r2).toContain("Cap. 03");
47
+ expect(r2).toContain("Cap. 04");
48
+ // L1 lists Cap. 03 as conditional
49
+ expect(r1).toContain("Cap. 03");
50
+ });
51
+ });
52
+ describe("buildChapterApplicabilityJson", () => {
53
+ it("L1 returns object with riskLevel and active/conditional/excluded as arrays", () => {
54
+ const result = buildChapterApplicabilityJson("L1");
55
+ expect(result["riskLevel"]).toBe("L1");
56
+ expect(Array.isArray(result["active"])).toBe(true);
57
+ expect(Array.isArray(result["conditional"])).toBe(true);
58
+ expect(Array.isArray(result["excluded"])).toBe(true);
59
+ expect(result["active"].length).toBeGreaterThan(0);
60
+ });
61
+ it("L2 returns object with riskLevel and all arrays", () => {
62
+ const result = buildChapterApplicabilityJson("L2");
63
+ expect(result["riskLevel"]).toBe("L2");
64
+ expect(Array.isArray(result["active"])).toBe(true);
65
+ expect(Array.isArray(result["conditional"])).toBe(true);
66
+ expect(Array.isArray(result["excluded"])).toBe(true);
67
+ expect(result["active"].length).toBeGreaterThan(0);
68
+ });
69
+ it("L3 returns object with riskLevel and all arrays; excluded is empty", () => {
70
+ const result = buildChapterApplicabilityJson("L3");
71
+ expect(result["riskLevel"]).toBe("L3");
72
+ expect(Array.isArray(result["active"])).toBe(true);
73
+ expect(Array.isArray(result["conditional"])).toBe(true);
74
+ expect(Array.isArray(result["excluded"])).toBe(true);
75
+ expect(result["excluded"].length).toBe(0);
76
+ });
77
+ it("invalid riskLevel X throws Error mentioning X", () => {
78
+ expect(() => buildChapterApplicabilityJson("X")).toThrow(Error);
79
+ expect(() => buildChapterApplicabilityJson("X")).toThrow("X");
80
+ });
81
+ it("L1 active list contains expected chapters from docs/sbd-toe-applicability.md", () => {
82
+ const result = buildChapterApplicabilityJson("L1");
83
+ expect(result.active).toContain("Cap. 01");
84
+ expect(result.active).toContain("Cap. 02");
85
+ expect(result.active).toContain("Cap. 05");
86
+ expect(result.active).toContain("Cap. 06");
87
+ expect(result.active).toContain("Cap. 07");
88
+ expect(result.active).toContain("Cap. 10");
89
+ });
90
+ it("L1 conditional list contains Cap. 03, Cap. 04, Cap. 11, Cap. 12, Cap. 14", () => {
91
+ const result = buildChapterApplicabilityJson("L1");
92
+ expect(result.conditional).toContain("Cap. 03");
93
+ expect(result.conditional).toContain("Cap. 04");
94
+ expect(result.conditional).toContain("Cap. 11");
95
+ expect(result.conditional).toContain("Cap. 12");
96
+ expect(result.conditional).toContain("Cap. 14");
97
+ });
98
+ });
99
+ describe("buildSetupAgentPrompt", () => {
100
+ it("L1 returns non-empty string containing L1 and Cap. 01", () => {
101
+ const result = buildSetupAgentPrompt("L1");
102
+ expect(result.length).toBeGreaterThan(0);
103
+ expect(result).toContain("L1");
104
+ expect(result).toContain("Cap. 01");
105
+ });
106
+ it("L1 with projectRole includes projectRole in text", () => {
107
+ const result = buildSetupAgentPrompt("L1", "mcp-wrapper");
108
+ expect(result).toContain("mcp-wrapper");
109
+ });
110
+ it("L1 without projectRole still contains mandatory rules", () => {
111
+ const result = buildSetupAgentPrompt("L1");
112
+ expect(result).toContain("Cap. 01 → Cap. 02");
113
+ expect(result).toContain("search_sbd_toe_manual");
114
+ });
115
+ it("L2 includes L2 active chapters", () => {
116
+ const result = buildSetupAgentPrompt("L2");
117
+ expect(result).toContain("L2");
118
+ expect(result).toContain("Cap. 03");
119
+ expect(result).toContain("Cap. 04");
120
+ });
121
+ it("L3 has no conditional chapters", () => {
122
+ const result = buildSetupAgentPrompt("L3");
123
+ expect(result).toContain("L3");
124
+ expect(result).toContain("nenhum");
125
+ });
126
+ it("invalid L4 riskLevel throws Error mentioning L4", () => {
127
+ expect(() => buildSetupAgentPrompt("L4")).toThrow(Error);
128
+ expect(() => buildSetupAgentPrompt("L4")).toThrow("L4");
129
+ });
130
+ it("invalid empty string riskLevel throws Error", () => {
131
+ expect(() => buildSetupAgentPrompt("")).toThrow(Error);
132
+ });
133
+ });
134
+ //# sourceMappingURL=sbd-toe-resources.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sbd-toe-resources.test.js","sourceRoot":"","sources":["../../src/resources/sbd-toe-resources.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ import type { SnapshotPayload } from "./types.js";
2
+ /**
3
+ * Mock de um snapshot com items vazios.
4
+ */
5
+ export declare const emptySnapshotPayload: SnapshotPayload;
6
+ /**
7
+ * Mock de um snapshot con items comuns para testes.
8
+ */
9
+ export declare const mockSnapshotPayload: SnapshotPayload;
10
+ /**
11
+ * Mock com campos vazios/undefined para testes de edge cases.
12
+ */
13
+ export declare const edgeCaseSnapshotPayload: SnapshotPayload;
14
+ /**
15
+ * Mock do backend checkout de testes.
16
+ */
17
+ export declare const mockBackendCheckout: {
18
+ schemaVersion: string;
19
+ checkedOutAt: string;
20
+ upstreamRepoPath: string;
21
+ contractFiles: {
22
+ docsSnapshot: string;
23
+ entitiesSnapshot: string;
24
+ docsEnrichedSnapshot: string;
25
+ entitiesEnrichedSnapshot: string;
26
+ indexSettings: string;
27
+ runManifest: string;
28
+ };
29
+ runManifest: {
30
+ runId: string;
31
+ generatedAt: string;
32
+ branch: string;
33
+ commitSha: string;
34
+ repoUrl: string;
35
+ };
36
+ indices: {
37
+ docs: {
38
+ indexName: string;
39
+ recordFamily: string;
40
+ settings: {};
41
+ };
42
+ entities: {
43
+ indexName: string;
44
+ recordFamily: string;
45
+ settings: {};
46
+ };
47
+ };
48
+ };
49
+ /**
50
+ * Helper para criar um record normalizado mock para testes de score e intent.
51
+ */
52
+ export declare function createMockNormalizedRecord(overrides?: Record<string, unknown>): {
53
+ citationId: string;
54
+ source: "docs";
55
+ indexName: string;
56
+ objectID: string;
57
+ title: string;
58
+ excerpt: string;
59
+ chapter: string;
60
+ section: string;
61
+ role: string;
62
+ phase: string;
63
+ action: string;
64
+ artefact: string;
65
+ url: string;
66
+ pageLabel: string;
67
+ documentPath: string;
68
+ chapterPath: string;
69
+ documentTitle: string;
70
+ tags: string[];
71
+ aliases_pt_en: undefined;
72
+ intent_topics: undefined;
73
+ canonical_control_ids: undefined;
74
+ artifact_ids: undefined;
75
+ authority_level: undefined;
76
+ algoliaRank: number;
77
+ localScore: number;
78
+ raw: {
79
+ objectID: string;
80
+ title: string;
81
+ content: string;
82
+ };
83
+ };
84
+ /**
85
+ * Helper para criar um record com intent topics específicos.
86
+ */
87
+ export declare function createMockRecordWithIntentTopics(intent: string, overrides?: Record<string, unknown>): {
88
+ citationId: string;
89
+ source: "docs";
90
+ indexName: string;
91
+ objectID: string;
92
+ title: string;
93
+ excerpt: string;
94
+ chapter: string;
95
+ section: string;
96
+ role: string;
97
+ phase: string;
98
+ action: string;
99
+ artefact: string;
100
+ url: string;
101
+ pageLabel: string;
102
+ documentPath: string;
103
+ chapterPath: string;
104
+ documentTitle: string;
105
+ tags: string[];
106
+ aliases_pt_en: undefined;
107
+ intent_topics: undefined;
108
+ canonical_control_ids: undefined;
109
+ artifact_ids: undefined;
110
+ authority_level: undefined;
111
+ algoliaRank: number;
112
+ localScore: number;
113
+ raw: {
114
+ objectID: string;
115
+ title: string;
116
+ content: string;
117
+ };
118
+ };
119
+ /**
120
+ * Helper para criar um record com aliases.
121
+ */
122
+ export declare function createMockRecordWithAliases(aliases: string[], overrides?: Record<string, unknown>): {
123
+ citationId: string;
124
+ source: "docs";
125
+ indexName: string;
126
+ objectID: string;
127
+ title: string;
128
+ excerpt: string;
129
+ chapter: string;
130
+ section: string;
131
+ role: string;
132
+ phase: string;
133
+ action: string;
134
+ artefact: string;
135
+ url: string;
136
+ pageLabel: string;
137
+ documentPath: string;
138
+ chapterPath: string;
139
+ documentTitle: string;
140
+ tags: string[];
141
+ aliases_pt_en: undefined;
142
+ intent_topics: undefined;
143
+ canonical_control_ids: undefined;
144
+ artifact_ids: undefined;
145
+ authority_level: undefined;
146
+ algoliaRank: number;
147
+ localScore: number;
148
+ raw: {
149
+ objectID: string;
150
+ title: string;
151
+ content: string;
152
+ };
153
+ };
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Mock de um snapshot com items vazios.
3
+ */
4
+ export const emptySnapshotPayload = {
5
+ run_id: "test-run-001",
6
+ items: []
7
+ };
8
+ /**
9
+ * Mock de um snapshot con items comuns para testes.
10
+ */
11
+ export const mockSnapshotPayload = {
12
+ run_id: "test-run-001",
13
+ items: [
14
+ {
15
+ objectID: "doc-001",
16
+ title: "Como fazer bootstrap do repositório",
17
+ content: "Instruções para bootstrap inicial",
18
+ chapter_title: "Cap. 01",
19
+ section_title: "Bootstrap",
20
+ tags: ["bootstrap", "setup"],
21
+ aliases_pt_en: ["repository initialization", "initial setup"],
22
+ intent_topics: ["bootstrap"],
23
+ canonical_control_ids: ["REQ-001"],
24
+ artifact_ids: ["ART-001"],
25
+ authority_level: "canonical"
26
+ },
27
+ {
28
+ objectID: "doc-002",
29
+ title: "Dependências de segurança",
30
+ content: "Gestão de dependências com SBOM e SCA",
31
+ chapter_title: "Cap. 05",
32
+ section_title: "Dependências",
33
+ tags: ["dependencies", "sbom", "sca"],
34
+ aliases_pt_en: ["dependency management", "package security"],
35
+ intent_topics: ["dependency_governance"],
36
+ canonical_control_ids: ["REQ-002"],
37
+ artifact_ids: ["ART-002"],
38
+ authority_level: "guidance"
39
+ },
40
+ {
41
+ objectID: "doc-003",
42
+ title: "CI/CD Gates e Aprovações",
43
+ content: "Configurar gates no pipeline e aprovações de release",
44
+ chapter_title: "Cap. 07",
45
+ section_title: "CI/CD Seguro",
46
+ tags: ["ci/cd", "pipeline", "approval"],
47
+ aliases_pt_en: ["continuous integration", "release gates"],
48
+ intent_topics: ["ci_cd_gates"],
49
+ canonical_control_ids: ["REQ-003"],
50
+ artifact_ids: [],
51
+ authority_level: "canonical"
52
+ },
53
+ {
54
+ // Record sem objectID - deve ser ignorado em enrichment
55
+ title: "Record sem ID",
56
+ content: "Não tem objectID",
57
+ chapter_title: "Cap. 00"
58
+ },
59
+ {
60
+ objectID: "doc-004",
61
+ // Sem campos de enrichment
62
+ title: "Record simples",
63
+ content: "Sem enrichment fields"
64
+ }
65
+ ]
66
+ };
67
+ /**
68
+ * Mock com campos vazios/undefined para testes de edge cases.
69
+ */
70
+ export const edgeCaseSnapshotPayload = {
71
+ items: [
72
+ {
73
+ objectID: "edge-001",
74
+ title: " título com espaços ",
75
+ content: undefined,
76
+ aliases_pt_en: [] // Array vazio
77
+ },
78
+ {
79
+ objectID: "edge-002",
80
+ title: "Record com tags inválidas",
81
+ tags: ["", null, 123] // Valores inválidos
82
+ }
83
+ ]
84
+ };
85
+ /**
86
+ * Mock do backend checkout de testes.
87
+ */
88
+ export const mockBackendCheckout = {
89
+ schemaVersion: "0.1.0",
90
+ checkedOutAt: new Date().toISOString(),
91
+ upstreamRepoPath: "/upstream/repo",
92
+ contractFiles: {
93
+ docsSnapshot: "data/publish/docs.json",
94
+ entitiesSnapshot: "data/publish/entities.json",
95
+ docsEnrichedSnapshot: "data/publish/docs_enriched.json",
96
+ entitiesEnrichedSnapshot: "data/publish/entities_enriched.json",
97
+ indexSettings: "data/publish/index_settings.json",
98
+ runManifest: "data/reports/run_manifest.json"
99
+ },
100
+ runManifest: {
101
+ runId: "test-run-001",
102
+ generatedAt: "2026-03-24T10:00:00Z",
103
+ branch: "main",
104
+ commitSha: "abc123def456",
105
+ repoUrl: "https://github.com/test/repo"
106
+ },
107
+ indices: {
108
+ docs: {
109
+ indexName: "sbd_toe_docs_test",
110
+ recordFamily: "documents",
111
+ settings: {}
112
+ },
113
+ entities: {
114
+ indexName: "sbd_toe_entities_test",
115
+ recordFamily: "entities",
116
+ settings: {}
117
+ }
118
+ }
119
+ };
120
+ /**
121
+ * Helper para criar um record normalizado mock para testes de score e intent.
122
+ */
123
+ export function createMockNormalizedRecord(overrides = {}) {
124
+ return {
125
+ citationId: "D1",
126
+ source: "docs",
127
+ indexName: "test_index",
128
+ objectID: "test-001",
129
+ title: "Test Record",
130
+ excerpt: "This is a test excerpt",
131
+ chapter: "Cap. 01",
132
+ section: "Section 1",
133
+ role: "Developer",
134
+ phase: "Development",
135
+ action: "Implementation",
136
+ artefact: "Code",
137
+ url: "https://example.com/test",
138
+ pageLabel: "page-1",
139
+ documentPath: "docs/chapter-01",
140
+ chapterPath: "chapter-01",
141
+ documentTitle: "Test Document",
142
+ tags: ["test", "mock"],
143
+ aliases_pt_en: undefined,
144
+ intent_topics: undefined,
145
+ canonical_control_ids: undefined,
146
+ artifact_ids: undefined,
147
+ authority_level: undefined,
148
+ algoliaRank: 1,
149
+ localScore: 0,
150
+ raw: {
151
+ objectID: "test-001",
152
+ title: "Test Record",
153
+ content: "Test content"
154
+ },
155
+ ...overrides
156
+ };
157
+ }
158
+ /**
159
+ * Helper para criar um record com intent topics específicos.
160
+ */
161
+ export function createMockRecordWithIntentTopics(intent, overrides = {}) {
162
+ return createMockNormalizedRecord({
163
+ intent_topics: [intent, "secondary_topic"],
164
+ ...overrides
165
+ });
166
+ }
167
+ /**
168
+ * Helper para criar um record com aliases.
169
+ */
170
+ export function createMockRecordWithAliases(aliases, overrides = {}) {
171
+ return createMockNormalizedRecord({
172
+ aliases_pt_en: aliases,
173
+ ...overrides
174
+ });
175
+ }
176
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ declare const VALID_RISK_LEVELS: readonly ["L1", "L2", "L3"];
2
+ type RiskLevel = (typeof VALID_RISK_LEVELS)[number];
3
+ type FieldRequired = "mandatory" | "conditional" | "optional";
4
+ interface Field {
5
+ name: string;
6
+ required: FieldRequired;
7
+ guidance: string;
8
+ }
9
+ interface Section {
10
+ name: string;
11
+ mandatory: boolean;
12
+ fields: Field[];
13
+ }
14
+ interface GenerateDocumentResult {
15
+ documentType: string;
16
+ riskLevel: RiskLevel;
17
+ sections: Section[];
18
+ acceptanceCriteria: string[];
19
+ relevantBundles: string[];
20
+ }
21
+ export declare function handleGenerateDocument(args: Record<string, unknown>): GenerateDocumentResult;
22
+ export {};