@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/.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,23 @@
1
+ {
2
+ "editor.tabSize": 2,
3
+ "editor.insertSpaces": true,
4
+ "editor.formatOnSave": true,
5
+ "files.eol": "\n",
6
+ // ESLint (flat config)
7
+ "eslint.useFlatConfig": true,
8
+ "eslint.experimental.useFlatConfig": true,
9
+ "eslint.validate": [
10
+ "javascript",
11
+ "javascriptreact",
12
+ "typescript",
13
+ "typescriptreact",
14
+ "vue"
15
+ ],
16
+ // Prettier
17
+ "prettier.requireConfig": true,
18
+ // TypeScript: использовать локальную версию в репозитории
19
+ "typescript.tsdk": "node_modules/typescript/lib",
20
+ // Vitest
21
+ "vitest.enable": true,
22
+ "vitest.disableWorkspaceWarning": true
23
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,33 @@
1
+ # Changelog — @kb-labs/shared
2
+
3
+ ## 1.0.0 — 2026-02-24
4
+
5
+ First stable release. Prior history represents internal R&D — this is the first versioned public release.
6
+
7
+ ### Packages
8
+
9
+ | Package | Version |
10
+ |---------|---------|
11
+ | `@kb-labs/shared-cli-ui` | 1.0.0 |
12
+ | `@kb-labs/shared-command-kit` | 1.0.0 |
13
+ | `@kb-labs/shared-testing` | 1.0.0 |
14
+ | `@kb-labs/shared-tool-kit` | 1.0.0 |
15
+ | `@kb-labs/perm-presets` | 1.0.0 |
16
+
17
+ ### What's included
18
+
19
+ **`@kb-labs/shared-cli-ui`** — CLI presentation layer: color utilities, progress bars, table rendering, debug output, sidebar layout. Used by all CLI commands for consistent visual output.
20
+
21
+ **`@kb-labs/shared-command-kit`** — High-level command building utilities: flag helpers, analytics integration, error formatting, LLM helpers, `useConfig`, `useLogger`, `useStorage` hooks. Reduces boilerplate in command handlers.
22
+
23
+ **`@kb-labs/perm-presets`** — Composable permission preset definitions and factories for plugin permission declarations. Used in plugin manifests to declare required platform access.
24
+
25
+ **`@kb-labs/shared-testing`** — Test utilities for plugin development: mock platform builders, test context factories, sandbox setup helpers.
26
+
27
+ **`@kb-labs/shared-tool-kit`** — Tool factory and mock utilities for agent tool development.
28
+
29
+ ### Notes
30
+
31
+ - `shared-cli-ui` and `shared-command-kit` are the primary shared dependencies for all KB Labs plugins
32
+ - `shared-testing` is a dev dependency — not included in production builds
33
+ - `perm-presets` is the canonical way to declare plugin permissions in manifests
@@ -0,0 +1,117 @@
1
+ # Contributing Guide
2
+
3
+ Thanks for considering a contribution to **KB Labs Shared**!
4
+ This guide will help you get started with contributing to our shared utilities and libraries.
5
+
6
+ ## 🚀 Development Setup
7
+
8
+ ### Prerequisites
9
+
10
+ - **Node.js:** >= 18.18.0
11
+ - **pnpm:** >= 9.0.0
12
+
13
+ ### Initial Setup
14
+
15
+ ```bash
16
+ # Clone the repository
17
+ git clone https://github.com/kirill-baranov/kb-labs-shared.git
18
+ cd kb-labs-shared
19
+
20
+ # Install dependencies
21
+ pnpm install
22
+
23
+ # Start development mode
24
+ pnpm dev
25
+ ```
26
+
27
+ ## 📋 Development Guidelines
28
+
29
+ ### Code Style
30
+
31
+ - Follow **ESLint** and **Prettier** rules configured in the project
32
+ - Use **TypeScript strict mode** for all new code
33
+ - Run `pnpm lint` before committing changes
34
+ - Use `pnpm lint:fix` to automatically fix formatting issues
35
+
36
+ ### Testing
37
+
38
+ - Write tests for all new functionality using **Vitest**
39
+ - Maintain or improve test coverage
40
+ - Run `pnpm test` to execute all tests
41
+ - Use `pnpm test:watch` for development
42
+
43
+ ### Package Development
44
+
45
+ - Each package in `packages/` should be self-contained
46
+ - Follow the existing package structure and naming conventions
47
+ - Update package README files when adding new functionality
48
+ - Ensure all packages build successfully with `pnpm build`
49
+
50
+ ### Commit Messages
51
+
52
+ Use clear, conventional commit messages:
53
+
54
+ ```bash
55
+ feat: add new text normalization function
56
+ fix: correct boundary checking logic
57
+ docs: update package README
58
+ test: add unit tests for diff parser
59
+ refactor: simplify profile resolution
60
+ ```
61
+
62
+ ### Architecture Decisions
63
+
64
+ - For significant architectural changes, create an **ADR** (Architecture Decision Record) in `docs/adr/`
65
+ - Follow the ADR template in `docs/adr/0000-template.md`
66
+ - Include required metadata (Date, Status, Deciders, **Last Reviewed**, **Tags**)
67
+ - **Last Reviewed** date is required and should be updated periodically
68
+ - **Tags** are mandatory (minimum 1, maximum 5 tags from approved list)
69
+ - See [Documentation Standard](./docs/DOCUMENTATION.md) for ADR format requirements
70
+
71
+ ## 🔄 Pull Request Process
72
+
73
+ ### Before Submitting
74
+
75
+ 1. **Fork** the repository and create a feature branch
76
+ 2. **Make your changes** following the guidelines above
77
+ 3. **Run quality checks:**
78
+ ```bash
79
+ pnpm check # Runs lint + type-check + tests
80
+ ```
81
+ 4. **Update documentation** if needed (README files, inline comments)
82
+ 5. **Test your changes** thoroughly
83
+
84
+ ### Submitting the PR
85
+
86
+ 1. **Push** your changes to your fork
87
+ 2. **Create a Pull Request** with:
88
+ - Clear title describing the change
89
+ - Detailed description of what was changed and why
90
+ - Reference any related issues
91
+ - Screenshots or examples if applicable
92
+
93
+ ### Review Process
94
+
95
+ - All PRs require review before merging
96
+ - Address feedback promptly and professionally
97
+ - Keep PRs focused and reasonably sized
98
+ - Update your branch if the main branch has moved forward
99
+
100
+ ## 🐛 Reporting Issues
101
+
102
+ When reporting bugs or requesting features:
103
+
104
+ 1. **Check existing issues** to avoid duplicates
105
+ 2. **Provide clear reproduction steps** for bugs
106
+ 3. **Include environment details** (Node.js version, OS, etc.)
107
+ 4. **Use appropriate labels** and templates
108
+
109
+ ## 📚 Additional Resources
110
+
111
+ - [Architecture Decision Records](./docs/adr/) - Project architecture decisions
112
+ - [Package Documentation](./packages/) - Individual package README files
113
+ - [Development Scripts](./README.md#-available-scripts) - Available npm scripts
114
+
115
+ ---
116
+
117
+ **See [Documentation Standard](./docs/DOCUMENTATION.md) for complete documentation guidelines.**
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) KB Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.