Skip to content

Commit d17b970

Browse files
xydt-tanshanshanPeter Steinberger
andauthored
[AI] fix(plugins): recognize document-extractors as a capability kind… (#91597)
* [AI] fix(plugins): recognize document-extractors as a capability kind in inspect-shape PluginCapabilityKind did not include "document-extractors", causing plugins that declare contracts.documentExtractors (like document-extract) to show capabilityCount=0 and shape="non-capability" in plugins inspect. Add "document-extractors" to PluginCapabilityKind and read from plugin.contracts.documentExtractors in buildPluginCapabilityEntries(). Related to #91539 * [AI] test(plugins): add document-extractors shape contract coverage Add a test case verifying that plugins declaring contracts.documentExtractors are classified as plain-capability shape with capabilityCount=1 and capabilities including the document-extractors kind. Addresses ClawSweeper P2 review finding on PR #91597. * [AI] chore: rebase on main to refresh CI * test(plugins): fold extractor into shape matrix --------- Co-authored-by: Peter Steinberger <[email protected]>
1 parent 38ddcef commit d17b970

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

src/plugins/contracts/shape.contract.test.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,15 @@ describe("plugin shape compatibility matrix", () => {
9595
},
9696
});
9797

98+
registerVirtualTestPlugin({
99+
registry,
100+
config,
101+
id: "document-extract-test",
102+
name: "Document Extract Test",
103+
contracts: { documentExtractors: ["pdf"] },
104+
register() {},
105+
});
106+
98107
const report = {
99108
workspaceDir: "/virtual-workspace",
100109
...registry.registry,
@@ -130,11 +139,22 @@ describe("plugin shape compatibility matrix", () => {
130139
shape: "plain-capability",
131140
capabilityMode: "plain",
132141
},
142+
{
143+
id: "document-extract-test",
144+
shape: "plain-capability",
145+
capabilityMode: "plain",
146+
},
133147
]);
134148

135149
expect(inspect[0]?.usesLegacyBeforeAgentStart).toBe(true);
136150
expect(inspect.map((entry) => entry.capabilities.map((capability) => capability.kind))).toEqual(
137-
[[], ["text-inference"], ["text-inference", "web-search"], ["channel"]],
151+
[
152+
[],
153+
["text-inference"],
154+
["text-inference", "web-search"],
155+
["channel"],
156+
["document-extractors"],
157+
],
138158
);
139159
});
140160
});

src/plugins/inspect-shape.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export type PluginCapabilityKind =
1111
| "realtime-voice"
1212
| "media-understanding"
1313
| "transcript-source"
14+
| "document-extractors"
1415
| "image-generation"
1516
| "video-generation"
1617
| "music-generation"
@@ -50,6 +51,7 @@ function buildPluginCapabilityEntries(
5051
{ kind: "realtime-voice" as const, ids: plugin.realtimeVoiceProviderIds },
5152
{ kind: "media-understanding" as const, ids: plugin.mediaUnderstandingProviderIds },
5253
{ kind: "transcript-source" as const, ids: plugin.transcriptSourceProviderIds },
54+
{ kind: "document-extractors" as const, ids: plugin.contracts?.documentExtractors ?? [] },
5355
{ kind: "image-generation" as const, ids: plugin.imageGenerationProviderIds },
5456
{ kind: "video-generation" as const, ids: plugin.videoGenerationProviderIds },
5557
{ kind: "music-generation" as const, ids: plugin.musicGenerationProviderIds },

0 commit comments

Comments
 (0)