@agentskit/doc-bridge 1.6.3 → 1.6.4
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/CHANGELOG.md +6 -0
- package/action.yml +1 -1
- package/dist/cli/program.js +1 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/mcpb/manifest.json +1 -1
- package/package.json +1 -1
- package/scripts/report-visual-check.mjs +18 -7
- package/skills/doc-bridge-handoff/scripts/resolve-handoff.mjs +1 -1
- package/src/version.ts +1 -1
package/mcpb/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "doc-bridge",
|
|
4
4
|
"display_name": "Doc Bridge",
|
|
5
|
-
"version": "1.6.
|
|
5
|
+
"version": "1.6.4",
|
|
6
6
|
"description": "Deterministic repository handoffs for coding agents, running locally without an LLM or API key.",
|
|
7
7
|
"long_description": "Doc Bridge turns a repository's own documentation and ownership metadata into deterministic handoffs: where an agent should start, which paths it may edit, which checks it must run, and when a human must take over. The local connector exposes the same read-only contract available through Doc Bridge CLI and CI.",
|
|
8
8
|
"author": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentskit/doc-bridge",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.4",
|
|
4
4
|
"mcpName": "io.github.AgentsKit-io/doc-bridge",
|
|
5
5
|
"description": "Human↔agent documentation bridge — deterministic handoffs, doc-site links, memory→docs, optional AgentsKit RAG/chat.",
|
|
6
6
|
"type": "module",
|
|
@@ -35,7 +35,7 @@ const inspect = async (frame, width, height) => frame.evaluate(({ width: viewpor
|
|
|
35
35
|
const failures = []
|
|
36
36
|
if (document.documentElement.scrollWidth - document.documentElement.clientWidth > 1) failures.push('horizontal overflow')
|
|
37
37
|
if (clippedControls.length) failures.push(`clipped controls: ${clippedControls.join(', ')}`)
|
|
38
|
-
if (!workspace || workspace.top >
|
|
38
|
+
if (!workspace || workspace.top > viewportHeight * 0.7) failures.push('architecture map starts too far below the first screen')
|
|
39
39
|
if (!document.querySelector('#graph')) failures.push('architecture graph is missing')
|
|
40
40
|
if (document.querySelectorAll('[data-lens]').length < 4 || document.querySelectorAll('[data-level]').length < 4) failures.push('required lens or level controls are missing')
|
|
41
41
|
if (document.querySelectorAll('.finding').length > 40) failures.push('initial findings render grows beyond one bounded page')
|
|
@@ -89,6 +89,9 @@ const inspect = async (frame, width, height) => frame.evaluate(({ width: viewpor
|
|
|
89
89
|
graphWidth: graph?.width ?? null,
|
|
90
90
|
initialFindingCount: document.querySelectorAll('.finding').length,
|
|
91
91
|
findingGroupCount: document.querySelectorAll('.finding-group').length,
|
|
92
|
+
diagnosticCount: typeof globalThis.__DOC_BRIDGE_DATA__?.diagnosticCount === 'number'
|
|
93
|
+
? globalThis.__DOC_BRIDGE_DATA__.diagnosticCount
|
|
94
|
+
: Number.parseInt(document.querySelector('#finding-count')?.textContent ?? '', 10) || document.querySelectorAll('.finding').length,
|
|
92
95
|
unnamedButtonCount: unnamedButtons.length,
|
|
93
96
|
visibleOverflowCount: visibleOverflow.length,
|
|
94
97
|
contrastFailures,
|
|
@@ -129,9 +132,9 @@ const exercise = async (frame, result) => {
|
|
|
129
132
|
await run('finding groups load', async () => {
|
|
130
133
|
const load = frame.locator('#load-findings')
|
|
131
134
|
if (await load.count()) await load.click()
|
|
132
|
-
else if (result.
|
|
135
|
+
else if (result.diagnosticCount > 0 && await frame.locator('.finding-group').count() === 0) throw new Error('finding loader is missing while findings are present')
|
|
133
136
|
}, async () => {
|
|
134
|
-
if (result.
|
|
137
|
+
if (result.diagnosticCount > 0) {
|
|
135
138
|
await poll(() => frame.locator('.finding-group').count(), (count) => count > 0, 'finding groups')
|
|
136
139
|
} else if (await frame.locator('.finding-group').count() !== 0) {
|
|
137
140
|
throw new Error('finding groups rendered despite zero findings')
|
|
@@ -145,11 +148,19 @@ const exercise = async (frame, result) => {
|
|
|
145
148
|
if (!(await frame.locator('[data-node]').count())) result.failures.push('architecture graph has no interactive nodes')
|
|
146
149
|
else {
|
|
147
150
|
const drillSelectors = [
|
|
148
|
-
['package', '[data-node][aria-label*=" app"]'],
|
|
149
|
-
['module', '[data-node][aria-label*=" package"]'],
|
|
150
|
-
['file', '[data-node][aria-label*=" module"]'],
|
|
151
|
+
['package', ['[data-node][aria-label*=" app"]', '[data-node][aria-label*=" domain"]', '[data-node][aria-label*=" group"]', '[data-node]']],
|
|
152
|
+
['module', ['[data-node][aria-label*=" package"]', '[data-node][aria-label*=" shared"]']],
|
|
153
|
+
['file', ['[data-node][aria-label*=" module"]', '[data-node][aria-label*=" file"]']],
|
|
151
154
|
]
|
|
152
|
-
for (const [expectedLevel,
|
|
155
|
+
for (const [expectedLevel, selectors] of drillSelectors) {
|
|
156
|
+
let selector
|
|
157
|
+
for (const candidate of selectors) {
|
|
158
|
+
if (await frame.locator(candidate).count()) {
|
|
159
|
+
selector = candidate
|
|
160
|
+
break
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (!selector) continue
|
|
153
164
|
await run(`double-click drill-down to ${expectedLevel}`, () => frame.locator(selector).first().dblclick(), async () => {
|
|
154
165
|
await poll(() => frame.locator('[data-level][aria-pressed="true"]').getAttribute('data-level'), (actual) => actual === expectedLevel, `drill-down ${expectedLevel}`)
|
|
155
166
|
const details = await frame.locator('#details').innerText()
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const PACKAGE_VERSION = '1.6.
|
|
1
|
+
export const PACKAGE_VERSION = '1.6.4'
|