Package ch.so.agi.mcp.tools
Class ConstraintAuthoringTools
java.lang.Object
ch.so.agi.mcp.tools.ConstraintAuthoringTools
Typed MCP entry points for expression-based constraint kinds.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionauthorIliMandatoryConstraint(String modelText, String contextFqn, IliConstraintSpec.Mandatory spec, @Nullable ModelPurpose modelPurpose, @Nullable ModelingRuleProfile ruleProfile) authorIliMandatoryConstraint(String modelText, String contextFqn, IliConstraintSpec.Mandatory spec, @Nullable ModelPurpose modelPurpose, @Nullable ModelingRuleProfile ruleProfile, @Nullable Boolean includeSuccessfulTestXtf) authorIliPlausibilityConstraint(String modelText, String contextFqn, IliConstraintSpec.Plausibility spec, @Nullable ModelPurpose modelPurpose, @Nullable ModelingRuleProfile ruleProfile) authorIliPlausibilityConstraint(String modelText, String contextFqn, IliConstraintSpec.Plausibility spec, @Nullable ModelPurpose modelPurpose, @Nullable ModelingRuleProfile ruleProfile, @Nullable Boolean includeSuccessfulTestXtf)
-
Constructor Details
-
ConstraintAuthoringTools
-
-
Method Details
-
authorIliMandatoryConstraint
@McpTool(name="authorIliMandatoryConstraint", description="MANDATORY: Der Ausdruck steht in spec.condition; Operanden stehen geordnet in children. Beispiel fuer spec bei vorhandenem Attribut value: {\"kind\":\"MANDATORY\",\"name\":\"ValueRequired\",\"condition\":{\"kind\":\"DEFINED\",\"children\":[{\"kind\":\"ATTRIBUTE\",\"name\":\"value\"}]}} Skalare Ausdruecke: Zahlen als {\"kind\":\"NUMERIC\",\"value\":7}; COMPARE mit operator ==, !=, <, <=, > oder >= und genau zwei geordneten children. DEFINED/NOT haben ein Kind, IMPLIES zwei; AND/OR behalten die Reihenfolge. MANDATORY verwendet condition. Erzeugt einen Mandatory Constraint aus einer rekursiven typisierten semantischen Node-Liste (ATTRIBUTE, PATH, FUNCTION, COMPARE usw.). Die Einf\u00fcgung ist source-preserving; Before und After kompiliert die Pipeline je genau einmal und beweist per AST->IR-Roundtrip, Coverage-Planer, Solver, Object-Graph-Synthese und ilivalidator. Diff und afterReview stammen aus denselben Compilations. Externe Funktionen ohne ausf\u00fchrbare Semantik halten den Kandidaten zur\u00fcck. Das Tool schreibt keine Datei.", generateOutputSchema=true, annotations=) public IliAuthoringResult authorIliMandatoryConstraint(@McpToolParam(description="Vollst\u00e4ndiger INTERLIS-Modelltext vor der Erg\u00e4nzung",required=true) String modelText, @McpToolParam(description="Vollqualifizierter Constraint-Kontext",required=true) String contextFqn, @McpToolParam(description="Typisierte MANDATORY-Spezifikation Prosa: Erwartungen vorab festhalten, vor Schreiben mit testIliConstraint pr\u00fcfen. Test-modelHashes.model muss Authoring-modelHashes.after entsprechen; aktuelle Datei gegen before pr\u00fcfen. Normal includeSuccessfulTestXtf=false. INVALID_SPEC gezielt einmal korrigieren; offene Fragen kl\u00e4ren, Proof-Grenzen berichten. Serverstatus allein ist keine Schreibfreigabe. Technischer Constraint-Name: [A-Za-z][A-Za-z0-9_]*, z.B. Regel42. Eine fachliche Regelnummer ist kein technischer Name; keine automatische Umbenennung. ENUM.value ist ein String, z.B. Drainage oder #Drainage, auch Gruppe.Drainage. Genau ein optionales fuehrendes # wird normalisiert; TEXT/MTEXT bleiben unveraendert. FUNCTION: name ist bei functionOrigin=STANDARD die semanticId aus listConstraintFunctions, z.B. COLLECTION_SUM statt Math.sum und NUMERIC_ADD statt Math.add. Bei MODEL/VALIDATOR_EXTENSION ist name der qualifizierte Funktionsname. Argumente stehen ausschliesslich geordnet in children, niemals in FUNCTION.objects. OBJECT_COUNT als Ausdruck liefert eine Zahl: {\"kind\":\"COMPARE\",\"operator\":\"==\",\"children\":[{\"kind\":\"OBJECT_COUNT\",\"objects\":{\"kind\":\"ALL\"}},{\"kind\":\"NUMERIC\",\"value\":1}]}. Nur die separate SET-Condition OBJECT_COUNT hat objects, operator und threshold; sie hat kein value. Ergebnis evidence trennt ausgef\u00fchrte Pr\u00fcfungen von fachlicher Akzeptanz; neue Befunde \u00e4ndern keine Freigaben.",required=true) IliConstraintSpec.Mandatory spec, @McpToolParam(description="Modellzweck",required=false) @Nullable ModelPurpose modelPurpose, @McpToolParam(description="Regelprofil CORE, SO-GIS oder SO-DATA",required=false) @Nullable ModelingRuleProfile ruleProfile, @McpToolParam(description="Standard true. false l\u00e4sst nur XTF-Texte bestandener, ausge\u00fcbter F\u00e4lle mit g\u00fcltiger Fixture und null Warnungen weg; alle Diagnosen bleiben erhalten.",required=false) @Nullable Boolean includeSuccessfulTestXtf) -
authorIliMandatoryConstraint
public IliAuthoringResult authorIliMandatoryConstraint(String modelText, String contextFqn, IliConstraintSpec.Mandatory spec, @Nullable ModelPurpose modelPurpose, @Nullable ModelingRuleProfile ruleProfile) -
authorIliPlausibilityConstraint
@McpTool(name="authorIliPlausibilityConstraint", description="Skalare Ausdruecke: Zahlen als {\"kind\":\"NUMERIC\",\"value\":7}; COMPARE mit operator ==, !=, <, <=, > oder >= und genau zwei geordneten children. DEFINED/NOT haben ein Kind, IMPLIES zwei; AND/OR behalten die Reihenfolge. MANDATORY verwendet condition. Erzeugt einen PLAUSIBILITY Constraint mit direction, percentage und rekursiver typisierter semantischen Node-Liste. Die Einf\u00fcgung ist source-preserving; Before/After je genau einmal kompiliert; der Proof verwendet constraint-level IR, echte Mehrfachobjekt-Populationen an der Prozentgrenze und ilivalidator. Diff und afterReview verwenden dieselben Compilations. Das Tool schreibt keine Datei.", generateOutputSchema=true, annotations=) public IliAuthoringResult authorIliPlausibilityConstraint(@McpToolParam(description="Vollst\u00e4ndiger INTERLIS-Modelltext vor der Erg\u00e4nzung",required=true) String modelText, @McpToolParam(description="Vollqualifizierter Constraint-Kontext",required=true) String contextFqn, @McpToolParam(description="Typisierte PLAUSIBILITY-Spezifikation Prosa: Erwartungen vorab festhalten, vor Schreiben mit testIliConstraint pr\u00fcfen. Test-modelHashes.model muss Authoring-modelHashes.after entsprechen; aktuelle Datei gegen before pr\u00fcfen. Normal includeSuccessfulTestXtf=false. INVALID_SPEC gezielt einmal korrigieren; offene Fragen kl\u00e4ren, Proof-Grenzen berichten. Serverstatus allein ist keine Schreibfreigabe. Technischer Constraint-Name: [A-Za-z][A-Za-z0-9_]*, z.B. Regel42. Eine fachliche Regelnummer ist kein technischer Name; keine automatische Umbenennung. ENUM.value ist ein String, z.B. Drainage oder #Drainage, auch Gruppe.Drainage. Genau ein optionales fuehrendes # wird normalisiert; TEXT/MTEXT bleiben unveraendert. FUNCTION: name ist bei functionOrigin=STANDARD die semanticId aus listConstraintFunctions, z.B. COLLECTION_SUM statt Math.sum und NUMERIC_ADD statt Math.add. Bei MODEL/VALIDATOR_EXTENSION ist name der qualifizierte Funktionsname. Argumente stehen ausschliesslich geordnet in children, niemals in FUNCTION.objects. OBJECT_COUNT als Ausdruck liefert eine Zahl: {\"kind\":\"COMPARE\",\"operator\":\"==\",\"children\":[{\"kind\":\"OBJECT_COUNT\",\"objects\":{\"kind\":\"ALL\"}},{\"kind\":\"NUMERIC\",\"value\":1}]}. Nur die separate SET-Condition OBJECT_COUNT hat objects, operator und threshold; sie hat kein value. Ergebnis evidence trennt ausgef\u00fchrte Pr\u00fcfungen von fachlicher Akzeptanz; neue Befunde \u00e4ndern keine Freigaben.",required=true) IliConstraintSpec.Plausibility spec, @McpToolParam(description="Modellzweck",required=false) @Nullable ModelPurpose modelPurpose, @McpToolParam(description="Regelprofil CORE, SO-GIS oder SO-DATA",required=false) @Nullable ModelingRuleProfile ruleProfile, @McpToolParam(description="Standard true. false l\u00e4sst nur XTF-Texte bestandener, ausge\u00fcbter F\u00e4lle mit g\u00fcltiger Fixture und null Warnungen weg; alle Diagnosen bleiben erhalten.",required=false) @Nullable Boolean includeSuccessfulTestXtf) -
authorIliPlausibilityConstraint
public IliAuthoringResult authorIliPlausibilityConstraint(String modelText, String contextFqn, IliConstraintSpec.Plausibility spec, @Nullable ModelPurpose modelPurpose, @Nullable ModelingRuleProfile ruleProfile)
-