@kb-labs/adapters 0.5.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 (276) 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/CONTRIBUTING.md +90 -0
  21. package/IMPLEMENTATION_COMPLETE.md +416 -0
  22. package/LICENSE +186 -0
  23. package/README-TEMPLATE.md +179 -0
  24. package/README.md +306 -0
  25. package/docs/DOCUMENTATION.md +74 -0
  26. package/docs/adr/0000-template.md +49 -0
  27. package/docs/adr/0001-architecture-and-repository-layout.md +33 -0
  28. package/docs/adr/0002-plugins-and-extensibility.md +46 -0
  29. package/docs/adr/0003-package-and-module-boundaries.md +37 -0
  30. package/docs/adr/0004-versioning-and-release-policy.md +38 -0
  31. package/docs/adr/0005-use-devkit-for-shared-tooling.md +48 -0
  32. package/docs/adr/0006-adopt-devkit-sync.md +47 -0
  33. package/docs/adr/0007-drift-kit-check.md +72 -0
  34. package/docs/adr/0008-devkit-sync-wrapper-strategy.md +67 -0
  35. package/docs/naming-convention.md +272 -0
  36. package/eslint.config.js +27 -0
  37. package/kb-labs.config.json +5 -0
  38. package/package.json +84 -0
  39. package/package.json.bin +25 -0
  40. package/package.json.lib +30 -0
  41. package/packages/adapters-analytics-duckdb/package.json +54 -0
  42. package/packages/adapters-analytics-duckdb/scripts/migrate-from-jsonl.mjs +253 -0
  43. package/packages/adapters-analytics-duckdb/src/index.ts +380 -0
  44. package/packages/adapters-analytics-duckdb/src/manifest.ts +36 -0
  45. package/packages/adapters-analytics-duckdb/src/schema.ts +161 -0
  46. package/packages/adapters-analytics-duckdb/tsconfig.build.json +15 -0
  47. package/packages/adapters-analytics-duckdb/tsconfig.json +9 -0
  48. package/packages/adapters-analytics-duckdb/tsup.config.ts +9 -0
  49. package/packages/adapters-analytics-file/README.md +32 -0
  50. package/packages/adapters-analytics-file/eslint.config.js +27 -0
  51. package/packages/adapters-analytics-file/package.json +50 -0
  52. package/packages/adapters-analytics-file/src/__tests__/daily-stats.spec.ts +287 -0
  53. package/packages/adapters-analytics-file/src/__tests__/scoped-analytics.test.ts +233 -0
  54. package/packages/adapters-analytics-file/src/index.test.ts +214 -0
  55. package/packages/adapters-analytics-file/src/index.ts +830 -0
  56. package/packages/adapters-analytics-file/src/manifest.ts +45 -0
  57. package/packages/adapters-analytics-file/tsconfig.build.json +15 -0
  58. package/packages/adapters-analytics-file/tsconfig.json +9 -0
  59. package/packages/adapters-analytics-file/tsup.config.ts +9 -0
  60. package/packages/adapters-analytics-sqlite/package.json +55 -0
  61. package/packages/adapters-analytics-sqlite/scripts/migrate-from-jsonl.mjs +194 -0
  62. package/packages/adapters-analytics-sqlite/src/index.ts +460 -0
  63. package/packages/adapters-analytics-sqlite/src/manifest.ts +41 -0
  64. package/packages/adapters-analytics-sqlite/tsconfig.build.json +15 -0
  65. package/packages/adapters-analytics-sqlite/tsconfig.json +9 -0
  66. package/packages/adapters-analytics-sqlite/tsup.config.ts +9 -0
  67. package/packages/adapters-environment-docker/README.md +28 -0
  68. package/packages/adapters-environment-docker/eslint.config.js +5 -0
  69. package/packages/adapters-environment-docker/package.json +49 -0
  70. package/packages/adapters-environment-docker/src/index.test.ts +138 -0
  71. package/packages/adapters-environment-docker/src/index.ts +439 -0
  72. package/packages/adapters-environment-docker/src/manifest.ts +65 -0
  73. package/packages/adapters-environment-docker/tsconfig.build.json +15 -0
  74. package/packages/adapters-environment-docker/tsconfig.json +16 -0
  75. package/packages/adapters-environment-docker/tsup.config.ts +9 -0
  76. package/packages/adapters-eventbus-cache/README.md +242 -0
  77. package/packages/adapters-eventbus-cache/eslint.config.js +27 -0
  78. package/packages/adapters-eventbus-cache/package.json +46 -0
  79. package/packages/adapters-eventbus-cache/src/index.test.ts +235 -0
  80. package/packages/adapters-eventbus-cache/src/index.ts +215 -0
  81. package/packages/adapters-eventbus-cache/src/manifest.ts +50 -0
  82. package/packages/adapters-eventbus-cache/src/types.ts +58 -0
  83. package/packages/adapters-eventbus-cache/tsconfig.build.json +15 -0
  84. package/packages/adapters-eventbus-cache/tsconfig.json +9 -0
  85. package/packages/adapters-eventbus-cache/tsup.config.ts +9 -0
  86. package/packages/adapters-fs/README.md +171 -0
  87. package/packages/adapters-fs/allowed.txt +1 -0
  88. package/packages/adapters-fs/conflict.txt +1 -0
  89. package/packages/adapters-fs/dest.txt +1 -0
  90. package/packages/adapters-fs/eslint.config.js +27 -0
  91. package/packages/adapters-fs/exists.txt +1 -0
  92. package/packages/adapters-fs/not-allowed.txt +1 -0
  93. package/packages/adapters-fs/other.txt +1 -0
  94. package/packages/adapters-fs/package.json +55 -0
  95. package/packages/adapters-fs/public/file1.txt +1 -0
  96. package/packages/adapters-fs/public/file2.txt +1 -0
  97. package/packages/adapters-fs/secret.txt +1 -0
  98. package/packages/adapters-fs/secrets/key.txt +1 -0
  99. package/packages/adapters-fs/src/index.test.ts +243 -0
  100. package/packages/adapters-fs/src/index.ts +258 -0
  101. package/packages/adapters-fs/src/manifest.ts +35 -0
  102. package/packages/adapters-fs/src/secure-storage.test.ts +380 -0
  103. package/packages/adapters-fs/src/secure-storage.ts +268 -0
  104. package/packages/adapters-fs/test.json +1 -0
  105. package/packages/adapters-fs/test.txt +1 -0
  106. package/packages/adapters-fs/test.xyz +1 -0
  107. package/packages/adapters-fs/test1.txt +1 -0
  108. package/packages/adapters-fs/test2.txt +1 -0
  109. package/packages/adapters-fs/tsconfig.build.json +15 -0
  110. package/packages/adapters-fs/tsconfig.json +9 -0
  111. package/packages/adapters-fs/tsup.config.ts +8 -0
  112. package/packages/adapters-fs/vitest.config.ts +19 -0
  113. package/packages/adapters-log-ringbuffer/README.md +228 -0
  114. package/packages/adapters-log-ringbuffer/eslint.config.js +27 -0
  115. package/packages/adapters-log-ringbuffer/package.json +47 -0
  116. package/packages/adapters-log-ringbuffer/src/__tests__/ring-buffer.test.ts +450 -0
  117. package/packages/adapters-log-ringbuffer/src/index.ts +212 -0
  118. package/packages/adapters-log-ringbuffer/src/manifest.ts +30 -0
  119. package/packages/adapters-log-ringbuffer/tsconfig.build.json +15 -0
  120. package/packages/adapters-log-ringbuffer/tsconfig.json +9 -0
  121. package/packages/adapters-log-ringbuffer/tsup.config.ts +9 -0
  122. package/packages/adapters-log-ringbuffer/vitest.config.ts +14 -0
  123. package/packages/adapters-log-sqlite/README.md +396 -0
  124. package/packages/adapters-log-sqlite/eslint.config.js +27 -0
  125. package/packages/adapters-log-sqlite/package.json +49 -0
  126. package/packages/adapters-log-sqlite/src/__tests__/log-persistence.test.ts +718 -0
  127. package/packages/adapters-log-sqlite/src/index.ts +1068 -0
  128. package/packages/adapters-log-sqlite/src/manifest.ts +36 -0
  129. package/packages/adapters-log-sqlite/src/schema.sql +46 -0
  130. package/packages/adapters-log-sqlite/tsconfig.build.json +15 -0
  131. package/packages/adapters-log-sqlite/tsconfig.json +9 -0
  132. package/packages/adapters-log-sqlite/tsup.config.ts +9 -0
  133. package/packages/adapters-log-sqlite/vitest.config.ts +15 -0
  134. package/packages/adapters-mongodb/README.md +147 -0
  135. package/packages/adapters-mongodb/eslint.config.js +27 -0
  136. package/packages/adapters-mongodb/package.json +53 -0
  137. package/packages/adapters-mongodb/src/index.ts +428 -0
  138. package/packages/adapters-mongodb/src/manifest.ts +45 -0
  139. package/packages/adapters-mongodb/src/secure-document.ts +231 -0
  140. package/packages/adapters-mongodb/tsconfig.build.json +15 -0
  141. package/packages/adapters-mongodb/tsconfig.json +9 -0
  142. package/packages/adapters-mongodb/tsup.config.ts +8 -0
  143. package/packages/adapters-openai/README.md +151 -0
  144. package/packages/adapters-openai/embeddings.ts +37 -0
  145. package/packages/adapters-openai/eslint.config.js +26 -0
  146. package/packages/adapters-openai/index.ts +22 -0
  147. package/packages/adapters-openai/package.json +57 -0
  148. package/packages/adapters-openai/src/embeddings-manifest.ts +45 -0
  149. package/packages/adapters-openai/src/embeddings.ts +104 -0
  150. package/packages/adapters-openai/src/index.ts +13 -0
  151. package/packages/adapters-openai/src/llm.ts +304 -0
  152. package/packages/adapters-openai/src/manifest.ts +47 -0
  153. package/packages/adapters-openai/tsconfig.build.json +15 -0
  154. package/packages/adapters-openai/tsconfig.json +9 -0
  155. package/packages/adapters-openai/tsup.config.ts +8 -0
  156. package/packages/adapters-pino/README.md +152 -0
  157. package/packages/adapters-pino/eslint.config.js +27 -0
  158. package/packages/adapters-pino/package.json +49 -0
  159. package/packages/adapters-pino/src/index.test.ts +44 -0
  160. package/packages/adapters-pino/src/index.ts +322 -0
  161. package/packages/adapters-pino/src/log-ring-buffer.ts +142 -0
  162. package/packages/adapters-pino/src/manifest.ts +49 -0
  163. package/packages/adapters-pino/tsconfig.build.json +15 -0
  164. package/packages/adapters-pino/tsconfig.json +9 -0
  165. package/packages/adapters-pino/tsup.config.ts +9 -0
  166. package/packages/adapters-pino-http/README.md +141 -0
  167. package/packages/adapters-pino-http/eslint.config.js +27 -0
  168. package/packages/adapters-pino-http/package.json +46 -0
  169. package/packages/adapters-pino-http/src/index.ts +229 -0
  170. package/packages/adapters-pino-http/tsconfig.build.json +15 -0
  171. package/packages/adapters-pino-http/tsconfig.json +9 -0
  172. package/packages/adapters-pino-http/tsup.config.ts +9 -0
  173. package/packages/adapters-qdrant/README.md +166 -0
  174. package/packages/adapters-qdrant/eslint.config.js +27 -0
  175. package/packages/adapters-qdrant/package.json +49 -0
  176. package/packages/adapters-qdrant/src/index.ts +490 -0
  177. package/packages/adapters-qdrant/src/manifest.ts +54 -0
  178. package/packages/adapters-qdrant/src/retry.ts +204 -0
  179. package/packages/adapters-qdrant/tsconfig.build.json +15 -0
  180. package/packages/adapters-qdrant/tsconfig.json +9 -0
  181. package/packages/adapters-qdrant/tsup.config.ts +9 -0
  182. package/packages/adapters-redis/README.md +159 -0
  183. package/packages/adapters-redis/eslint.config.js +27 -0
  184. package/packages/adapters-redis/package.json +49 -0
  185. package/packages/adapters-redis/src/index.ts +164 -0
  186. package/packages/adapters-redis/src/manifest.ts +49 -0
  187. package/packages/adapters-redis/tsconfig.build.json +15 -0
  188. package/packages/adapters-redis/tsconfig.json +9 -0
  189. package/packages/adapters-redis/tsup.config.ts +9 -0
  190. package/packages/adapters-snapshot-localfs/README.md +10 -0
  191. package/packages/adapters-snapshot-localfs/eslint.config.js +2 -0
  192. package/packages/adapters-snapshot-localfs/package.json +46 -0
  193. package/packages/adapters-snapshot-localfs/src/index.test.ts +40 -0
  194. package/packages/adapters-snapshot-localfs/src/index.ts +292 -0
  195. package/packages/adapters-snapshot-localfs/src/manifest.ts +32 -0
  196. package/packages/adapters-snapshot-localfs/tsconfig.build.json +15 -0
  197. package/packages/adapters-snapshot-localfs/tsconfig.json +16 -0
  198. package/packages/adapters-snapshot-localfs/tsup.config.ts +11 -0
  199. package/packages/adapters-sqlite/README.md +163 -0
  200. package/packages/adapters-sqlite/eslint.config.js +27 -0
  201. package/packages/adapters-sqlite/package.json +54 -0
  202. package/packages/adapters-sqlite/src/index.test.ts +245 -0
  203. package/packages/adapters-sqlite/src/index.ts +382 -0
  204. package/packages/adapters-sqlite/src/manifest.ts +47 -0
  205. package/packages/adapters-sqlite/src/secure-sql.test.ts +290 -0
  206. package/packages/adapters-sqlite/src/secure-sql.ts +281 -0
  207. package/packages/adapters-sqlite/tsconfig.build.json +15 -0
  208. package/packages/adapters-sqlite/tsconfig.json +9 -0
  209. package/packages/adapters-sqlite/tsup.config.ts +8 -0
  210. package/packages/adapters-sqlite/vitest.config.ts +19 -0
  211. package/packages/adapters-transport/README.md +170 -0
  212. package/packages/adapters-transport/eslint.config.js +27 -0
  213. package/packages/adapters-transport/package.json +49 -0
  214. package/packages/adapters-transport/src/__tests__/unix-socket-server.test.ts +550 -0
  215. package/packages/adapters-transport/src/index.ts +101 -0
  216. package/packages/adapters-transport/src/ipc-transport.ts +228 -0
  217. package/packages/adapters-transport/src/transport.ts +224 -0
  218. package/packages/adapters-transport/src/types.ts +92 -0
  219. package/packages/adapters-transport/src/unix-socket-server.ts +193 -0
  220. package/packages/adapters-transport/src/unix-socket-transport.ts +280 -0
  221. package/packages/adapters-transport/tsconfig.build.json +15 -0
  222. package/packages/adapters-transport/tsconfig.json +9 -0
  223. package/packages/adapters-transport/tsup.config.ts +9 -0
  224. package/packages/adapters-vibeproxy/README.md +159 -0
  225. package/packages/adapters-vibeproxy/eslint.config.js +27 -0
  226. package/packages/adapters-vibeproxy/package.json +51 -0
  227. package/packages/adapters-vibeproxy/src/index.ts +13 -0
  228. package/packages/adapters-vibeproxy/src/llm.ts +437 -0
  229. package/packages/adapters-vibeproxy/src/manifest.ts +51 -0
  230. package/packages/adapters-vibeproxy/tsconfig.build.json +15 -0
  231. package/packages/adapters-vibeproxy/tsconfig.json +9 -0
  232. package/packages/adapters-vibeproxy/tsup.config.ts +8 -0
  233. package/packages/adapters-workspace-agent/package.json +46 -0
  234. package/packages/adapters-workspace-agent/src/__tests__/adapter.test.ts +212 -0
  235. package/packages/adapters-workspace-agent/src/index.ts +220 -0
  236. package/packages/adapters-workspace-agent/src/manifest.ts +36 -0
  237. package/packages/adapters-workspace-agent/tsconfig.build.json +15 -0
  238. package/packages/adapters-workspace-agent/tsconfig.json +16 -0
  239. package/packages/adapters-workspace-agent/tsup.config.ts +11 -0
  240. package/packages/adapters-workspace-localfs/README.md +9 -0
  241. package/packages/adapters-workspace-localfs/eslint.config.js +2 -0
  242. package/packages/adapters-workspace-localfs/package.json +46 -0
  243. package/packages/adapters-workspace-localfs/src/index.test.ts +27 -0
  244. package/packages/adapters-workspace-localfs/src/index.ts +172 -0
  245. package/packages/adapters-workspace-localfs/src/manifest.ts +32 -0
  246. package/packages/adapters-workspace-localfs/tsconfig.build.json +15 -0
  247. package/packages/adapters-workspace-localfs/tsconfig.json +16 -0
  248. package/packages/adapters-workspace-localfs/tsup.config.ts +11 -0
  249. package/packages/adapters-workspace-worktree/README.md +9 -0
  250. package/packages/adapters-workspace-worktree/eslint.config.js +2 -0
  251. package/packages/adapters-workspace-worktree/package.json +46 -0
  252. package/packages/adapters-workspace-worktree/src/index.test.ts +38 -0
  253. package/packages/adapters-workspace-worktree/src/index.ts +245 -0
  254. package/packages/adapters-workspace-worktree/src/manifest.ts +38 -0
  255. package/packages/adapters-workspace-worktree/tsconfig.build.json +15 -0
  256. package/packages/adapters-workspace-worktree/tsconfig.json +16 -0
  257. package/packages/adapters-workspace-worktree/tsup.config.ts +11 -0
  258. package/pnpm-workspace.yaml +2800 -0
  259. package/prettierrc.json +1 -0
  260. package/scripts/devkit-sync.mjs +37 -0
  261. package/scripts/hooks/post-push +9 -0
  262. package/scripts/hooks/pre-commit +9 -0
  263. package/scripts/hooks/pre-push +9 -0
  264. package/test-integration.ts +242 -0
  265. package/test.txt +1 -0
  266. package/tsconfig.base.json +6 -0
  267. package/tsconfig.build.json +15 -0
  268. package/tsconfig.json +9 -0
  269. package/tsconfig.paths.json +26 -0
  270. package/tsconfig.tools.json +17 -0
  271. package/tsup.config.bin.ts +34 -0
  272. package/tsup.config.cli.ts +41 -0
  273. package/tsup.config.dual.ts +46 -0
  274. package/tsup.config.ts +36 -0
  275. package/tsup.external.json +103 -0
  276. package/vitest.config.ts +2 -0
package/.cursorrules ADDED
@@ -0,0 +1,32 @@
1
+ # Global Cursor rules for KB Labs projects
2
+ allow:
3
+ - read: "src/**/*"
4
+ - read: "packages/**/*"
5
+ - read: "apps/**/*"
6
+ - read: "docs/**/*"
7
+ - read: "README.md"
8
+ - read: "package.json"
9
+ - read: "tsconfig*.json"
10
+ - read: ".github/**/*"
11
+ - read: ".cursorrules"
12
+ - read: "agents/**/*"
13
+ - write: "src/**/*"
14
+ - write: "packages/**/*"
15
+ - write: "apps/**/*"
16
+ - write: "docs/**/*"
17
+ - write: "README.md"
18
+ - write: "CONTRIBUTING.md"
19
+ - write: "AGENTS.md"
20
+ - write: "docs/adr/**/*"
21
+ - run: "pnpm *"
22
+ - run: "git *"
23
+ deny:
24
+ - write: "node_modules/**/*"
25
+ - write: "dist/**/*"
26
+ - write: "coverage/**/*"
27
+ - write: ".yalc/**/*"
28
+ - run: "rm -rf *"
29
+ notes:
30
+ - Always prefer presets from @kb-labs/devkit (tsconfig/eslint/prettier/vitest/tsup).
31
+ - Keep local configs as thin wrappers (import/extends from devkit).
32
+ - Respect package.json "exports" (no deep imports).
@@ -0,0 +1,13 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ pull_request:
6
+ workflow_dispatch: {}
7
+
8
+ jobs:
9
+ call:
10
+ uses: KirillBaranov/kb-labs-devkit/.github/workflows/ci-reusable.yml@main
11
+ with:
12
+ node-version: '20'
13
+ run-coverage: true
@@ -0,0 +1,28 @@
1
+ name: Deploy
2
+
3
+ # Deploys all services to VPS via docker compose
4
+ # Triggered manually with a specific image tag
5
+ #
6
+ # Prerequisites:
7
+ # Add secrets in GitHub → Settings → Secrets → Actions:
8
+ # VPS_HOST - server IP or hostname
9
+ # VPS_USER - SSH username (e.g. deploy)
10
+ # VPS_SSH_KEY - SSH private key
11
+
12
+ on:
13
+ workflow_dispatch:
14
+ inputs:
15
+ tag:
16
+ description: Image tag to deploy (e.g. release-1.0.0)
17
+ required: true
18
+ type: string
19
+
20
+ jobs:
21
+ call:
22
+ uses: KirillBaranov/kb-labs-devkit/.github/workflows/deploy-reusable.yml@main
23
+ with:
24
+ image-tag: ${{ inputs.tag }}
25
+ compose-file: docker-compose.production.yml
26
+ deploy-dir: /opt/kb-labs
27
+ health-check-url: http://localhost:5050/api/v1/health
28
+ secrets: inherit
@@ -0,0 +1,25 @@
1
+ name: Docker Build
2
+
3
+ # Builds and pushes Docker image to ghcr.io
4
+ #
5
+ # Flow:
6
+ # rc branch → build image tagged rc-<sha> (for testing)
7
+ # release tag → build image tagged release-x.y.z + latest (for deploy)
8
+ #
9
+ # Configure:
10
+ # - Set image-name to your service name (e.g. kb-labs-rest-api)
11
+ # - Set dockerfile path if not at repo root
12
+
13
+ on:
14
+ push:
15
+ branches: [rc]
16
+ tags: ['release-*']
17
+ workflow_dispatch: {}
18
+
19
+ jobs:
20
+ call:
21
+ uses: KirillBaranov/kb-labs-devkit/.github/workflows/docker-build-reusable.yml@main
22
+ with:
23
+ image-name: kb-labs-my-service # TODO: change to your service name
24
+ dockerfile: Dockerfile
25
+ context: .
@@ -0,0 +1,10 @@
1
+ name: Drift Check
2
+ on:
3
+ workflow_dispatch: {}
4
+ schedule:
5
+ - cron: '0 3 * * *' # nightly
6
+ jobs:
7
+ drift:
8
+ uses: KirillBaranov/kb-labs-devkit/.github/workflows/drift-check-reusable.yml@main
9
+ with:
10
+ node-version: '20'
@@ -0,0 +1,16 @@
1
+ name: Profiles Validate
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ pull_request:
6
+ workflow_dispatch: {}
7
+
8
+ jobs:
9
+ call:
10
+ uses: KirillBaranov/kb-labs-devkit/.github/workflows/profiles-validate-reusable.yml@main
11
+ with:
12
+ node_version: '20'
13
+ soft_fail: true
14
+ working_directory: '.'
15
+ fixtures_dir: ''
16
+ log_level: 'info'
@@ -0,0 +1,8 @@
1
+ name: Release
2
+ on:
3
+ push:
4
+ tags: ['v*']
5
+ workflow_dispatch: {}
6
+ jobs:
7
+ call:
8
+ uses: KirillBaranov/kb-labs-devkit/.github/workflows/release-reusable.yml@main
@@ -0,0 +1,15 @@
1
+ src/**/*
2
+ packages/**/*
3
+ apps/**/*
4
+ docs/**/*
5
+ .eslintrc.*
6
+ eslint.config.*
7
+ vitest.config.*
8
+ tsconfig*.json
9
+ .prettierrc*
10
+ .editorconfig
11
+ package.json
12
+ .github/**/*
13
+ README.md
14
+ CONTRIBUTING.md
15
+ AGENTS.md
@@ -0,0 +1,17 @@
1
+ permissions:
2
+ file:
3
+ read: ["**/*"]
4
+ write:
5
+ - "eslint.config.js"
6
+ - "vitest.config.*"
7
+ - "tsconfig*.json"
8
+ - ".prettierrc*"
9
+ - ".editorconfig"
10
+ - "package.json"
11
+ - ".github/workflows/*.yml"
12
+ - "README.md"
13
+ - "CONTRIBUTING.md"
14
+ terminal:
15
+ allowed: ["pnpm *", "git *"]
16
+ git:
17
+ allowed: ["add", "commit", "restore", "checkout", "switch"]
@@ -0,0 +1,28 @@
1
+ # DevKit Maintainer (KB Labs)
2
+
3
+ You maintain adoption of the KB Labs DevKit across repositories.
4
+
5
+ **Goals**
6
+ - Enforce using `@kb-labs/devkit` for tsconfig, ESLint, Prettier, Vitest, and Tsup.
7
+ - Ensure CI uses reusable workflows from `kb-labs-devkit`.
8
+ - Keep local configs as thin wrappers that import/extend DevKit presets.
9
+ - Avoid breaking changes. Propose minimal diffs first.
10
+
11
+ **Process**
12
+ 1) Audit repository for drift:
13
+ - Duplicate configs instead of devkit presets.
14
+ - Outdated scripts not using devkit.
15
+ - CI not using reusable workflows.
16
+ 2) Propose a patch plan (list files and diffs).
17
+ 3) Apply safe changes incrementally.
18
+ 4) Verify with `pnpm lint && pnpm type-check && pnpm -r run test && pnpm -r run build`.
19
+
20
+ **Rules**
21
+ - Do not modify domain/business logic.
22
+ - Keep changes minimal and reversible.
23
+ - Prefer project-wide consistency over ad-hoc fixes.
24
+
25
+ **Outputs**
26
+ - Patch plan (bulleted).
27
+ - Diffs for files to change.
28
+ - A short validation checklist to run locally and in CI.
@@ -0,0 +1,31 @@
1
+ # Runbook — DevKit Maintainer
2
+
3
+ ## Audit
4
+ - Check for:
5
+ - Local ESLint/TS/Prettier/Vitest/Tsup configs not referencing devkit.
6
+ - package.json scripts that don't use devkit presets.
7
+ - CI not using `KirillBaranov/kb-labs-devkit/.github/workflows/ci.yml@v1` (or @main).
8
+ - Misaligned tsconfig (`inlineSources`, missing `resolveJsonModule`, etc.).
9
+
10
+ ## Patch Plan (example)
11
+ 1. Replace local `eslint.config.js` with:
12
+ ```js
13
+ import config from '@kb-labs/devkit/eslint/node.js'
14
+ export default config
15
+ ```
16
+
17
+ 2. Replace tsconfig.json to extend from project base, which extends devkit.
18
+ 3. Update scripts to use devkit presets:
19
+ - build/dev with tsup preset, or local tsup config if entry differs.
20
+ - vitest config centralized: vitest -c ../../vitest.config.ts for packages.
21
+ 4. CI: use reusable workflow from devkit.
22
+
23
+ ## Validate
24
+ - pnpm install
25
+ - pnpm lint && pnpm type-check
26
+ - pnpm -r run test
27
+ - pnpm -r run build
28
+
29
+ ## Notes
30
+ - Prefer root vitest config (avoid TS configs under pure ESM).
31
+ - Avoid deep imports; ensure "exports" are respected.
@@ -0,0 +1,24 @@
1
+ # Docs Drafter (KB Labs)
2
+
3
+ You draft and maintain developer-facing documentation.
4
+
5
+ **Goals**
6
+ - Generate or update: README.md, CONTRIBUTING.md, and ADRs in `docs/adr/`.
7
+ - Keep docs concise, actionable, and aligned with DevKit conventions.
8
+ - Link to ADRs from README when architectural decisions are relevant.
9
+
10
+ **Process**
11
+ 1) Inspect repo structure, scripts, and DevKit integration.
12
+ 2) Propose doc outline or diffs (show what will change).
13
+ 3) Write/update docs incrementally; keep tone consistent.
14
+ 4) Validate commands actually work (`pnpm` scripts).
15
+
16
+ **Rules**
17
+ - No boilerplate walls of text; focus on “how to run, build, test, release”.
18
+ - Use the ADR template when a decision affects architecture/tooling.
19
+ - Cross-link related docs (ADR <-> README <-> CONTRIBUTING).
20
+
21
+ **Outputs**
22
+ - Updated README.md with Quickstart and scripts.
23
+ - CONTRIBUTING.md with lint/test/build instructions, ADR policy.
24
+ - New ADRs using `docs/adr/0000-template.md`.
@@ -0,0 +1,18 @@
1
+ # Runbook — Docs Drafter
2
+
3
+ ## Minimum README sections
4
+ - What is this package/app.
5
+ - Quickstart: install, build, dev.
6
+ - Scripts (lint/test/type-check/build).
7
+ - DevKit integration and CI note.
8
+ - Links to ADRs.
9
+
10
+ ## CONTRIBUTING essentials
11
+ - Node/pnpm versions.
12
+ - Lint/test/build commands.
13
+ - ADR policy: when to add a new record; link to template.
14
+
15
+ ## ADR
16
+ - Use `docs/adr/0000-template.md`.
17
+ - Record decisions affecting architecture/tooling.
18
+ - Cross-link from README.
@@ -0,0 +1,7 @@
1
+ packages/**/*
2
+ apps/**/*
3
+ CHANGELOG.md
4
+ README.md
5
+ package.json
6
+ pnpm-lock.yaml
7
+ .github/workflows/*
@@ -0,0 +1,27 @@
1
+ # Release Manager (KB Labs)
2
+
3
+ You prepare safe releases.
4
+
5
+ **Goals**
6
+ - Draft a release plan: version bump, summary, and changelog.
7
+ - Verify build and tests before proposing a release.
8
+ - Use GitHub Releases; npm publish only when explicitly requested and configured.
9
+
10
+ **Process**
11
+ 1) Analyze commits and changes since last tag.
12
+ 2) Recommend semver bump (patch/minor/major).
13
+ 3) Run validation locally:
14
+ - `pnpm -r run build`
15
+ - `pnpm -r run test` (or `--if-present`)
16
+ 4) Prepare release notes (features/fixes/breaking).
17
+ 5) Output a checklist with exact commands/steps.
18
+
19
+ **Rules**
20
+ - Do not push tags or publish without confirmation.
21
+ - Respect monorepo workspaces; note any packages impacted.
22
+ - If publishing to npm, require `NPM_TOKEN` and proper access.
23
+
24
+ **Outputs**
25
+ - Release plan (version, notes, affected packages).
26
+ - GitHub Release draft text.
27
+ - Optional `changeset` if used (or plain changelog).
@@ -0,0 +1,17 @@
1
+ # Runbook — Release Manager
2
+
3
+ ## Preflight
4
+ - `pnpm install`
5
+ - `pnpm lint && pnpm type-check`
6
+ - `pnpm -r run test`
7
+ - `pnpm -r run build`
8
+
9
+ ## Plan
10
+ - Determine semver bump.
11
+ - Summarize changes by category.
12
+ - Identify impacted packages (monorepo).
13
+
14
+ ## Output
15
+ - GitHub Release draft (markdown).
16
+ - Optional: `pnpm -r publish` if configured (requires `NPM_TOKEN`).
17
+ - Do not push tags unless confirmed.
@@ -0,0 +1,7 @@
1
+ src/**/*
2
+ packages/**/*
3
+ apps/**/*
4
+ tsconfig*.json
5
+ vitest.config.*
6
+ package.json
7
+ README.md
@@ -0,0 +1,27 @@
1
+ # Test Generator (KB Labs)
2
+
3
+ You generate pragmatic unit tests and improve coverage without brittleness.
4
+
5
+ **Goals**
6
+ - Co-located tests: `__tests__/*.spec.ts` or `*.test.ts`.
7
+ - Use Vitest. Respect project’s exports (no deep imports).
8
+ - Aim for ≥95% coverage where meaningful; avoid flaky or snapshot-heavy tests.
9
+ - Cover branches, edge cases, and error paths.
10
+
11
+ **Process**
12
+ 1) Scan source files and existing tests.
13
+ 2) Propose a coverage plan (file-by-file).
14
+ 3) Implement tests incrementally; run locally:
15
+ - `pnpm -r run test` (or per package)
16
+ - `pnpm -r run test:coverage` if configured
17
+ 4) Refine to remove redundancy and flakiness.
18
+
19
+ **Rules**
20
+ - Keep tests deterministic and fast.
21
+ - Don’t introduce new runtime deps without confirmation.
22
+ - Prefer simple assertions, explicit inputs, and clear setup/teardown.
23
+
24
+ **Outputs**
25
+ - Coverage plan with target %.
26
+ - New/updated test files.
27
+ - Short notes on what is intentionally left untested (if any).
@@ -0,0 +1,18 @@
1
+ # Runbook — Test Generator
2
+
3
+ ## Steps
4
+ 1. Identify functions/methods with low/no coverage.
5
+ 2. For each function:
6
+ - Test main path, edge cases, and error handling.
7
+ - Avoid snapshots unless structure is stable and justified.
8
+ 3. Create tests in `__tests__/name.spec.ts` near the source file.
9
+ 4. Run tests and check coverage locally.
10
+
11
+ ## Commands
12
+ - `pnpm -r run test`
13
+ - `pnpm -r run test:coverage`
14
+ - `pnpm --filter <pkg> run test`
15
+
16
+ ## Tips
17
+ - Import from package public exports when possible to mirror user usage.
18
+ - If a package has no tests, add a `smoke.spec.ts`.
@@ -0,0 +1,90 @@
1
+ # Contributing Guide
2
+
3
+ Thanks for considering a contribution to **KB Labs** projects!
4
+
5
+ ---
6
+
7
+ ## Development setup
8
+
9
+ ```bash
10
+ pnpm i
11
+ pnpm dev
12
+ ```
13
+
14
+ ## 📋 Development Guidelines
15
+
16
+ ### Code Style
17
+
18
+ - **Coding style**: Follow ESLint + Prettier rules. Run `pnpm lint` before pushing.
19
+ - **TypeScript**: Use strict mode and proper type annotations.
20
+ - **Testing**: Cover all changes with Vitest. Run `pnpm test`.
21
+ - **Documentation**: Document all public APIs and complex logic.
22
+
23
+ ### Commit Messages
24
+
25
+ Use conventional commit format:
26
+
27
+ ```
28
+ feat: add new feature
29
+ fix: correct bug
30
+ docs: update documentation
31
+ refactor: restructure code
32
+ test: add or update tests
33
+ chore: maintenance tasks
34
+ ```
35
+
36
+ ### Architecture Decisions
37
+
38
+ - For significant architectural changes, add an ADR in `docs/adr/`
39
+ - Follow the ADR template in `docs/adr/0000-template.md`
40
+ - Include required metadata (Date, Status, Deciders, **Last Reviewed**, **Tags**)
41
+ - **Last Reviewed** date is required and should be updated periodically
42
+ - **Tags** are mandatory (minimum 1, maximum 5 tags from approved list)
43
+ - See [Documentation Standard](./docs/DOCUMENTATION.md) for ADR format requirements
44
+
45
+ ## DevKit Integration
46
+
47
+ This project uses `@kb-labs/devkit` for shared tooling configurations. Key points:
48
+
49
+ - **Configurations**: ESLint, Prettier, Vitest, TypeScript, and GitHub Actions are managed by devkit
50
+ - **Local configs**: Act as thin wrappers over devkit configurations
51
+ - **Updates**: When devkit is updated, run `pnpm install` to get the latest configurations
52
+ - **Customization**: For project-specific rules, extend devkit configs rather than overriding them
53
+
54
+ ### DevKit Commands
55
+
56
+ - `pnpm devkit:sync` - Sync DevKit configurations (runs automatically on install)
57
+ - `pnpm devkit:check` - Check if sync is needed
58
+ - `pnpm devkit:force` - Force sync (overwrites existing configs)
59
+ - `pnpm devkit:help` - Show help and available options
60
+
61
+ For more details, see [ADR-0005: Use DevKit for Shared Tooling](docs/adr/0005-use-devkit-for-shared-tooling.md).
62
+
63
+ ---
64
+
65
+ ## 🔄 Pull Request Process
66
+
67
+ ### Before Submitting
68
+
69
+ 1. **Fork** the repository and create a feature branch
70
+ 2. **Make your changes** following the guidelines above
71
+ 3. **Test thoroughly**:
72
+ ```bash
73
+ pnpm check # Runs lint + type-check + tests
74
+ ```
75
+ 4. **Update documentation** if needed (README, API docs, ADRs)
76
+ 5. **Submit a PR** with:
77
+ - Clear description of changes
78
+ - Reference any related issues
79
+ - Ensure all CI checks pass
80
+
81
+ ### PR Requirements
82
+
83
+ - Clear, descriptive title and description
84
+ - Reference any related issues
85
+ - Ensure all CI checks pass
86
+ - Request review from maintainers
87
+
88
+ ---
89
+
90
+ **See [Documentation Standard](./docs/DOCUMENTATION.md) for complete documentation guidelines.**