@devtrack-solution/codesdd 1.2.4-rc3 → 1.2.4
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.
- package/.sdd/skills/curated/devtrack-api/SKILL.md +91 -12
- package/.sdd/skills/curated/devtrack-api/agents/claude-code.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/codex.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/cursor.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/gemini.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/kimi.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +3 -3
- package/.sdd/skills/curated/devtrack-api/agents/opencode.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/references/application-presentation.md +59 -3
- package/.sdd/skills/curated/devtrack-api/references/consumer-sync-policy.md +15 -3
- package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +1898 -2
- package/.sdd/skills/curated/devtrack-api/references/domain-modeling.md +3 -1
- package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +40 -0
- package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +20 -2
- package/.sdd/skills/curated/devtrack-api/references/generated-artifact-invalidation.md +97 -0
- package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +30 -1
- package/.sdd/skills/curated/devtrack-api/references/portable-agent-contract.md +4 -3
- package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +22 -1
- package/.sdd/skills/curated/devtrack-api/references/typeorm-infrastructure.md +9 -5
- package/README.md +122 -25
- package/dist/cli/program.js +180 -11
- package/dist/commands/config.js +27 -1
- package/dist/commands/sdd/execution.js +64 -2
- package/dist/commands/sdd.js +119 -4
- package/dist/core/cli/command-matrix.d.ts +18 -0
- package/dist/core/cli/command-matrix.js +148 -0
- package/dist/core/cli-command-quality.js +2 -0
- package/dist/core/config-schema.d.ts +14 -1
- package/dist/core/config-schema.js +32 -1
- package/dist/core/config.d.ts +1 -0
- package/dist/core/config.js +11 -0
- package/dist/core/global-config.d.ts +13 -0
- package/dist/core/init.d.ts +2 -2
- package/dist/core/init.js +13 -14
- package/dist/core/sdd/agent-binding.d.ts +9 -9
- package/dist/core/sdd/agent-runtime-contract.d.ts +4 -4
- package/dist/core/sdd/allocator-recovery.d.ts +14 -0
- package/dist/core/sdd/allocator-recovery.js +30 -0
- package/dist/core/sdd/allocator-security.d.ts +18 -0
- package/dist/core/sdd/allocator-security.js +36 -0
- package/dist/core/sdd/api-foundation-baseline.d.ts +111 -0
- package/dist/core/sdd/api-foundation-baseline.js +151 -0
- package/dist/core/sdd/api-foundation-parity.d.ts +114 -0
- package/dist/core/sdd/api-foundation-parity.js +131 -0
- package/dist/core/sdd/api-profile-catalog.d.ts +36 -0
- package/dist/core/sdd/api-profile-catalog.js +132 -0
- package/dist/core/sdd/api-profile-dry-run-projection.d.ts +93 -0
- package/dist/core/sdd/api-profile-dry-run-projection.js +370 -0
- package/dist/core/sdd/api-profile-recipes.d.ts +82 -0
- package/dist/core/sdd/api-profile-recipes.js +484 -0
- package/dist/core/sdd/artifact-id-allocator.d.ts +368 -0
- package/dist/core/sdd/artifact-id-allocator.js +510 -0
- package/dist/core/sdd/check.d.ts +50 -1
- package/dist/core/sdd/check.js +286 -9
- package/dist/core/sdd/deepagent-contracts.d.ts +4 -4
- package/dist/core/sdd/deepagents/reversa-subagents.d.ts +3 -3
- package/dist/core/sdd/default-bootstrap-files.d.ts +1 -1
- package/dist/core/sdd/default-bootstrap-files.js +0 -2
- package/dist/core/sdd/default-skills.js +7 -5
- package/dist/core/sdd/devtrack-api-appliance.d.ts +34 -0
- package/dist/core/sdd/devtrack-api-appliance.js +138 -34
- package/dist/core/sdd/devtrack-api-architecture.d.ts +16 -0
- package/dist/core/sdd/devtrack-api-architecture.js +86 -0
- package/dist/core/sdd/docs-sync.js +3 -3
- package/dist/core/sdd/enterprise-mutating-command-gate.d.ts +27 -0
- package/dist/core/sdd/enterprise-mutating-command-gate.js +104 -0
- package/dist/core/sdd/enterprise-provenance-gates.d.ts +20 -0
- package/dist/core/sdd/enterprise-provenance-gates.js +63 -0
- package/dist/core/sdd/enterprise-provisioning-policy.d.ts +26 -0
- package/dist/core/sdd/enterprise-provisioning-policy.js +104 -0
- package/dist/core/sdd/governance-schemas.d.ts +2 -2
- package/dist/core/sdd/governance-schemas.js +11 -2
- package/dist/core/sdd/json-schema.js +4 -0
- package/dist/core/sdd/legacy-operations.js +93 -4
- package/dist/core/sdd/package-security-gates.js +2 -0
- package/dist/core/sdd/package-structure-gate.d.ts +85 -3
- package/dist/core/sdd/package-structure-gate.js +386 -8
- package/dist/core/sdd/parallel-feat-automation.d.ts +6 -6
- package/dist/core/sdd/plugin-policy.js +6 -1
- package/dist/core/sdd/plugin-registry.d.ts +3 -3
- package/dist/core/sdd/quality-validation.d.ts +5 -5
- package/dist/core/sdd/release-readiness.d.ts +49 -0
- package/dist/core/sdd/release-readiness.js +303 -8
- package/dist/core/sdd/reversa-architecture-extractor.d.ts +13 -0
- package/dist/core/sdd/reversa-architecture-extractor.js +89 -0
- package/dist/core/sdd/reversa-artifact-writer.d.ts +18 -0
- package/dist/core/sdd/reversa-artifact-writer.js +40 -0
- package/dist/core/sdd/reversa-command-policy.d.ts +136 -0
- package/dist/core/sdd/reversa-command-policy.js +361 -0
- package/dist/core/sdd/reversa-data-extractor.d.ts +11 -0
- package/dist/core/sdd/reversa-data-extractor.js +73 -0
- package/dist/core/sdd/reversa-equivalence.d.ts +20 -0
- package/dist/core/sdd/reversa-equivalence.js +34 -0
- package/dist/core/sdd/reversa-evidence.d.ts +298 -0
- package/dist/core/sdd/reversa-evidence.js +118 -0
- package/dist/core/sdd/reversa-reconstruction.d.ts +29 -0
- package/dist/core/sdd/reversa-reconstruction.js +32 -0
- package/dist/core/sdd/reversa-rules-extractor.d.ts +12 -0
- package/dist/core/sdd/reversa-rules-extractor.js +86 -0
- package/dist/core/sdd/reversa-source-safety.d.ts +19 -0
- package/dist/core/sdd/reversa-source-safety.js +105 -0
- package/dist/core/sdd/reversa-surface-scout.d.ts +13 -0
- package/dist/core/sdd/reversa-surface-scout.js +85 -0
- package/dist/core/sdd/reversa-ux-mapper.d.ts +11 -0
- package/dist/core/sdd/reversa-ux-mapper.js +73 -0
- package/dist/core/sdd/sdk-agent-plugin-quality-gates.d.ts +1 -1
- package/dist/core/sdd/services/archive-quality-coherence.service.d.ts +17 -0
- package/dist/core/sdd/services/archive-quality-coherence.service.js +141 -0
- package/dist/core/sdd/services/decide.service.js +1 -1
- package/dist/core/sdd/services/finalize.service.d.ts +2 -0
- package/dist/core/sdd/services/finalize.service.js +48 -2
- package/dist/core/sdd/services/historical-quality-regression.service.d.ts +35 -0
- package/dist/core/sdd/services/historical-quality-regression.service.js +228 -0
- package/dist/core/sdd/services/ingest-deposito.service.js +1 -1
- package/dist/core/sdd/services/planning-execution-coherence.service.d.ts +45 -0
- package/dist/core/sdd/services/planning-execution-coherence.service.js +225 -0
- package/dist/core/sdd/state.js +15 -5
- package/dist/core/sdd/types.d.ts +3 -3
- package/dist/core/sdd/workspace-schemas.d.ts +45 -4
- package/dist/core/sdd/workspace-schemas.js +27 -6
- package/dist/core/shared/skill-generation.d.ts +2 -0
- package/dist/core/shared/skill-generation.js +19 -2
- package/dist/core/shared/tool-detection.d.ts +19 -0
- package/dist/core/shared/tool-detection.js +89 -0
- package/package.json +6 -5
- package/schemas/sdd/5-quality.schema.json +43 -0
- package/schemas/sdd/reversa-evidence-bundle.schema.json +466 -0
- package/schemas/sdd/workspace-catalog.schema.json +511 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { CODESDD_API_PROFILE_DEFINITIONS, CODESDD_API_PROFILE_IDS, CODESDD_API_SHARED_BASELINE_QUALITY_GATES, CODESDD_AI_AGENT_API_PROFILE_QUALITY_GATES, CODESDD_EVENTED_API_PROFILE_QUALITY_GATES, CODESDD_MINIMAL_REST_PROFILE_QUALITY_GATES, CODESDD_REST_AUTH_RBAC_PROFILE_QUALITY_GATES, CODESDD_REST_CRUD_TYPEORM_PROFILE_QUALITY_GATES, CODESDD_FULL_FOUNDATION_PARITY_QUALITY_GATES, } from './api-profile-catalog.js';
|
|
2
|
+
export const CODESDD_API_PROFILE_DRY_RUN_EVIDENCE_CONTRACT = {
|
|
3
|
+
id: 'profile-aware-dry-run-evidence',
|
|
4
|
+
version: 1,
|
|
5
|
+
mode: 'dry-run',
|
|
6
|
+
mutation_policy: 'planning-only',
|
|
7
|
+
};
|
|
8
|
+
const SHARED_BASELINE_EXPECTED_WRITES = [
|
|
9
|
+
write('package.json', 'root', 'package-metadata', 'manifest', 'shared-baseline', 'Package metadata, scripts, dependencies, and runtime commands required by every API profile.', [
|
|
10
|
+
'package-json-scripts',
|
|
11
|
+
]),
|
|
12
|
+
write('scripts/cleanup.sh', 'root', 'source', 'implementation', 'shared-baseline', 'Destructive cleanup script required by every Foundation-linked API profile.', [
|
|
13
|
+
'package-json-scripts',
|
|
14
|
+
]),
|
|
15
|
+
write('scripts/kill-port.js', 'root', 'source', 'implementation', 'shared-baseline', 'Port preflight used by start and start:dev before runtime bootstrap.', [
|
|
16
|
+
'package-json-scripts',
|
|
17
|
+
]),
|
|
18
|
+
write('.env.example', 'config', 'configuration', 'manifest', 'shared-baseline', 'Safe placeholder environment contract required before any generated API claims runtime readiness.', [
|
|
19
|
+
'env-example',
|
|
20
|
+
]),
|
|
21
|
+
write('src/main.ts', 'root', 'source', 'implementation', 'shared-baseline', 'NestJS bootstrap with validation pipe and Swagger/OpenAPI /docs setup.', [
|
|
22
|
+
'openapi-swagger-docs',
|
|
23
|
+
'dto-validation',
|
|
24
|
+
]),
|
|
25
|
+
write('src/application/business/auth/ports/in/register.use-case.port.ts', 'application', 'source', 'interface', 'shared-baseline', 'Application input-port example proving routes do not orchestrate business behavior directly.', [
|
|
26
|
+
'application-usecase-boundary',
|
|
27
|
+
]),
|
|
28
|
+
write('src/application/business/auth/use-cases/register.use-case.ts', 'application', 'source', 'use-case', 'shared-baseline', 'Application use case backing the user-facing route projection.', [
|
|
29
|
+
'application-usecase-boundary',
|
|
30
|
+
]),
|
|
31
|
+
write('src/presentation/rest/auth/controllers/register.controller.ts', 'presentation', 'source', 'controller', 'shared-baseline', 'Swagger-documented REST controller that delegates to an application input port.', [
|
|
32
|
+
'openapi-swagger-docs',
|
|
33
|
+
'application-usecase-boundary',
|
|
34
|
+
]),
|
|
35
|
+
write('src/presentation/rest/auth/dtos/register-input.dto.ts', 'presentation', 'source', 'dto', 'shared-baseline', 'DTO validation and Swagger request-shape metadata for the baseline route.', [
|
|
36
|
+
'dto-validation',
|
|
37
|
+
]),
|
|
38
|
+
write('src/presentation/dtos/api-error-response.dto.ts', 'presentation', 'source', 'dto', 'shared-baseline', 'Structured API error response documentation shared by REST profiles.', [
|
|
39
|
+
'structured-api-errors',
|
|
40
|
+
]),
|
|
41
|
+
write('tests/app.e2e-spec.ts', 'tests', 'test', 'test', 'shared-baseline', 'Route/use-case smoke evidence expected for every profile preview.', [
|
|
42
|
+
'route-and-usecase-tests',
|
|
43
|
+
]),
|
|
44
|
+
];
|
|
45
|
+
export const CODESDD_API_PROFILE_DRY_RUN_EXPECTATION_DEFINITIONS = {
|
|
46
|
+
'minimal-rest': expectation('minimal-rest', ['profile-minimal-rest-route-usecase-projection', ...CODESDD_MINIMAL_REST_PROFILE_QUALITY_GATES], [
|
|
47
|
+
write('src/presentation/rest/rest.module.ts', 'presentation', 'source', 'module', 'profile-overlay', 'Root REST module wiring minimal controllers without infrastructure coupling.', [
|
|
48
|
+
'minimal-rest',
|
|
49
|
+
]),
|
|
50
|
+
write('src/presentation/rest/health/health.controller.ts', 'presentation', 'source', 'controller', 'profile-overlay', 'Health/readiness route projection for the smallest REST profile.', [
|
|
51
|
+
'minimal-rest',
|
|
52
|
+
]),
|
|
53
|
+
write('src/application/business/health/ports/in/read-health.use-case.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Input-port boundary for the minimal health route.', [
|
|
54
|
+
'minimal-rest',
|
|
55
|
+
]),
|
|
56
|
+
write('src/application/business/health/use-cases/read-health.use-case.ts', 'application', 'source', 'use-case', 'profile-overlay', 'Use-case boundary for the minimal health route.', [
|
|
57
|
+
'minimal-rest',
|
|
58
|
+
]),
|
|
59
|
+
write('tests/health.e2e-spec.ts', 'tests', 'test', 'test', 'profile-overlay', 'Health route/use-case smoke evidence for the minimal REST profile.', [
|
|
60
|
+
'minimal-rest',
|
|
61
|
+
]),
|
|
62
|
+
]),
|
|
63
|
+
'rest-auth-rbac': expectation('rest-auth-rbac', ['profile-rest-auth-rbac-guard-policy-projection', ...CODESDD_REST_AUTH_RBAC_PROFILE_QUALITY_GATES], [
|
|
64
|
+
write('src/presentation/rest/auth/auth.module.ts', 'presentation', 'source', 'module', 'profile-overlay', 'REST auth module wiring protected controllers and guard providers.', [
|
|
65
|
+
'rest-auth-rbac',
|
|
66
|
+
]),
|
|
67
|
+
write('src/presentation/rest/auth/controllers/login.controller.ts', 'presentation', 'source', 'controller', 'profile-overlay', 'Login controller projection with OpenAPI documentation and application input-port delegation.', [
|
|
68
|
+
'rest-auth-rbac',
|
|
69
|
+
]),
|
|
70
|
+
write('src/presentation/rest/auth/controllers/create-role.controller.ts', 'presentation', 'source', 'controller', 'profile-overlay', 'Protected RBAC write controller projection with bearer docs and permission metadata.', [
|
|
71
|
+
'rest-auth-rbac',
|
|
72
|
+
]),
|
|
73
|
+
write('src/presentation/rest/auth/controllers/list-roles.controller.ts', 'presentation', 'source', 'controller', 'profile-overlay', 'Protected RBAC read controller projection with bearer docs and permission metadata.', [
|
|
74
|
+
'rest-auth-rbac',
|
|
75
|
+
]),
|
|
76
|
+
write('src/presentation/rest/auth/dtos/auth-session-output.dto.ts', 'presentation', 'source', 'dto', 'profile-overlay', 'Auth session response DTO projection with access token and permission-bearing payload.', [
|
|
77
|
+
'rest-auth-rbac',
|
|
78
|
+
]),
|
|
79
|
+
write('src/presentation/rest/auth/guards/jwt-auth.guard.ts', 'presentation', 'source', 'implementation', 'profile-overlay', 'Authentication guard expected for protected bearer routes.', [
|
|
80
|
+
'rest-auth-rbac',
|
|
81
|
+
]),
|
|
82
|
+
write('src/presentation/rest/auth/guards/permission.guard.ts', 'presentation', 'source', 'implementation', 'profile-overlay', 'Authorization guard expected for RBAC and permission-protected routes.', [
|
|
83
|
+
'rest-auth-rbac',
|
|
84
|
+
]),
|
|
85
|
+
write('src/presentation/rest/auth/decorators/permission.decorator.ts', 'presentation', 'source', 'policy', 'profile-overlay', 'Permission decorator expected for route-level policy metadata.', [
|
|
86
|
+
'rest-auth-rbac',
|
|
87
|
+
]),
|
|
88
|
+
write('src/application/business/auth/ports/in/authenticated-user.type.ts', 'application', 'source', 'type', 'profile-overlay', 'Current-user request boundary expected when authenticated routes need user context.', [
|
|
89
|
+
'rest-auth-rbac',
|
|
90
|
+
]),
|
|
91
|
+
write('src/application/business/auth/ports/in/login.use-case.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Application input port expected for login/authentication.', [
|
|
92
|
+
'rest-auth-rbac',
|
|
93
|
+
]),
|
|
94
|
+
write('src/application/business/auth/use-cases/login.use-case.ts', 'application', 'source', 'use-case', 'profile-overlay', 'Login use-case projection coordinating authentication through application ports.', [
|
|
95
|
+
'rest-auth-rbac',
|
|
96
|
+
]),
|
|
97
|
+
write('src/application/business/auth/ports/out/access-control.service.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Application policy output port expected for RBAC permission checks.', [
|
|
98
|
+
'rest-auth-rbac',
|
|
99
|
+
]),
|
|
100
|
+
write('src/application/business/auth/services/access-control.service.ts', 'application', 'source', 'service', 'profile-overlay', 'Application service expected to enforce RBAC allow/deny behavior.', [
|
|
101
|
+
'rest-auth-rbac',
|
|
102
|
+
]),
|
|
103
|
+
write('src/infrastructure/adapters/auth/jwt.strategy.ts', 'infrastructure', 'source', 'adapter', 'profile-overlay', 'JWT strategy projection isolating bearer token extraction and validation details.', [
|
|
104
|
+
'rest-auth-rbac',
|
|
105
|
+
]),
|
|
106
|
+
write('tests/auth-rbac.e2e-spec.ts', 'tests', 'test', 'test', 'profile-overlay', 'Allow/deny route evidence projection for protected auth/RBAC routes.', [
|
|
107
|
+
'rest-auth-rbac',
|
|
108
|
+
]),
|
|
109
|
+
]),
|
|
110
|
+
'rest-crud-typeorm': expectation('rest-crud-typeorm', ['profile-rest-crud-typeorm-persistence-projection', ...CODESDD_REST_CRUD_TYPEORM_PROFILE_QUALITY_GATES], [
|
|
111
|
+
write('src/domain/categories/business-objects/category.bo.ts', 'domain', 'source', 'business-object', 'profile-overlay', 'CRUD aggregate BO following Foundation domain conventions.', [
|
|
112
|
+
'rest-crud-typeorm',
|
|
113
|
+
]),
|
|
114
|
+
write('src/domain/categories/types/category.type.ts', 'domain', 'source', 'type', 'profile-overlay', 'Domain type contract for the category BO.', [
|
|
115
|
+
'rest-crud-typeorm',
|
|
116
|
+
]),
|
|
117
|
+
write('src/application/business/categories/ports/out/category-repository.port.ts', 'application', 'source', 'repository-port', 'profile-overlay', 'Repository output port owned by application instead of presentation or domain.', [
|
|
118
|
+
'rest-crud-typeorm',
|
|
119
|
+
]),
|
|
120
|
+
write('src/application/business/categories/ports/in/create-category.use-case.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Input-port boundary for category creation.', [
|
|
121
|
+
'rest-crud-typeorm',
|
|
122
|
+
]),
|
|
123
|
+
write('src/application/business/categories/use-cases/create-category.use-case.ts', 'application', 'source', 'use-case', 'profile-overlay', 'Create use-case projection with BO validation, uniqueness, and repository persistence.', [
|
|
124
|
+
'rest-crud-typeorm',
|
|
125
|
+
]),
|
|
126
|
+
write('src/application/business/categories/ports/in/list-categories.use-case.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Input-port boundary for paginated category listing.', [
|
|
127
|
+
'rest-crud-typeorm',
|
|
128
|
+
]),
|
|
129
|
+
write('src/application/business/categories/use-cases/list-categories.use-case.ts', 'application', 'source', 'use-case', 'profile-overlay', 'List use-case projection with pagination and filtering through the repository port.', [
|
|
130
|
+
'rest-crud-typeorm',
|
|
131
|
+
]),
|
|
132
|
+
write('src/infrastructure/adapters/orm/entities/category.orm-entity.ts', 'infrastructure', 'source', 'entity', 'profile-overlay', 'TypeORM entity projection kept in infrastructure ORM boundary.', [
|
|
133
|
+
'rest-crud-typeorm',
|
|
134
|
+
]),
|
|
135
|
+
write('src/infrastructure/adapters/orm/repositories/category.typeorm-repository.ts', 'infrastructure', 'source', 'adapter', 'profile-overlay', 'Concrete TypeORM repository projection implementing the application repository port.', [
|
|
136
|
+
'rest-crud-typeorm',
|
|
137
|
+
]),
|
|
138
|
+
write('src/infrastructure/adapters/orm/mappers/category.mapper.ts', 'infrastructure', 'source', 'mapper', 'profile-overlay', 'Mapper projection isolating ORM entity shape from the domain BO.', [
|
|
139
|
+
'rest-crud-typeorm',
|
|
140
|
+
]),
|
|
141
|
+
write('src/infrastructure/adapters/orm/typeorm.module.ts', 'infrastructure', 'source', 'module', 'profile-overlay', 'TypeORM root module projection with forRootAsync and shared entity registration.', [
|
|
142
|
+
'rest-crud-typeorm',
|
|
143
|
+
]),
|
|
144
|
+
write('src/infrastructure/adapters/orm/categories-orm.module.ts', 'infrastructure', 'source', 'module', 'profile-overlay', 'Context ORM module projection exporting repository port providers.', [
|
|
145
|
+
'rest-crud-typeorm',
|
|
146
|
+
]),
|
|
147
|
+
write('src/infrastructure/adapters/orm/migrations/0000000000000-create-categories.migration.ts', 'infrastructure', 'migration', 'implementation', 'profile-overlay', 'Migration projection required when persistent schema is introduced.', [
|
|
148
|
+
'rest-crud-typeorm',
|
|
149
|
+
]),
|
|
150
|
+
write('src/presentation/rest/categories/categories.module.ts', 'presentation', 'source', 'module', 'profile-overlay', 'REST categories module wiring CRUD controllers without owning business logic.', [
|
|
151
|
+
'rest-crud-typeorm',
|
|
152
|
+
]),
|
|
153
|
+
write('src/presentation/rest/categories/controllers/create-category.controller.ts', 'presentation', 'source', 'controller', 'profile-overlay', 'Create controller projection with documented request and response contracts.', [
|
|
154
|
+
'rest-crud-typeorm',
|
|
155
|
+
]),
|
|
156
|
+
write('src/presentation/rest/categories/controllers/list-categories.controller.ts', 'presentation', 'source', 'controller', 'profile-overlay', 'List controller projection with documented pagination and filtering.', [
|
|
157
|
+
'rest-crud-typeorm',
|
|
158
|
+
]),
|
|
159
|
+
write('src/presentation/rest/categories/dtos/create-category-input.dto.ts', 'presentation', 'source', 'dto', 'profile-overlay', 'Create DTO projection with validation and Swagger metadata.', [
|
|
160
|
+
'rest-crud-typeorm',
|
|
161
|
+
]),
|
|
162
|
+
write('src/presentation/rest/categories/dtos/category-output.dto.ts', 'presentation', 'source', 'dto', 'profile-overlay', 'Output DTO projection documenting category response shape.', [
|
|
163
|
+
'rest-crud-typeorm',
|
|
164
|
+
]),
|
|
165
|
+
write('tests/categories-crud.e2e-spec.ts', 'tests', 'test', 'test', 'profile-overlay', 'CRUD persistence evidence projection for create/list, uniqueness, pagination, and filtering.', [
|
|
166
|
+
'rest-crud-typeorm',
|
|
167
|
+
]),
|
|
168
|
+
]),
|
|
169
|
+
'evented-api': expectation('evented-api', ['profile-evented-api-event-contract-projection', ...CODESDD_EVENTED_API_PROFILE_QUALITY_GATES], [
|
|
170
|
+
write('src/application/business/categories/events/category-created.event.ts', 'application', 'source', 'type', 'profile-overlay', 'Application event contract projection for evented API slices in BO-pattern contexts.', [
|
|
171
|
+
'evented-api',
|
|
172
|
+
]),
|
|
173
|
+
write('src/application/business/categories/ports/out/category-event-publisher.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Application output port projection for publishing category events without leaking queue details.', [
|
|
174
|
+
'evented-api',
|
|
175
|
+
]),
|
|
176
|
+
write('src/application/business/categories/ports/out/event-idempotency-store.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Application output port projection for dedupe and processed-event tracking.', [
|
|
177
|
+
'evented-api',
|
|
178
|
+
]),
|
|
179
|
+
write('src/application/business/categories/handlers/category-created.handler.ts', 'application', 'source', 'handler', 'profile-overlay', 'Application handler projection for domain/application event dispatch.', [
|
|
180
|
+
'evented-api',
|
|
181
|
+
]),
|
|
182
|
+
write('src/application/business/categories/use-cases/create-category.use-case.ts', 'application', 'source', 'use-case', 'profile-overlay', 'Use-case projection that records and dispatches the category-created event through application handlers.', [
|
|
183
|
+
'evented-api',
|
|
184
|
+
]),
|
|
185
|
+
write('src/infrastructure/adapters/queue/category-event-publisher.adapter.ts', 'infrastructure', 'source', 'adapter', 'profile-overlay', 'Queue publisher adapter projection with idempotency and retry policy.', [
|
|
186
|
+
'evented-api',
|
|
187
|
+
]),
|
|
188
|
+
write('src/infrastructure/adapters/queue/category-events.consumer.ts', 'infrastructure', 'source', 'handler', 'profile-overlay', 'Queue consumer projection delegating event processing to the application handler.', [
|
|
189
|
+
'evented-api',
|
|
190
|
+
]),
|
|
191
|
+
write('src/infrastructure/adapters/queue/event-idempotency-store.adapter.ts', 'infrastructure', 'source', 'adapter', 'profile-overlay', 'Processed-event store projection for idempotent queue handling.', [
|
|
192
|
+
'evented-api',
|
|
193
|
+
]),
|
|
194
|
+
write('docs/events/category-created.md', 'docs', 'documentation', 'documentation', 'profile-overlay', 'Event contract documentation projection with payload, idempotency, retry, and error policy.', [
|
|
195
|
+
'evented-api',
|
|
196
|
+
]),
|
|
197
|
+
write('tests/categories-events.e2e-spec.ts', 'tests', 'test', 'test', 'profile-overlay', 'Event handler and idempotency evidence projection.', [
|
|
198
|
+
'evented-api',
|
|
199
|
+
]),
|
|
200
|
+
]),
|
|
201
|
+
'ai-agent-api': expectation('ai-agent-api', ['profile-ai-agent-api-tool-boundary-projection', ...CODESDD_AI_AGENT_API_PROFILE_QUALITY_GATES], [
|
|
202
|
+
write('src/presentation/rest/agents/agents.module.ts', 'presentation', 'source', 'module', 'profile-overlay', 'REST agents module wiring controllers and application use-case providers.', [
|
|
203
|
+
'ai-agent-api',
|
|
204
|
+
]),
|
|
205
|
+
write('src/presentation/rest/agents/controllers/agent-runs.controller.ts', 'presentation', 'source', 'controller', 'profile-overlay', 'Agent workflow REST endpoint projection with documented request and response contracts.', [
|
|
206
|
+
'ai-agent-api',
|
|
207
|
+
]),
|
|
208
|
+
write('src/presentation/rest/agents/dtos/run-agent-input.dto.ts', 'presentation', 'source', 'dto', 'profile-overlay', 'Agent request DTO projection with prompt and tool allowlist validation metadata.', [
|
|
209
|
+
'ai-agent-api',
|
|
210
|
+
]),
|
|
211
|
+
write('src/presentation/rest/agents/dtos/agent-run-output.dto.ts', 'presentation', 'source', 'dto', 'profile-overlay', 'Agent response DTO projection with output and audit correlation fields.', [
|
|
212
|
+
'ai-agent-api',
|
|
213
|
+
]),
|
|
214
|
+
write('src/application/intelligence/agents/ports/in/run-agent.use-case.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Application intelligence input-port boundary for agent execution requests.', [
|
|
215
|
+
'ai-agent-api',
|
|
216
|
+
]),
|
|
217
|
+
write('src/application/intelligence/agents/use-cases/run-agent.use-case.ts', 'application', 'source', 'use-case', 'profile-overlay', 'Application intelligence use-case boundary coordinating provider, tool, and safety checks.', [
|
|
218
|
+
'ai-agent-api',
|
|
219
|
+
]),
|
|
220
|
+
write('src/application/intelligence/agents/ports/out/llm-provider.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Application intelligence provider port projection isolating LLM calls.', [
|
|
221
|
+
'ai-agent-api',
|
|
222
|
+
]),
|
|
223
|
+
write('src/application/intelligence/agents/ports/out/agent-tool-registry.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Tool registry output-port projection enforcing allowed tool/action boundaries.', [
|
|
224
|
+
'ai-agent-api',
|
|
225
|
+
]),
|
|
226
|
+
write('src/application/intelligence/agents/ports/out/agent-audit.port.ts', 'application', 'source', 'interface', 'profile-overlay', 'Audit output-port projection for redacted prompts, tool calls, and safety outcomes.', [
|
|
227
|
+
'ai-agent-api',
|
|
228
|
+
]),
|
|
229
|
+
write('src/application/intelligence/agents/services/prompt-safety.service.ts', 'application', 'source', 'service', 'profile-overlay', 'Prompt safety service projection before provider invocation.', [
|
|
230
|
+
'ai-agent-api',
|
|
231
|
+
]),
|
|
232
|
+
write('src/application/intelligence/agents/services/redaction.service.ts', 'application', 'source', 'service', 'profile-overlay', 'Redaction service projection for secrets and provider keys.', [
|
|
233
|
+
'ai-agent-api',
|
|
234
|
+
]),
|
|
235
|
+
write('src/infrastructure/adapters/llm/llm-provider.adapter.ts', 'infrastructure', 'source', 'adapter', 'profile-overlay', 'LLM/provider adapter projection with redacted configuration boundaries.', [
|
|
236
|
+
'ai-agent-api',
|
|
237
|
+
]),
|
|
238
|
+
write('src/infrastructure/adapters/audit/agent-audit.adapter.ts', 'infrastructure', 'source', 'adapter', 'profile-overlay', 'Audit trail adapter projection for agent tool calls and safety outcomes.', [
|
|
239
|
+
'ai-agent-api',
|
|
240
|
+
]),
|
|
241
|
+
write('docs/agents/ai-agent-api.md', 'docs', 'documentation', 'documentation', 'profile-overlay', 'Agent API documentation projection for tool boundaries, redaction, auditability, and deterministic tests.', [
|
|
242
|
+
'ai-agent-api',
|
|
243
|
+
]),
|
|
244
|
+
write('tests/agents.e2e-spec.ts', 'tests', 'test', 'test', 'profile-overlay', 'Agent run e2e evidence projection using deterministic provider seams and no live credentials.', [
|
|
245
|
+
'ai-agent-api',
|
|
246
|
+
]),
|
|
247
|
+
write('tests/agents-safety.spec.ts', 'tests', 'test', 'test', 'profile-overlay', 'Prompt safety, tool boundary, and redaction unit evidence projection.', [
|
|
248
|
+
'ai-agent-api',
|
|
249
|
+
]),
|
|
250
|
+
]),
|
|
251
|
+
'full-foundation-compatible': expectation('full-foundation-compatible', ['profile-full-foundation-compatible-parity-projection', ...CODESDD_FULL_FOUNDATION_PARITY_QUALITY_GATES], [
|
|
252
|
+
write('src/application/application.module.ts', 'application', 'source', 'module', 'full-foundation-parity', 'Application root required by the full Foundation-compatible profile.', [
|
|
253
|
+
'full-foundation-compatible',
|
|
254
|
+
'architecture-roots',
|
|
255
|
+
]),
|
|
256
|
+
write('src/domain/auth/business-objects/api-keys.bo.ts', 'domain', 'source', 'business-object', 'full-foundation-parity', 'Foundation static domain utility exception currently living under business-objects.', [
|
|
257
|
+
'full-foundation-compatible',
|
|
258
|
+
'architecture-roots',
|
|
259
|
+
]),
|
|
260
|
+
write('src/infrastructure/adapters/orm/typeorm.module.ts', 'infrastructure', 'source', 'module', 'full-foundation-parity', 'Foundation TypeORM root module required by full compatibility.', [
|
|
261
|
+
'full-foundation-compatible',
|
|
262
|
+
'persistence-typeorm',
|
|
263
|
+
]),
|
|
264
|
+
write('src/infrastructure/adapters/orm/auth-orm.module.ts', 'infrastructure', 'source', 'module', 'full-foundation-parity', 'Foundation context ORM module required by full compatibility.', [
|
|
265
|
+
'full-foundation-compatible',
|
|
266
|
+
'persistence-typeorm',
|
|
267
|
+
]),
|
|
268
|
+
write('src/infrastructure/infrastructure.module.ts', 'infrastructure', 'source', 'module', 'full-foundation-parity', 'Infrastructure root required by full Foundation compatibility.', [
|
|
269
|
+
'full-foundation-compatible',
|
|
270
|
+
'architecture-roots',
|
|
271
|
+
]),
|
|
272
|
+
write('src/presentation/presentation.module.ts', 'presentation', 'source', 'module', 'full-foundation-parity', 'Presentation root required by full Foundation compatibility.', [
|
|
273
|
+
'full-foundation-compatible',
|
|
274
|
+
'architecture-roots',
|
|
275
|
+
]),
|
|
276
|
+
write('src/shared/domain/generic-business-object.ts', 'shared', 'source', 'abstraction', 'full-foundation-parity', 'Shared Foundation primitive required by full compatibility.', [
|
|
277
|
+
'full-foundation-compatible',
|
|
278
|
+
'architecture-roots',
|
|
279
|
+
]),
|
|
280
|
+
write('.sdd/plugin-evidence/<FEAT>/<operation>/evidence-manifest.yaml', 'sdd', 'evidence', 'evidence', 'full-foundation-parity', 'Evidence manifest projection required to prove full Foundation parity without mutating .sdd/state.', [
|
|
281
|
+
'full-foundation-compatible',
|
|
282
|
+
'evidence-and-quality-gates',
|
|
283
|
+
]),
|
|
284
|
+
]),
|
|
285
|
+
};
|
|
286
|
+
export function getCodeSddApiProfileDryRunExpectation(profileId) {
|
|
287
|
+
return CODESDD_API_PROFILE_DRY_RUN_EXPECTATION_DEFINITIONS[profileId];
|
|
288
|
+
}
|
|
289
|
+
export function getCodeSddApiProfileDryRunExpectations() {
|
|
290
|
+
return CODESDD_API_PROFILE_IDS.map((profileId) => getCodeSddApiProfileDryRunExpectation(profileId));
|
|
291
|
+
}
|
|
292
|
+
export function buildCodeSddApiProfileDryRunProjection(input) {
|
|
293
|
+
const expectationDefinition = getCodeSddApiProfileDryRunExpectation(input.apiProfile.profile_id);
|
|
294
|
+
const plannedPaths = new Set(input.artifactMapRefs.map((artifact) => artifact.path));
|
|
295
|
+
const expectedWrites = [...SHARED_BASELINE_EXPECTED_WRITES, ...expectationDefinition.expected_writes].map((writeDefinition) => ({
|
|
296
|
+
...writeDefinition,
|
|
297
|
+
status: 'expected',
|
|
298
|
+
planned_in_current_scaffold: plannedPaths.has(writeDefinition.path),
|
|
299
|
+
}));
|
|
300
|
+
return {
|
|
301
|
+
id: CODESDD_API_PROFILE_DRY_RUN_EVIDENCE_CONTRACT.id,
|
|
302
|
+
version: CODESDD_API_PROFILE_DRY_RUN_EVIDENCE_CONTRACT.version,
|
|
303
|
+
mode: CODESDD_API_PROFILE_DRY_RUN_EVIDENCE_CONTRACT.mode,
|
|
304
|
+
mutation_policy: CODESDD_API_PROFILE_DRY_RUN_EVIDENCE_CONTRACT.mutation_policy,
|
|
305
|
+
selected_profile: input.apiProfile.profile_id,
|
|
306
|
+
requested_profile: input.apiProfile.input ?? input.apiProfile.profile_id,
|
|
307
|
+
legacy_alias: input.apiProfile.legacy_alias,
|
|
308
|
+
inherited_baseline: CODESDD_API_PROFILE_DEFINITIONS[input.apiProfile.profile_id].inherits_shared_baseline,
|
|
309
|
+
expected_write_scope: [...input.expectedWriteScope],
|
|
310
|
+
expected_writes: expectedWrites,
|
|
311
|
+
expected_quality_gates: unique([
|
|
312
|
+
`profile-${input.apiProfile.profile_id}-selected`,
|
|
313
|
+
'profile-aware-dry-run-evidence-required',
|
|
314
|
+
'typeorm-only-persistence',
|
|
315
|
+
...CODESDD_API_SHARED_BASELINE_QUALITY_GATES,
|
|
316
|
+
...expectationDefinition.profile_quality_gates,
|
|
317
|
+
]),
|
|
318
|
+
artifact_map_refs: input.artifactMapRefs.map((artifact) => ({
|
|
319
|
+
path: artifact.path,
|
|
320
|
+
layer: artifact.layer,
|
|
321
|
+
artifact_kind: artifact.artifact_kind,
|
|
322
|
+
role: artifact.role,
|
|
323
|
+
content_type: artifact.content_type,
|
|
324
|
+
source_refs: [artifact.source_reference],
|
|
325
|
+
tags: [...artifact.tags],
|
|
326
|
+
status: 'planned',
|
|
327
|
+
})),
|
|
328
|
+
validation_results: input.validationCommands.map((command) => ({
|
|
329
|
+
command,
|
|
330
|
+
status: 'pending',
|
|
331
|
+
result: 'not_executed_dry_run',
|
|
332
|
+
expected_outcome: 'Command is expected to pass after appliance apply or target-project validation.',
|
|
333
|
+
evidence_required: ['validation command output', 'FEAT quality evidence entry'],
|
|
334
|
+
})),
|
|
335
|
+
migration_warnings: input.apiProfile.legacy_alias
|
|
336
|
+
? [
|
|
337
|
+
{
|
|
338
|
+
code: 'legacy-profile-alias',
|
|
339
|
+
severity: 'warning',
|
|
340
|
+
requested_profile: input.apiProfile.input ?? 'devtrack-api',
|
|
341
|
+
resolves_to: input.apiProfile.profile_id,
|
|
342
|
+
message: input.apiProfile.migration_notice ??
|
|
343
|
+
`Legacy profile alias resolved to ${input.apiProfile.profile_id}.`,
|
|
344
|
+
},
|
|
345
|
+
]
|
|
346
|
+
: [],
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
function expectation(profileId, profileQualityGates, expectedWrites) {
|
|
350
|
+
return {
|
|
351
|
+
profile_id: profileId,
|
|
352
|
+
profile_quality_gates: profileQualityGates,
|
|
353
|
+
expected_writes: expectedWrites,
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
function write(path, layer, artifactKind, role, source, reason, requiredBy) {
|
|
357
|
+
return {
|
|
358
|
+
path,
|
|
359
|
+
layer,
|
|
360
|
+
artifact_kind: artifactKind,
|
|
361
|
+
role,
|
|
362
|
+
source,
|
|
363
|
+
reason,
|
|
364
|
+
required_by: requiredBy,
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
function unique(values) {
|
|
368
|
+
return [...new Set(values)];
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=api-profile-dry-run-projection.js.map
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type CodeSddApiSharedBaselineRequirementId } from './api-foundation-baseline.js';
|
|
2
|
+
import type { CodeSddApiProfileId } from './api-profile-catalog.js';
|
|
3
|
+
import type { PluginArtifactKind, PluginArtifactLayer, PluginArtifactRole } from './plugin-sdk-contract.js';
|
|
4
|
+
export declare const CODESDD_API_PROFILE_RECIPE_CONTRACT: {
|
|
5
|
+
readonly id: "codesdd-api-profile-recipes";
|
|
6
|
+
readonly version: 1;
|
|
7
|
+
readonly foundation_reference: "devtrack-foundation-api";
|
|
8
|
+
};
|
|
9
|
+
export declare const CODESDD_MINIMAL_REST_PROFILE_QUALITY_GATES: readonly ["minimal-rest-recipe-required", "minimal-rest-openapi-docs-required", "minimal-rest-env-example-required", "minimal-rest-package-scripts-required", "minimal-rest-dto-usecase-boundary-required", "minimal-rest-structured-errors-required", "minimal-rest-health-root-wiring-required", "minimal-rest-route-usecase-tests-required"];
|
|
10
|
+
export declare const CODESDD_MINIMAL_REST_PROFILE_VALIDATION_COMMANDS: readonly ["pnpm run build", "pnpm run lint", "pnpm test", "pnpm run test:e2e"];
|
|
11
|
+
export declare const CODESDD_REST_AUTH_RBAC_PROFILE_QUALITY_GATES: readonly ["rest-auth-rbac-recipe-required", "rest-auth-rbac-auth-plan-required", "rest-auth-rbac-jwt-strategy-required", "rest-auth-rbac-route-guards-required", "rest-auth-rbac-permission-decorator-required", "rest-auth-rbac-current-user-boundary-required", "rest-auth-rbac-protected-openapi-docs-required", "rest-auth-rbac-allow-deny-tests-required"];
|
|
12
|
+
export declare const CODESDD_REST_AUTH_RBAC_PROFILE_VALIDATION_COMMANDS: readonly ["pnpm run build", "pnpm run lint", "pnpm test", "pnpm run test:e2e"];
|
|
13
|
+
export declare const CODESDD_REST_CRUD_TYPEORM_PROFILE_QUALITY_GATES: readonly ["rest-crud-typeorm-recipe-required", "rest-crud-typeorm-bo-pattern-required", "rest-crud-typeorm-application-repository-port-required", "rest-crud-typeorm-usecase-transaction-boundary-required", "rest-crud-typeorm-infrastructure-orm-required", "rest-crud-typeorm-migration-required", "rest-crud-typeorm-pagination-filtering-required", "rest-crud-typeorm-uniqueness-required", "rest-crud-typeorm-crud-tests-required", "rest-crud-typeorm-no-prisma-required"];
|
|
14
|
+
export declare const CODESDD_REST_CRUD_TYPEORM_PROFILE_VALIDATION_COMMANDS: readonly ["pnpm run build", "pnpm run lint", "pnpm test", "pnpm run test:e2e", "pnpm run migration:show"];
|
|
15
|
+
export declare const CODESDD_EVENTED_API_PROFILE_QUALITY_GATES: readonly ["evented-api-recipe-required", "evented-api-event-contract-required", "evented-api-application-handler-required", "evented-api-event-publisher-port-required", "evented-api-outbox-or-queue-required", "evented-api-idempotency-required", "evented-api-retry-error-policy-required", "evented-api-event-docs-required", "evented-api-event-tests-required"];
|
|
16
|
+
export declare const CODESDD_EVENTED_API_PROFILE_VALIDATION_COMMANDS: readonly ["pnpm run build", "pnpm run lint", "pnpm test", "pnpm run test:e2e"];
|
|
17
|
+
export declare const CODESDD_AI_AGENT_API_PROFILE_QUALITY_GATES: readonly ["ai-agent-api-recipe-required", "ai-agent-api-endpoint-contract-required", "ai-agent-api-tool-boundary-required", "ai-agent-api-provider-config-redaction-required", "ai-agent-api-prompt-safety-required", "ai-agent-api-audit-trail-required", "ai-agent-api-deterministic-tests-required", "ai-agent-api-no-live-credentials-required"];
|
|
18
|
+
export declare const CODESDD_AI_AGENT_API_PROFILE_VALIDATION_COMMANDS: readonly ["pnpm run build", "pnpm run lint", "pnpm test", "pnpm run test:e2e"];
|
|
19
|
+
export declare const CODESDD_API_MANDATORY_PACKAGE_SCRIPT_MARKERS: readonly ["\"build\"", "\"start\"", "\"start:dev\"", "\"start:prod\"", "\"lint\"", "\"test\"", "\"test:cov\"", "\"test:e2e\"", "\"cleanup\"", "\"cleanup:install\"", "node scripts/kill-port.js", "npm run", "npm install"];
|
|
20
|
+
export declare const CODESDD_API_MANDATORY_CLEANUP_SCRIPT_MARKERS: readonly ["node_modules", "dist", "build", "coverage", ".cache", ".turbo", ".nest", "package-lock.json", "pnpm-lock.yaml", "yarn.lock", "bun.lock", "tsbuildinfo"];
|
|
21
|
+
export declare const CODESDD_API_MANDATORY_KILL_PORT_SCRIPT_MARKERS: readonly ["process.argv[2]", "process.env.PORT", "process.env.APP_PORT", "lsof -ti", "netstat -ano", "kill -9", "taskkill"];
|
|
22
|
+
export type CodeSddApiProfileRecipeArtifactCategory = 'documentation' | 'environment' | 'scripts' | 'dto' | 'use-case' | 'structured-errors' | 'health' | 'root-wiring' | 'tests' | 'auth-configuration' | 'auth-strategy' | 'auth-controller' | 'auth-session' | 'guard' | 'decorator' | 'current-user' | 'rbac-policy' | 'auth-tests' | 'persistence-configuration' | 'business-object' | 'domain-type' | 'repository-port' | 'orm-entity' | 'orm-repository' | 'orm-mapper' | 'orm-module' | 'migration' | 'crud-controller' | 'pagination-filtering' | 'crud-tests' | 'event-configuration' | 'event-contract' | 'event-handler' | 'event-publisher-port' | 'outbox-queue' | 'event-consumer' | 'idempotency' | 'retry-policy' | 'event-docs' | 'event-tests' | 'agent-configuration' | 'agent-controller' | 'agent-dto' | 'agent-use-case' | 'agent-provider-port' | 'agent-tool-port' | 'agent-audit' | 'agent-safety' | 'agent-redaction' | 'agent-provider-adapter' | 'agent-docs' | 'agent-tests';
|
|
23
|
+
export interface CodeSddApiProfileRecipeArtifact {
|
|
24
|
+
path: string;
|
|
25
|
+
layer: PluginArtifactLayer;
|
|
26
|
+
artifact_kind: PluginArtifactKind;
|
|
27
|
+
role: PluginArtifactRole;
|
|
28
|
+
category: CodeSddApiProfileRecipeArtifactCategory;
|
|
29
|
+
reason: string;
|
|
30
|
+
content_markers: readonly string[];
|
|
31
|
+
}
|
|
32
|
+
export interface CodeSddApiProfileRecipe {
|
|
33
|
+
id: string;
|
|
34
|
+
version: 1;
|
|
35
|
+
profile_id: CodeSddApiProfileId;
|
|
36
|
+
title: string;
|
|
37
|
+
foundation_reference: typeof CODESDD_API_PROFILE_RECIPE_CONTRACT.foundation_reference;
|
|
38
|
+
inherits_shared_baseline: true;
|
|
39
|
+
required_baseline_requirements: readonly CodeSddApiSharedBaselineRequirementId[];
|
|
40
|
+
required_artifacts: readonly CodeSddApiProfileRecipeArtifact[];
|
|
41
|
+
required_quality_gates: readonly string[];
|
|
42
|
+
required_validation_commands: readonly string[];
|
|
43
|
+
forbidden_artifact_patterns?: readonly string[];
|
|
44
|
+
forbidden_content_markers?: readonly string[];
|
|
45
|
+
}
|
|
46
|
+
export interface CodeSddApiProfileRecipeValidationInput {
|
|
47
|
+
profileId: CodeSddApiProfileId;
|
|
48
|
+
artifactPaths: readonly string[];
|
|
49
|
+
qualityGates: readonly string[];
|
|
50
|
+
validationCommands: readonly string[];
|
|
51
|
+
artifactContents?: Readonly<Record<string, string>>;
|
|
52
|
+
}
|
|
53
|
+
export interface CodeSddApiProfileRecipeValidationFinding {
|
|
54
|
+
code: CodeSddApiProfileRecipeValidationFindingCode;
|
|
55
|
+
severity: 'error';
|
|
56
|
+
message: string;
|
|
57
|
+
expected: string;
|
|
58
|
+
}
|
|
59
|
+
export type CodeSddApiProfileRecipeValidationFindingCode = 'MINIMAL_REST_PROFILE_MISMATCH' | 'MINIMAL_REST_ARTIFACT_MISSING' | 'MINIMAL_REST_CONTENT_MARKER_MISSING' | 'MINIMAL_REST_QUALITY_GATE_MISSING' | 'MINIMAL_REST_VALIDATION_COMMAND_MISSING' | 'REST_AUTH_RBAC_PROFILE_MISMATCH' | 'REST_AUTH_RBAC_ARTIFACT_MISSING' | 'REST_AUTH_RBAC_CONTENT_MARKER_MISSING' | 'REST_AUTH_RBAC_QUALITY_GATE_MISSING' | 'REST_AUTH_RBAC_VALIDATION_COMMAND_MISSING' | 'REST_CRUD_TYPEORM_PROFILE_MISMATCH' | 'REST_CRUD_TYPEORM_ARTIFACT_MISSING' | 'REST_CRUD_TYPEORM_CONTENT_MARKER_MISSING' | 'REST_CRUD_TYPEORM_QUALITY_GATE_MISSING' | 'REST_CRUD_TYPEORM_VALIDATION_COMMAND_MISSING' | 'REST_CRUD_TYPEORM_FORBIDDEN_ARTIFACT' | 'REST_CRUD_TYPEORM_FORBIDDEN_CONTENT_MARKER' | 'EVENTED_API_PROFILE_MISMATCH' | 'EVENTED_API_ARTIFACT_MISSING' | 'EVENTED_API_CONTENT_MARKER_MISSING' | 'EVENTED_API_QUALITY_GATE_MISSING' | 'EVENTED_API_VALIDATION_COMMAND_MISSING' | 'AI_AGENT_API_PROFILE_MISMATCH' | 'AI_AGENT_API_ARTIFACT_MISSING' | 'AI_AGENT_API_CONTENT_MARKER_MISSING' | 'AI_AGENT_API_QUALITY_GATE_MISSING' | 'AI_AGENT_API_VALIDATION_COMMAND_MISSING' | 'AI_AGENT_API_FORBIDDEN_CONTENT_MARKER';
|
|
60
|
+
export interface CodeSddApiProfileRecipeValidationResult {
|
|
61
|
+
profile_id: CodeSddApiProfileId;
|
|
62
|
+
recipe_id: string;
|
|
63
|
+
status: 'passed' | 'failed';
|
|
64
|
+
missing_artifacts: string[];
|
|
65
|
+
missing_content_markers: string[];
|
|
66
|
+
missing_quality_gates: string[];
|
|
67
|
+
missing_validation_commands: string[];
|
|
68
|
+
forbidden_artifacts: string[];
|
|
69
|
+
forbidden_content_markers: string[];
|
|
70
|
+
findings: CodeSddApiProfileRecipeValidationFinding[];
|
|
71
|
+
}
|
|
72
|
+
export declare const CODESDD_MINIMAL_REST_PROFILE_RECIPE: CodeSddApiProfileRecipe;
|
|
73
|
+
export declare const CODESDD_REST_AUTH_RBAC_PROFILE_RECIPE: CodeSddApiProfileRecipe;
|
|
74
|
+
export declare const CODESDD_REST_CRUD_TYPEORM_PROFILE_RECIPE: CodeSddApiProfileRecipe;
|
|
75
|
+
export declare const CODESDD_EVENTED_API_PROFILE_RECIPE: CodeSddApiProfileRecipe;
|
|
76
|
+
export declare const CODESDD_AI_AGENT_API_PROFILE_RECIPE: CodeSddApiProfileRecipe;
|
|
77
|
+
export declare function validateMinimalRestProfileRecipe(input: CodeSddApiProfileRecipeValidationInput): CodeSddApiProfileRecipeValidationResult;
|
|
78
|
+
export declare function validateRestAuthRbacProfileRecipe(input: CodeSddApiProfileRecipeValidationInput): CodeSddApiProfileRecipeValidationResult;
|
|
79
|
+
export declare function validateRestCrudTypeormProfileRecipe(input: CodeSddApiProfileRecipeValidationInput): CodeSddApiProfileRecipeValidationResult;
|
|
80
|
+
export declare function validateEventedApiProfileRecipe(input: CodeSddApiProfileRecipeValidationInput): CodeSddApiProfileRecipeValidationResult;
|
|
81
|
+
export declare function validateAiAgentApiProfileRecipe(input: CodeSddApiProfileRecipeValidationInput): CodeSddApiProfileRecipeValidationResult;
|
|
82
|
+
//# sourceMappingURL=api-profile-recipes.d.ts.map
|