@agentskit/doc-bridge 1.1.1 → 1.2.3

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 (66) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/CONTRIBUTING.md +1 -0
  3. package/README.md +42 -11
  4. package/action.yml +27 -23
  5. package/dist/cli/program.js +18 -5
  6. package/dist/cli/program.js.map +1 -1
  7. package/dist/index.d.ts +39 -2
  8. package/dist/index.js +46 -5
  9. package/dist/index.js.map +1 -1
  10. package/docs/DOGFOOD-ROUND2.md +5 -0
  11. package/docs/DOGFOOD-ROUND3.md +5 -0
  12. package/docs/DOGFOOD-V1.md +5 -0
  13. package/docs/DOGFOOD.md +5 -0
  14. package/docs/MARKETPLACE-ECOSYSTEM-PLAN.md +16 -0
  15. package/docs/MARKETPLACE.md +45 -0
  16. package/docs/POSITIONING.md +17 -1
  17. package/docs/RELEASE.md +19 -10
  18. package/docs/agent-corpus/INDEX.md +10 -0
  19. package/docs/agent-corpus/OVERVIEW.md +9 -0
  20. package/docs/agent-corpus/chat.md +10 -0
  21. package/docs/agent-corpus/cli.md +10 -0
  22. package/docs/agent-corpus/conformance.md +10 -0
  23. package/docs/agent-corpus/doc-bridge.md +10 -0
  24. package/docs/agent-corpus/doctor.md +10 -0
  25. package/docs/agent-corpus/gates.md +10 -0
  26. package/docs/agent-corpus/mcp.md +10 -0
  27. package/docs/agent-corpus/memory.md +10 -0
  28. package/docs/agent-corpus/query.md +10 -0
  29. package/docs/chat-and-rag.md +34 -0
  30. package/docs/examples.md +14 -1
  31. package/docs/for-agents.md +39 -0
  32. package/docs/getting-started.md +15 -0
  33. package/docs/guides/cli-map.md +153 -0
  34. package/docs/guides/gate-ci.md +64 -0
  35. package/docs/guides/index-and-query.md +75 -0
  36. package/docs/guides/install-and-run.md +84 -0
  37. package/docs/guides/mcp-agents.md +63 -0
  38. package/docs/guides/memory-pipeline.md +105 -0
  39. package/docs/guides/meta.json +11 -0
  40. package/docs/index.md +58 -0
  41. package/docs/landing/index.html +1 -1
  42. package/docs/mcp.md +14 -0
  43. package/docs/meta.json +26 -0
  44. package/docs/ollama-demo.md +6 -1
  45. package/docs/playbook/doc-bridge-pattern.md +4 -2
  46. package/docs/query.md +58 -0
  47. package/docs/recipes/index-pipeline.md +6 -1
  48. package/docs/schemas/agent-handoff-v1.md +5 -0
  49. package/docs/schemas/doc-bridge-index-v1.md +5 -0
  50. package/docs/schemas/memory-candidate-v1.md +5 -0
  51. package/docs/skills/doc-bridge.md +6 -1
  52. package/docs/spec/cli.md +5 -0
  53. package/docs/spec/config-v1.md +5 -0
  54. package/docs/spec/documentation-standard-v1.md +5 -0
  55. package/docs/spec/playbook-feedback.md +5 -0
  56. package/docs/spec/registry-agents.md +5 -0
  57. package/ecosystem-claims.json +2 -2
  58. package/ecosystem-upstream.json +2 -2
  59. package/ecosystem.json +122 -40
  60. package/examples/verify-handoff.mjs +5 -0
  61. package/package.json +40 -6
  62. package/src/conformance/ecosystem-contract.ts +22 -3
  63. package/src/federation/ecosystem-llms.ts +67 -0
  64. package/src/index.ts +6 -0
  65. package/src/playbook/doc-bridge-pattern.ts +1 -1
  66. package/src/version.ts +1 -1
@@ -3,7 +3,7 @@
3
3
  "repository": "AgentsKit-io/agentskit",
4
4
  "ref": "main",
5
5
  "files": {
6
- "ecosystem.json": "96ff8e60c639116b4a79302509fc8058f9cd2f4db8094677dafb61fb1bc88b58",
7
- "ecosystem-claims.json": "eeb37363ac1461a6725f48083d7a326f0f700c0641a7a4cece2a30a3bf05d582"
6
+ "ecosystem.json": "04995ca6863f744495b672d6e3a64162a415caf4cacb3ba8cdd3521bc90c4879",
7
+ "ecosystem-claims.json": "0100f7fbc18a3381bb943aaf8151dd5d107f82c02c470e3c586b7d694c6be42e"
8
8
  }
9
9
  }
package/ecosystem.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "$comment": "Canonical registry of AgentsKit ecosystem products. Stable identity lives here; numeric values live in the generated ecosystem-claims ledger. The deprecated properties array temporarily preserves v1 sibling consumers.",
3
+ "$comment": "Canonical registry of AgentsKit ecosystem products. Stable identity lives in products[] (seven). Numeric values live in the generated ecosystem-claims ledger. The properties array is the full seven-product v1 projection of products[] (same order) for sibling consumers.",
4
4
  "parentBrand": {
5
5
  "id": "agentskit",
6
6
  "name": "AgentsKit"
@@ -22,12 +22,19 @@
22
22
  "llms": "https://www.agentskit.io/llms.txt",
23
23
  "stats": "https://www.agentskit.io/api/stats.json",
24
24
  "documentation": "fumadocs",
25
- "chat": "custom"
25
+ "chat": "agentschat"
26
26
  },
27
27
  "navigation": {
28
28
  "showInBar": true,
29
29
  "order": 0,
30
- "next": ["registry", "agentskit-chat", "playbook", "doc-bridge", "code-review", "akos"]
30
+ "next": [
31
+ "registry",
32
+ "agentskit-chat",
33
+ "playbook",
34
+ "doc-bridge",
35
+ "code-review",
36
+ "akos"
37
+ ]
31
38
  }
32
39
  },
33
40
  {
@@ -46,12 +53,19 @@
46
53
  "llms": "https://registry.agentskit.io/llms.txt",
47
54
  "stats": "https://registry.agentskit.io/r/index.json",
48
55
  "documentation": "fumadocs",
49
- "chat": "custom"
56
+ "chat": "agentschat"
50
57
  },
51
58
  "navigation": {
52
59
  "showInBar": true,
53
60
  "order": 1,
54
- "next": ["agentskit", "playbook", "agentskit-chat"]
61
+ "next": [
62
+ "agentskit",
63
+ "agentskit-chat",
64
+ "playbook",
65
+ "doc-bridge",
66
+ "code-review",
67
+ "akos"
68
+ ]
55
69
  }
56
70
  },
57
71
  {
@@ -65,15 +79,23 @@
65
79
  "repo": "AgentsKit-io/agentskit-chat",
66
80
  "accent": "#F59E0B",
67
81
  "surfaces": {
68
- "home": "https://github.com/AgentsKit-io/agentskit-chat",
69
- "docs": "https://github.com/AgentsKit-io/agentskit-chat/tree/main/docs",
70
- "documentation": "repository",
71
- "chat": "none"
82
+ "home": "https://chat.agentskit.io",
83
+ "docs": "https://chat.agentskit.io/docs",
84
+ "llms": "https://chat.agentskit.io/llms.txt",
85
+ "documentation": "fumadocs",
86
+ "chat": "agentschat"
72
87
  },
73
88
  "navigation": {
74
89
  "showInBar": true,
75
90
  "order": 2,
76
- "next": ["agentskit", "registry", "doc-bridge"]
91
+ "next": [
92
+ "agentskit",
93
+ "registry",
94
+ "playbook",
95
+ "doc-bridge",
96
+ "code-review",
97
+ "akos"
98
+ ]
77
99
  }
78
100
  },
79
101
  {
@@ -97,7 +119,14 @@
97
119
  "navigation": {
98
120
  "showInBar": true,
99
121
  "order": 3,
100
- "next": ["doc-bridge", "code-review", "agentskit"]
122
+ "next": [
123
+ "agentskit",
124
+ "registry",
125
+ "agentskit-chat",
126
+ "doc-bridge",
127
+ "code-review",
128
+ "akos"
129
+ ]
101
130
  }
102
131
  },
103
132
  {
@@ -111,15 +140,23 @@
111
140
  "repo": "AgentsKit-io/doc-bridge",
112
141
  "accent": "#06B6D4",
113
142
  "surfaces": {
114
- "home": "https://github.com/AgentsKit-io/doc-bridge",
115
- "docs": "https://github.com/AgentsKit-io/doc-bridge/tree/master/docs",
116
- "documentation": "repository",
143
+ "home": "https://agentskit-io.github.io/doc-bridge/",
144
+ "docs": "https://agentskit-io.github.io/doc-bridge/",
145
+ "llms": "https://agentskit-io.github.io/doc-bridge/llms.txt",
146
+ "documentation": "fumadocs",
117
147
  "chat": "none"
118
148
  },
119
149
  "navigation": {
120
150
  "showInBar": true,
121
151
  "order": 4,
122
- "next": ["playbook", "code-review", "agentskit-chat"]
152
+ "next": [
153
+ "agentskit",
154
+ "registry",
155
+ "agentskit-chat",
156
+ "playbook",
157
+ "code-review",
158
+ "akos"
159
+ ]
123
160
  }
124
161
  },
125
162
  {
@@ -135,12 +172,21 @@
135
172
  "surfaces": {
136
173
  "home": "https://github.com/AgentsKit-io/code-review-cli",
137
174
  "docs": "https://github.com/AgentsKit-io/code-review-cli#readme",
175
+ "llms": "https://raw.githubusercontent.com/AgentsKit-io/code-review-cli/main/llms.txt",
138
176
  "documentation": "repository",
139
177
  "chat": "none"
140
178
  },
141
179
  "navigation": {
142
180
  "showInBar": false,
143
- "next": ["playbook", "agentskit", "doc-bridge"]
181
+ "order": 5,
182
+ "next": [
183
+ "agentskit",
184
+ "registry",
185
+ "agentskit-chat",
186
+ "playbook",
187
+ "doc-bridge",
188
+ "akos"
189
+ ]
144
190
  }
145
191
  },
146
192
  {
@@ -163,8 +209,8 @@
163
209
  },
164
210
  "navigation": {
165
211
  "showInBar": true,
166
- "order": 5,
167
- "next": ["agentskit", "registry", "playbook"]
212
+ "order": 6,
213
+ "next": []
168
214
  }
169
215
  }
170
216
  ],
@@ -183,17 +229,29 @@
183
229
  "stats": "https://www.agentskit.io/api/stats.json"
184
230
  },
185
231
  {
186
- "id": "akos",
187
- "name": "AgentsKit OS",
188
- "barLabel": "AKOS",
189
- "domain": "akos.agentskit.io",
190
- "url": "https://akos.agentskit.io",
191
- "repo": "AgentsKit-io/agentskit-os",
192
- "tagline": "Run and govern agents in production.",
193
- "kind": "product",
194
- "accent": "#34D399",
195
- "llms": "https://akos.agentskit.io/llms.txt",
196
- "stats": "https://akos.agentskit.io/api/stats.json"
232
+ "id": "registry",
233
+ "name": "AgentsKit Registry",
234
+ "barLabel": "Registry",
235
+ "domain": "registry.agentskit.io",
236
+ "url": "https://registry.agentskit.io",
237
+ "repo": "AgentsKit-io/agentskit-registry",
238
+ "tagline": "Copy ready-made agents and own the source.",
239
+ "kind": "registry",
240
+ "accent": "#58A6FF",
241
+ "llms": "https://registry.agentskit.io/llms.txt",
242
+ "stats": "https://registry.agentskit.io/r/index.json"
243
+ },
244
+ {
245
+ "id": "agentskit-chat",
246
+ "name": "AgentsKit Chat",
247
+ "barLabel": "Chat",
248
+ "domain": "chat.agentskit.io",
249
+ "url": "https://chat.agentskit.io",
250
+ "repo": "AgentsKit-io/agentskit-chat",
251
+ "tagline": "Define one agent experience and deliver it across interfaces.",
252
+ "kind": "framework",
253
+ "accent": "#F59E0B",
254
+ "llms": "https://chat.agentskit.io/llms.txt"
197
255
  },
198
256
  {
199
257
  "id": "playbook",
@@ -209,17 +267,41 @@
209
267
  "stats": "https://playbook.agentskit.io/api/stats.json"
210
268
  },
211
269
  {
212
- "id": "registry",
213
- "name": "AgentsKit Registry",
214
- "barLabel": "Registry",
215
- "domain": "registry.agentskit.io",
216
- "url": "https://registry.agentskit.io",
217
- "repo": "AgentsKit-io/agentskit-registry",
218
- "tagline": "Copy ready-made agents and own the source.",
219
- "kind": "registry",
220
- "accent": "#58A6FF",
221
- "llms": "https://registry.agentskit.io/llms.txt",
222
- "stats": "https://registry.agentskit.io/r/index.json"
270
+ "id": "doc-bridge",
271
+ "name": "Doc Bridge",
272
+ "barLabel": "Doc Bridge",
273
+ "domain": "agentskit-io.github.io",
274
+ "url": "https://agentskit-io.github.io/doc-bridge/",
275
+ "repo": "AgentsKit-io/doc-bridge",
276
+ "tagline": "Turn repository documentation into executable agent handoffs.",
277
+ "kind": "developer-tool",
278
+ "accent": "#06B6D4",
279
+ "llms": "https://agentskit-io.github.io/doc-bridge/llms.txt"
280
+ },
281
+ {
282
+ "id": "code-review",
283
+ "name": "AgentsKit Code Review",
284
+ "barLabel": "Code Review",
285
+ "domain": "github.com",
286
+ "url": "https://github.com/AgentsKit-io/code-review-cli",
287
+ "repo": "AgentsKit-io/code-review-cli",
288
+ "tagline": "Run deep, low-noise review with the model already in use.",
289
+ "kind": "developer-tool",
290
+ "accent": "#F97316",
291
+ "llms": "https://raw.githubusercontent.com/AgentsKit-io/code-review-cli/main/llms.txt"
292
+ },
293
+ {
294
+ "id": "akos",
295
+ "name": "AgentsKit OS",
296
+ "barLabel": "AKOS",
297
+ "domain": "akos.agentskit.io",
298
+ "url": "https://akos.agentskit.io",
299
+ "repo": "AgentsKit-io/agentskit-os",
300
+ "tagline": "Run and govern agents in production.",
301
+ "kind": "product",
302
+ "accent": "#34D399",
303
+ "llms": "https://akos.agentskit.io/llms.txt",
304
+ "stats": "https://akos.agentskit.io/api/stats.json"
223
305
  }
224
306
  ],
225
307
  "builder": {
@@ -0,0 +1,5 @@
1
+ import { execFileSync } from 'node:child_process'
2
+
3
+ execFileSync(process.execPath, ['bin/ak-docs.js', 'demo', '--text'], {
4
+ stdio: 'inherit',
5
+ })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentskit/doc-bridge",
3
- "version": "1.1.1",
3
+ "version": "1.2.3",
4
4
  "description": "Human↔agent documentation bridge — deterministic handoffs, doc-site links, memory→docs, optional AgentsKit RAG/chat.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -46,6 +46,7 @@
46
46
  "test:watch": "vitest",
47
47
  "coverage": "vitest run --coverage",
48
48
  "check:ecosystem-upstream": "node scripts/check-ecosystem-upstream.mjs",
49
+ "check:no-legacy-chat-imports": "node scripts/check-no-legacy-chat-imports.mjs",
49
50
  "typecheck": "tsc --noEmit",
50
51
  "smoke:packaged": "node scripts/smoke-packaged.mjs",
51
52
  "smoke:docsites": "node scripts/smoke-docsites.mjs",
@@ -53,12 +54,24 @@
53
54
  "smoke:ollama": "node scripts/smoke-ollama.mjs",
54
55
  "coverage:badge": "node scripts/update-coverage-badge.mjs",
55
56
  "changeset": "changeset",
56
- "version-packages": "changeset version",
57
+ "version-packages": "changeset version && node scripts/sync-version.mjs",
57
58
  "release": "npm run build && npm test && changeset publish",
58
- "version": "node scripts/sync-version.mjs && git add package.json src/version.ts",
59
+ "version": "node scripts/sync-version.mjs && git add package.json src/version.ts action.yml",
59
60
  "prepublishOnly": "npm run build && npm test",
60
61
  "prepare": "node scripts/prepare.mjs",
61
- "prepack": "npm run build"
62
+ "prepack": "npm run build",
63
+ "docs:dev": "cd apps/docs && next dev",
64
+ "docs:artifacts": "node scripts/build-docs-artifacts.mjs",
65
+ "docs:build": "pnpm build && node bin/ak-docs.js index && pnpm docs:artifacts && cd apps/docs && next build",
66
+ "docs:typecheck": "cd apps/docs && fumadocs-mdx && tsc --noEmit",
67
+ "docs:e2e": "playwright test",
68
+ "docs:lighthouse": "lhci autorun",
69
+ "test:readme-standard": "node --test scripts/readme-standard.test.mjs",
70
+ "test:marketplace": "node --test scripts/marketplace-contract.test.mjs",
71
+ "check:marketplace": "node scripts/check-marketplace-contract.mjs",
72
+ "test:docs-artifacts": "node --test scripts/docs-artifacts-contract.test.mjs",
73
+ "check:readme-standard": "node scripts/check-readme-standard.mjs",
74
+ "check:docs": "pnpm check:readme-standard && node bin/ak-docs.js gate run && node bin/ak-docs.js conformance run documentation-standard-v1 --text && pnpm docs:typecheck && pnpm docs:build && pnpm test:docs-artifacts"
62
75
  },
63
76
  "keywords": [
64
77
  "agentskit",
@@ -82,6 +95,7 @@
82
95
  "access": "public"
83
96
  },
84
97
  "dependencies": {
98
+ "mermaid": "^11.16.0",
85
99
  "zod": "^3.24.2"
86
100
  },
87
101
  "peerDependencies": {
@@ -113,16 +127,36 @@
113
127
  }
114
128
  },
115
129
  "devDependencies": {
130
+ "@agentskit/chat": "0.4.0",
131
+ "@agentskit/core": "1.12.3",
132
+ "@agentskit/ink": "0.10.4",
133
+ "@agentskit/react": "0.7.4",
116
134
  "@changesets/cli": "^2.31.0",
135
+ "@lhci/cli": "^0.15.1",
136
+ "@playwright/test": "1.61.1",
137
+ "@tailwindcss/postcss": "4.3.2",
117
138
  "@types/node": "^22.15.3",
139
+ "@types/react": "19.2.17",
140
+ "@types/react-dom": "19.2.3",
118
141
  "@vitest/coverage-v8": "4.1.10",
142
+ "fumadocs-core": "15.6.5",
143
+ "fumadocs-mdx": "11.6.4",
144
+ "fumadocs-ui": "15.6.5",
145
+ "lucide-react": "0.460.0",
146
+ "next": "15.5.19",
147
+ "react": "19.2.0",
148
+ "react-dom": "19.2.0",
149
+ "tailwindcss": "4.3.2",
119
150
  "tsup": "^8.5.0",
120
151
  "typescript": "^6.0.3",
121
152
  "vitest": "^4.1.9"
122
153
  },
123
154
  "pnpm": {
124
155
  "overrides": {
125
- "esbuild": "^0.28.1"
156
+ "esbuild": "^0.28.1",
157
+ "postcss": "8.5.19",
158
+ "tmp": "0.2.7",
159
+ "uuid": "11.1.1"
126
160
  }
127
161
  },
128
162
  "directories": {
@@ -134,5 +168,5 @@
134
168
  "bugs": {
135
169
  "url": "https://github.com/AgentsKit-io/doc-bridge/issues"
136
170
  },
137
- "homepage": "https://agentskit-io.github.io/doc-bridge/"
171
+ "homepage": "https://doc-bridge.agentskit.io/"
138
172
  }
@@ -50,7 +50,12 @@ const ManifestSchema = z.object({
50
50
  schemaVersion: z.literal(2),
51
51
  parentBrand: z.object({ id: NonEmptyStringSchema, name: NonEmptyStringSchema }).passthrough(),
52
52
  products: z.array(ProductSchema).min(1),
53
- properties: z.array(LegacyPropertySchema).length(4),
53
+ // Historical four-product shim or full seven-product projection of products[].
54
+ properties: z
55
+ .array(LegacyPropertySchema)
56
+ .refine((value) => value.length === 4 || value.length === 7, {
57
+ message: 'must project either the legacy four products or the full seven-product catalog',
58
+ }),
54
59
  builder: z.object({ id: NonEmptyStringSchema, name: NonEmptyStringSchema, url: HttpsUrlSchema }).passthrough().optional(),
55
60
  }).passthrough()
56
61
 
@@ -88,7 +93,18 @@ const ClaimsSchema = z.object({
88
93
  products: z.array(ClaimProductSchema),
89
94
  }).passthrough()
90
95
 
91
- const LEGACY_PRODUCT_IDS = ['agentskit', 'akos', 'playbook', 'registry'] as const
96
+ /** Historical four-product shim order. */
97
+ const LEGACY_FOUR_PRODUCT_IDS = ['agentskit', 'akos', 'playbook', 'registry'] as const
98
+ /** Full seven-product projection order (matches products[]). */
99
+ const FULL_SEVEN_PRODUCT_IDS = [
100
+ 'agentskit',
101
+ 'registry',
102
+ 'agentskit-chat',
103
+ 'playbook',
104
+ 'doc-bridge',
105
+ 'code-review',
106
+ 'akos',
107
+ ] as const
92
108
 
93
109
  export const parseCanonicalEcosystemContract = (
94
110
  manifestInput: unknown,
@@ -120,7 +136,10 @@ export const parseCanonicalEcosystemContract = (
120
136
  }
121
137
  }
122
138
 
123
- for (const [index, id] of LEGACY_PRODUCT_IDS.entries()) {
139
+ const propertyIds =
140
+ manifest.properties.length === 7 ? FULL_SEVEN_PRODUCT_IDS : LEGACY_FOUR_PRODUCT_IDS
141
+
142
+ for (const [index, id] of propertyIds.entries()) {
124
143
  const legacy = manifest.properties[index]
125
144
  const product = products.get(id)
126
145
  if (!legacy || !product || legacy.id !== id || !product.surfaces.home) {
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Canonical AgentsKit ecosystem section for llms.txt (and similar machine indexes).
3
+ *
4
+ * All products should render this block with the same heading and line shape so
5
+ * agents can parse the seven-product mesh without per-repo inventiveness.
6
+ */
7
+
8
+ export type EcosystemLlmsProduct = {
9
+ readonly id: string
10
+ readonly name: string
11
+ readonly role?: string
12
+ readonly promise: string
13
+ readonly maturity?: string
14
+ readonly surfaces: {
15
+ readonly home?: string
16
+ readonly docs?: string
17
+ readonly llms?: string
18
+ }
19
+ }
20
+
21
+ export type FormatEcosystemLlmsBlockOptions = {
22
+ readonly products: readonly EcosystemLlmsProduct[]
23
+ /** When set, marks this product with **(current)**. */
24
+ readonly currentProductId?: string
25
+ /** Heading line without leading hashes — default `AgentsKit ecosystem`. */
26
+ readonly heading?: string
27
+ /**
28
+ * Prefer docs URL when available; otherwise home.
29
+ * Default: home, falling back to docs.
30
+ */
31
+ readonly prefer?: 'home' | 'docs'
32
+ }
33
+
34
+ /**
35
+ * Returns markdown lines for the shared ecosystem block, including a trailing blank line.
36
+ */
37
+ export function formatEcosystemLlmsBlock(options: FormatEcosystemLlmsBlockOptions): string[] {
38
+ const heading = options.heading ?? 'AgentsKit ecosystem'
39
+ const prefer = options.prefer ?? 'home'
40
+ const lines: string[] = [`## ${heading}`, '']
41
+
42
+ for (const product of options.products) {
43
+ const primary =
44
+ prefer === 'docs'
45
+ ? product.surfaces.docs ?? product.surfaces.home
46
+ : product.surfaces.home ?? product.surfaces.docs
47
+ if (!primary) continue
48
+
49
+ const current = product.id === options.currentProductId ? ' **(current)**' : ''
50
+ const role = product.role ? ` Role: \`${product.role}\`.` : ''
51
+ const maturity = product.maturity ? ` Maturity: ${product.maturity}.` : ''
52
+ const machine = product.surfaces.llms ? ` Machine index: ${product.surfaces.llms}` : ''
53
+ const promise = product.promise.trim()
54
+ const promiseSentence = /[.!?]$/.test(promise) ? promise : `${promise}.`
55
+ lines.push(
56
+ `- [${product.name}](${primary})${current} — ${promiseSentence}${role}${maturity}${machine}`,
57
+ )
58
+ }
59
+
60
+ lines.push('')
61
+ return lines
62
+ }
63
+
64
+ /** Join the block into a single string ending with a newline. */
65
+ export function formatEcosystemLlmsSection(options: FormatEcosystemLlmsBlockOptions): string {
66
+ return `${formatEcosystemLlmsBlock(options).join('\n')}\n`
67
+ }
package/src/index.ts CHANGED
@@ -65,6 +65,12 @@ export {
65
65
  } from './validate.js'
66
66
 
67
67
  export { buildDocBridgeIndex, type BuildIndexOptions, type BuildIndexResult } from './index-builder/build-index.js'
68
+ export {
69
+ formatEcosystemLlmsBlock,
70
+ formatEcosystemLlmsSection,
71
+ type EcosystemLlmsProduct,
72
+ type FormatEcosystemLlmsBlockOptions,
73
+ } from './federation/ecosystem-llms.js'
68
74
  export {
69
75
  scanHumanDocRecords,
70
76
  scanHumanDocs,
@@ -111,7 +111,7 @@ Teams track handoff % and human-bridge % daily.
111
111
  - npm: https://www.npmjs.com/package/@agentskit/doc-bridge
112
112
  - repo: https://github.com/AgentsKit-io/doc-bridge
113
113
  - skill: https://github.com/AgentsKit-io/doc-bridge/blob/master/docs/skills/doc-bridge.md
114
- - landing: https://agentskit-io.github.io/doc-bridge/
114
+ - landing: https://doc-bridge.agentskit.io/
115
115
  `
116
116
 
117
117
  export const docBridgePatternPayload = () => ({
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const PACKAGE_VERSION = '1.1.1'
1
+ export const PACKAGE_VERSION = '1.2.3'