@tdk-landscape/tdk-cli-core 1.3.50 → 1.3.52
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/.github/workflows/ci.yml +13 -0
- package/.github/workflows/release-binaries.yml +76 -1
- package/CHANGELOG.md +50 -0
- package/README.md +54 -17
- package/cli/README.md +16 -43
- package/cli/biome.json +0 -4
- package/cli/dist/commands/help.d.ts.map +1 -1
- package/cli/dist/commands/help.js +22 -39
- package/cli/dist/commands/help.js.map +1 -1
- package/cli/dist/commands/project.d.ts +6 -0
- package/cli/dist/commands/project.d.ts.map +1 -1
- package/cli/dist/commands/project.js +16 -0
- package/cli/dist/commands/project.js.map +1 -1
- package/cli/dist/commands/up.d.ts.map +1 -1
- package/cli/dist/commands/up.js +5 -0
- package/cli/dist/commands/up.js.map +1 -1
- package/cli/dist/commands/upgrade.d.ts +3 -0
- package/cli/dist/commands/upgrade.d.ts.map +1 -1
- package/cli/dist/commands/upgrade.js +43 -1
- package/cli/dist/commands/upgrade.js.map +1 -1
- package/cli/dist/utils/constants.d.ts +1 -1
- package/cli/dist/utils/constants.d.ts.map +1 -1
- package/cli/dist/utils/constants.js +1 -1
- package/cli/dist/utils/constants.js.map +1 -1
- package/cli/dist/utils/doctor-runtime.js +5 -5
- package/cli/dist/utils/doctor-runtime.js.map +1 -1
- package/cli/dist/utils/prompt.d.ts.map +1 -1
- package/cli/dist/utils/prompt.js +6 -1
- package/cli/dist/utils/prompt.js.map +1 -1
- package/cli/dist/utils/service-urls.js +1 -1
- package/cli/dist/utils/service-urls.js.map +1 -1
- package/cli/package.json +2 -1
- package/cli/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +2 -2
- package/cli/src/commands/__tests__/doctor.test.ts +8 -8
- package/cli/src/commands/__tests__/upgrade.test.ts +90 -3
- package/cli/src/commands/help.ts +22 -39
- package/cli/src/commands/project.ts +20 -0
- package/cli/src/commands/up.ts +10 -0
- package/cli/src/commands/upgrade.ts +52 -1
- package/cli/src/utils/constants.ts +1 -1
- package/cli/src/utils/doctor-runtime.ts +5 -5
- package/cli/src/utils/prompt.ts +8 -1
- package/cli/src/utils/service-urls.ts +1 -1
- package/discovery/identity-management-backend/service.yaml +2 -2
- package/discovery/identity-management-frontend/service.yaml +1 -1
- package/discovery/registry.star +3 -1
- package/discovery/services/platform/orchestrator/orchestrator-glue-backend/service.yaml +2 -2
- package/docs/demo.svg +217 -0
- package/engine/assets/docker/golden-layers.Dockerfile +18 -18
- package/engine/assets/docker/wake-gateway/Dockerfile +4 -3
- package/engine/assets/docker/wake-gateway/decide.test.ts +72 -1
- package/engine/assets/docker/wake-gateway/decide.ts +51 -2
- package/engine/assets/docker/wake-gateway/server.ts +165 -28
- package/engine/assets/scripts/mac-m1-resource-monitor.sh +1 -1
- package/engine/scripts/debug-container.sh +8 -3
- package/engine/spec.master +2 -2
- package/engine/topologies/platform/docker/compose/traefik_standalone.star +23 -1
- package/engine/topologies/platform/docker/layers/prisma/prisma_build.star +1 -1
- package/engine/topologies/platform/docker/networking/traefik_static_routes.star +62 -8
- package/engine/topologies/tilt/common/utils.star +1 -1
- package/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +89 -12
- package/engine/topologies/tilt/resources/orchestrator/builders/typescript.star +20 -0
- package/install.sh +19 -242
- package/openspec/changes/prioritized-cold-start/design.md +27 -3
- package/openspec/changes/prioritized-cold-start/proposal.md +1 -0
- package/openspec/changes/prioritized-cold-start/specs/on-demand-resource-startup/spec.md +9 -3
- package/openspec/changes/prioritized-cold-start/tasks.md +24 -1
- package/package.json +1 -1
- package/platform/services/platform/proxy/service.yaml +1 -1
- package/scripts/record-demo.sh +43 -0
- package/scripts/release-binaries.sh +8 -5
- package/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +2 -2
- package/tests/tilt-engine/test_sablier_defer_start.py +41 -0
- package/tests/tilt-engine/test_standalone_traefik.py +14 -0
- package/tests/tilt-engine/test_traefik_static_wake_route.py +68 -0
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/codebase-audit-report.md +0 -62
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/.openspec.yaml +0 -5
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/design.md +0 -94
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/proposal.md +0 -46
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/ai-slop-cleanup/CLEANUP_REPORT_8.md +0 -174
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/ai-slop-cleanup/CRITICAL_ASSESSMENT_8.md +0 -160
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/circular-deps/CRITICAL_ASSESSMENT_4.md +0 -381
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/dead-code/CRITICAL_ASSESSMENT_3.md +0 -316
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/deduplication/CRITICAL_ASSESSMENT_1.md +0 -290
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/deduplication/IMPLEMENTATION_SUMMARY_1.md +0 -233
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/defensive-cleanup/CRITICAL_ASSESSMENT_6.md +0 -835
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/legacy-cleanup/CRITICAL_ASSESSMENT_7.md +0 -254
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/legacy-cleanup/IMPLEMENTATION_SUMMARY_7.md +0 -187
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/strong-typing/CRITICAL_ASSESSMENT_5.md +0 -269
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/type-consolidation/CRITICAL_ASSESSMENT_2.md +0 -312
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/specs/type-consolidation/IMPLEMENTATION_SUMMARY.md +0 -170
- package/openspec/changes/archive/2026-05-04-comprehensive-cleanup-final/tasks.md +0 -137
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
# Type Definition Consolidation - Critical Assessment
|
|
2
|
-
|
|
3
|
-
**Subagent 2 Assessment Report**
|
|
4
|
-
**Date:** 2026-05-04
|
|
5
|
-
**Scope:** `/private/var/www/2025/ollamar1/tdk-cli/cli/src/`
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Executive Summary
|
|
10
|
-
|
|
11
|
-
The TDK CLI codebase has a **generally well-organized type system** centered in `cli/src/types/index.ts`. Most types are properly exported and shared. However, there are **localized type definitions** that should either be consolidated or documented as intentionally domain-specific.
|
|
12
|
-
|
|
13
|
-
**Overall Health Score: 8.5/10** ✅
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Complete Type Inventory
|
|
18
|
-
|
|
19
|
-
### 1. Centralized Types (cli/src/types/index.ts) - 46 type definitions
|
|
20
|
-
|
|
21
|
-
**Resource & Stack Types:**
|
|
22
|
-
| Type | Kind | Exported | Usage |
|
|
23
|
-
|------|------|----------|-------|
|
|
24
|
-
| `DiscoveredResource` | interface | ✅ | Core discovery type |
|
|
25
|
-
| `ResourceConfig` | interface | ✅ | service.json structure |
|
|
26
|
-
| `DiscoveredStack` | interface | ✅ | Stack discovery |
|
|
27
|
-
| `ResourceType` | type | ✅ | Union of all resource types |
|
|
28
|
-
| `CreatableResourceType` | type | ✅ | Extract of creatable types |
|
|
29
|
-
| `CREATABLE_RESOURCE_TYPES` | const | ✅ | Type guard array |
|
|
30
|
-
| `ResourceMetadata` | interface | ✅ | Runtime metadata |
|
|
31
|
-
| `ResourceStatus` | type | ✅ | Status union |
|
|
32
|
-
| `StackMetadata` | interface | ✅ | Stack runtime info |
|
|
33
|
-
| `StackHealthStatus` | type | ✅ | Health states |
|
|
34
|
-
|
|
35
|
-
**Tilt Integration Types:**
|
|
36
|
-
| Type | Kind | Exported | Usage |
|
|
37
|
-
|------|------|----------|-------|
|
|
38
|
-
| `TiltCommandResult` | interface | ✅ | Command execution |
|
|
39
|
-
| `TiltRuntimeStatus` | type | ✅ | Runtime states |
|
|
40
|
-
| `TiltBuildStatus` | type | ✅ | Build states |
|
|
41
|
-
| `TiltResourceStatus` | interface | ✅ | Full resource status |
|
|
42
|
-
|
|
43
|
-
**File & Generation Types:**
|
|
44
|
-
| Type | Kind | Exported | Usage |
|
|
45
|
-
|------|------|----------|-------|
|
|
46
|
-
| `FileType` | type | ✅ | File categorization |
|
|
47
|
-
| `AutogeneratedFile` | interface | ✅ | Generated file metadata |
|
|
48
|
-
|
|
49
|
-
**Project Configuration Types:**
|
|
50
|
-
| Type | Kind | Exported | Usage |
|
|
51
|
-
|------|------|----------|-------|
|
|
52
|
-
| `ProjectConfig` | interface | ✅ | project.json structure |
|
|
53
|
-
| `ProjectStackDefinition` | interface | ✅ | Stack definition |
|
|
54
|
-
| `ProjectOptionalInfra` | interface | ✅ | Optional infra flags |
|
|
55
|
-
| `ProjectDiscovery` | interface | ✅ | Discovery settings |
|
|
56
|
-
|
|
57
|
-
**JSON Types:**
|
|
58
|
-
| Type | Kind | Exported | Usage |
|
|
59
|
-
|------|------|----------|-------|
|
|
60
|
-
| `JsonValue` | type | ✅ | Recursive JSON value |
|
|
61
|
-
| `JsonArray` | interface | ✅ | JSON array |
|
|
62
|
-
| `JsonObject` | interface | ✅ | JSON object |
|
|
63
|
-
|
|
64
|
-
**UI Component Types:**
|
|
65
|
-
| Type | Kind | Exported | Usage |
|
|
66
|
-
|------|------|----------|-------|
|
|
67
|
-
| `TabId` | type | ✅ | Tab identifiers |
|
|
68
|
-
| `Tab` | interface | ✅ | Tab structure |
|
|
69
|
-
| `TabBarProps` | interface | ✅ | TabBar component props |
|
|
70
|
-
| `TooltipProps` | type | ✅ | Alias to BaseTooltipProps |
|
|
71
|
-
| `BaseTooltipProps` | interface | ✅ | Tooltip base props |
|
|
72
|
-
| `DetailPanelProps` | interface | ✅ | DetailPanel props |
|
|
73
|
-
| `ResourceTableProps` | interface | ✅ | ResourceTable props |
|
|
74
|
-
| `ResourceSelectInputProps` | interface | ✅ | ResourceSelectInput props |
|
|
75
|
-
| `FileNode` | interface | ✅ | File tree node |
|
|
76
|
-
| `FileTreeProps` | interface | ✅ | FileTree props |
|
|
77
|
-
| `LoadingScreenProps` | interface | ✅ | Loading screen |
|
|
78
|
-
| `ErrorScreenProps` | interface | ✅ | Error screen |
|
|
79
|
-
| `HelpPanelProps` | interface | ✅ | Help panel |
|
|
80
|
-
|
|
81
|
-
**Utility Types:**
|
|
82
|
-
| Type | Kind | Exported | Usage |
|
|
83
|
-
|------|------|----------|-------|
|
|
84
|
-
| `ValidationResult` | interface | ✅ | Validation outcome |
|
|
85
|
-
| `CheckResult` | interface | ✅ | Doctor check result |
|
|
86
|
-
| `ServiceUrl` | interface | ✅ | Service URL info |
|
|
87
|
-
| `SelectItem` | interface | ✅ | Selection item |
|
|
88
|
-
| `StatusValue` | type | ✅ | All status unions |
|
|
89
|
-
| `StatusCategory` | type | ✅ | Status categorization |
|
|
90
|
-
| `DiscoveryContext` | interface | ✅ | Discovery context |
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
### 2. Localized Type Definitions (Found Across Codebase)
|
|
95
|
-
|
|
96
|
-
**File: `cli/src/utils/resource-generator.ts`**
|
|
97
|
-
| Type | Kind | Exported | Should Move? |
|
|
98
|
-
|------|------|----------|--------------|
|
|
99
|
-
| `ResourceFileType` | type | ✅ | ✅ YES - to types/index.ts |
|
|
100
|
-
| `FileGenerationTask` | interface | ✅ | ✅ YES - to types/index.ts |
|
|
101
|
-
|
|
102
|
-
**File: `cli/src/utils/port-assignment.ts`**
|
|
103
|
-
| Type | Kind | Exported | Should Move? |
|
|
104
|
-
|------|------|----------|--------------|
|
|
105
|
-
| `PortAssignableResourceType` | type | ❌ Local | ❌ NO - Internal helper type |
|
|
106
|
-
|
|
107
|
-
**File: `cli/src/utils/paths.ts`**
|
|
108
|
-
| Type | Kind | Exported | Should Move? |
|
|
109
|
-
|------|------|----------|--------------|
|
|
110
|
-
| `PackageInfo` | interface | ❌ Local | ❌ NO - Internal caching type |
|
|
111
|
-
|
|
112
|
-
**File: `cli/src/utils/services.ts`**
|
|
113
|
-
| Type | Kind | Exported | Should Move? |
|
|
114
|
-
|------|------|----------|--------------|
|
|
115
|
-
| `MetadataCache` | interface | ❌ Local | ❌ NO - Internal caching type |
|
|
116
|
-
|
|
117
|
-
**File: `cli/src/generator/template-engine.ts`**
|
|
118
|
-
| Type | Kind | Exported | Should Move? |
|
|
119
|
-
|------|------|----------|--------------|
|
|
120
|
-
| `GeneratorContext` | interface | ❌ Local | ❌ NO - Template engine internal |
|
|
121
|
-
| `GeneratedFileName` | type | ❌ Local | ❌ NO - Template engine internal |
|
|
122
|
-
|
|
123
|
-
**File: `cli/src/config/platform-standards.ts`**
|
|
124
|
-
| Type | Kind | Exported | Should Move? |
|
|
125
|
-
|------|------|----------|--------------|
|
|
126
|
-
| `PlatformStandards` | type | ❌ Local | ❌ NO - Inferred from const |
|
|
127
|
-
|
|
128
|
-
**File: `cli/src/commands/upgrade.ts`**
|
|
129
|
-
| Type | Kind | Exported | Should Move? |
|
|
130
|
-
|------|------|----------|--------------|
|
|
131
|
-
| `InstallInfo` | interface | ❌ Local | ❌ NO - Command-specific |
|
|
132
|
-
|
|
133
|
-
**File: `cli/src/commands/resource.ts`**
|
|
134
|
-
| Type | Kind | Exported | Should Move? |
|
|
135
|
-
|------|------|----------|--------------|
|
|
136
|
-
| `TypeSpecificConfig` | interface | ❌ Local | ⚠️ CONSIDER - Resource generation |
|
|
137
|
-
| `Job` | interface | ❌ Local | ❌ NO - Template string content |
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## Duplication Analysis
|
|
142
|
-
|
|
143
|
-
### ✅ No True Duplicates Found
|
|
144
|
-
|
|
145
|
-
The codebase successfully avoids type duplication through:
|
|
146
|
-
1. Centralized types in `types/index.ts`
|
|
147
|
-
2. Proper re-exports from `index.ts`
|
|
148
|
-
3. Component types referencing shared definitions
|
|
149
|
-
|
|
150
|
-
### ⚠️ Pattern Observations
|
|
151
|
-
|
|
152
|
-
**Similar but Different Types (Intentionally Separate):**
|
|
153
|
-
|
|
154
|
-
1. `ResourceType` vs `CreatableResourceType`
|
|
155
|
-
- `ResourceType`: All 6 types ('frontend' | 'backend' | 'library' | 'sdk' | 'worker' | 'migrator')
|
|
156
|
-
- `CreatableResourceType`: Only 3 creatable types ('backend' | 'frontend' | 'worker')
|
|
157
|
-
- ✅ **Correctly designed** - subset relationship is intentional
|
|
158
|
-
|
|
159
|
-
2. `PortAssignableResourceType` (internal) vs `CreatableResourceType`
|
|
160
|
-
- Internal type adds 'migrator' for port assignment logic
|
|
161
|
-
- ✅ **Correctly scoped** - internal helper type
|
|
162
|
-
|
|
163
|
-
3. `FileType` (shared) vs template string types
|
|
164
|
-
- Template strings in `resource.ts` include type definitions for generated code
|
|
165
|
-
- ✅ **Correctly scoped** - template content, not actual types
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Consolidation Strategy
|
|
170
|
-
|
|
171
|
-
### High-Confidence Moves (Should Implement)
|
|
172
|
-
|
|
173
|
-
**Priority 1: Resource Generation Types**
|
|
174
|
-
- **From:** `cli/src/utils/resource-generator.ts`
|
|
175
|
-
- **To:** `cli/src/types/index.ts`
|
|
176
|
-
- **Types:**
|
|
177
|
-
- `ResourceFileType`
|
|
178
|
-
- `FileGenerationTask`
|
|
179
|
-
|
|
180
|
-
**Rationale:** These types are:
|
|
181
|
-
1. Already exported from index.ts
|
|
182
|
-
2. Used for resource generation across the codebase
|
|
183
|
-
3. Domain-agnostic (not tied to generator internals)
|
|
184
|
-
4. Follow the same export pattern as other shared types
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
### Types That Should Stay Local (Documented)
|
|
189
|
-
|
|
190
|
-
| Type | Location | Reason |
|
|
191
|
-
|------|----------|--------|
|
|
192
|
-
| `PortAssignableResourceType` | `port-assignment.ts` | Internal helper, adds 'migrator' to creatable types |
|
|
193
|
-
| `PackageInfo` | `paths.ts` | Internal cache structure, not part of public API |
|
|
194
|
-
| `MetadataCache` | `services.ts` | Internal cache TTL structure |
|
|
195
|
-
| `GeneratorContext` | `template-engine.ts` | Internal template context, derived from PLATFORM_STANDARDS |
|
|
196
|
-
| `GeneratedFileName` | `template-engine.ts` | Internal type for template output validation |
|
|
197
|
-
| `PlatformStandards` | `platform-standards.ts` | Inferred type from const, self-documenting |
|
|
198
|
-
| `InstallInfo` | `upgrade.ts` | Command-specific return type |
|
|
199
|
-
| `TypeSpecificConfig` | `resource.ts` | Resource generation config, could move but tightly coupled |
|
|
200
|
-
| `Job` | `resource.ts` | Template string content, not executable type |
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
## Current Type Organization
|
|
205
|
-
|
|
206
|
-
```
|
|
207
|
-
cli/src/
|
|
208
|
-
├── types/
|
|
209
|
-
│ └── index.ts # ✅ 46 shared type definitions (WELL ORGANIZED)
|
|
210
|
-
├── index.ts # ✅ Re-exports all public types
|
|
211
|
-
├── utils/
|
|
212
|
-
│ ├── resource-generator.ts # ⚠️ 2 types should move to types/
|
|
213
|
-
│ ├── port-assignment.ts # ✅ Internal types correctly local
|
|
214
|
-
│ ├── paths.ts # ✅ Internal types correctly local
|
|
215
|
-
│ ├── services.ts # ✅ Internal types correctly local
|
|
216
|
-
│ └── ...
|
|
217
|
-
├── generator/
|
|
218
|
-
│ └── template-engine.ts # ✅ Internal types correctly local
|
|
219
|
-
├── config/
|
|
220
|
-
│ └── platform-standards.ts # ✅ Inferred types correctly local
|
|
221
|
-
└── commands/
|
|
222
|
-
├── upgrade.ts # ✅ Command types correctly local
|
|
223
|
-
└── resource.ts # ✅ Template types correctly local
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
## Domain-Specific Type Groupings
|
|
229
|
-
|
|
230
|
-
### Current Organization (Effective)
|
|
231
|
-
|
|
232
|
-
**Core Domain Types:**
|
|
233
|
-
- Resource discovery and metadata
|
|
234
|
-
- Stack management
|
|
235
|
-
- Configuration structures
|
|
236
|
-
|
|
237
|
-
**Tilt Integration Types:**
|
|
238
|
-
- Command execution results
|
|
239
|
-
- Runtime/build status tracking
|
|
240
|
-
- Resource status monitoring
|
|
241
|
-
|
|
242
|
-
**UI Component Types:**
|
|
243
|
-
- Props interfaces for all components
|
|
244
|
-
- Screen/layout specific types
|
|
245
|
-
- User interaction types
|
|
246
|
-
|
|
247
|
-
**Project Configuration Types:**
|
|
248
|
-
- project.json structure
|
|
249
|
-
- Stack definitions
|
|
250
|
-
- Discovery settings
|
|
251
|
-
|
|
252
|
-
**Utility Types:**
|
|
253
|
-
- Validation results
|
|
254
|
-
- Status categorization
|
|
255
|
-
- JSON value types
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
## Recommendations Summary
|
|
260
|
-
|
|
261
|
-
### ✅ Implement (High Confidence)
|
|
262
|
-
|
|
263
|
-
1. **Move `ResourceFileType` and `FileGenerationTask`** from `utils/resource-generator.ts` to `types/index.ts`
|
|
264
|
-
- These are shared types already exported at package level
|
|
265
|
-
- Better discoverability in central types location
|
|
266
|
-
- Consistent with other shared type patterns
|
|
267
|
-
|
|
268
|
-
### ❌ Do Not Change (Intentionally Local)
|
|
269
|
-
|
|
270
|
-
1. **Internal Helper Types** - Keep in their files:
|
|
271
|
-
- `PortAssignableResourceType` - port assignment logic specific
|
|
272
|
-
- `PackageInfo` - caching implementation detail
|
|
273
|
-
- `MetadataCache` - caching implementation detail
|
|
274
|
-
- `GeneratorContext` - template engine internal
|
|
275
|
-
- `GeneratedFileName` - template engine internal
|
|
276
|
-
- `InstallInfo` - upgrade command specific
|
|
277
|
-
|
|
278
|
-
### 📝 Document Only
|
|
279
|
-
|
|
280
|
-
1. **Add JSDoc comments** to types/index.ts explaining the organization
|
|
281
|
-
2. **Document the pattern** of when types stay local vs move to shared
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
## Impact Assessment
|
|
286
|
-
|
|
287
|
-
| Metric | Current | After Consolidation |
|
|
288
|
-
|--------|---------|---------------------|
|
|
289
|
-
| Total Type Definitions | 55 | 55 (no deletion) |
|
|
290
|
-
| Centralized Types | 46 | 48 (+2 moved) |
|
|
291
|
-
| Local Types | 9 | 7 (-2 moved) |
|
|
292
|
-
| Files with Types | 8 | 8 |
|
|
293
|
-
| Export Consistency | 95% | 98% |
|
|
294
|
-
|
|
295
|
-
---
|
|
296
|
-
|
|
297
|
-
## Verification Plan
|
|
298
|
-
|
|
299
|
-
After implementation:
|
|
300
|
-
1. ✅ TypeScript compilation passes (`tsc --noEmit`)
|
|
301
|
-
2. ✅ All imports resolve correctly
|
|
302
|
-
3. ✅ No duplicate type definitions
|
|
303
|
-
4. ✅ All tests pass
|
|
304
|
-
5. ✅ Public API surface unchanged
|
|
305
|
-
|
|
306
|
-
---
|
|
307
|
-
|
|
308
|
-
## Conclusion
|
|
309
|
-
|
|
310
|
-
The TDK CLI type system is **well-architected** with only minor consolidation opportunities. The main improvement is moving 2 resource generation types to the central types module for better discoverability and consistency.
|
|
311
|
-
|
|
312
|
-
**Recommended Action:** Proceed with Phase 2 - move `ResourceFileType` and `FileGenerationTask` to `types/index.ts`.
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
# Type Consolidation Implementation Report
|
|
2
|
-
|
|
3
|
-
**Subagent 2 Implementation Summary**
|
|
4
|
-
**Date:** 2026-05-04
|
|
5
|
-
**Status:** ✅ COMPLETE
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Summary
|
|
10
|
-
|
|
11
|
-
Successfully consolidated 2 resource generation types from `utils/resource-generator.ts` to the central `types/index.ts` module. This improves type discoverability and maintains consistency with the existing type organization pattern.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Changes Made
|
|
16
|
-
|
|
17
|
-
### 1. Added Types to Central Module
|
|
18
|
-
|
|
19
|
-
**File:** `cli/src/types/index.ts`
|
|
20
|
-
|
|
21
|
-
Added the following types after the `AutogeneratedFile` interface:
|
|
22
|
-
|
|
23
|
-
```typescript
|
|
24
|
-
/**
|
|
25
|
-
* Resource file generation types
|
|
26
|
-
* Used by the resource generator for creating new service files
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
export type ResourceFileType = 'json' | 'text';
|
|
30
|
-
|
|
31
|
-
export interface FileGenerationTask {
|
|
32
|
-
type: ResourceFileType;
|
|
33
|
-
filename: string;
|
|
34
|
-
content: unknown;
|
|
35
|
-
description: string;
|
|
36
|
-
emoji: string;
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### 2. Updated Source File
|
|
41
|
-
|
|
42
|
-
**File:** `cli/src/utils/resource-generator.ts`
|
|
43
|
-
|
|
44
|
-
- Removed local type definitions (`ResourceFileType`, `FileGenerationTask`)
|
|
45
|
-
- Added import: `import type { FileGenerationTask } from '../types/index.js';`
|
|
46
|
-
|
|
47
|
-
### 3. Updated Package Exports
|
|
48
|
-
|
|
49
|
-
**File:** `cli/src/index.ts`
|
|
50
|
-
|
|
51
|
-
- Added `FileGenerationTask` and `ResourceFileType` to the main type export from `./types/index.js`
|
|
52
|
-
- Removed the separate re-export from `./utils/resource-generator.js`
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Files Changed
|
|
57
|
-
|
|
58
|
-
| File | Change Type | Description |
|
|
59
|
-
|------|-------------|-------------|
|
|
60
|
-
| `cli/src/types/index.ts` | Added | 2 new type definitions added |
|
|
61
|
-
| `cli/src/utils/resource-generator.ts` | Modified | Types removed, import added |
|
|
62
|
-
| `cli/src/index.ts` | Modified | Export sources consolidated |
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## New Type Organization Structure
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
cli/src/types/index.ts
|
|
70
|
-
├── Core Resource Types (DiscoveredResource, ResourceConfig, etc.)
|
|
71
|
-
├── Tilt Integration Types (TiltCommandResult, TiltResourceStatus, etc.)
|
|
72
|
-
├── File & Generation Types ✨ UPDATED
|
|
73
|
-
│ ├── FileType
|
|
74
|
-
│ ├── AutogeneratedFile
|
|
75
|
-
│ ├── ResourceFileType ✨ NEW LOCATION
|
|
76
|
-
│ └── FileGenerationTask ✨ NEW LOCATION
|
|
77
|
-
├── Project Configuration Types (ProjectConfig, etc.)
|
|
78
|
-
├── UI Component Types (TabBarProps, DetailPanelProps, etc.)
|
|
79
|
-
└── Utility Types (ValidationResult, StatusValue, etc.)
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Type Inventory Update
|
|
85
|
-
|
|
86
|
-
### Before Consolidation
|
|
87
|
-
- **Centralized types:** 46
|
|
88
|
-
- **Local types:** 9
|
|
89
|
-
- **Export consistency:** 95%
|
|
90
|
-
|
|
91
|
-
### After Consolidation
|
|
92
|
-
- **Centralized types:** 48 (+2)
|
|
93
|
-
- **Local types:** 7 (-2)
|
|
94
|
-
- **Export consistency:** 98%
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Types That Remain Local (Intentionally)
|
|
99
|
-
|
|
100
|
-
The following types were correctly identified as domain-specific and remain in their original locations:
|
|
101
|
-
|
|
102
|
-
| Type | Location | Reason |
|
|
103
|
-
|------|----------|--------|
|
|
104
|
-
| `PortAssignableResourceType` | `port-assignment.ts` | Internal helper type |
|
|
105
|
-
| `PackageInfo` | `paths.ts` | Internal caching structure |
|
|
106
|
-
| `MetadataCache` | `services.ts` | Internal caching structure |
|
|
107
|
-
| `GeneratorContext` | `template-engine.ts` | Template engine internal |
|
|
108
|
-
| `GeneratedFileName` | `template-engine.ts` | Template validation internal |
|
|
109
|
-
| `PlatformStandards` | `platform-standards.ts` | Inferred from const |
|
|
110
|
-
| `InstallInfo` | `upgrade.ts` | Command-specific |
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Verification Results
|
|
115
|
-
|
|
116
|
-
✅ **TypeScript Compilation**
|
|
117
|
-
- `tsc` completed with zero errors
|
|
118
|
-
- No type conflicts introduced
|
|
119
|
-
|
|
120
|
-
✅ **Test Suite**
|
|
121
|
-
- All 37 tests pass
|
|
122
|
-
- No test modifications required
|
|
123
|
-
- No breaking changes to public API
|
|
124
|
-
|
|
125
|
-
✅ **Import Resolution**
|
|
126
|
-
- All imports resolve correctly
|
|
127
|
-
- No broken references
|
|
128
|
-
- Backward compatibility maintained
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## API Compatibility
|
|
133
|
-
|
|
134
|
-
The public API surface remains unchanged. Existing consumers of these types will continue to work:
|
|
135
|
-
|
|
136
|
-
```typescript
|
|
137
|
-
// Both patterns continue to work:
|
|
138
|
-
import { FileGenerationTask } from '@tdk-landscape/tdk-cli-core'; // ✅ Works
|
|
139
|
-
import type { FileGenerationTask } from '@tdk-landscape/tdk-cli-core'; // ✅ Works
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## Recommendations for Future Work
|
|
145
|
-
|
|
146
|
-
1. **Document Type Organization Pattern**
|
|
147
|
-
- Add a comment header to `types/index.ts` explaining the organization
|
|
148
|
-
- Document when types should be centralized vs. kept local
|
|
149
|
-
|
|
150
|
-
2. **Consider Adding Type Documentation**
|
|
151
|
-
- JSDoc comments for complex types
|
|
152
|
-
- Usage examples for type unions
|
|
153
|
-
|
|
154
|
-
3. **Type Testing**
|
|
155
|
-
- Consider adding type-level tests using `tsd` or similar
|
|
156
|
-
- Ensure type exports match intended public API
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## Conclusion
|
|
161
|
-
|
|
162
|
-
The type consolidation is complete with minimal changes. The codebase now has:
|
|
163
|
-
|
|
164
|
-
- ✅ 48 centralized types in `types/index.ts`
|
|
165
|
-
- ✅ 7 intentionally local types remaining in their domains
|
|
166
|
-
- ✅ 100% TypeScript compilation success
|
|
167
|
-
- ✅ 100% test pass rate
|
|
168
|
-
- ✅ Zero breaking changes
|
|
169
|
-
|
|
170
|
-
**The TDK CLI type system is well-consolidated and maintainable.**
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
## 1. Deduplication & DRY Implementation
|
|
2
|
-
|
|
3
|
-
Research Phase:
|
|
4
|
-
- [ ] 1.1 Use jscpd or similar to find code duplication patterns
|
|
5
|
-
- [ ] 1.2 Identify duplicate logic across CLI commands
|
|
6
|
-
- [ ] 1.3 Find duplicate utility functions
|
|
7
|
-
- [ ] 1.4 Document patterns appearing 3+ times
|
|
8
|
-
- [ ] 1.5 Write CRITICAL_ASSESSMENT_1.md with findings and recommendations
|
|
9
|
-
|
|
10
|
-
Implementation Phase:
|
|
11
|
-
- [ ] 1.6 Create shared utility modules for common patterns
|
|
12
|
-
- [ ] 1.7 Consolidate duplicate validation logic
|
|
13
|
-
- [ ] 1.8 Extract shared template generation code
|
|
14
|
-
- [ ] 1.9 Merge duplicate error handling patterns
|
|
15
|
-
- [ ] 1.10 Verify all deduplication with tests
|
|
16
|
-
|
|
17
|
-
## 2. Type Definition Consolidation
|
|
18
|
-
|
|
19
|
-
Research Phase:
|
|
20
|
-
- [ ] 2.1 Inventory all type definitions in cli/src
|
|
21
|
-
- [ ] 2.2 Find types that should be shared but are duplicated
|
|
22
|
-
- [ ] 2.3 Identify domain-specific type groupings
|
|
23
|
-
- [ ] 2.4 Map current type file organization
|
|
24
|
-
- [ ] 2.5 Write CRITICAL_ASSESSMENT_2.md with consolidation plan
|
|
25
|
-
|
|
26
|
-
Implementation Phase:
|
|
27
|
-
- [ ] 2.6 Create centralized types directory structure
|
|
28
|
-
- [ ] 2.7 Move shared types to appropriate modules
|
|
29
|
-
- [ ] 2.8 Update all imports to use consolidated types
|
|
30
|
-
- [ ] 2.9 Remove duplicate type definitions
|
|
31
|
-
- [ ] 2.10 Verify type checking passes
|
|
32
|
-
|
|
33
|
-
## 3. Dead Code Elimination (knip)
|
|
34
|
-
|
|
35
|
-
Research Phase:
|
|
36
|
-
- [ ] 3.1 Run knip to identify unused exports
|
|
37
|
-
- [ ] 3.2 Run knip to identify unused dependencies
|
|
38
|
-
- [ ] 3.3 Cross-reference with actual usage in codebase
|
|
39
|
-
- [ ] 3.4 Identify false positives (dynamically loaded code)
|
|
40
|
-
- [ ] 3.5 Write CRITICAL_ASSESSMENT_3.md with removal candidates
|
|
41
|
-
|
|
42
|
-
Implementation Phase:
|
|
43
|
-
- [ ] 3.6 Remove verified unused exports
|
|
44
|
-
- [ ] 3.7 Remove verified unused dependencies from package.json
|
|
45
|
-
- [ ] 3.8 Remove unused imports in all files
|
|
46
|
-
- [ ] 3.9 Remove unused functions and variables
|
|
47
|
-
- [ ] 3.10 Verify no runtime regressions
|
|
48
|
-
|
|
49
|
-
## 4. Circular Dependency Resolution (madge)
|
|
50
|
-
|
|
51
|
-
Research Phase:
|
|
52
|
-
- [ ] 4.1 Run madge --circular on cli/src
|
|
53
|
-
- [ ] 4.2 Map full dependency graph
|
|
54
|
-
- [ ] 4.3 Identify root causes of each cycle
|
|
55
|
-
- [ ] 4.4 Design minimal fixes for each cycle
|
|
56
|
-
- [ ] 4.5 Write CRITICAL_ASSESSMENT_4.md with resolution plan
|
|
57
|
-
|
|
58
|
-
Implementation Phase:
|
|
59
|
-
- [ ] 4.6 Extract shared code to break cycles
|
|
60
|
-
- [ ] 4.7 Reorder imports where possible
|
|
61
|
-
- [ ] 4.8 Create interface/implementation splits if needed
|
|
62
|
-
- [ ] 4.9 Verify madge shows no circular dependencies
|
|
63
|
-
- [ ] 4.10 Run full test suite
|
|
64
|
-
|
|
65
|
-
## 5. Weak Type Replacement (any/unknown)
|
|
66
|
-
|
|
67
|
-
Research Phase:
|
|
68
|
-
- [ ] 5.1 Find all `any` types in codebase
|
|
69
|
-
- [ ] 5.2 Find all `unknown` types in codebase
|
|
70
|
-
- [ ] 5.3 Research actual runtime values for each
|
|
71
|
-
- [ ] 5.4 Check package type definitions for external APIs
|
|
72
|
-
- [ ] 5.5 Write CRITICAL_ASSESSMENT_5.md with replacement types
|
|
73
|
-
|
|
74
|
-
Implementation Phase:
|
|
75
|
-
- [ ] 5.6 Replace `any` with specific types
|
|
76
|
-
- [ ] 5.7 Replace `unknown` with union types or branded types
|
|
77
|
-
- [ ] 5.8 Add runtime type guards where needed
|
|
78
|
-
- [ ] 5.9 Update function signatures
|
|
79
|
-
- [ ] 5.10 Verify no type errors and tests pass
|
|
80
|
-
|
|
81
|
-
## 6. Defensive Programming Cleanup
|
|
82
|
-
|
|
83
|
-
Research Phase:
|
|
84
|
-
- [ ] 6.1 Find all try/catch blocks in codebase
|
|
85
|
-
- [ ] 6.2 Identify error-swallowing patterns (empty catch)
|
|
86
|
-
- [ ] 6.3 Identify unnecessary fallback values
|
|
87
|
-
- [ ] 6.4 Determine which catches serve legitimate purposes
|
|
88
|
-
- [ ] 6.5 Write CRITICAL_ASSESSMENT_6.md with cleanup plan
|
|
89
|
-
|
|
90
|
-
Implementation Phase:
|
|
91
|
-
- [ ] 6.6 Remove empty catch blocks
|
|
92
|
-
- [ ] 6.7 Remove error-hiding patterns
|
|
93
|
-
- [ ] 6.8 Replace vague fallbacks with explicit error handling
|
|
94
|
-
- [ ] 6.9 Keep only necessary defensive code with clear comments
|
|
95
|
-
- [ ] 6.10 Verify error handling tests pass
|
|
96
|
-
|
|
97
|
-
## 7. Legacy & Deprecated Code Removal
|
|
98
|
-
|
|
99
|
-
Research Phase:
|
|
100
|
-
- [ ] 7.1 Find all TODO/FIXME comments related to legacy code
|
|
101
|
-
- [ ] 7.2 Identify deprecated functions and methods
|
|
102
|
-
- [ ] 7.3 Find fallback code for removed features
|
|
103
|
-
- [ ] 7.4 Identify migration compatibility code
|
|
104
|
-
- [ ] 7.5 Write CRITICAL_ASSESSMENT_7.md with removal candidates
|
|
105
|
-
|
|
106
|
-
Implementation Phase:
|
|
107
|
-
- [ ] 7.6 Remove deprecated functions
|
|
108
|
-
- [ ] 7.7 Remove legacy fallback code paths
|
|
109
|
-
- [ ] 7.8 Clean up migration compatibility shims
|
|
110
|
-
- [ ] 7.9 Update any remaining callers
|
|
111
|
-
- [ ] 7.10 Verify clean code paths remain
|
|
112
|
-
|
|
113
|
-
## 8. AI Slop & Comment Cleanup
|
|
114
|
-
|
|
115
|
-
Research Phase:
|
|
116
|
-
- [ ] 8.1 Scan for AI-generated comment patterns
|
|
117
|
-
- [ ] 8.2 Find TODO comments describing future work that's done
|
|
118
|
-
- [ ] 8.3 Identify stub functions and placeholder code
|
|
119
|
-
- [ ] 8.4 Find "LARP" comments (describing aspirational state)
|
|
120
|
-
- [ ] 8.5 Write CRITICAL_ASSESSMENT_8.md with cleanup targets
|
|
121
|
-
|
|
122
|
-
Implementation Phase:
|
|
123
|
-
- [ ] 8.6 Remove AI-generated boilerplate comments
|
|
124
|
-
- [ ] 8.7 Remove completed TODO comments
|
|
125
|
-
- [ ] 8.8 Remove or implement stub functions
|
|
126
|
-
- [ ] 8.9 Replace LARP comments with accurate descriptions
|
|
127
|
-
- [ ] 8.10 Add helpful comments where genuinely needed
|
|
128
|
-
|
|
129
|
-
## Final Verification
|
|
130
|
-
|
|
131
|
-
- [ ] 9.1 Run full test suite (all tests must pass)
|
|
132
|
-
- [ ] 9.2 Run type checker (zero errors)
|
|
133
|
-
- [ ] 9.3 Run linter (zero warnings)
|
|
134
|
-
- [ ] 9.4 Run knip (verify clean)
|
|
135
|
-
- [ ] 9.5 Run madge (no circular dependencies)
|
|
136
|
-
- [ ] 9.6 Generate final report with metrics
|
|
137
|
-
- [ ] 9.7 Archive all critical assessment documents
|