Iostream-Li's picture
Add files using upload-large-folder tool
ff78003 verified
Raw
History Blame Contribute Delete
1.58 kB
/**
* 3 个留接口适配器(code_models / data / user_uploads)— 调用必抛
* NotImplementedAdapter 且 telemetry 必登记 error。
*
* 这是反欺骗的关键 — 严禁返空数组让上游误以为查到 0 条。
*/
import test from "node:test";
import assert from "node:assert/strict";
import { queryExternalKnowledge, NotImplementedAdapter } from "../index.ts";
import { _setTelemetryTestHook } from "../telemetry.ts";
const CAP = "cap_test_stubs";
test.beforeEach(() => {
_setTelemetryTestHook(null);
});
for (const kind of ["code_models", "data", "user_uploads"] as const) {
test(`stub adapter '${kind}' throws NotImplementedAdapter + 登记 telemetry`, async () => {
const calls: { adapter: string; error: string | null }[] = [];
_setTelemetryTestHook((rec) =>
calls.push({ adapter: rec.adapter, error: rec.error }),
);
await assert.rejects(
() =>
queryExternalKnowledge({
kind,
capabilityId: CAP,
params: { foo: "bar" },
}),
(err: unknown) => {
assert.ok(
err instanceof NotImplementedAdapter,
"must throw NotImplementedAdapter, not return empty array",
);
assert.equal((err as NotImplementedAdapter).kind, kind);
return true;
},
);
assert.equal(calls.length, 1, "telemetry must record exactly one call");
assert.equal(calls[0]?.adapter, kind);
assert.ok(
calls[0]?.error?.includes("interface-only"),
`telemetry error must mention interface-only, got: ${calls[0]?.error}`,
);
});
}