@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.
- package/.cursorrules +32 -0
- package/.github/workflows/ci.yml +13 -0
- package/.github/workflows/deploy.yml +28 -0
- package/.github/workflows/docker-build.yml +25 -0
- package/.github/workflows/drift-check.yml +10 -0
- package/.github/workflows/profiles-validate.yml +16 -0
- package/.github/workflows/release.yml +8 -0
- package/.kb/devkit/agents/devkit-maintainer/context.globs +15 -0
- package/.kb/devkit/agents/devkit-maintainer/permissions.yml +17 -0
- package/.kb/devkit/agents/devkit-maintainer/prompt.md +28 -0
- package/.kb/devkit/agents/devkit-maintainer/runbook.md +31 -0
- package/.kb/devkit/agents/docs-crafter/prompt.md +24 -0
- package/.kb/devkit/agents/docs-crafter/runbook.md +18 -0
- package/.kb/devkit/agents/release-manager/context.globs +7 -0
- package/.kb/devkit/agents/release-manager/prompt.md +27 -0
- package/.kb/devkit/agents/release-manager/runbook.md +17 -0
- package/.kb/devkit/agents/test-generator/context.globs +7 -0
- package/.kb/devkit/agents/test-generator/prompt.md +27 -0
- package/.kb/devkit/agents/test-generator/runbook.md +18 -0
- package/CONTRIBUTING.md +90 -0
- package/IMPLEMENTATION_COMPLETE.md +416 -0
- package/LICENSE +186 -0
- package/README-TEMPLATE.md +179 -0
- package/README.md +306 -0
- package/docs/DOCUMENTATION.md +74 -0
- package/docs/adr/0000-template.md +49 -0
- package/docs/adr/0001-architecture-and-repository-layout.md +33 -0
- package/docs/adr/0002-plugins-and-extensibility.md +46 -0
- package/docs/adr/0003-package-and-module-boundaries.md +37 -0
- package/docs/adr/0004-versioning-and-release-policy.md +38 -0
- package/docs/adr/0005-use-devkit-for-shared-tooling.md +48 -0
- package/docs/adr/0006-adopt-devkit-sync.md +47 -0
- package/docs/adr/0007-drift-kit-check.md +72 -0
- package/docs/adr/0008-devkit-sync-wrapper-strategy.md +67 -0
- package/docs/naming-convention.md +272 -0
- package/eslint.config.js +27 -0
- package/kb-labs.config.json +5 -0
- package/package.json +84 -0
- package/package.json.bin +25 -0
- package/package.json.lib +30 -0
- package/packages/adapters-analytics-duckdb/package.json +54 -0
- package/packages/adapters-analytics-duckdb/scripts/migrate-from-jsonl.mjs +253 -0
- package/packages/adapters-analytics-duckdb/src/index.ts +380 -0
- package/packages/adapters-analytics-duckdb/src/manifest.ts +36 -0
- package/packages/adapters-analytics-duckdb/src/schema.ts +161 -0
- package/packages/adapters-analytics-duckdb/tsconfig.build.json +15 -0
- package/packages/adapters-analytics-duckdb/tsconfig.json +9 -0
- package/packages/adapters-analytics-duckdb/tsup.config.ts +9 -0
- package/packages/adapters-analytics-file/README.md +32 -0
- package/packages/adapters-analytics-file/eslint.config.js +27 -0
- package/packages/adapters-analytics-file/package.json +50 -0
- package/packages/adapters-analytics-file/src/__tests__/daily-stats.spec.ts +287 -0
- package/packages/adapters-analytics-file/src/__tests__/scoped-analytics.test.ts +233 -0
- package/packages/adapters-analytics-file/src/index.test.ts +214 -0
- package/packages/adapters-analytics-file/src/index.ts +830 -0
- package/packages/adapters-analytics-file/src/manifest.ts +45 -0
- package/packages/adapters-analytics-file/tsconfig.build.json +15 -0
- package/packages/adapters-analytics-file/tsconfig.json +9 -0
- package/packages/adapters-analytics-file/tsup.config.ts +9 -0
- package/packages/adapters-analytics-sqlite/package.json +55 -0
- package/packages/adapters-analytics-sqlite/scripts/migrate-from-jsonl.mjs +194 -0
- package/packages/adapters-analytics-sqlite/src/index.ts +460 -0
- package/packages/adapters-analytics-sqlite/src/manifest.ts +41 -0
- package/packages/adapters-analytics-sqlite/tsconfig.build.json +15 -0
- package/packages/adapters-analytics-sqlite/tsconfig.json +9 -0
- package/packages/adapters-analytics-sqlite/tsup.config.ts +9 -0
- package/packages/adapters-environment-docker/README.md +28 -0
- package/packages/adapters-environment-docker/eslint.config.js +5 -0
- package/packages/adapters-environment-docker/package.json +49 -0
- package/packages/adapters-environment-docker/src/index.test.ts +138 -0
- package/packages/adapters-environment-docker/src/index.ts +439 -0
- package/packages/adapters-environment-docker/src/manifest.ts +65 -0
- package/packages/adapters-environment-docker/tsconfig.build.json +15 -0
- package/packages/adapters-environment-docker/tsconfig.json +16 -0
- package/packages/adapters-environment-docker/tsup.config.ts +9 -0
- package/packages/adapters-eventbus-cache/README.md +242 -0
- package/packages/adapters-eventbus-cache/eslint.config.js +27 -0
- package/packages/adapters-eventbus-cache/package.json +46 -0
- package/packages/adapters-eventbus-cache/src/index.test.ts +235 -0
- package/packages/adapters-eventbus-cache/src/index.ts +215 -0
- package/packages/adapters-eventbus-cache/src/manifest.ts +50 -0
- package/packages/adapters-eventbus-cache/src/types.ts +58 -0
- package/packages/adapters-eventbus-cache/tsconfig.build.json +15 -0
- package/packages/adapters-eventbus-cache/tsconfig.json +9 -0
- package/packages/adapters-eventbus-cache/tsup.config.ts +9 -0
- package/packages/adapters-fs/README.md +171 -0
- package/packages/adapters-fs/allowed.txt +1 -0
- package/packages/adapters-fs/conflict.txt +1 -0
- package/packages/adapters-fs/dest.txt +1 -0
- package/packages/adapters-fs/eslint.config.js +27 -0
- package/packages/adapters-fs/exists.txt +1 -0
- package/packages/adapters-fs/not-allowed.txt +1 -0
- package/packages/adapters-fs/other.txt +1 -0
- package/packages/adapters-fs/package.json +55 -0
- package/packages/adapters-fs/public/file1.txt +1 -0
- package/packages/adapters-fs/public/file2.txt +1 -0
- package/packages/adapters-fs/secret.txt +1 -0
- package/packages/adapters-fs/secrets/key.txt +1 -0
- package/packages/adapters-fs/src/index.test.ts +243 -0
- package/packages/adapters-fs/src/index.ts +258 -0
- package/packages/adapters-fs/src/manifest.ts +35 -0
- package/packages/adapters-fs/src/secure-storage.test.ts +380 -0
- package/packages/adapters-fs/src/secure-storage.ts +268 -0
- package/packages/adapters-fs/test.json +1 -0
- package/packages/adapters-fs/test.txt +1 -0
- package/packages/adapters-fs/test.xyz +1 -0
- package/packages/adapters-fs/test1.txt +1 -0
- package/packages/adapters-fs/test2.txt +1 -0
- package/packages/adapters-fs/tsconfig.build.json +15 -0
- package/packages/adapters-fs/tsconfig.json +9 -0
- package/packages/adapters-fs/tsup.config.ts +8 -0
- package/packages/adapters-fs/vitest.config.ts +19 -0
- package/packages/adapters-log-ringbuffer/README.md +228 -0
- package/packages/adapters-log-ringbuffer/eslint.config.js +27 -0
- package/packages/adapters-log-ringbuffer/package.json +47 -0
- package/packages/adapters-log-ringbuffer/src/__tests__/ring-buffer.test.ts +450 -0
- package/packages/adapters-log-ringbuffer/src/index.ts +212 -0
- package/packages/adapters-log-ringbuffer/src/manifest.ts +30 -0
- package/packages/adapters-log-ringbuffer/tsconfig.build.json +15 -0
- package/packages/adapters-log-ringbuffer/tsconfig.json +9 -0
- package/packages/adapters-log-ringbuffer/tsup.config.ts +9 -0
- package/packages/adapters-log-ringbuffer/vitest.config.ts +14 -0
- package/packages/adapters-log-sqlite/README.md +396 -0
- package/packages/adapters-log-sqlite/eslint.config.js +27 -0
- package/packages/adapters-log-sqlite/package.json +49 -0
- package/packages/adapters-log-sqlite/src/__tests__/log-persistence.test.ts +718 -0
- package/packages/adapters-log-sqlite/src/index.ts +1068 -0
- package/packages/adapters-log-sqlite/src/manifest.ts +36 -0
- package/packages/adapters-log-sqlite/src/schema.sql +46 -0
- package/packages/adapters-log-sqlite/tsconfig.build.json +15 -0
- package/packages/adapters-log-sqlite/tsconfig.json +9 -0
- package/packages/adapters-log-sqlite/tsup.config.ts +9 -0
- package/packages/adapters-log-sqlite/vitest.config.ts +15 -0
- package/packages/adapters-mongodb/README.md +147 -0
- package/packages/adapters-mongodb/eslint.config.js +27 -0
- package/packages/adapters-mongodb/package.json +53 -0
- package/packages/adapters-mongodb/src/index.ts +428 -0
- package/packages/adapters-mongodb/src/manifest.ts +45 -0
- package/packages/adapters-mongodb/src/secure-document.ts +231 -0
- package/packages/adapters-mongodb/tsconfig.build.json +15 -0
- package/packages/adapters-mongodb/tsconfig.json +9 -0
- package/packages/adapters-mongodb/tsup.config.ts +8 -0
- package/packages/adapters-openai/README.md +151 -0
- package/packages/adapters-openai/embeddings.ts +37 -0
- package/packages/adapters-openai/eslint.config.js +26 -0
- package/packages/adapters-openai/index.ts +22 -0
- package/packages/adapters-openai/package.json +57 -0
- package/packages/adapters-openai/src/embeddings-manifest.ts +45 -0
- package/packages/adapters-openai/src/embeddings.ts +104 -0
- package/packages/adapters-openai/src/index.ts +13 -0
- package/packages/adapters-openai/src/llm.ts +304 -0
- package/packages/adapters-openai/src/manifest.ts +47 -0
- package/packages/adapters-openai/tsconfig.build.json +15 -0
- package/packages/adapters-openai/tsconfig.json +9 -0
- package/packages/adapters-openai/tsup.config.ts +8 -0
- package/packages/adapters-pino/README.md +152 -0
- package/packages/adapters-pino/eslint.config.js +27 -0
- package/packages/adapters-pino/package.json +49 -0
- package/packages/adapters-pino/src/index.test.ts +44 -0
- package/packages/adapters-pino/src/index.ts +322 -0
- package/packages/adapters-pino/src/log-ring-buffer.ts +142 -0
- package/packages/adapters-pino/src/manifest.ts +49 -0
- package/packages/adapters-pino/tsconfig.build.json +15 -0
- package/packages/adapters-pino/tsconfig.json +9 -0
- package/packages/adapters-pino/tsup.config.ts +9 -0
- package/packages/adapters-pino-http/README.md +141 -0
- package/packages/adapters-pino-http/eslint.config.js +27 -0
- package/packages/adapters-pino-http/package.json +46 -0
- package/packages/adapters-pino-http/src/index.ts +229 -0
- package/packages/adapters-pino-http/tsconfig.build.json +15 -0
- package/packages/adapters-pino-http/tsconfig.json +9 -0
- package/packages/adapters-pino-http/tsup.config.ts +9 -0
- package/packages/adapters-qdrant/README.md +166 -0
- package/packages/adapters-qdrant/eslint.config.js +27 -0
- package/packages/adapters-qdrant/package.json +49 -0
- package/packages/adapters-qdrant/src/index.ts +490 -0
- package/packages/adapters-qdrant/src/manifest.ts +54 -0
- package/packages/adapters-qdrant/src/retry.ts +204 -0
- package/packages/adapters-qdrant/tsconfig.build.json +15 -0
- package/packages/adapters-qdrant/tsconfig.json +9 -0
- package/packages/adapters-qdrant/tsup.config.ts +9 -0
- package/packages/adapters-redis/README.md +159 -0
- package/packages/adapters-redis/eslint.config.js +27 -0
- package/packages/adapters-redis/package.json +49 -0
- package/packages/adapters-redis/src/index.ts +164 -0
- package/packages/adapters-redis/src/manifest.ts +49 -0
- package/packages/adapters-redis/tsconfig.build.json +15 -0
- package/packages/adapters-redis/tsconfig.json +9 -0
- package/packages/adapters-redis/tsup.config.ts +9 -0
- package/packages/adapters-snapshot-localfs/README.md +10 -0
- package/packages/adapters-snapshot-localfs/eslint.config.js +2 -0
- package/packages/adapters-snapshot-localfs/package.json +46 -0
- package/packages/adapters-snapshot-localfs/src/index.test.ts +40 -0
- package/packages/adapters-snapshot-localfs/src/index.ts +292 -0
- package/packages/adapters-snapshot-localfs/src/manifest.ts +32 -0
- package/packages/adapters-snapshot-localfs/tsconfig.build.json +15 -0
- package/packages/adapters-snapshot-localfs/tsconfig.json +16 -0
- package/packages/adapters-snapshot-localfs/tsup.config.ts +11 -0
- package/packages/adapters-sqlite/README.md +163 -0
- package/packages/adapters-sqlite/eslint.config.js +27 -0
- package/packages/adapters-sqlite/package.json +54 -0
- package/packages/adapters-sqlite/src/index.test.ts +245 -0
- package/packages/adapters-sqlite/src/index.ts +382 -0
- package/packages/adapters-sqlite/src/manifest.ts +47 -0
- package/packages/adapters-sqlite/src/secure-sql.test.ts +290 -0
- package/packages/adapters-sqlite/src/secure-sql.ts +281 -0
- package/packages/adapters-sqlite/tsconfig.build.json +15 -0
- package/packages/adapters-sqlite/tsconfig.json +9 -0
- package/packages/adapters-sqlite/tsup.config.ts +8 -0
- package/packages/adapters-sqlite/vitest.config.ts +19 -0
- package/packages/adapters-transport/README.md +170 -0
- package/packages/adapters-transport/eslint.config.js +27 -0
- package/packages/adapters-transport/package.json +49 -0
- package/packages/adapters-transport/src/__tests__/unix-socket-server.test.ts +550 -0
- package/packages/adapters-transport/src/index.ts +101 -0
- package/packages/adapters-transport/src/ipc-transport.ts +228 -0
- package/packages/adapters-transport/src/transport.ts +224 -0
- package/packages/adapters-transport/src/types.ts +92 -0
- package/packages/adapters-transport/src/unix-socket-server.ts +193 -0
- package/packages/adapters-transport/src/unix-socket-transport.ts +280 -0
- package/packages/adapters-transport/tsconfig.build.json +15 -0
- package/packages/adapters-transport/tsconfig.json +9 -0
- package/packages/adapters-transport/tsup.config.ts +9 -0
- package/packages/adapters-vibeproxy/README.md +159 -0
- package/packages/adapters-vibeproxy/eslint.config.js +27 -0
- package/packages/adapters-vibeproxy/package.json +51 -0
- package/packages/adapters-vibeproxy/src/index.ts +13 -0
- package/packages/adapters-vibeproxy/src/llm.ts +437 -0
- package/packages/adapters-vibeproxy/src/manifest.ts +51 -0
- package/packages/adapters-vibeproxy/tsconfig.build.json +15 -0
- package/packages/adapters-vibeproxy/tsconfig.json +9 -0
- package/packages/adapters-vibeproxy/tsup.config.ts +8 -0
- package/packages/adapters-workspace-agent/package.json +46 -0
- package/packages/adapters-workspace-agent/src/__tests__/adapter.test.ts +212 -0
- package/packages/adapters-workspace-agent/src/index.ts +220 -0
- package/packages/adapters-workspace-agent/src/manifest.ts +36 -0
- package/packages/adapters-workspace-agent/tsconfig.build.json +15 -0
- package/packages/adapters-workspace-agent/tsconfig.json +16 -0
- package/packages/adapters-workspace-agent/tsup.config.ts +11 -0
- package/packages/adapters-workspace-localfs/README.md +9 -0
- package/packages/adapters-workspace-localfs/eslint.config.js +2 -0
- package/packages/adapters-workspace-localfs/package.json +46 -0
- package/packages/adapters-workspace-localfs/src/index.test.ts +27 -0
- package/packages/adapters-workspace-localfs/src/index.ts +172 -0
- package/packages/adapters-workspace-localfs/src/manifest.ts +32 -0
- package/packages/adapters-workspace-localfs/tsconfig.build.json +15 -0
- package/packages/adapters-workspace-localfs/tsconfig.json +16 -0
- package/packages/adapters-workspace-localfs/tsup.config.ts +11 -0
- package/packages/adapters-workspace-worktree/README.md +9 -0
- package/packages/adapters-workspace-worktree/eslint.config.js +2 -0
- package/packages/adapters-workspace-worktree/package.json +46 -0
- package/packages/adapters-workspace-worktree/src/index.test.ts +38 -0
- package/packages/adapters-workspace-worktree/src/index.ts +245 -0
- package/packages/adapters-workspace-worktree/src/manifest.ts +38 -0
- package/packages/adapters-workspace-worktree/tsconfig.build.json +15 -0
- package/packages/adapters-workspace-worktree/tsconfig.json +16 -0
- package/packages/adapters-workspace-worktree/tsup.config.ts +11 -0
- package/pnpm-workspace.yaml +2800 -0
- package/prettierrc.json +1 -0
- package/scripts/devkit-sync.mjs +37 -0
- package/scripts/hooks/post-push +9 -0
- package/scripts/hooks/pre-commit +9 -0
- package/scripts/hooks/pre-push +9 -0
- package/test-integration.ts +242 -0
- package/test.txt +1 -0
- package/tsconfig.base.json +6 -0
- package/tsconfig.build.json +15 -0
- package/tsconfig.json +9 -0
- package/tsconfig.paths.json +26 -0
- package/tsconfig.tools.json +17 -0
- package/tsup.config.bin.ts +34 -0
- package/tsup.config.cli.ts +41 -0
- package/tsup.config.dual.ts +46 -0
- package/tsup.config.ts +36 -0
- package/tsup.external.json +103 -0
- 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,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,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,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,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,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`.
|
package/CONTRIBUTING.md
ADDED
|
@@ -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.**
|