kibi-cli 2.13.0 → 2.15.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/engine.d.ts.map +1 -1
- package/dist/engine.js +5 -2
- package/dist/intent-search.d.ts.map +1 -1
- package/dist/intent-search.js +16 -4
- package/dist/operations/bootstrap/candidate-helpers.d.ts +5 -0
- package/dist/operations/bootstrap/candidate-helpers.d.ts.map +1 -1
- package/dist/operations/bootstrap/candidate-helpers.js +8 -0
- package/dist/operations/bootstrap/candidates.d.ts +12 -1
- package/dist/operations/bootstrap/candidates.d.ts.map +1 -1
- package/dist/operations/bootstrap/candidates.js +41 -7
- package/dist/operations/bootstrap/discovery-evidence.d.ts.map +1 -1
- package/dist/operations/bootstrap/discovery-evidence.js +8 -0
- package/dist/operations/bootstrap/discovery.d.ts.map +1 -1
- package/dist/operations/bootstrap/discovery.js +6 -1
- package/dist/operations/bootstrap/generate.d.ts.map +1 -1
- package/dist/operations/bootstrap/generate.js +18 -5
- package/dist/operations/bootstrap/guidance-actions.d.ts +2 -1
- package/dist/operations/bootstrap/guidance-actions.d.ts.map +1 -1
- package/dist/operations/bootstrap/guidance-actions.js +10 -1
- package/dist/operations/bootstrap/guidance.d.ts +2 -0
- package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
- package/dist/operations/bootstrap/guidance.js +1 -1
- package/dist/operations/bootstrap/plugin-offers.d.ts +16 -0
- package/dist/operations/bootstrap/plugin-offers.d.ts.map +1 -0
- package/dist/operations/bootstrap/plugin-offers.js +66 -0
- package/dist/operations/bootstrap/presentation.d.ts +2 -0
- package/dist/operations/bootstrap/presentation.d.ts.map +1 -1
- package/dist/operations/bootstrap/presentation.js +19 -5
- package/dist/operations/bootstrap/types.d.ts +8 -0
- package/dist/operations/bootstrap/types.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applicability.js +27 -1
- package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applyplan.js +9 -5
- package/dist/operations/modeling/predicate-binding-hints.d.ts +10 -0
- package/dist/operations/modeling/predicate-binding-hints.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-binding-hints.js +112 -16
- package/dist/operations/modeling/predicate-bindings.d.ts +16 -0
- package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-bindings.js +40 -1
- package/dist/operations/modeling/predicate-catalog-5.d.ts +2 -2
- package/dist/operations/modeling/predicate-catalog-5.js +2 -2
- package/dist/operations/modeling/predicate-catalog-6.d.ts +9 -0
- package/dist/operations/modeling/predicate-catalog-6.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-catalog-6.js +106 -0
- package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog.js +2 -0
- package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-usage-hints-4.js +32 -0
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +48 -17
- package/dist/operations/mutation/contradictions.d.ts +8 -0
- package/dist/operations/mutation/contradictions.d.ts.map +1 -1
- package/dist/operations/mutation/contradictions.js +13 -0
- package/dist/operations/mutation/source-authoring.d.ts +13 -0
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
- package/dist/operations/mutation/source-authoring.js +70 -2
- package/dist/operations/mutation/upsert.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.js +9 -3
- package/dist/operations/mutation/validate-upsert.d.ts.map +1 -1
- package/dist/operations/mutation/validate-upsert.js +30 -4
- package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/ingestion-boundary.js +20 -1
- package/dist/plugins/approved-source-analyzers.generated.d.ts +5 -5
- package/dist/plugins/approved-source-analyzers.generated.js +5 -5
- package/dist/plugins/check-policies.d.ts +24 -0
- package/dist/plugins/check-policies.d.ts.map +1 -0
- package/dist/plugins/check-policies.js +73 -0
- package/dist/plugins/registry.d.ts.map +1 -1
- package/dist/plugins/registry.js +10 -1
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +8 -1
- package/dist/provenance-stub.d.ts +15 -0
- package/dist/provenance-stub.d.ts.map +1 -0
- package/dist/provenance-stub.js +30 -0
- package/dist/public/operations/catalog.d.ts +1 -1
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +3 -0
- package/dist/public/operations/check-policy-rules.d.ts +49 -0
- package/dist/public/operations/check-policy-rules.d.ts.map +1 -0
- package/dist/public/operations/check-policy-rules.js +305 -0
- package/dist/public/operations/contracts.d.ts.map +1 -1
- package/dist/public/operations/contracts.js +5 -0
- package/dist/public/operations/source-relationship-parity.d.ts.map +1 -1
- package/dist/public/operations/source-relationship-parity.js +16 -1
- package/dist/public/operations/specs/check-rules.generated.d.ts +1 -1
- package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -1
- package/dist/public/operations/specs/check-rules.generated.js +3 -1
- package/dist/public/operations/specs/check.d.ts +1 -1
- package/dist/public/operations/specs/reporting.d.ts +9 -0
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +6 -2
- package/dist/public/skills/kibi-bootstrap/SKILL.md +3 -3
- package/dist/public/skills/kibi-usage/SKILL.md +81 -5
- package/dist/public/skills/kibi-usage/resources/ui-requirements.md +42 -3
- package/dist/report/html-report.d.ts.map +1 -1
- package/dist/report/html-report.js +13 -2
- package/dist/search-answer.d.ts.map +1 -1
- package/dist/search-answer.js +7 -0
- package/dist/search-ranking.d.ts.map +1 -1
- package/dist/search-ranking.js +9 -1
- package/dist/utils/rule-registry.generated.d.ts +10 -0
- package/dist/utils/rule-registry.generated.d.ts.map +1 -1
- package/dist/utils/rule-registry.generated.js +12 -0
- package/package.json +4 -4
- package/src/public/operations/check-executor.ts +7 -0
- package/src/public/operations/check-policy-rules.ts +462 -0
- package/src/public/operations/contracts.ts +6 -0
- package/src/public/operations/source-relationship-parity.ts +17 -2
- package/src/public/operations/specs/check-rules.generated.ts +3 -1
- package/src/public/operations/specs/reporting.ts +13 -2
- package/src/public/skills/kibi-bootstrap/SKILL.md +3 -3
- package/src/public/skills/kibi-usage/SKILL.md +81 -5
- package/src/public/skills/kibi-usage/resources/ui-requirements.md +42 -3
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isProvenanceStubCandidate } from "./candidates.js";
|
|
1
2
|
import { buildGuidance } from "./guidance.js";
|
|
2
3
|
import { INTENT_CLAIM_KINDS, KNOWLEDGE_SOURCE_AUTHORITIES, KNOWLEDGE_SOURCE_KINDS, bootstrapPlanHash, } from "./types.js";
|
|
3
4
|
function strings(values) {
|
|
@@ -153,7 +154,7 @@ function claimAccounting(declared, candidates, suppressed) {
|
|
|
153
154
|
return [{ source, declared: count, planned, existing, filtered }];
|
|
154
155
|
});
|
|
155
156
|
}
|
|
156
|
-
// implements REQ-KIBI-BOOTSTRAP-PLAN, REQ-bootstrap-discovered-candidate-budget
|
|
157
|
+
// implements REQ-KIBI-BOOTSTRAP-PLAN, REQ-bootstrap-discovered-candidate-budget, REQ-bootstrap-provenance-stubs
|
|
157
158
|
export function presentBootstrap(input) {
|
|
158
159
|
const declaredContext = normalizeBootstrapContext(input.bootstrapContext);
|
|
159
160
|
const guidance = buildGuidance({
|
|
@@ -163,6 +164,7 @@ export function presentBootstrap(input) {
|
|
|
163
164
|
candidates: input.candidates,
|
|
164
165
|
signals: input.sourceOnlySignals,
|
|
165
166
|
warnings: input.discoverySummary.scanWarnings,
|
|
167
|
+
offers: input.pluginOffers ?? [],
|
|
166
168
|
});
|
|
167
169
|
const confidenceLevel = String(guidance.confidence.level);
|
|
168
170
|
const bindingDiagnostics = strings(input.bindingDiagnostics);
|
|
@@ -183,9 +185,20 @@ export function presentBootstrap(input) {
|
|
|
183
185
|
const suppressionSummary = suppressedTotal > 0
|
|
184
186
|
? ` Suppressed ${suppressedTotal} candidate(s) by reason: ${suppression.map((row) => `${row.reason} ${row.count}`).join(", ")}.`
|
|
185
187
|
: "";
|
|
186
|
-
|
|
187
|
-
|
|
188
|
+
// Stubs are counted apart from candidates with a claim so nobody raises
|
|
189
|
+
// maxCandidates to admit entries that state nothing.
|
|
190
|
+
const provenanceStubs = input.candidates.filter(isProvenanceStubCandidate);
|
|
191
|
+
const overLimitRows = input.suppressedCandidates.filter((row) => row.reason === "over_limit");
|
|
192
|
+
const overLimitStubs = overLimitRows.filter((row) => row.provenanceStub === true).length;
|
|
193
|
+
const limitSummary = overLimitRows.length > 0
|
|
194
|
+
? ` Discovered candidates over maxCandidates are over_limit (${overLimitStubs} of ${overLimitRows.length} are provenance stubs that state no claim); raise the limit only for the ${overLimitRows.length - overLimitStubs} with a claim, or narrow entityTypes. Declared intent claims do not count against it.`
|
|
188
195
|
: "";
|
|
196
|
+
const discoverySummary = {
|
|
197
|
+
...input.discoverySummary,
|
|
198
|
+
candidatesWithClaims: input.candidates.length - provenanceStubs.length,
|
|
199
|
+
provenanceStubs: provenanceStubs.length,
|
|
200
|
+
suppressedProvenanceStubs: overLimitStubs,
|
|
201
|
+
};
|
|
189
202
|
const tldr = (confidenceLevel === "low" && !input.activation.applyBlocked
|
|
190
203
|
? `Low-confidence bootstrap (${String(guidance.confidence.score)}): review diagnostics before proceeding. ${baseTldr}`
|
|
191
204
|
: baseTldr) +
|
|
@@ -279,7 +292,7 @@ export function presentBootstrap(input) {
|
|
|
279
292
|
declaredContext,
|
|
280
293
|
contextQuestions: contextQuestions.slice(0, 4),
|
|
281
294
|
confidence: guidance.confidence,
|
|
282
|
-
discoverySummary
|
|
295
|
+
discoverySummary,
|
|
283
296
|
candidates: input.candidates,
|
|
284
297
|
actions,
|
|
285
298
|
sourceWrites: [],
|
|
@@ -311,8 +324,9 @@ export function presentBootstrap(input) {
|
|
|
311
324
|
tldr,
|
|
312
325
|
promptBlock: guidance.promptBlock,
|
|
313
326
|
recommendedActions: guidance.actions,
|
|
327
|
+
pluginOffers: input.pluginOffers ?? [],
|
|
314
328
|
declaredContext,
|
|
315
|
-
discoverySummary
|
|
329
|
+
discoverySummary,
|
|
316
330
|
candidates: input.candidates,
|
|
317
331
|
actions,
|
|
318
332
|
sourceWrites: [],
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { OperationResult } from "../../public/operations/types.js";
|
|
2
|
+
import type { PluginOffer } from "./plugin-offers.js";
|
|
2
3
|
export declare function bootstrapPlanHash(plan: Readonly<Record<string, unknown>>): string;
|
|
3
4
|
/** Bind a freshly initialized, not-yet-synced branch to its exact source state. */
|
|
4
5
|
export declare function bootstrapEmptyKbSnapshotId(input: {
|
|
@@ -130,9 +131,16 @@ export type DiscoverySummary = {
|
|
|
130
131
|
readonly excludedRoots: readonly string[];
|
|
131
132
|
readonly truncated: boolean;
|
|
132
133
|
readonly scanWarnings: readonly string[];
|
|
134
|
+
/** Planned discovered or declared candidates that state a claim. */
|
|
135
|
+
readonly candidatesWithClaims?: number;
|
|
136
|
+
/** Planned provider facts that only record provenance (no claim). */
|
|
137
|
+
readonly provenanceStubs?: number;
|
|
138
|
+
/** Provenance stubs suppressed as over_limit; no reason to raise the cap. */
|
|
139
|
+
readonly suppressedProvenanceStubs?: number;
|
|
133
140
|
};
|
|
134
141
|
export type DiscoveryResult = {
|
|
135
142
|
readonly activation: ActivationPolicy;
|
|
143
|
+
readonly pluginOffers: readonly PluginOffer[];
|
|
136
144
|
readonly evidence: readonly BootstrapEvidence[];
|
|
137
145
|
readonly ignoredSources: readonly string[];
|
|
138
146
|
readonly summary: DiscoverySummary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/operations/bootstrap/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/operations/bootstrap/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predicate-applicability.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-applicability.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,qBAAqB,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"predicate-applicability.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-applicability.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAqW1C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,MAAM,GACX,qBAAqB,CA2EvB"}
|
|
@@ -163,7 +163,11 @@ const INTENT_RULES = {
|
|
|
163
163
|
[/use|avoid/i],
|
|
164
164
|
[/api|apis|code|framework|hook|pattern|signal|schema|type|computed/i],
|
|
165
165
|
],
|
|
166
|
-
|
|
166
|
+
// On-screen views and visual patterns are UI design claims (ui_pattern,
|
|
167
|
+
// same_pattern), not developer coding standards.
|
|
168
|
+
prohibited: [
|
|
169
|
+
/user|admin|access|permission|mfa|customer|\bviews?\b|screens?|timeline/i,
|
|
170
|
+
],
|
|
167
171
|
},
|
|
168
172
|
release_gate_rule: {
|
|
169
173
|
allOf: [
|
|
@@ -263,6 +267,28 @@ const INTENT_RULES = {
|
|
|
263
267
|
],
|
|
264
268
|
prohibited: [/deletion|soft\s+delete/i],
|
|
265
269
|
},
|
|
270
|
+
ui_pattern: {
|
|
271
|
+
allOf: [
|
|
272
|
+
[/pattern|timeline|card|list|grid|carousel|table|layout|design/i],
|
|
273
|
+
[/use|show|present|render|display|design/i],
|
|
274
|
+
],
|
|
275
|
+
prohibited: [/aligned\s+with|colou?r|hex|font/i],
|
|
276
|
+
},
|
|
277
|
+
same_pattern: {
|
|
278
|
+
allOf: [
|
|
279
|
+
[/same|consistent|match|identical|one\s+\w+\s+for/i],
|
|
280
|
+
[/both|each|every|variant|role|view|presentation/i],
|
|
281
|
+
],
|
|
282
|
+
},
|
|
283
|
+
pattern_marker: {
|
|
284
|
+
allOf: [[/marker|marked|class|test\s*id|data-testid|selector/i]],
|
|
285
|
+
},
|
|
286
|
+
ui_container: {
|
|
287
|
+
allOf: [
|
|
288
|
+
[/container|panel|sheet|pane|region/i],
|
|
289
|
+
[/scroll|overflow|half[- ]page|full[- ]height|clip/i],
|
|
290
|
+
],
|
|
291
|
+
},
|
|
266
292
|
};
|
|
267
293
|
function round(value) {
|
|
268
294
|
return Math.round(Math.max(0, Math.min(0.98, value)) * 100) / 100;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predicate-applyplan.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-applyplan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"predicate-applyplan.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-applyplan.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAQ9B,wBAAgB,eAAe,CAC7B,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,gBAAgB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EACvD,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,EAChC,WAAW,CAAC,EAAE;IACZ,WAAW,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACtC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC,GACA,mBAAmB,CAgKrB;AAGD,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE,qBAAqB,GAC1B,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0ChC;AAGD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,SAAS,CAAC,EAAE,MAAM,EAClB,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAuBhC;AAoBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,GAC1B,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwBhC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,0BAA0B,CAoE5B"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { semanticClaimKey } from "../semantic-advisor/clauses.js";
|
|
2
2
|
import { exactLauncherPredicateArgs } from "../semantic-advisor/predicate-rules-launcher.js";
|
|
3
|
-
import { aggregateBindingProvenance, bindingCanBeApplied, classifyBinding, isGenericPlaceholder, } from "./predicate-bindings.js";
|
|
3
|
+
import { aggregateBindingProvenance, bindingCanBeApplied, classifyBinding, isGenericPlaceholder, isParticipantArgumentType, } from "./predicate-bindings.js";
|
|
4
4
|
import { inferArgs } from "./predicate-inference.js";
|
|
5
5
|
import { schemaForCandidate } from "./predicate-loader.js";
|
|
6
6
|
import { hashId } from "./predicate-utils.js";
|
|
7
7
|
import { applyArgumentRewrites, predicateArgumentConformance, } from "./predicate-vocabulary.js";
|
|
8
|
-
// implements REQ-mcp-suggest-predicates, REQ-model-predicates-requirement-subject-v2, REQ-model-predicates-binding-clauses
|
|
8
|
+
// implements REQ-mcp-suggest-predicates, REQ-model-predicates-requirement-subject-v2, REQ-model-predicates-binding-clauses, REQ-model-predicates-participant-not-subject
|
|
9
9
|
export function buildSuggestion(schema, text, subject, score, argumentBindings = {}, polarityHint, diagnostics) {
|
|
10
10
|
const inferredArgs = inferArgs(schema, text, subject);
|
|
11
11
|
const canonicalLauncherArgs = exactLauncherPredicateArgs(schema.predicate_name, text);
|
|
@@ -43,13 +43,17 @@ export function buildSuggestion(schema, text, subject, score, argumentBindings =
|
|
|
43
43
|
const undeclaredArguments = new Set(conformance.undeclared.map((value) => value.argumentName));
|
|
44
44
|
// A schema without a `subject` argument may still lead with the hinted
|
|
45
45
|
// subject (inference put it there): that value is the agent's reviewed
|
|
46
|
-
// value, even when the schema names its first argument after it.
|
|
46
|
+
// value, even when the schema names its first argument after it. A
|
|
47
|
+
// participant argument (actor, role, owner) is the exception: the subject
|
|
48
|
+
// is what the claim is about, never who acts on it.
|
|
47
49
|
const hintedFirstArgument = explicitSubject &&
|
|
48
50
|
subjectArgument < 0 &&
|
|
49
51
|
!hasExactBinding(schema.argument_names[0] ?? "") &&
|
|
50
|
-
predicateArgs[0] === subject
|
|
52
|
+
predicateArgs[0] === subject &&
|
|
53
|
+
!isParticipantArgumentType(schema.argument_types[0])
|
|
51
54
|
? 0
|
|
52
55
|
: -1;
|
|
56
|
+
const constrainedSubjects = diagnostics?.constrainedSubjects ?? [];
|
|
53
57
|
const bindingProvenanceByArgument = Object.fromEntries(schema.argument_names.map((name, index) => [
|
|
54
58
|
name,
|
|
55
59
|
index === reviewedSubjectArgument && !undeclaredArguments.has(name)
|
|
@@ -67,12 +71,12 @@ export function buildSuggestion(schema, text, subject, score, argumentBindings =
|
|
|
67
71
|
argumentNames: schema.argument_names,
|
|
68
72
|
argumentType: schema.argument_types[index],
|
|
69
73
|
constants: schema.argument_constants?.[name],
|
|
74
|
+
constrainedSubjects,
|
|
70
75
|
}),
|
|
71
76
|
]));
|
|
72
77
|
// The subject the planned predicate fact is about, when the requirement
|
|
73
78
|
// constrains subjects: the `subject` argument's value, or for a schema
|
|
74
79
|
// without one the reviewed subject, recorded as the fact's subject_key.
|
|
75
|
-
const constrainedSubjects = diagnostics?.constrainedSubjects ?? [];
|
|
76
80
|
const subjectKey = constrainedSubjects.length === 0
|
|
77
81
|
? null
|
|
78
82
|
: subjectArgument >= 0
|
|
@@ -6,6 +6,16 @@ import type { BindingHint, PredicateSuggestion } from "./predicate-types.js";
|
|
|
6
6
|
* instead of guessing.
|
|
7
7
|
*/
|
|
8
8
|
export declare function buildBindingHints(candidate: PredicateSuggestion, text: string, requirementSubjects?: readonly string[]): BindingHint[];
|
|
9
|
+
/**
|
|
10
|
+
* The unbound participant arguments (`actor`, `actor_scope`, `role`,
|
|
11
|
+
* `owner`) of a candidate that the claim names no participant for: the
|
|
12
|
+
* current value is empty or a placeholder, the requirement's subject key, or
|
|
13
|
+
* a clause of the claim that opens with a gerund (an activity, not a
|
|
14
|
+
* participant), and none of the argument's declared constants or schema
|
|
15
|
+
* example values occurs in the claim text. The agent cannot bind such an
|
|
16
|
+
* argument from the claim, so the schema does not fit the claim.
|
|
17
|
+
*/
|
|
18
|
+
export declare function unnamedParticipantArguments(candidate: PredicateSuggestion, text: string, requirementSubjects?: readonly string[]): string[];
|
|
9
19
|
/** One line per hint for the text summary: `name (type, e.g. a, b)`. */
|
|
10
20
|
export declare function describeBindingHints(hints: readonly BindingHint[]): string;
|
|
11
21
|
//# sourceMappingURL=predicate-binding-hints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predicate-binding-hints.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-binding-hints.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"predicate-binding-hints.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-binding-hints.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAoF7E;;;;;GAKG;AAEH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,MAAM,EACZ,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,WAAW,EAAE,CA6Df;AAqCD;;;;;;;;GAQG;AAEH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,MAAM,EACZ,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,MAAM,EAAE,CA8BV;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAW1E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { bindingCanBeApplied, clauseBindingReason, isGenericPlaceholder, nameOrStopWordReason, } from "./predicate-bindings.js";
|
|
1
|
+
import { bindingCanBeApplied, clauseBindingReason, isGenericPlaceholder, isParticipantArgumentType, nameOrStopWordReason, subjectKeyParticipantReason, } from "./predicate-bindings.js";
|
|
2
|
+
import { escapeRegExp } from "./predicate-utils.js";
|
|
2
3
|
const MAX_EXAMPLES = 5;
|
|
3
4
|
/** Split `name(a, b(c), d)` into its top-level arguments, or [] when it is not a call. */
|
|
4
5
|
function exampleArguments(example) {
|
|
@@ -25,9 +26,21 @@ function exampleArguments(example) {
|
|
|
25
26
|
args.push(current.trim());
|
|
26
27
|
return args.filter(Boolean);
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
+
/**
|
|
30
|
+
* What to do when the claim names no participant for an actor-like argument:
|
|
31
|
+
* the requirement's subject key is not a participant, and a schema whose
|
|
32
|
+
* actor the claim never names does not fit the claim.
|
|
33
|
+
*/
|
|
34
|
+
// implements REQ-model-predicates-participant-not-subject
|
|
35
|
+
function noParticipantGuidance(type) {
|
|
36
|
+
return `The claim names no ${type}. Bind the participant the claim names (a noun of at most 3 words), never the requirement's subject key; if the claim names no ${type}, this schema does not fit the claim: record_ontology_gap instead.`;
|
|
37
|
+
}
|
|
38
|
+
// implements REQ-model-predicates-participant-not-subject
|
|
39
|
+
function unboundReason(candidate, name, value, text, requirementSubjects) {
|
|
29
40
|
const schema = candidate.schema;
|
|
30
41
|
const provenance = candidate.binding_provenance_by_argument[name];
|
|
42
|
+
const type = schema.argument_types[schema.argument_names.indexOf(name)];
|
|
43
|
+
const participant = isParticipantArgumentType(type);
|
|
31
44
|
const nameReason = nameOrStopWordReason(value, {
|
|
32
45
|
argumentName: name,
|
|
33
46
|
argumentNames: schema.argument_names,
|
|
@@ -36,14 +49,25 @@ function unboundReason(candidate, name, value, text) {
|
|
|
36
49
|
});
|
|
37
50
|
if (nameReason !== null)
|
|
38
51
|
return `The value "${value}" is not a binding: ${nameReason}.`;
|
|
52
|
+
const subjectReason = subjectKeyParticipantReason(value, {
|
|
53
|
+
argumentType: type,
|
|
54
|
+
constants: schema.argument_constants?.[name],
|
|
55
|
+
constrainedSubjects: requirementSubjects,
|
|
56
|
+
});
|
|
57
|
+
if (subjectReason !== null)
|
|
58
|
+
return `The value "${value}" is not a binding: ${subjectReason}. ${noParticipantGuidance(String(type))}`;
|
|
39
59
|
const clauseReason = clauseBindingReason(value, {
|
|
40
|
-
argumentType:
|
|
60
|
+
argumentType: type,
|
|
41
61
|
constants: schema.argument_constants?.[name],
|
|
42
62
|
});
|
|
43
63
|
if (clauseReason !== null)
|
|
44
|
-
return
|
|
64
|
+
return participant
|
|
65
|
+
? `The value "${value}" is not a binding: ${clauseReason}. Bind a noun of at most 3 words. ${noParticipantGuidance(String(type))}`
|
|
66
|
+
: `The value "${value}" is not a binding: ${clauseReason}. Bind a noun of at most 3 words, or the requirement's subject key.`;
|
|
45
67
|
if (!value.trim() || isGenericPlaceholder(value))
|
|
46
|
-
return
|
|
68
|
+
return participant
|
|
69
|
+
? noParticipantGuidance(String(type))
|
|
70
|
+
: "The claim text names no value for this argument.";
|
|
47
71
|
if (provenance === "inferred")
|
|
48
72
|
return `The value "${value}" was inferred and does not appear in the claim text; confirm it or pass the exact value.`;
|
|
49
73
|
if (schema.argument_constants?.[name])
|
|
@@ -56,7 +80,7 @@ function unboundReason(candidate, name, value, text) {
|
|
|
56
80
|
* current value was not accepted, so the agent binds from the claim text
|
|
57
81
|
* instead of guessing.
|
|
58
82
|
*/
|
|
59
|
-
// implements REQ-model-predicates-binding-placeholders, REQ-model-predicates-requirement-subject-v2, REQ-model-predicates-binding-clauses
|
|
83
|
+
// implements REQ-model-predicates-binding-placeholders, REQ-model-predicates-requirement-subject-v2, REQ-model-predicates-binding-clauses, REQ-model-predicates-participant-not-subject
|
|
60
84
|
export function buildBindingHints(candidate, text, requirementSubjects = []) {
|
|
61
85
|
const schema = candidate.schema;
|
|
62
86
|
const parsedExamples = schema.examples.map(exampleArguments);
|
|
@@ -80,16 +104,15 @@ export function buildBindingHints(candidate, text, requirementSubjects = []) {
|
|
|
80
104
|
const exampleValues = parsedExamples
|
|
81
105
|
.map((args) => args[position])
|
|
82
106
|
.filter((value) => typeof value === "string");
|
|
83
|
-
// The subject keys the requirement already constrains come first
|
|
84
|
-
// the
|
|
107
|
+
// The subject keys the requirement already constrains come first for
|
|
108
|
+
// the subject argument, and for an entity argument of a schema without
|
|
109
|
+
// one, so the predicate and the subject fact use one identifier for the
|
|
110
|
+
// subject. A participant argument (actor, role, owner) never gets them:
|
|
111
|
+
// the subject is what the claim is about, not who acts on it.
|
|
112
|
+
const offersSubjects = name === "subject" ||
|
|
113
|
+
(!namesSubject && schema.argument_types[position] === "entity");
|
|
85
114
|
const examples = Array.from(new Set([
|
|
86
|
-
...(
|
|
87
|
-
(!namesSubject &&
|
|
88
|
-
clauseBindingReason(candidate.predicate_args[position] ?? "", {
|
|
89
|
-
argumentType: schema.argument_types[position],
|
|
90
|
-
}) !== null)
|
|
91
|
-
? requirementSubjects
|
|
92
|
-
: []),
|
|
115
|
+
...(offersSubjects ? requirementSubjects : []),
|
|
93
116
|
...(constants ?? []),
|
|
94
117
|
...exampleValues,
|
|
95
118
|
])).slice(0, MAX_EXAMPLES);
|
|
@@ -108,10 +131,83 @@ export function buildBindingHints(candidate, text, requirementSubjects = []) {
|
|
|
108
131
|
candidate.subject_pairing === "unpaired" &&
|
|
109
132
|
bindingCanBeApplied(candidate.binding_provenance_by_argument[name] ?? "placeholder")
|
|
110
133
|
? `The value "${current}" is not a subject the requirement constrains (${requirementSubjects.join(", ")}), so kb_check would not pair the predicate with the subject fact. Bind one of them.`
|
|
111
|
-
: unboundReason(candidate, name, current, text),
|
|
134
|
+
: unboundReason(candidate, name, current, text, requirementSubjects),
|
|
112
135
|
};
|
|
113
136
|
});
|
|
114
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Whether the claim text names `value`: its words in order, any separator,
|
|
140
|
+
* with a plural ending allowed on the last word (`guest` names `guests`).
|
|
141
|
+
*/
|
|
142
|
+
// implements REQ-model-predicates-participant-not-subject
|
|
143
|
+
function claimNamesValue(text, value) {
|
|
144
|
+
const words = value
|
|
145
|
+
.toLowerCase()
|
|
146
|
+
.split(/[\s_.-]+/)
|
|
147
|
+
.filter(Boolean);
|
|
148
|
+
if (words.length === 0)
|
|
149
|
+
return false;
|
|
150
|
+
// Lookarounds instead of \b: a value may start or end with a symbol
|
|
151
|
+
// (`svc(ci)`, `c++`), where a word boundary never matches.
|
|
152
|
+
return new RegExp(`(?<!\\w)${words.map(escapeRegExp).join("[\\s_-]+")}(?:e?s)?(?!\\w)`, "i").test(text);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Whether a clause lifted from the claim describes an action rather than a
|
|
156
|
+
* participant: it opens with a gerund ("Discarding a draft while …"). A
|
|
157
|
+
* clause that opens with a noun ("Administrators who were granted …") may
|
|
158
|
+
* still name the participant in its first words, so it is left to the agent.
|
|
159
|
+
*/
|
|
160
|
+
// implements REQ-model-predicates-participant-not-subject
|
|
161
|
+
function clauseIsActivity(clause) {
|
|
162
|
+
const head = clause
|
|
163
|
+
.toLowerCase()
|
|
164
|
+
.split(/[\s_-]+/)
|
|
165
|
+
.find(Boolean) ?? "";
|
|
166
|
+
return head.length > 4 && head.endsWith("ing");
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* The unbound participant arguments (`actor`, `actor_scope`, `role`,
|
|
170
|
+
* `owner`) of a candidate that the claim names no participant for: the
|
|
171
|
+
* current value is empty or a placeholder, the requirement's subject key, or
|
|
172
|
+
* a clause of the claim that opens with a gerund (an activity, not a
|
|
173
|
+
* participant), and none of the argument's declared constants or schema
|
|
174
|
+
* example values occurs in the claim text. The agent cannot bind such an
|
|
175
|
+
* argument from the claim, so the schema does not fit the claim.
|
|
176
|
+
*/
|
|
177
|
+
// implements REQ-model-predicates-participant-not-subject
|
|
178
|
+
export function unnamedParticipantArguments(candidate, text, requirementSubjects = []) {
|
|
179
|
+
const schema = candidate.schema;
|
|
180
|
+
const parsedExamples = schema.examples.map(exampleArguments);
|
|
181
|
+
return candidate.unbound_arguments.filter((name) => {
|
|
182
|
+
const position = schema.argument_names.indexOf(name);
|
|
183
|
+
if (position < 0)
|
|
184
|
+
return false;
|
|
185
|
+
const type = schema.argument_types[position];
|
|
186
|
+
if (!isParticipantArgumentType(type))
|
|
187
|
+
return false;
|
|
188
|
+
const constants = schema.argument_constants?.[name];
|
|
189
|
+
const current = candidate.predicate_args[position] ?? "";
|
|
190
|
+
const unnamed = !current.trim() ||
|
|
191
|
+
isGenericPlaceholder(current) ||
|
|
192
|
+
subjectKeyParticipantReason(current, {
|
|
193
|
+
argumentType: type,
|
|
194
|
+
constants,
|
|
195
|
+
constrainedSubjects: requirementSubjects,
|
|
196
|
+
}) !== null ||
|
|
197
|
+
(clauseBindingReason(current, { argumentType: type, constants }) !==
|
|
198
|
+
null &&
|
|
199
|
+
clauseIsActivity(current));
|
|
200
|
+
if (!unnamed)
|
|
201
|
+
return false;
|
|
202
|
+
const known = [
|
|
203
|
+
...(constants ?? []),
|
|
204
|
+
...parsedExamples
|
|
205
|
+
.map((args) => args[position])
|
|
206
|
+
.filter((value) => typeof value === "string"),
|
|
207
|
+
];
|
|
208
|
+
return !known.some((value) => claimNamesValue(text, value));
|
|
209
|
+
});
|
|
210
|
+
}
|
|
115
211
|
/** One line per hint for the text summary: `name (type, e.g. a, b)`. */
|
|
116
212
|
export function describeBindingHints(hints) {
|
|
117
213
|
return hints
|
|
@@ -18,6 +18,13 @@ export type BindingContext = Readonly<{
|
|
|
18
18
|
* "launcher" in "The launcher must ...").
|
|
19
19
|
*/
|
|
20
20
|
text?: string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* The subject keys the requirement constrains. A participant argument
|
|
23
|
+
* (`actor`, `actor_scope`, `role`, `owner`) bound to one of them names no
|
|
24
|
+
* participant: the predicate fact already carries that key as its
|
|
25
|
+
* subject_key, so the binding would be vacuous.
|
|
26
|
+
*/
|
|
27
|
+
constrainedSubjects?: readonly string[] | undefined;
|
|
21
28
|
}>;
|
|
22
29
|
/**
|
|
23
30
|
* Why a value only stands in for a binding, or null when it can be a reviewed
|
|
@@ -25,6 +32,15 @@ export type BindingContext = Readonly<{
|
|
|
25
32
|
* word. Declared constants and the booleans `true`/`false` always pass.
|
|
26
33
|
*/
|
|
27
34
|
export declare function nameOrStopWordReason(value: string, context?: BindingContext): string | null;
|
|
35
|
+
/** Whether an argument type names a participant (who acts or owns). */
|
|
36
|
+
export declare function isParticipantArgumentType(type: string | undefined): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Why a value bound to a participant argument is the requirement's subject
|
|
39
|
+
* key rather than a participant, or null. Explicit bindings are judged too:
|
|
40
|
+
* `actor = <subject key>` would complete a predicate whose actor says
|
|
41
|
+
* nothing the fact's subject_key does not already say.
|
|
42
|
+
*/
|
|
43
|
+
export declare function subjectKeyParticipantReason(value: string, context?: BindingContext): string | null;
|
|
28
44
|
/** The most words a value of a naming argument may have. */
|
|
29
45
|
export declare const MAX_NAMING_BINDING_WORDS = 3;
|
|
30
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predicate-bindings.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAgH9D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW3D;AAgED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,sEAAsE;IACtE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"predicate-bindings.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAgH9D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW3D;AAgED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,sEAAsE;IACtE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACrD,CAAC,CAAC;AAiBH;;;;GAIG;AAEH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,IAAI,CAYf;AA2BD,uEAAuE;AAEvE,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE3E;AAED;;;;;GAKG;AAEH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,IAAI,CAUf;AAED,4DAA4D;AAC5D,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;;GAOG;AAEH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,IAAI,CAOf;AAGD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,SAAS,UAAQ,EACjB,OAAO,GAAE,cAAmB,GAC3B,iBAAiB,CA0BnB;AAUD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GACnC,iBAAiB,CAQnB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAIrE"}
|
|
@@ -222,6 +222,41 @@ const NAMING_ARGUMENT_TYPES = new Set([
|
|
|
222
222
|
"role",
|
|
223
223
|
"component",
|
|
224
224
|
]);
|
|
225
|
+
/**
|
|
226
|
+
* Argument types that name who acts or owns. The requirement's subject key
|
|
227
|
+
* is what the claim is about, not a participant, so it never binds them.
|
|
228
|
+
*/
|
|
229
|
+
const PARTICIPANT_ARGUMENT_TYPES = new Set([
|
|
230
|
+
"actor",
|
|
231
|
+
"actor_scope",
|
|
232
|
+
"role",
|
|
233
|
+
"owner",
|
|
234
|
+
]);
|
|
235
|
+
/** Whether an argument type names a participant (who acts or owns). */
|
|
236
|
+
// implements REQ-model-predicates-participant-not-subject
|
|
237
|
+
export function isParticipantArgumentType(type) {
|
|
238
|
+
return PARTICIPANT_ARGUMENT_TYPES.has(type ? bindingToken(type) : "");
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Why a value bound to a participant argument is the requirement's subject
|
|
242
|
+
* key rather than a participant, or null. Explicit bindings are judged too:
|
|
243
|
+
* `actor = <subject key>` would complete a predicate whose actor says
|
|
244
|
+
* nothing the fact's subject_key does not already say.
|
|
245
|
+
*/
|
|
246
|
+
// implements REQ-model-predicates-participant-not-subject
|
|
247
|
+
export function subjectKeyParticipantReason(value, context = {}) {
|
|
248
|
+
if (!isParticipantArgumentType(context.argumentType))
|
|
249
|
+
return null;
|
|
250
|
+
if (matchesConstant(value, context))
|
|
251
|
+
return null;
|
|
252
|
+
const token = bindingToken(value);
|
|
253
|
+
if (token === "")
|
|
254
|
+
return null;
|
|
255
|
+
const subject = (context.constrainedSubjects ?? []).find((key) => bindingToken(key) === token);
|
|
256
|
+
if (subject === undefined)
|
|
257
|
+
return null;
|
|
258
|
+
return `"${value}" is the requirement's subject key ${subject}, which the predicate fact already carries as its subject_key, so it names no ${bindingToken(context.argumentType ?? "")}`;
|
|
259
|
+
}
|
|
225
260
|
/** The most words a value of a naming argument may have. */
|
|
226
261
|
export const MAX_NAMING_BINDING_WORDS = 3;
|
|
227
262
|
/**
|
|
@@ -244,13 +279,17 @@ export function clauseBindingReason(value, context = {}) {
|
|
|
244
279
|
return null;
|
|
245
280
|
return `it is a ${words.length}-word clause of the claim, not a short name for this ${type}`;
|
|
246
281
|
}
|
|
247
|
-
// implements REQ-mcp-suggest-predicates, REQ-model-predicates-binding-placeholders, REQ-model-predicates-binding-clauses
|
|
282
|
+
// implements REQ-mcp-suggest-predicates, REQ-model-predicates-binding-placeholders, REQ-model-predicates-binding-clauses, REQ-model-predicates-participant-not-subject
|
|
248
283
|
export function classifyBinding(value, text, explicit, canonical = false, context = {}) {
|
|
249
284
|
const normalized = value.trim();
|
|
250
285
|
// A value that only repeats an argument name or a stop word is unbound
|
|
251
286
|
// however it was supplied or extracted.
|
|
252
287
|
if (nameOrStopWordReason(normalized, { ...context, text }) !== null)
|
|
253
288
|
return "placeholder";
|
|
289
|
+
// The subject key is what the claim is about; as an actor, role or owner
|
|
290
|
+
// it is a vacuous binding, explicit or not.
|
|
291
|
+
if (subjectKeyParticipantReason(normalized, context) !== null)
|
|
292
|
+
return "placeholder";
|
|
254
293
|
const constant = matchesConstant(normalized, context);
|
|
255
294
|
if (canonical && (constant || !isGenericPlaceholder(normalized)))
|
|
256
295
|
return "extracted";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PredicateSchemaCandidate } from "./predicate-types.js";
|
|
2
2
|
/**
|
|
3
|
-
* Predicate families added from consumer escalation evidence (
|
|
4
|
-
* dogfooding, 2026-08/09): fail-closed authorization, deployment
|
|
3
|
+
* Predicate families added from consumer escalation evidence (test
|
|
4
|
+
* project dogfooding, 2026-08/09): fail-closed authorization, deployment
|
|
5
5
|
* preconditions, migration sequencing, diagnostic visibility, mutation
|
|
6
6
|
* authority, request deduplication, async boundaries, canonical
|
|
7
7
|
* identifiers, responsive breakpoints, and operational pauses.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Predicate families added from consumer escalation evidence (
|
|
3
|
-
* dogfooding, 2026-08/09): fail-closed authorization, deployment
|
|
2
|
+
* Predicate families added from consumer escalation evidence (test
|
|
3
|
+
* project dogfooding, 2026-08/09): fail-closed authorization, deployment
|
|
4
4
|
* preconditions, migration sequencing, diagnostic visibility, mutation
|
|
5
5
|
* authority, request deduplication, async boundaries, canonical
|
|
6
6
|
* identifiers, responsive breakpoints, and operational pauses.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PredicateSchemaCandidate } from "./predicate-types.js";
|
|
2
|
+
/**
|
|
3
|
+
* UI design patterns: which visual pattern a concept uses, which variants
|
|
4
|
+
* must share it, which code markers make it recognisable, and the layout
|
|
5
|
+
* shell it sits in. `kibi-plugin-ui` enforces these through its check policy;
|
|
6
|
+
* without that plugin they are ordinary predicates.
|
|
7
|
+
*/
|
|
8
|
+
export declare const PREDICATE_CATALOG_6: PredicateSchemaCandidate[];
|
|
9
|
+
//# sourceMappingURL=predicate-catalog-6.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicate-catalog-6.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-catalog-6.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE;;;;;GAKG;AAEH,eAAO,MAAM,mBAAmB,EAAE,wBAAwB,EAsGzD,CAAC"}
|