kibi-cli 2.18.0 → 2.20.0
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/dist/cli-operation-metadata.d.ts +2 -2
- package/dist/cli-operation-metadata.js +2 -2
- package/dist/cli-register-maintenance.js +1 -1
- package/dist/commands/doctor.js +11 -5
- package/dist/commands/engine.d.ts +2 -1
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +6 -1
- package/dist/commands/sync/manifest.d.ts +10 -0
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +27 -0
- package/dist/commands/sync/untracked-targets.d.ts +17 -0
- package/dist/commands/sync/untracked-targets.d.ts.map +1 -1
- package/dist/commands/sync/untracked-targets.js +43 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +51 -2
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +33 -22
- package/dist/intent-search.d.ts +7 -0
- package/dist/intent-search.d.ts.map +1 -1
- package/dist/intent-search.js +66 -4
- package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applicability.js +10 -4
- package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applyplan.js +16 -5
- package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-4.js +3 -0
- package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference-1.js +34 -7
- package/dist/operations/modeling/predicate-score-3.js +1 -1
- package/dist/operations/modeling/predicate-types.d.ts +6 -0
- package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +111 -0
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
- package/dist/operations/mutation/source-authoring.js +5 -12
- package/dist/operations/mutation/types.d.ts +26 -0
- package/dist/operations/mutation/types.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.js +8 -2
- package/dist/operations/mutation/validate-upsert.d.ts.map +1 -1
- package/dist/operations/mutation/validate-upsert.js +116 -4
- package/dist/operations/mutation/warnings.d.ts +10 -0
- package/dist/operations/mutation/warnings.d.ts.map +1 -1
- package/dist/operations/mutation/warnings.js +26 -0
- package/dist/operations/mutation/what-if.d.ts +25 -0
- package/dist/operations/mutation/what-if.d.ts.map +1 -0
- package/dist/operations/mutation/what-if.js +59 -0
- package/dist/operations/planning/compile-intent.d.ts +15 -20
- package/dist/operations/planning/compile-intent.d.ts.map +1 -1
- package/dist/operations/planning/compile-intent.js +64 -53
- package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/clauses.js +8 -7
- package/dist/prolog/janitor.d.ts +26 -2
- package/dist/prolog/janitor.d.ts.map +1 -1
- package/dist/prolog/janitor.js +55 -3
- package/dist/prolog/store-lock.d.ts +47 -3
- package/dist/prolog/store-lock.d.ts.map +1 -1
- package/dist/prolog/store-lock.js +148 -11
- package/dist/proof/inspect.d.ts +1 -1
- package/dist/proof/inspect.d.ts.map +1 -1
- package/dist/proof/inspect.js +9 -2
- package/dist/public/operations/catalog.d.ts +97 -4
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/check-executor.d.ts +2 -2
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +35 -0
- package/dist/public/operations/check-format-shared.d.ts +16 -0
- package/dist/public/operations/check-format-shared.d.ts.map +1 -1
- package/dist/public/operations/check-format-shared.js +19 -0
- package/dist/public/operations/contracts.d.ts.map +1 -1
- package/dist/public/operations/contracts.js +11 -4
- package/dist/public/operations/discovery-executors.d.ts +39 -0
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +368 -3
- package/dist/public/operations/specs/composite.d.ts +1 -1
- package/dist/public/operations/specs/composite.js +1 -1
- package/dist/public/operations/specs/discovery.d.ts +52 -3
- package/dist/public/operations/specs/discovery.d.ts.map +1 -1
- package/dist/public/operations/specs/discovery.js +58 -3
- package/dist/public/operations/specs/upsert.d.ts +44 -0
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/operations/specs/upsert.js +14 -0
- package/dist/public/skills/kibi-usage/SKILL.md +44 -1
- package/dist/public/skills/kibi-usage/resources/fact-lanes.md +4 -2
- package/dist/runtime/cli-runtime.d.ts.map +1 -1
- package/dist/runtime/cli-runtime.js +7 -2
- package/dist/search-answer.d.ts +25 -3
- package/dist/search-answer.d.ts.map +1 -1
- package/dist/search-answer.js +96 -8
- package/dist/utils/branch-store.d.ts.map +1 -1
- package/dist/utils/branch-store.js +4 -2
- package/dist/utils/content-freshness.d.ts.map +1 -1
- package/dist/utils/content-freshness.js +12 -2
- package/dist/utils/symbol-manifest-layout.d.ts +9 -0
- package/dist/utils/symbol-manifest-layout.d.ts.map +1 -0
- package/dist/utils/symbol-manifest-layout.js +18 -0
- package/package.json +3 -3
- package/src/public/operations/check-executor.ts +44 -1
- package/src/public/operations/check-format-shared.ts +35 -1
- package/src/public/operations/contracts.ts +15 -4
- package/src/public/operations/discovery-executors.ts +484 -2
- package/src/public/operations/specs/composite.ts +1 -1
- package/src/public/operations/specs/discovery.ts +70 -3
- package/src/public/operations/specs/upsert.ts +15 -0
- package/src/public/skills/kibi-usage/SKILL.md +44 -1
- package/src/public/skills/kibi-usage/resources/fact-lanes.md +4 -2
|
@@ -14,6 +14,31 @@ import { SOURCE_PATH_DANGLING_RULE, collectSourcePathDanglingViolations, } from
|
|
|
14
14
|
import { collectSourceRelationshipParityViolations } from "./source-relationship-parity.js";
|
|
15
15
|
import { readWorkspaceSnapshot } from "./workspace-snapshot.js";
|
|
16
16
|
export { buildStructuredContent, buildSummary, getEffectiveRules, resolveCheckRules, };
|
|
17
|
+
// implements REQ-search-answer-hygiene
|
|
18
|
+
/**
|
|
19
|
+
* What this run evaluated: the rules that ran, in registry order, and for
|
|
20
|
+
* `domain-contradictions` the number of requirement fact pairs the rule
|
|
21
|
+
* compared, read from the engine after the rules ran on the same store. A
|
|
22
|
+
* count the engine cannot give (an older engine) is left out rather than
|
|
23
|
+
* reported as zero.
|
|
24
|
+
*/
|
|
25
|
+
async function describeEvaluation(prolog, rules) {
|
|
26
|
+
const evaluated = {
|
|
27
|
+
rules: [...rules],
|
|
28
|
+
};
|
|
29
|
+
if (!rules.has("domain-contradictions"))
|
|
30
|
+
return evaluated;
|
|
31
|
+
try {
|
|
32
|
+
const result = await prolog.query("kb_domain_contradiction_pairs_examined(Count)");
|
|
33
|
+
const count = Number(result.bindings.Count);
|
|
34
|
+
if (result.success && Number.isInteger(count) && count >= 0)
|
|
35
|
+
evaluated.domainContradictions = { factPairsExamined: count };
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// An engine without the predicate leaves the count out.
|
|
39
|
+
}
|
|
40
|
+
return evaluated;
|
|
41
|
+
}
|
|
17
42
|
function requireProlog(context) {
|
|
18
43
|
if (context.prolog === undefined) {
|
|
19
44
|
throw new Error("Check operation requires a Prolog runtime");
|
|
@@ -121,12 +146,15 @@ export async function executeCheck(args, context, options = {}) {
|
|
|
121
146
|
const violations = [uncompiled];
|
|
122
147
|
const statusPlan = await readStatusMigrationPlan(context);
|
|
123
148
|
const migrationPlan = await migrationPlanForCheck(context, violations, [], statusPlan);
|
|
149
|
+
// Every store-backed rule was skipped: only this one was evaluated.
|
|
150
|
+
const evaluated = { rules: [BRANCH_STORE_NOT_COMPILED_RULE] };
|
|
124
151
|
return {
|
|
125
152
|
content: [
|
|
126
153
|
{
|
|
127
154
|
type: "text",
|
|
128
155
|
text: buildSummary({
|
|
129
156
|
violations,
|
|
157
|
+
evaluated,
|
|
130
158
|
impactResult,
|
|
131
159
|
qualityDiagnostics: [],
|
|
132
160
|
}),
|
|
@@ -134,6 +162,7 @@ export async function executeCheck(args, context, options = {}) {
|
|
|
134
162
|
],
|
|
135
163
|
structuredContent: buildStructuredContent({
|
|
136
164
|
violations,
|
|
165
|
+
evaluated,
|
|
137
166
|
diagnostics: [
|
|
138
167
|
{
|
|
139
168
|
category: "SYNC_ERROR",
|
|
@@ -169,12 +198,14 @@ export async function executeCheck(args, context, options = {}) {
|
|
|
169
198
|
});
|
|
170
199
|
const statusPlan = await readStatusMigrationPlan(context);
|
|
171
200
|
const migrationPlan = await migrationPlanForCheck(context, [], qualityDiagnostics, statusPlan);
|
|
201
|
+
const evaluated = { rules: [] };
|
|
172
202
|
return {
|
|
173
203
|
content: [
|
|
174
204
|
{
|
|
175
205
|
type: "text",
|
|
176
206
|
text: buildSummary({
|
|
177
207
|
violations: [],
|
|
208
|
+
evaluated,
|
|
178
209
|
impactResult,
|
|
179
210
|
qualityDiagnostics,
|
|
180
211
|
}),
|
|
@@ -182,6 +213,7 @@ export async function executeCheck(args, context, options = {}) {
|
|
|
182
213
|
],
|
|
183
214
|
structuredContent: buildStructuredContent({
|
|
184
215
|
violations: [],
|
|
216
|
+
evaluated,
|
|
185
217
|
diagnostics: [],
|
|
186
218
|
qualityDiagnostics,
|
|
187
219
|
impactResult,
|
|
@@ -217,6 +249,7 @@ export async function executeCheck(args, context, options = {}) {
|
|
|
217
249
|
...checkPolicyFindings,
|
|
218
250
|
]);
|
|
219
251
|
const violations = partitioned.violations;
|
|
252
|
+
const evaluated = await describeEvaluation(prolog, rulesAllowlist);
|
|
220
253
|
const diagnostics = violations.map((v) => ({
|
|
221
254
|
category: "SYNC_ERROR",
|
|
222
255
|
severity: "error",
|
|
@@ -251,6 +284,7 @@ export async function executeCheck(args, context, options = {}) {
|
|
|
251
284
|
type: "text",
|
|
252
285
|
text: buildSummary({
|
|
253
286
|
violations,
|
|
287
|
+
evaluated,
|
|
254
288
|
impactResult,
|
|
255
289
|
qualityDiagnostics,
|
|
256
290
|
}),
|
|
@@ -258,6 +292,7 @@ export async function executeCheck(args, context, options = {}) {
|
|
|
258
292
|
],
|
|
259
293
|
structuredContent: buildStructuredContent({
|
|
260
294
|
violations,
|
|
295
|
+
evaluated,
|
|
261
296
|
diagnostics,
|
|
262
297
|
qualityDiagnostics,
|
|
263
298
|
impactResult,
|
|
@@ -9,9 +9,21 @@ export interface CheckDiagnostic {
|
|
|
9
9
|
readonly file?: string;
|
|
10
10
|
readonly suggestion?: string;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* What a check run evaluated, so "no violations" can be told apart from
|
|
14
|
+
* "nothing evaluated": the rules that ran, and for `domain-contradictions`
|
|
15
|
+
* how many pairs of requirement facts it compared.
|
|
16
|
+
*/
|
|
17
|
+
export interface CheckEvaluated {
|
|
18
|
+
readonly rules: readonly string[];
|
|
19
|
+
readonly domainContradictions?: Readonly<{
|
|
20
|
+
factPairsExamined: number;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
12
23
|
export interface CheckStructuredContent {
|
|
13
24
|
readonly violations: readonly Violation[];
|
|
14
25
|
readonly count: number;
|
|
26
|
+
readonly evaluated: CheckEvaluated;
|
|
15
27
|
readonly diagnostics: readonly CheckDiagnostic[];
|
|
16
28
|
readonly qualityDiagnostics?: readonly QualityDiagnostic[];
|
|
17
29
|
readonly impactDiagnostics?: ChangedFileImpactResult["impactDiagnostics"];
|
|
@@ -26,13 +38,17 @@ export declare function formatQualityDiagnosticsText(diagnostics: readonly Quali
|
|
|
26
38
|
export declare function formatViolationText(violations: readonly Violation[]): string;
|
|
27
39
|
export declare function buildStructuredContent(input: {
|
|
28
40
|
violations: readonly Violation[];
|
|
41
|
+
evaluated: CheckEvaluated;
|
|
29
42
|
diagnostics: readonly CheckDiagnostic[];
|
|
30
43
|
qualityDiagnostics?: readonly QualityDiagnostic[];
|
|
31
44
|
impactResult: ChangedFileImpactResult | undefined;
|
|
32
45
|
migrationPlan?: MigrationPlan;
|
|
33
46
|
}): CheckStructuredContent;
|
|
47
|
+
/** One line saying what the check evaluated, so a clean result is readable. */
|
|
48
|
+
export declare function formatEvaluatedText(evaluated: CheckEvaluated): string;
|
|
34
49
|
export declare function buildSummary(input: {
|
|
35
50
|
readonly violations: readonly Violation[];
|
|
51
|
+
readonly evaluated?: CheckEvaluated;
|
|
36
52
|
readonly impactResult: ChangedFileImpactResult | undefined;
|
|
37
53
|
readonly qualityDiagnostics: readonly QualityDiagnostic[];
|
|
38
54
|
}): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-format-shared.d.ts","sourceRoot":"","sources":["../../../src/public/operations/check-format-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkBnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAC9D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IACpE,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAC9D,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;CACxC;AAaD,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,uBAAuB,GACpC,MAAM,CAaR;AAaD,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,SAAS,iBAAiB,EAAE,GACxC,MAAM,CA4BR;AAGD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAmB5E;AAGD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IACjC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACxC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,YAAY,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAClD,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"check-format-shared.d.ts","sourceRoot":"","sources":["../../../src/public/operations/check-format-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkBnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE;AAGD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAC9D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IACpE,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAC9D,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;CACxC;AAaD,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,uBAAuB,GACpC,MAAM,CAaR;AAaD,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,SAAS,iBAAiB,EAAE,GACxC,MAAM,CA4BR;AAGD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAmB5E;AAGD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IACjC,SAAS,EAAE,cAAc,CAAC;IAC1B,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACxC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,YAAY,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAClD,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,sBAAsB,CA4BzB;AAID,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAQrE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3D,GAAG,MAAM,CAWT"}
|
|
@@ -79,6 +79,12 @@ export function buildStructuredContent(input) {
|
|
|
79
79
|
return {
|
|
80
80
|
violations: [...input.violations],
|
|
81
81
|
count: input.violations.length,
|
|
82
|
+
evaluated: {
|
|
83
|
+
rules: [...input.evaluated.rules],
|
|
84
|
+
...(input.evaluated.domainContradictions !== undefined
|
|
85
|
+
? { domainContradictions: input.evaluated.domainContradictions }
|
|
86
|
+
: {}),
|
|
87
|
+
},
|
|
82
88
|
diagnostics: formatDiagnostics(input.diagnostics),
|
|
83
89
|
...(qualityDiagnostics.length > 0
|
|
84
90
|
? { qualityDiagnostics: [...qualityDiagnostics] }
|
|
@@ -98,8 +104,21 @@ export function buildStructuredContent(input) {
|
|
|
98
104
|
};
|
|
99
105
|
}
|
|
100
106
|
// implements REQ-mcp-tool-check
|
|
107
|
+
// implements REQ-search-answer-hygiene
|
|
108
|
+
/** One line saying what the check evaluated, so a clean result is readable. */
|
|
109
|
+
export function formatEvaluatedText(evaluated) {
|
|
110
|
+
const rules = evaluated.rules.length === 0
|
|
111
|
+
? "Evaluated no rules"
|
|
112
|
+
: `Evaluated ${evaluated.rules.length} rule${evaluated.rules.length === 1 ? "" : "s"}`;
|
|
113
|
+
const pairs = evaluated.domainContradictions;
|
|
114
|
+
if (pairs === undefined)
|
|
115
|
+
return `${rules}.`;
|
|
116
|
+
return `${rules}; domain-contradictions compared ${pairs.factPairsExamined} fact pair${pairs.factPairsExamined === 1 ? "" : "s"}${pairs.factPairsExamined === 0 ? " (no two current requirements constrain the same subject or predicate case)" : ""}.`;
|
|
117
|
+
}
|
|
101
118
|
export function buildSummary(input) {
|
|
102
119
|
const sections = [formatViolationText(input.violations)];
|
|
120
|
+
if (input.evaluated !== undefined)
|
|
121
|
+
sections.push(formatEvaluatedText(input.evaluated));
|
|
103
122
|
if (input.impactResult !== undefined) {
|
|
104
123
|
sections.push(formatImpactText(input.impactResult));
|
|
105
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/public/operations/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,oEAAoE;AACpE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAsZpE;;uEAEuE;AACvE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,GAC1B,mBAAmB,CAMrB;
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/public/operations/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,oEAAoE;AACpE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAsZpE;;uEAEuE;AACvE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,GAC1B,mBAAmB,CAMrB;AA+XD,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAa3C,CAAC;AAmDF,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAClD,YAAY,EAAE,MAAM,GACnB,IAAI,CAIN;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,SAAS,eAAe,EAAE,GAClC,SAAS,0BAA0B,EAAE,CAoBvC"}
|
|
@@ -345,13 +345,11 @@ const BASE_DATA_SCHEMAS = {
|
|
|
345
345
|
sourceType: stringValue,
|
|
346
346
|
}),
|
|
347
347
|
kb_skills_read: objectData({ content: stringValue }, ["content"]),
|
|
348
|
-
kb_query: objectData({ entities: recordArray, count: integerValue }, [
|
|
349
|
-
"entities",
|
|
350
|
-
"count",
|
|
351
|
-
]),
|
|
348
|
+
kb_query: objectData({ entities: recordArray, count: integerValue, factQuery: recordValue }, ["entities", "count"]),
|
|
352
349
|
kb_search: objectData({
|
|
353
350
|
results: valueArray,
|
|
354
351
|
count: integerValue,
|
|
352
|
+
returned: integerValue,
|
|
355
353
|
truncated: booleanValue,
|
|
356
354
|
queryAnalysis: recordValue,
|
|
357
355
|
answer: recordValue,
|
|
@@ -471,6 +469,10 @@ const BASE_DATA_SCHEMAS = {
|
|
|
471
469
|
recommendedPredicateSchema: { type: ["object", "null"] },
|
|
472
470
|
applyPlan: recordArray,
|
|
473
471
|
relationshipPlan: { type: ["object", "null"] },
|
|
472
|
+
plan: {
|
|
473
|
+
type: ["object", "null"],
|
|
474
|
+
description: "With requirementId and a complete candidate: the hash-bound kibi.compile-plan.v1 that writes the predicate fact and links requires_predicate in one kb_apply_plan call (approvedPlanHash = plan.planHash). Its contradictionAnalysis is the what-if over the current KB plus the plan; a conflict leaves the plan blocked. Null when no plan applies.",
|
|
475
|
+
},
|
|
474
476
|
relationshipTarget: {
|
|
475
477
|
type: ["string", "null"],
|
|
476
478
|
description: "The planned predicate fact id (FACT-PRED-...) that a requires_predicate link must target. Candidate ids (SUGGEST-...) are never relationship targets.",
|
|
@@ -521,6 +523,8 @@ const BASE_DATA_SCHEMAS = {
|
|
|
521
523
|
warnings: valueArray,
|
|
522
524
|
semanticAdvisor: nullableJsonSchema(recordValue),
|
|
523
525
|
normalizedPreview: nullableJsonSchema(recordValue),
|
|
526
|
+
stagedFacts: stringArray,
|
|
527
|
+
whatIf: recordValue,
|
|
524
528
|
}),
|
|
525
529
|
kb_upsert: {
|
|
526
530
|
description: "Committed upsert payload, or the validation preview when dryRun:true wrote nothing.",
|
|
@@ -543,6 +547,8 @@ const BASE_DATA_SCHEMAS = {
|
|
|
543
547
|
warnings: valueArray,
|
|
544
548
|
semanticAdvisor: nullableJsonSchema(recordValue),
|
|
545
549
|
normalizedPreview: nullableJsonSchema(recordValue),
|
|
550
|
+
stagedFacts: stringArray,
|
|
551
|
+
whatIf: recordValue,
|
|
546
552
|
dryRun: { const: true },
|
|
547
553
|
skippedEffects: stringArray,
|
|
548
554
|
}, ["valid", "dryRun", "skippedEffects"]),
|
|
@@ -570,6 +576,7 @@ const BASE_DATA_SCHEMAS = {
|
|
|
570
576
|
objectData({
|
|
571
577
|
violations: valueArray,
|
|
572
578
|
count: integerValue,
|
|
579
|
+
evaluated: recordValue,
|
|
573
580
|
diagnostics: recordArray,
|
|
574
581
|
qualityDiagnostics: recordArray,
|
|
575
582
|
impactDiagnostics: recordArray,
|
|
@@ -12,11 +12,47 @@ export type QueryInput = {
|
|
|
12
12
|
readonly sourceFile?: string;
|
|
13
13
|
readonly limit?: number;
|
|
14
14
|
readonly offset?: number;
|
|
15
|
+
/** Typed fact filters (fact entities only); see `FACT_KINDS`. */
|
|
16
|
+
readonly factKind?: string;
|
|
17
|
+
readonly predicate?: string;
|
|
18
|
+
readonly namespace?: string;
|
|
19
|
+
readonly where?: Readonly<Record<string, string>>;
|
|
20
|
+
readonly args?: readonly (string | null)[];
|
|
21
|
+
readonly polarity?: "assert" | "deny";
|
|
22
|
+
readonly scope?: "all" | "current_requirements";
|
|
23
|
+
readonly distinct?: string;
|
|
24
|
+
readonly subjectKey?: string;
|
|
25
|
+
readonly propertyKey?: string;
|
|
15
26
|
};
|
|
27
|
+
/** A ready-to-run follow-up call the query suggests. */
|
|
28
|
+
export type QueryNextCall = Readonly<{
|
|
29
|
+
call: string;
|
|
30
|
+
why: string;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Typed-fact view of a kb_query answer: which predicate, property or fact
|
|
34
|
+
* kind was asked, the schema that names its arguments, distinct value counts,
|
|
35
|
+
* the values that do exist when nothing matched, warnings about the question
|
|
36
|
+
* itself and the follow-up calls that make sense next.
|
|
37
|
+
*/
|
|
38
|
+
export type FactQueryPayload = Readonly<{
|
|
39
|
+
mode: "predicate" | "property" | "schemas" | "fact_kind";
|
|
40
|
+
predicate?: Record<string, unknown>;
|
|
41
|
+
property?: Record<string, unknown>;
|
|
42
|
+
factKind?: string;
|
|
43
|
+
schema?: Record<string, unknown> | null;
|
|
44
|
+
subjectFacts?: readonly string[];
|
|
45
|
+
distinct?: Record<string, unknown> | null;
|
|
46
|
+
suggestions?: Record<string, unknown> | null;
|
|
47
|
+
warnings: readonly string[];
|
|
48
|
+
next: readonly QueryNextCall[];
|
|
49
|
+
}>;
|
|
16
50
|
export type QueryPayload = {
|
|
17
51
|
readonly entities: readonly Record<string, unknown>[];
|
|
18
52
|
readonly count: number;
|
|
53
|
+
readonly factQuery?: FactQueryPayload;
|
|
19
54
|
};
|
|
55
|
+
export declare const FACT_KINDS: readonly ["subject", "property_value", "predicate", "predicate_schema", "observation", "meta", "rule", "rule_schema"];
|
|
20
56
|
export type SearchInput = {
|
|
21
57
|
readonly query: string;
|
|
22
58
|
readonly type?: string;
|
|
@@ -31,7 +67,10 @@ export type SearchInput = {
|
|
|
31
67
|
};
|
|
32
68
|
export type SearchPayload = {
|
|
33
69
|
readonly results: readonly (SearchMatch | IntentSearchMatch)[];
|
|
70
|
+
/** Matches in the whole ranking, before `limit` and `offset`. */
|
|
34
71
|
readonly count: number;
|
|
72
|
+
/** Rows in `results`: the page this call returned. */
|
|
73
|
+
readonly returned: number;
|
|
35
74
|
readonly truncated?: boolean;
|
|
36
75
|
readonly queryAnalysis?: IntentSearchAnalysis;
|
|
37
76
|
readonly answer?: SearchAnswer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery-executors.d.ts","sourceRoot":"","sources":["../../../src/public/operations/discovery-executors.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAGpB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EACL,yBAAyB,EACzB,KAAK,qBAAqB,EAM3B,MAAM,6BAA6B,CAAC;AAUrC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAGnB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery-executors.d.ts","sourceRoot":"","sources":["../../../src/public/operations/discovery-executors.ts"],"names":[],"mappings":"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"}
|