@kb-labs/shared 1.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 (232) hide show
  1. package/.cursorrules +32 -0
  2. package/.github/workflows/ci.yml +13 -0
  3. package/.github/workflows/deploy.yml +28 -0
  4. package/.github/workflows/docker-build.yml +25 -0
  5. package/.github/workflows/drift-check.yml +10 -0
  6. package/.github/workflows/profiles-validate.yml +16 -0
  7. package/.github/workflows/release.yml +8 -0
  8. package/.kb/devkit/agents/devkit-maintainer/context.globs +15 -0
  9. package/.kb/devkit/agents/devkit-maintainer/permissions.yml +17 -0
  10. package/.kb/devkit/agents/devkit-maintainer/prompt.md +28 -0
  11. package/.kb/devkit/agents/devkit-maintainer/runbook.md +31 -0
  12. package/.kb/devkit/agents/docs-crafter/prompt.md +24 -0
  13. package/.kb/devkit/agents/docs-crafter/runbook.md +18 -0
  14. package/.kb/devkit/agents/release-manager/context.globs +7 -0
  15. package/.kb/devkit/agents/release-manager/prompt.md +27 -0
  16. package/.kb/devkit/agents/release-manager/runbook.md +17 -0
  17. package/.kb/devkit/agents/test-generator/context.globs +7 -0
  18. package/.kb/devkit/agents/test-generator/prompt.md +27 -0
  19. package/.kb/devkit/agents/test-generator/runbook.md +18 -0
  20. package/.vscode/settings.json +23 -0
  21. package/CHANGELOG.md +33 -0
  22. package/CONTRIBUTING.md +117 -0
  23. package/LICENSE +21 -0
  24. package/README.md +306 -0
  25. package/docs/DECLARATIVE-FLAGS-AND-ENV.md +622 -0
  26. package/docs/DOCUMENTATION.md +70 -0
  27. package/docs/adr/0000-template.md +52 -0
  28. package/docs/adr/0001-architecture-and-repository-layout.md +31 -0
  29. package/docs/adr/0002-plugins-and-extensibility.md +44 -0
  30. package/docs/adr/0003-package-and-module-boundaries.md +35 -0
  31. package/docs/adr/0004-versioning-and-release-policy.md +36 -0
  32. package/docs/adr/0005-reactive-loader-pattern.md +179 -0
  33. package/docs/adr/0006-declarative-flags-and-env-systems.md +376 -0
  34. package/eslint.config.js +27 -0
  35. package/kb-labs.config.json +5 -0
  36. package/package.json +88 -0
  37. package/package.json.bin +25 -0
  38. package/package.json.lib +30 -0
  39. package/packages/shared-cli-ui/CHANGELOG.md +20 -0
  40. package/packages/shared-cli-ui/README.md +342 -0
  41. package/packages/shared-cli-ui/docs/ARCHITECTURE.md +105 -0
  42. package/packages/shared-cli-ui/eslint.config.js +27 -0
  43. package/packages/shared-cli-ui/package.json +72 -0
  44. package/packages/shared-cli-ui/src/__tests__/artifacts-display.spec.ts +89 -0
  45. package/packages/shared-cli-ui/src/__tests__/format.spec.ts +44 -0
  46. package/packages/shared-cli-ui/src/__tests__/loader-json-mode.test.ts +119 -0
  47. package/packages/shared-cli-ui/src/artifacts-display.ts +266 -0
  48. package/packages/shared-cli-ui/src/cli-auto-discovery.ts +120 -0
  49. package/packages/shared-cli-ui/src/colors.ts +142 -0
  50. package/packages/shared-cli-ui/src/command-discovery.ts +72 -0
  51. package/packages/shared-cli-ui/src/command-output.ts +153 -0
  52. package/packages/shared-cli-ui/src/command-result.ts +267 -0
  53. package/packages/shared-cli-ui/src/command-runner.ts +310 -0
  54. package/packages/shared-cli-ui/src/command-suggestions.ts +204 -0
  55. package/packages/shared-cli-ui/src/debug/components/output.ts +141 -0
  56. package/packages/shared-cli-ui/src/debug/components/trace.ts +101 -0
  57. package/packages/shared-cli-ui/src/debug/components/tree.ts +88 -0
  58. package/packages/shared-cli-ui/src/debug/formatters/ai.ts +17 -0
  59. package/packages/shared-cli-ui/src/debug/formatters/human.ts +98 -0
  60. package/packages/shared-cli-ui/src/debug/formatters/timeline.ts +94 -0
  61. package/packages/shared-cli-ui/src/debug/index.ts +56 -0
  62. package/packages/shared-cli-ui/src/debug/types.ts +57 -0
  63. package/packages/shared-cli-ui/src/debug/utilities.ts +203 -0
  64. package/packages/shared-cli-ui/src/dynamic-command-discovery.ts +131 -0
  65. package/packages/shared-cli-ui/src/format.ts +412 -0
  66. package/packages/shared-cli-ui/src/index.ts +34 -0
  67. package/packages/shared-cli-ui/src/loader.ts +196 -0
  68. package/packages/shared-cli-ui/src/manifest-parser.ts +151 -0
  69. package/packages/shared-cli-ui/src/modern-format.ts +271 -0
  70. package/packages/shared-cli-ui/src/multi-cli-suggestions.ts +159 -0
  71. package/packages/shared-cli-ui/src/table.ts +134 -0
  72. package/packages/shared-cli-ui/src/timing-tracker.ts +68 -0
  73. package/packages/shared-cli-ui/src/utils/context.ts +12 -0
  74. package/packages/shared-cli-ui/src/utils/env.ts +164 -0
  75. package/packages/shared-cli-ui/src/utils/flags.ts +269 -0
  76. package/packages/shared-cli-ui/src/utils/path.ts +8 -0
  77. package/packages/shared-cli-ui/tsconfig.build.json +15 -0
  78. package/packages/shared-cli-ui/tsconfig.json +9 -0
  79. package/packages/shared-cli-ui/tsup.config.ts +11 -0
  80. package/packages/shared-cli-ui/vitest.config.ts +15 -0
  81. package/packages/shared-command-kit/CHANGELOG.md +20 -0
  82. package/packages/shared-command-kit/LICENSE +22 -0
  83. package/packages/shared-command-kit/README.md +1030 -0
  84. package/packages/shared-command-kit/docs/HIGH-LEVEL-API.md +89 -0
  85. package/packages/shared-command-kit/docs/LOW-LEVEL-API.md +105 -0
  86. package/packages/shared-command-kit/docs/MIGRATION-GUIDE.md +135 -0
  87. package/packages/shared-command-kit/eslint.config.js +27 -0
  88. package/packages/shared-command-kit/eslint.config.ts +14 -0
  89. package/packages/shared-command-kit/package.json +76 -0
  90. package/packages/shared-command-kit/prettierrc.json +5 -0
  91. package/packages/shared-command-kit/src/__tests__/define-command.spec.ts +294 -0
  92. package/packages/shared-command-kit/src/__tests__/define-route.test.ts +285 -0
  93. package/packages/shared-command-kit/src/__tests__/define-system-command.spec.ts +508 -0
  94. package/packages/shared-command-kit/src/__tests__/define-webhook.test.ts +156 -0
  95. package/packages/shared-command-kit/src/__tests__/define-websocket.test.ts +316 -0
  96. package/packages/shared-command-kit/src/__tests__/errors.spec.ts +45 -0
  97. package/packages/shared-command-kit/src/__tests__/flags.spec.ts +353 -0
  98. package/packages/shared-command-kit/src/__tests__/platform-api.test.ts +135 -0
  99. package/packages/shared-command-kit/src/__tests__/plugin-context-v3.snapshot.spec.ts +240 -0
  100. package/packages/shared-command-kit/src/__tests__/ws-types.test.ts +359 -0
  101. package/packages/shared-command-kit/src/analytics/index.ts +6 -0
  102. package/packages/shared-command-kit/src/analytics/with-analytics.ts +195 -0
  103. package/packages/shared-command-kit/src/define-action.ts +100 -0
  104. package/packages/shared-command-kit/src/define-command.ts +113 -0
  105. package/packages/shared-command-kit/src/define-route.ts +113 -0
  106. package/packages/shared-command-kit/src/define-system-command.ts +362 -0
  107. package/packages/shared-command-kit/src/define-webhook.ts +115 -0
  108. package/packages/shared-command-kit/src/define-websocket.ts +308 -0
  109. package/packages/shared-command-kit/src/errors/factory.ts +282 -0
  110. package/packages/shared-command-kit/src/errors/format-validation.ts +144 -0
  111. package/packages/shared-command-kit/src/errors/format.ts +92 -0
  112. package/packages/shared-command-kit/src/errors/index.ts +9 -0
  113. package/packages/shared-command-kit/src/errors/types.ts +32 -0
  114. package/packages/shared-command-kit/src/flags/define.ts +92 -0
  115. package/packages/shared-command-kit/src/flags/index.ts +9 -0
  116. package/packages/shared-command-kit/src/flags/types.ts +153 -0
  117. package/packages/shared-command-kit/src/flags/validate.ts +358 -0
  118. package/packages/shared-command-kit/src/helpers/context.ts +8 -0
  119. package/packages/shared-command-kit/src/helpers/flags.ts +84 -0
  120. package/packages/shared-command-kit/src/helpers/index.ts +42 -0
  121. package/packages/shared-command-kit/src/helpers/patterns.ts +464 -0
  122. package/packages/shared-command-kit/src/helpers/platform.ts +335 -0
  123. package/packages/shared-command-kit/src/helpers/use-analytics.ts +95 -0
  124. package/packages/shared-command-kit/src/helpers/use-cache.ts +97 -0
  125. package/packages/shared-command-kit/src/helpers/use-config.ts +99 -0
  126. package/packages/shared-command-kit/src/helpers/use-embeddings.ts +49 -0
  127. package/packages/shared-command-kit/src/helpers/use-llm.ts +316 -0
  128. package/packages/shared-command-kit/src/helpers/use-logger.ts +77 -0
  129. package/packages/shared-command-kit/src/helpers/use-platform.ts +111 -0
  130. package/packages/shared-command-kit/src/helpers/use-resource-broker.ts +106 -0
  131. package/packages/shared-command-kit/src/helpers/use-storage.ts +71 -0
  132. package/packages/shared-command-kit/src/helpers/use-vector-store.ts +49 -0
  133. package/packages/shared-command-kit/src/helpers/validation.ts +398 -0
  134. package/packages/shared-command-kit/src/index.ts +410 -0
  135. package/packages/shared-command-kit/src/jobs.ts +132 -0
  136. package/packages/shared-command-kit/src/lifecycle/define-handlers.ts +366 -0
  137. package/packages/shared-command-kit/src/lifecycle/index.ts +6 -0
  138. package/packages/shared-command-kit/src/manifest.ts +127 -0
  139. package/packages/shared-command-kit/src/rest/define-handler.ts +187 -0
  140. package/packages/shared-command-kit/src/rest/index.ts +11 -0
  141. package/packages/shared-command-kit/src/studio/index.ts +12 -0
  142. package/packages/shared-command-kit/src/validation/index.ts +6 -0
  143. package/packages/shared-command-kit/src/validation/schema-builders.ts +409 -0
  144. package/packages/shared-command-kit/src/ws-types.ts +106 -0
  145. package/packages/shared-command-kit/tsconfig.build.json +15 -0
  146. package/packages/shared-command-kit/tsconfig.json +9 -0
  147. package/packages/shared-command-kit/tsup.config.ts +30 -0
  148. package/packages/shared-command-kit/vitest.config.ts +4 -0
  149. package/packages/shared-http/package.json +67 -0
  150. package/packages/shared-http/src/__tests__/log-correlation.test.ts +81 -0
  151. package/packages/shared-http/src/__tests__/operation-metrics-tracker.test.ts +55 -0
  152. package/packages/shared-http/src/http-observability-collector.ts +363 -0
  153. package/packages/shared-http/src/index.ts +36 -0
  154. package/packages/shared-http/src/log-correlation.ts +89 -0
  155. package/packages/shared-http/src/operation-metrics-tracker.ts +107 -0
  156. package/packages/shared-http/src/register-openapi.ts +108 -0
  157. package/packages/shared-http/src/resolve-schema-ref.ts +75 -0
  158. package/packages/shared-http/src/schemas.ts +29 -0
  159. package/packages/shared-http/src/service-observability.ts +63 -0
  160. package/packages/shared-http/tsconfig.build.json +15 -0
  161. package/packages/shared-http/tsconfig.json +9 -0
  162. package/packages/shared-http/tsup.config.ts +23 -0
  163. package/packages/shared-http/vitest.config.ts +13 -0
  164. package/packages/shared-perm-presets/CHANGELOG.md +20 -0
  165. package/packages/shared-perm-presets/README.md +78 -0
  166. package/packages/shared-perm-presets/eslint.config.js +27 -0
  167. package/packages/shared-perm-presets/package.json +45 -0
  168. package/packages/shared-perm-presets/src/__tests__/combine.test.ts +403 -0
  169. package/packages/shared-perm-presets/src/__tests__/presets.test.ts +205 -0
  170. package/packages/shared-perm-presets/src/combine.ts +278 -0
  171. package/packages/shared-perm-presets/src/index.ts +18 -0
  172. package/packages/shared-perm-presets/src/presets/ci-environment.ts +34 -0
  173. package/packages/shared-perm-presets/src/presets/full-env.ts +16 -0
  174. package/packages/shared-perm-presets/src/presets/git-workflow.ts +40 -0
  175. package/packages/shared-perm-presets/src/presets/index.ts +8 -0
  176. package/packages/shared-perm-presets/src/presets/kb-platform.ts +30 -0
  177. package/packages/shared-perm-presets/src/presets/llm-access.ts +29 -0
  178. package/packages/shared-perm-presets/src/presets/minimal.ts +21 -0
  179. package/packages/shared-perm-presets/src/presets/npm-publish.ts +48 -0
  180. package/packages/shared-perm-presets/src/presets/vector-store.ts +40 -0
  181. package/packages/shared-perm-presets/src/types.ts +192 -0
  182. package/packages/shared-perm-presets/tsconfig.build.json +15 -0
  183. package/packages/shared-perm-presets/tsconfig.json +9 -0
  184. package/packages/shared-perm-presets/tsup.config.ts +8 -0
  185. package/packages/shared-perm-presets/vitest.config.ts +9 -0
  186. package/packages/shared-testing/CHANGELOG.md +20 -0
  187. package/packages/shared-testing/README.md +430 -0
  188. package/packages/shared-testing/package.json +51 -0
  189. package/packages/shared-testing/src/__tests__/create-test-context.test.ts +199 -0
  190. package/packages/shared-testing/src/__tests__/mock-cache.test.ts +174 -0
  191. package/packages/shared-testing/src/__tests__/mock-llm.test.ts +212 -0
  192. package/packages/shared-testing/src/__tests__/setup-platform.test.ts +90 -0
  193. package/packages/shared-testing/src/__tests__/test-command.test.ts +557 -0
  194. package/packages/shared-testing/src/create-test-context.ts +550 -0
  195. package/packages/shared-testing/src/index.ts +77 -0
  196. package/packages/shared-testing/src/mock-cache.ts +179 -0
  197. package/packages/shared-testing/src/mock-llm.ts +319 -0
  198. package/packages/shared-testing/src/mock-logger.ts +97 -0
  199. package/packages/shared-testing/src/mock-storage.ts +108 -0
  200. package/packages/shared-testing/src/setup-platform.ts +101 -0
  201. package/packages/shared-testing/src/test-command.ts +288 -0
  202. package/packages/shared-testing/tsconfig.build.json +15 -0
  203. package/packages/shared-testing/tsconfig.json +9 -0
  204. package/packages/shared-testing/tsup.config.ts +20 -0
  205. package/packages/shared-testing/vitest.config.ts +3 -0
  206. package/packages/shared-tool-kit/CHANGELOG.md +20 -0
  207. package/packages/shared-tool-kit/package.json +47 -0
  208. package/packages/shared-tool-kit/src/__tests__/factory.test.ts +103 -0
  209. package/packages/shared-tool-kit/src/__tests__/mock-tool.test.ts +95 -0
  210. package/packages/shared-tool-kit/src/factory.ts +126 -0
  211. package/packages/shared-tool-kit/src/index.ts +32 -0
  212. package/packages/shared-tool-kit/src/testing/index.ts +84 -0
  213. package/packages/shared-tool-kit/tsconfig.build.json +15 -0
  214. package/packages/shared-tool-kit/tsconfig.json +9 -0
  215. package/packages/shared-tool-kit/tsup.config.ts +21 -0
  216. package/pnpm-workspace.yaml +11070 -0
  217. package/prettierrc.json +1 -0
  218. package/scripts/devkit-sync.mjs +37 -0
  219. package/scripts/hooks/post-push +9 -0
  220. package/scripts/hooks/pre-commit +9 -0
  221. package/scripts/hooks/pre-push +9 -0
  222. package/tsconfig.base.json +9 -0
  223. package/tsconfig.build.json +15 -0
  224. package/tsconfig.json +9 -0
  225. package/tsconfig.paths.json +50 -0
  226. package/tsconfig.tools.json +18 -0
  227. package/tsup.config.bin.ts +34 -0
  228. package/tsup.config.cli.ts +41 -0
  229. package/tsup.config.dual.ts +46 -0
  230. package/tsup.config.ts +36 -0
  231. package/tsup.external.json +104 -0
  232. package/vitest.config.ts +48 -0
package/README.md ADDED
@@ -0,0 +1,306 @@
1
+ # Standard Configuration Templates
2
+
3
+ This directory contains canonical configuration templates for all `@kb-labs` packages.
4
+
5
+ ## 📋 Available Templates
6
+
7
+ ### Core Configs (All Packages)
8
+
9
+ | File | Purpose | Required | Customizable |
10
+ |------|---------|----------|--------------|
11
+ | **eslint.config.js** | Linting rules | ✅ Yes | ⚠️ Minimal |
12
+ | **tsconfig.json** | TypeScript IDE config | ✅ Yes | ❌ No |
13
+ | **tsconfig.build.json** | TypeScript build config | ✅ Yes | ❌ No |
14
+
15
+ ### Tsup Configs (Choose ONE based on package type)
16
+
17
+ | Template | Package Type | Use Cases |
18
+ |----------|--------------|-----------|
19
+ | **tsup.config.ts** | 📦 **Library** (default) | Most packages, importable libraries |
20
+ | **tsup.config.bin.ts** | 🔧 **Binary** | Standalone executables, CLI bins |
21
+ | **tsup.config.cli.ts** | ⌨️ **CLI** | CLI packages with commands |
22
+ | **tsup.config.dual.ts** | 📦🔧 **Library + Binary** | Packages with both API and bin |
23
+
24
+ ### Package.json Examples
25
+
26
+ | Template | Purpose |
27
+ |----------|---------|
28
+ | **package.json.lib** | Library package example |
29
+ | **package.json.bin** | Binary package example |
30
+
31
+ ## 🎯 Philosophy
32
+
33
+ **Convention over Configuration**
34
+
35
+ All `@kb-labs` packages MUST use these exact templates with minimal customization. This ensures:
36
+
37
+ - ✅ Consistent build output across all packages
38
+ - ✅ Predictable dependency resolution
39
+ - ✅ Unified linting standards
40
+ - ✅ Easy maintenance and upgrades
41
+
42
+ ## 📦 Usage
43
+
44
+ ### For New Packages
45
+
46
+ #### Step 1: Choose Package Type
47
+
48
+ **Library Package** (most common):
49
+ ```bash
50
+ cp kb-labs-devkit/templates/configs/tsup.config.ts your-package/
51
+ cp kb-labs-devkit/templates/configs/eslint.config.js your-package/
52
+ cp kb-labs-devkit/templates/configs/tsconfig*.json your-package/
53
+ cp kb-labs-devkit/templates/configs/package.json.lib your-package/package.json
54
+ ```
55
+
56
+ **Binary Package** (standalone executables):
57
+ ```bash
58
+ cp kb-labs-devkit/templates/configs/tsup.config.bin.ts your-package/tsup.config.ts
59
+ cp kb-labs-devkit/templates/configs/eslint.config.js your-package/
60
+ cp kb-labs-devkit/templates/configs/tsconfig*.json your-package/
61
+ cp kb-labs-devkit/templates/configs/package.json.bin your-package/package.json
62
+ ```
63
+
64
+ **CLI Package** (command handlers):
65
+ ```bash
66
+ cp kb-labs-devkit/templates/configs/tsup.config.cli.ts your-package/tsup.config.ts
67
+ cp kb-labs-devkit/templates/configs/eslint.config.js your-package/
68
+ cp kb-labs-devkit/templates/configs/tsconfig*.json your-package/
69
+ cp kb-labs-devkit/templates/configs/package.json.lib your-package/package.json
70
+ ```
71
+
72
+ **Dual Package** (library + binary):
73
+ ```bash
74
+ cp kb-labs-devkit/templates/configs/tsup.config.dual.ts your-package/tsup.config.ts
75
+ cp kb-labs-devkit/templates/configs/eslint.config.js your-package/
76
+ cp kb-labs-devkit/templates/configs/tsconfig*.json your-package/
77
+ cp kb-labs-devkit/templates/configs/package.json.lib your-package/package.json
78
+ # Then add "bin" field to package.json
79
+ ```
80
+
81
+ #### Step 2: Customize Package Name
82
+ ```bash
83
+ # Edit package.json and update name, description
84
+ ```
85
+
86
+ ### For Existing Packages
87
+
88
+ ```bash
89
+ # Check for drift
90
+ npx kb-devkit-check-configs
91
+
92
+ # Auto-fix drift
93
+ npx kb-devkit-check-configs --fix
94
+ ```
95
+
96
+ ## 🔧 Customization Rules
97
+
98
+ ### tsup.config.ts
99
+
100
+ **Allowed customizations:**
101
+
102
+ ```typescript
103
+ export default defineConfig({
104
+ ...nodePreset,
105
+ tsconfig: 'tsconfig.build.json', // ✅ Always required
106
+
107
+ // ✅ OK: Multiple entry points
108
+ entry: ['src/index.ts', 'src/cli.ts'],
109
+
110
+ // ✅ OK: Extra external deps (if really needed)
111
+ external: ['special-native-module'],
112
+
113
+ dts: true, // ✅ Always required
114
+ });
115
+ ```
116
+
117
+ **NOT allowed:**
118
+
119
+ ```typescript
120
+ // ❌ WRONG: Don't override preset settings
121
+ export default defineConfig({
122
+ format: ['esm'], // Already in preset!
123
+ target: 'es2022', // Already in preset!
124
+ sourcemap: true, // Already in preset!
125
+ // ...
126
+ });
127
+
128
+ // ❌ WRONG: Don't disable types
129
+ dts: false,
130
+
131
+ // ❌ WRONG: Don't duplicate external deps
132
+ external: [
133
+ '@kb-labs/core', // Already in preset!
134
+ '@kb-labs/cli', // Already in preset!
135
+ ],
136
+ ```
137
+
138
+ ### eslint.config.js
139
+
140
+ **Allowed customizations:**
141
+
142
+ ```javascript
143
+ export default [
144
+ ...nodePreset,
145
+ {
146
+ // ✅ OK: Project-specific ignores only
147
+ ignores: ['**/*.generated.ts']
148
+ }
149
+ ];
150
+ ```
151
+
152
+ **NOT allowed:**
153
+
154
+ ```javascript
155
+ // ❌ WRONG: Don't duplicate preset ignores
156
+ export default [
157
+ ...nodePreset,
158
+ {
159
+ ignores: [
160
+ '**/dist/**', // Already in preset!
161
+ '**/node_modules/**', // Already in preset!
162
+ ]
163
+ }
164
+ ];
165
+ ```
166
+
167
+ ### tsconfig.json & tsconfig.build.json
168
+
169
+ **NOT customizable!**
170
+
171
+ These files MUST remain identical to templates. All TypeScript configuration is standardized in DevKit presets.
172
+
173
+ ```json
174
+ // ❌ WRONG: Don't override extends
175
+ {
176
+ "extends": "./my-custom-base.json"
177
+ }
178
+
179
+ // ❌ WRONG: Don't add compilerOptions
180
+ {
181
+ "extends": "@kb-labs/devkit/tsconfig/node.json",
182
+ "compilerOptions": {
183
+ "strict": false // Don't override preset!
184
+ }
185
+ }
186
+ ```
187
+
188
+ ## 🔍 Drift Detection
189
+
190
+ DevKit automatically detects configuration drift:
191
+
192
+ ```bash
193
+ # Check all packages
194
+ npx kb-devkit-check-configs
195
+
196
+ # Check specific package
197
+ npx kb-devkit-check-configs --package=@kb-labs/core
198
+
199
+ # Auto-fix (creates backup)
200
+ npx kb-devkit-check-configs --fix
201
+
202
+ # CI mode (fail on drift)
203
+ npx kb-devkit-check-configs --ci
204
+ ```
205
+
206
+ ### Drift Detection Rules
207
+
208
+ | Issue | Severity | Auto-fix |
209
+ |-------|----------|----------|
210
+ | Missing `dts: true` | 🔴 Error | ✅ Yes |
211
+ | Using `dts: false` | 🔴 Error | ✅ Yes |
212
+ | Not using `nodePreset` | 🔴 Error | ⚠️ Manual |
213
+ | Duplicate `external` | 🟡 Warning | ✅ Yes |
214
+ | Duplicate `ignores` | 🟡 Warning | ✅ Yes |
215
+ | Missing templates | 🔴 Error | ✅ Yes |
216
+ | Modified templates | 🔴 Error | ⚠️ Manual |
217
+
218
+ ## 📚 Examples
219
+
220
+ ### ✅ Good Example (Minimal Package)
221
+
222
+ ```typescript
223
+ // tsup.config.ts
224
+ import { defineConfig } from 'tsup';
225
+ import nodePreset from '@kb-labs/devkit/tsup/node.js';
226
+
227
+ export default defineConfig({
228
+ ...nodePreset,
229
+ tsconfig: 'tsconfig.build.json',
230
+ entry: ['src/index.ts'],
231
+ dts: true,
232
+ });
233
+ ```
234
+
235
+ ### ✅ Good Example (CLI Package with Multiple Entries)
236
+
237
+ ```typescript
238
+ // tsup.config.ts
239
+ import { defineConfig } from 'tsup';
240
+ import nodePreset from '@kb-labs/devkit/tsup/node.js';
241
+
242
+ export default defineConfig({
243
+ ...nodePreset,
244
+ tsconfig: 'tsconfig.build.json',
245
+ entry: [
246
+ 'src/index.ts',
247
+ 'src/cli/index.ts',
248
+ 'src/cli/commands/build.ts',
249
+ 'src/cli/commands/test.ts',
250
+ ],
251
+ dts: true,
252
+ });
253
+ ```
254
+
255
+ ### ❌ Bad Example (Over-configured)
256
+
257
+ ```typescript
258
+ // tsup.config.ts
259
+ import { defineConfig } from 'tsup';
260
+
261
+ // ❌ Not using preset!
262
+ export default defineConfig({
263
+ format: ['esm'],
264
+ target: 'es2022',
265
+ sourcemap: true,
266
+ clean: true,
267
+ dts: true,
268
+ entry: ['src/index.ts'],
269
+ external: [/^@kb-labs\/.*/], // Manual external
270
+ });
271
+ ```
272
+
273
+ ## 🚀 Migration Guide
274
+
275
+ ### From Custom Config to Standard Template
276
+
277
+ 1. **Backup your current config**
278
+ ```bash
279
+ cp tsup.config.ts tsup.config.ts.backup
280
+ ```
281
+
282
+ 2. **Copy standard template**
283
+ ```bash
284
+ cp kb-labs-devkit/templates/configs/tsup.config.ts .
285
+ ```
286
+
287
+ 3. **Migrate customizations** (only if needed)
288
+ - Compare your backup with template
289
+ - Extract only truly necessary customizations
290
+ - Add them with comments explaining why
291
+
292
+ 4. **Test build**
293
+ ```bash
294
+ pnpm run build
295
+ ```
296
+
297
+ 5. **Verify types**
298
+ ```bash
299
+ npx kb-devkit-check-types
300
+ ```
301
+
302
+ ## 🔗 Related
303
+
304
+ - [DevKit README](../../README.md)
305
+ - [DevKit Usage Guide](../../USAGE_GUIDE.md)
306
+ - [ADR-0009: Unified Build Convention](../../docs/adr/0009-unified-build-convention.md)