clearotron 0.3.2-beta.14 → 0.3.2-beta.15
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/build-info.json +2 -2
- package/driver/CHANGELOG.md +14 -0
- package/driver/contract-vocabulary.mjs +5 -5
- package/driver/named-band.mjs +1 -1
- package/driver/package.json +1 -1
- package/driver/pipeline-knockout.mjs +3 -1
- package/driver/pipeline.mjs +30 -7
- package/driver/publish/index.mjs +10 -1
- package/driver/publish/render.mjs +54 -2
- package/driver/publish/templates/report.css +16 -1
- package/driver/register-availability.mjs +2 -2
- package/driver/register-plan.mjs +229 -55
- package/driver/skills/clearance-register/unit.md +1 -1
- package/driver/skills/clearance-variants/SKILL.md +10 -4
- package/driver/stages.mjs +1 -1
- package/driver/suite-census.json +32 -2
- package/driver/variant-manifest-model.mjs +39 -1
- package/mcp-server/CHANGELOG.md +4 -0
- package/mcp-server/lib/audit-view.mjs +5 -3
- package/mcp-server/lib/brief.mjs +10 -4
- package/mcp-server/lib/runs.mjs +35 -1
- package/mcp-server/package.json +1 -1
- package/mcp-server/server.mjs +6 -3
- package/package.json +1 -1
- package/portal-ui/dist/assets/{index-7Lq-dXDV.css → index-5CCwiJG7.css} +10 -0
- package/portal-ui/dist/assets/{index-w8GFZftk.js → index-DMthc7PQ.js} +8 -1
- package/portal-ui/dist/index.html +2 -2
- package/portal-ui/package.json +1 -1
- package/providers/_shared/execute-plan.mjs +11 -1
- package/providers/_shared/term-shape.mjs +76 -0
- package/providers/clarivate/src/capabilities.js +36 -0
- package/providers/clarivate/src/core.js +119 -0
- package/providers/corsearch/src/capabilities.js +24 -0
- package/providers/corsearch/src/core.js +7 -0
- package/providers/oauth-mcp-bridge/CHANGELOG.md +4 -0
- package/providers/oauth-mcp-bridge/package.json +1 -1
- package/providers/signa/src/capabilities.js +29 -0
- package/providers/signa/src/core.js +17 -0
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
import { readFileSync, existsSync } from "node:fs";
|
|
24
24
|
import { dirname, join } from "node:path";
|
|
25
25
|
import { fileURLToPath } from "node:url";
|
|
26
|
+
import { goodsTermsList } from "../../_shared/term-shape.mjs"; // the shared reader for the goods words
|
|
26
27
|
|
|
27
28
|
import { makeLedger } from "../../_shared/ledger.mjs";
|
|
28
29
|
import { nonAnswerBodyError, parseJsonBody, unparsedBodyError } from "../../_shared/http-body.mjs";
|
|
@@ -132,6 +133,22 @@ function buildFilters(p) {
|
|
|
132
133
|
// with a text query in ONE request, and the intersection is a real narrowing rather than one clause
|
|
133
134
|
// being silently ignored — the three populations (term alone, owner alone, both) differ from each other.
|
|
134
135
|
if (typeof p.owner === "string" && p.owner.trim()) f.owner_name = p.owner.trim();
|
|
136
|
+
// The goods-and-services narrowing. ONE term only: this filter is a single string whose words are
|
|
137
|
+
// ANDed, and no OR form exists (OR is matched as a literal third word; a pipe and a comma intersect;
|
|
138
|
+
// an array is refused). So a list of alternatives cannot be expressed, and joining one with spaces
|
|
139
|
+
// would ask for filings covering EVERY word — a population that shrinks as the list grows while
|
|
140
|
+
// still answering 200. The compiler does not build a multi-term entry for this provider; this
|
|
141
|
+
// refusal is the backstop for any path that does not go through it.
|
|
142
|
+
const goods = goodsTermsList(p);
|
|
143
|
+
if (goods.length > 1) {
|
|
144
|
+
throw new Error(
|
|
145
|
+
`goods_text carries ${goods.length} terms and this register has no OR on its goods filter: the `
|
|
146
|
+
+ `words would be intersected, not offered as alternatives, and the answer would narrow as the `
|
|
147
|
+
+ `list grew with no error. Send one term.`);
|
|
148
|
+
}
|
|
149
|
+
// A single term's own words ARE intersected, and that is the nearest honest form of the phrase the
|
|
150
|
+
// caller asked for — it is sent as written, and nothing here calls it a phrase match.
|
|
151
|
+
if (goods.length) f.goods_services_text = goods[0];
|
|
135
152
|
return f;
|
|
136
153
|
}
|
|
137
154
|
|