Skip to content

Commit ec4dd48

Browse files
V48 (specification-implementation): Enforce nested packages for all generic-* families
Require packages/generic-* to be family folders (no root package.json) with nested implementor packages, matching generic-agents/tools/pipelines. Split the flat @bitcode/generic-llms package into generic-llms/{xAI,OpenAI,Anthropic,Google,defaults,registry}, keep @bitcode/generic-llms as the registry aggregator, and document the rule in SOURCE_LAYOUT / FAMILIARIZATION / NOTES with workspace + tsconfig wiring.
1 parent 862db27 commit ec4dd48

53 files changed

Lines changed: 730 additions & 266 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

BITCODE_SPEC_V48_NOTES.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1493,6 +1493,23 @@ SOURCE_LAYOUT:
14931493
Navigation map: `FAMILIARIZATION.md`. Layout contract: `internal-docs/BITCODE_SOURCE_LAYOUT.md`.
14941494

14951495

1496+
## generic-* nested-package rule (Garrett, 2026-07-13)
1497+
1498+
Every `packages/generic-*` family is nested packages only (no family-root
1499+
`package.json`), matching `generic-agents/*`, `generic-tools/*`,
1500+
`generic-pipelines/*`.
1501+
1502+
`packages/generic-llms/` was flattened into:
1503+
1504+
```
1505+
xAI/ OpenAI/ Anthropic/ Google/ defaults/ registry/
1506+
```
1507+
1508+
`@bitcode/generic-llms` remains the registry aggregator for compatibility;
1509+
prefer `@bitcode/generic-llms-{xai|openai|anthropic|google|defaults}` when a
1510+
single surface is enough. Workspace globs include `packages/generic-llms/*`
1511+
and `packages/generic-doc-comment-plugins/*`.
1512+
14961513
## SDIVF base package (Garrett, 2026-07-13)
14971514

14981515
Pipeline inheritance hierarchy is now explicit:

FAMILIARIZATION.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,17 @@ Product UI says **Pipeline**. Low-level packages may still say `execution` /
165165
### 3.4 LLMs
166166

167167
```
168-
@bitcode/llm-generics Provider-agnostic LLM call primitives
168+
@bitcode/llm-generics Provider-agnostic LLM call primitives
169169
170-
@bitcode/generic-llms xAI / other provider implementations + defaults
170+
@bitcode/generic-llms-{xai|openai|…} Nested providers under packages/generic-llms/
171+
@bitcode/generic-llms-defaults Env-resolved default provider/model
172+
173+
@bitcode/generic-llms registry/ aggregator (all providers)
171174
```
172175

176+
`packages/generic-*` is always a **family of nested packages** (never a flat
177+
single package). Example: `packages/generic-llms/{xAI,OpenAI,Anthropic,Google,defaults,registry}/`.
178+
173179
Deposit default model (V48 Gate 3): `grok-build-0.1` when `XAI_API_KEY` is set.
174180
Inference is **non-configurable** inside the pipeline (mock at the provider
175181
boundary in tests only).
@@ -247,10 +253,11 @@ Grouped by role. Names are `@bitcode/<name>` unless noted.
247253

248254
| Package family | Responsibility |
249255
| --- | --- |
250-
| `generic-agents/*` | Base agents: VCS, danger-wall, code-editor, digester, web-research, read-comprehension, jira, figma, multimodal processors, … |
251-
| `generic-tools/*` | Base tools: editing, git, VCS, LSP, web-search, repository-setup, firecrawl, … |
252-
| `generic-llms` | Concrete providers (xAI, …) and model defaults |
253-
| `generic-doc-comment-plugins` | Doc-comment plugins |
256+
| `generic-agents/*` | Nested base agents: VCS, danger-wall, code-editor, digester, web-research, … |
257+
| `generic-tools/*` | Nested base tools: editing, git, VCS, LSP, web-search, repository-setup, … |
258+
| `generic-pipelines/*` | Nested base pipelines: SDIVF, … |
259+
| `generic-llms/*` | Nested providers (xAI, OpenAI, Anthropic, Google), defaults, registry aggregator |
260+
| `generic-doc-comment-plugins/*` | Nested doc-comment plugins |
254261

255262
### 5.3 Product domain (AssetPack / BTD / market)
256263

internal-docs/BITCODE_SOURCE_LAYOUT.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,31 @@ uapi/components/bitcode/
174174
Packages hold **framework-agnostic** domain logic. Prefer existing packages;
175175
add new packages when a domain is clearly shared and non-UI.
176176

177+
### 6.1 Nested `generic-*` families (required)
178+
179+
Every `packages/generic-*` path is a **family folder**, not a single package.
180+
181+
```
182+
packages/generic-<family>/ # README only (no package.json)
183+
<ImplementorA>/ # nested package
184+
package.json # @bitcode/generic-<family>-…
185+
src/
186+
<ImplementorB>/
187+
...
188+
```
189+
190+
| Family | Nested examples | Package names |
191+
| --- | --- | --- |
192+
| `generic-agents/` | `vcs/`, `danger-wall/`, … | `@bitcode/generic-agents-*` |
193+
| `generic-tools/` | `web-search/`, `vcs/`, … | `@bitcode/generic-tools-*` |
194+
| `generic-pipelines/` | `SDIVF/` | `@bitcode/generic-pipelines-sdivf` |
195+
| `generic-llms/` | `xAI/`, `OpenAI/`, `Anthropic/`, `Google/`, `defaults/`, `registry/` | `@bitcode/generic-llms-*` (+ aggregator `@bitcode/generic-llms`) |
196+
| `generic-doc-comment-plugins/` | `doc-developing/` | `@bitcode/doc-comment-developing` |
197+
198+
**Do not** put a root `package.json` on the family folder. Workspace globs are
199+
`packages/generic-<family>/*` (and deeper globs such as
200+
`packages/generic-tools/mcps-tools/*` when needed).
201+
177202
```
178203
packages/
179204
api/ # route handlers, orchestration
@@ -194,6 +219,7 @@ packages/
194219
btd/ # BTD measurement, journal, settlement, authority
195220
pipelines-generics/ # Pipeline / PhaseDelegator primitives
196221
generic-pipelines/SDIVF/ # SDIVF base Pipeline (extends pipelines-generics)
222+
generic-llms/{xAI,OpenAI,…}/ # nested LLM providers + registry aggregator
197223
pipelines/asset-pack/ # SynthesizeAssetPacks (extends SDIVF base)
198224
agent-generics/ # PTRR agents (not product “Pipeline” UI)
199225
execution-generics/ # low-level executor primitives
@@ -252,6 +278,13 @@ bitcode/
252278
│ ├── pipelines-generics/ # Pipeline / PhaseDelegator primitives
253279
│ ├── generic-pipelines/
254280
│ │ └── SDIVF/ # @bitcode/generic-pipelines-sdivf base
281+
│ ├── generic-llms/ # nested LLM providers (no family package.json)
282+
│ │ ├── xAI/ # @bitcode/generic-llms-xai
283+
│ │ ├── OpenAI/ # @bitcode/generic-llms-openai
284+
│ │ ├── Anthropic/ # @bitcode/generic-llms-anthropic
285+
│ │ ├── Google/ # @bitcode/generic-llms-google
286+
│ │ ├── defaults/ # @bitcode/generic-llms-defaults
287+
│ │ └── registry/ # @bitcode/generic-llms (aggregator)
255288
│ ├── pipelines/
256289
│ │ └── asset-pack/ # SynthesizeAssetPacks (extends SDIVF)
257290
│ ├── agent-generics/

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@
99
"workspaces": [
1010
"packages/*",
1111
"packages/generic-tools/*",
12+
"packages/generic-tools/mcps-tools/*",
1213
"packages/generic-agents/*",
1314
"packages/generic-pipelines/*",
15+
"packages/generic-llms/*",
16+
"packages/generic-doc-comment-plugins/*",
1417
"packages/pipelines/*",
1518
"uapi",
1619
"admin"

packages/agent-generics/jest.config.cjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ module.exports = {
77
moduleNameMapper: {
88
'^@bitcode/pipelines-generics$': '<rootDir>/../pipelines-generics/src/index.ts',
99
'^@bitcode/pipelines-generics/(.*)$': '<rootDir>/../pipelines-generics/src/$1',
10+
// nested generic-llms family (not packages/generic-llms/src)
11+
'^@bitcode/generic-llms$': '<rootDir>/../generic-llms/registry/src/index.ts',
12+
'^@bitcode/generic-llms/defaults$': '<rootDir>/../generic-llms/defaults/src/index.ts',
13+
'^@bitcode/generic-llms-defaults$': '<rootDir>/../generic-llms/defaults/src/index.ts',
14+
'^@bitcode/generic-llms-xai$': '<rootDir>/../generic-llms/xAI/src/index.ts',
15+
'^@bitcode/generic-llms-openai$': '<rootDir>/../generic-llms/OpenAI/src/index.ts',
16+
'^@bitcode/generic-llms-anthropic$': '<rootDir>/../generic-llms/Anthropic/src/index.ts',
17+
'^@bitcode/generic-llms-google$': '<rootDir>/../generic-llms/Google/src/index.ts',
1018
'^@bitcode/logger$': '<rootDir>/../logger/src/index.ts',
1119
'^@bitcode/parsing$': '<rootDir>/../parsing/src/parsing.ts',
1220
'^@bitcode/streams$': '<rootDir>/../streams/src/index.ts',

packages/agent-generics/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
},
1414
"dependencies": {
1515
"@bitcode/execution-generics": "workspace:*",
16+
"@bitcode/generic-llms": "workspace:*",
1617
"@bitcode/prompts": "workspace:*",
1718
"@bitcode/tools-generics": "workspace:*",
1819
"@bitcode/pipelines-generics": "workspace:*",

packages/api/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
"@supabase/supabase-js": "^2.0.0",
4141
"express": "^4.18.0",
4242
"zod": "^3.21.4",
43-
"@bitcode/pipeline-hosts": "workspace:*"
43+
"@bitcode/pipeline-hosts": "workspace:*",
44+
"@bitcode/generic-llms": "workspace:*"
4445
},
4546
"devDependencies": {
4647
"@types/express": "^4.17.0",

packages/executions-mcp/src/mcp-server/jest.config.mcp.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,13 @@ const explicitMapper = {
1818
'^@bitcode/pipelines/asset-pack$': '<rootDir>/../../../../packages/pipelines/asset-pack/src/index.ts',
1919
'^@bitcode/agent-generics$': '<rootDir>/../../../../packages/agent-generics/src/index.ts',
2020
'^@bitcode/agent-generics/(.*)$': '<rootDir>/../../../../packages/agent-generics/src/$1',
21-
'^@bitcode/generic-llms$': '<rootDir>/../../../../packages/generic-llms/src/index.ts',
22-
'^@bitcode/generic-llms/(.*)$': '<rootDir>/../../../../packages/generic-llms/src/$1',
21+
'^@bitcode/generic-llms$': '<rootDir>/../../../../packages/generic-llms/registry/src/index.ts',
22+
'^@bitcode/generic-llms/defaults$': '<rootDir>/../../../../packages/generic-llms/defaults/src/index.ts',
23+
'^@bitcode/generic-llms-defaults$': '<rootDir>/../../../../packages/generic-llms/defaults/src/index.ts',
24+
'^@bitcode/generic-llms-xai$': '<rootDir>/../../../../packages/generic-llms/xAI/src/index.ts',
25+
'^@bitcode/generic-llms-openai$': '<rootDir>/../../../../packages/generic-llms/OpenAI/src/index.ts',
26+
'^@bitcode/generic-llms-anthropic$': '<rootDir>/../../../../packages/generic-llms/Anthropic/src/index.ts',
27+
'^@bitcode/generic-llms-google$': '<rootDir>/../../../../packages/generic-llms/Google/src/index.ts',
2328
'^@bitcode/llm-generics$': '<rootDir>/../../../../packages/llm-generics/src/index.ts',
2429
'^@bitcode/llm-generics/(.*)$': '<rootDir>/../../../../packages/llm-generics/src/$1',
2530
'^@bitcode/execution-generics$': '<rootDir>/../../../../packages/execution-generics/src/index.ts',
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"name": "@bitcode/generic-llms-anthropic",
3+
"version": "0.1.0",
4+
"description": "Anthropic LLM provider for Bitcode (llm-generics)",
5+
"main": "src/index.ts",
6+
"types": "src/index.ts",
7+
"exports": {
8+
".": "./src/index.ts"
9+
},
10+
"scripts": {
11+
"typecheck": "tsc --noEmit",
12+
"test": "pnpm exec jest --config jest.config.cjs --passWithNoTests"
13+
},
14+
"dependencies": {
15+
"@bitcode/llm-generics": "workspace:*",
16+
"@anthropic-ai/sdk": "0.15.0"
17+
},
18+
"devDependencies": {
19+
"@types/jest": "^29.0.0",
20+
"@types/node": "^20.0.0",
21+
"jest": "^29.0.0",
22+
"ts-jest": "^29.0.0",
23+
"typescript": "^5.0.0"
24+
}
25+
}
File renamed without changes.

0 commit comments

Comments
 (0)