chiasmus 0.1.1 → 0.1.2

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/README.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  MCP server that gives LLMs access to formal verification via Z3 (SMT solver) and Tau Prolog. Translates natural language problems into formal logic using a template-based pipeline, verifies results with mathematical certainty.
4
4
 
5
+ ### Example use cases
6
+
7
+ - **"Can our RBAC rules ever conflict?"** → Z3 finds the exact role/action/resource triple where allow and deny both fire
8
+ - **"Find compatible package versions"** → Z3 solves dependency constraints with incompatibility rules, returns a valid assignment or proves none exists
9
+ - **"Can user input reach the database?"** → Prolog traces all paths through the call graph, flags taint flows to sensitive sinks
10
+ - **"Are our frontend and backend validations consistent?"** → Z3 finds concrete inputs that pass one but fail the other (e.g. age=15 passes frontend min=13 but fails backend min=18)
11
+ - **"Does our workflow have dead-end or unreachable states?"** → Prolog checks reachability from the initial state, identifies orphaned and terminal nodes
12
+
5
13
  ## Setup
6
14
 
7
15
  ```bash
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/formalize/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAe,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wDAAwD;IACxD,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AA6BD,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,GAAG;gBADH,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,UAAU;IAGzB;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAU1D;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IAuCjE,OAAO,CAAC,iBAAiB;YAoCX,OAAO;YAUP,MAAM;IAwBpB,OAAO,CAAC,gBAAgB;IAsBxB;;;OAGG;YACW,QAAQ;IAuCtB,gEAAgE;IAChE,OAAO,CAAC,aAAa;CAMtB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/formalize/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAe,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wDAAwD;IACxD,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAgBD,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,GAAG;gBADH,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,UAAU;IAGzB;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAU1D;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IAuCjE,OAAO,CAAC,iBAAiB;YAwCX,OAAO;YAUP,MAAM;IAwBpB,OAAO,CAAC,gBAAgB;IAsBxB;;;OAGG;YACW,QAAQ;IAuCtB,gEAAgE;IAChE,OAAO,CAAC,aAAa;CAMtB"}
@@ -1,30 +1,17 @@
1
1
  import { correctionLoop } from "../solvers/correction-loop.js";
2
2
  import { lintSpec } from "./validate.js";
3
- const FORMALIZE_SYSTEM = `You are a formalization engine that translates natural language problems into formal logic specifications.
3
+ const FORMALIZE_SYSTEM = `Formalization engine. Translate natural language formal logic.
4
4
 
5
- Your job:
6
- 1. Read the problem description
7
- 2. Read the template skeleton and slot descriptions
8
- 3. Use the template as a STARTING POINT — fill the slots, but also adapt the structure if the problem requires it
9
- 4. You may add extra variables, assertions, or rules beyond what the template defines
10
- 5. You may remove or restructure parts of the skeleton that don't fit the specific problem
11
- 6. Return ONLY the complete specification — no explanation, no markdown fences, no comments outside the spec
5
+ Template = starting point. Fill slots, but adapt structure if needed. Add/remove variables, assertions, rules.
6
+ Output ONLY complete spec. No explanation, no markdown fences.
12
7
 
13
- The template is guidance, not a constraint. The goal is a correct specification for the problem, not a rigid fill-in-the-blanks.
8
+ Z3: valid SMT-LIB. No (check-sat)/(get-model). Use (= flag (or ...)) not (=> ... flag).
9
+ Prolog: valid ISO Prolog. All clauses end with period.
14
10
 
15
- For Z3 (SMT-LIB): output valid SMT-LIB assertions. Do NOT include (check-sat) or (get-model).
16
- For Prolog: output valid ISO Prolog facts and rules.
11
+ Precise syntax spec goes directly to solver.`;
12
+ const FIX_SYSTEM = `Fix failed formal spec. Return ONLY corrected spec. No explanation, no fences.
17
13
 
18
- Be precise with syntax. The specification will be fed directly to a solver.`;
19
- const FIX_SYSTEM = `You are a formal logic repair engine. You receive a specification that failed verification and the error message from the solver.
20
-
21
- Fix the specification to resolve the error. Return ONLY the corrected specification — no explanation, no markdown fences.
22
-
23
- Common issues:
24
- - Type mismatches: ensure all comparisons use matching types
25
- - Missing declarations: every constant must be declared before use
26
- - Syntax errors: check parentheses, commas, periods
27
- - For Prolog: ensure all clauses end with a period`;
14
+ Common fixes: type mismatches matching types | missing declarations declare before use | unbalanced parens | Prolog missing periods.`;
28
15
  export class FormalizationEngine {
29
16
  library;
30
17
  llm;
@@ -85,28 +72,30 @@ export class FormalizationEngine {
85
72
  .map((n) => ` - ${n.source}: ${n.transform}`)
86
73
  .join("\n");
87
74
  const queryNote = template.solver === "prolog"
88
- ? `\n\nPROLOG QUERY: After filling the template, you will also need to provide a Prolog query goal (ending with a period) that asks the question implied by the problem.`
75
+ ? `\nAlso provide Prolog query goal (ending with period) for the question.`
76
+ : "";
77
+ const tipsSection = template.tips?.length
78
+ ? `\n⚠ TIPS:\n${template.tips.map((t) => ` ${t}`).join("\n")}`
79
+ : "";
80
+ const exampleSection = template.example
81
+ ? `\nEXAMPLE (reference only — write your own):\n${template.example}`
89
82
  : "";
90
- return `TEMPLATE: ${template.name} (${template.solver})
91
- DESCRIPTION: ${template.signature}
83
+ return `${template.name} (${template.solver}) — ${template.signature}
92
84
 
93
85
  SKELETON:
94
86
  ${template.skeleton}
95
87
 
96
- SLOTS TO FILL:
88
+ SLOTS:
97
89
  ${slotDescs}
98
90
 
99
- NORMALIZATION GUIDANCE:
100
- ${normGuidance}
101
- ${queryNote}
91
+ NORMALIZE: ${normGuidance}
92
+ ${tipsSection}${exampleSection}${queryNote}
102
93
 
103
94
  PROBLEM: ${problem}
104
95
 
105
- Fill each {{SLOT:name}} in the skeleton with appropriate ${template.solver === "z3" ? "SMT-LIB" : "Prolog"} code.
106
- The template is a STARTING POINT adapt the structure if the problem requires it.
107
- You may add extra variables, assertions, or rules. You may remove or restructure parts that don't fit.
108
- ${template.solver === "z3" ? "Do NOT include (check-sat) or (get-model) — the tool adds these automatically." : "Ensure all clauses end with a period."}
109
- Return only the complete filled specification.`;
96
+ Fill {{SLOT:name}} markers. Template = starting point adapt if needed. Add/remove parts freely.
97
+ ${template.solver === "z3" ? "No (check-sat)/(get-model)." : "All clauses end with period."}
98
+ Output ONLY filled spec.`;
110
99
  }
111
100
  async llmFill(problem, template) {
112
101
  const instructions = this.buildInstructions(problem, template);
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/formalize/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/formalize/engine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAiaD,wBAAsB,oBAAoB,CACxC,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,CAAC,CA+C5F"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAI5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AA+cD,wBAAsB,oBAAoB,CACxC,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,CAAC,CAiD5F"}
@@ -8,6 +8,7 @@ import { SolverSession } from "./solvers/session.js";
8
8
  import { SkillLibrary } from "./skills/library.js";
9
9
  import { FormalizationEngine } from "./formalize/engine.js";
10
10
  import { SkillLearner } from "./skills/learner.js";
11
+ import { lintSpec } from "./formalize/validate.js";
11
12
  import { createLLMFromEnv } from "./llm/anthropic.js";
12
13
  export function getChiasmusHome() {
13
14
  return process.env.CHIASMUS_HOME ?? join(homedir(), ".chiasmus");
@@ -15,34 +16,30 @@ export function getChiasmusHome() {
15
16
  const TOOLS = [
16
17
  {
17
18
  name: "chiasmus_verify",
18
- description: `Submit raw formal logic to a solver and get a verified result.
19
+ description: `Submit formal logic to solver. Returns verified result.
19
20
 
20
21
  SOLVERS:
21
- z3 — SMT solver. Input is SMT-LIB format. Returns SAT + model, UNSAT, or error.
22
- prolog ISO Prolog. Input is facts/rules, query is a Prolog goal. Returns answers or error.
22
+ z3 — SMT-LIB format SAT + model | UNSAT | error
23
+ prolog — facts/rules + query goal answers | error
23
24
 
24
- WHEN TO USE:
25
- - Verify constraints: "can these rules ever conflict?"
26
- - Check satisfiability: "is there a valid assignment?"
27
- - Prove/disprove: "is this always true for all inputs?"
28
- - Derive conclusions: "what follows from these facts and rules?"
25
+ Z3 RULES:
26
+ No (check-sat)/(get-model) added automatically
27
+ Use (= flag (or ...)) NOT (=> ... flag) — implication → trivially SAT
28
+ ⚠ No (define-fun) with args breaks model extraction. Use (declare-const) + (assert (=)) instead
29
29
 
30
- NOTE: Do NOT include (check-sat) or (get-model) in Z3 input — the tool runs these automatically.
30
+ PROLOG RULES:
31
+ ⚠ All clauses end with period
32
+ ⚠ No recursive reachability on cyclic graphs — Tau Prolog lacks tabling → infinite loop. Query edges individually, BFS externally.
33
+ ⚠ Use "queries" param (JSON array) to batch multiple queries against same program in one call
31
34
 
32
- EXAMPLES:
33
- Z3 (check if two integers sum to 10):
34
- solver: "z3"
35
- input: |
36
- (declare-const x Int)
37
- (declare-const y Int)
38
- (assert (= (+ x y) 10))
39
- (assert (> x 0))
40
- (assert (> y 0))
41
-
42
- Prolog (derive permissions):
43
- solver: "prolog"
44
- input: "role(alice, admin). can_access(X, resource) :- role(X, admin)."
45
- query: "can_access(alice, resource)."`,
35
+ Z3 EXAMPLE (RBAC conflict):
36
+ (declare-datatypes ((Role 0)) (((admin) (editor))))
37
+ (declare-datatypes ((Action 0)) (((read) (write))))
38
+ (declare-const r Role) (declare-const a Action)
39
+ (declare-const allowed Bool) (declare-const denied Bool)
40
+ (assert (= allowed (or (and (= r admin) (= a read)) (and (= r editor) (= a write)))))
41
+ (assert (= denied (or (and (= r editor) (= a write)))))
42
+ (assert allowed) (assert denied)`,
46
43
  inputSchema: {
47
44
  type: "object",
48
45
  properties: {
@@ -57,7 +54,12 @@ EXAMPLES:
57
54
  },
58
55
  query: {
59
56
  type: "string",
60
- description: "Prolog query goal (required for prolog, ignored for z3). Must end with a period.",
57
+ description: "Prolog query goal (required for prolog unless queries is set). Must end with period.",
58
+ },
59
+ queries: {
60
+ type: "array",
61
+ items: { type: "string" },
62
+ description: "Batch mode: array of Prolog query goals. Runs all against same program. Returns array of results.",
61
63
  },
62
64
  },
63
65
  required: ["solver", "input"],
@@ -65,22 +67,12 @@ EXAMPLES:
65
67
  },
66
68
  {
67
69
  name: "chiasmus_skills",
68
- description: `Search and list formalization templates in the skill library.
69
-
70
- Returns matching templates with their skeletons, slot definitions, normalization recipes,
71
- and usage metadata (reuse count, success rate).
72
-
73
- Use this to find an appropriate template before calling chiasmus_verify or chiasmus_solve.
70
+ description: `Search/list formalization templates. Returns skeletons, slots, normalization recipes, usage metadata.
74
71
 
75
- EXAMPLES:
76
- Search for authorization templates:
77
- query: "check if access control policies conflict"
78
-
79
- List all Prolog templates:
80
- solver: "prolog"
81
-
82
- Get a specific template:
83
- name: "policy-contradiction"`,
72
+ Find template before chiasmus_verify or chiasmus_formalize.
73
+ query: "access control policies conflict" → search
74
+ solver: "prolog" filter by solver
75
+ name: "policy-contradiction" → exact lookup`,
84
76
  inputSchema: {
85
77
  type: "object",
86
78
  properties: {
@@ -106,18 +98,12 @@ EXAMPLES:
106
98
  },
107
99
  {
108
100
  name: "chiasmus_formalize",
109
- description: `Find the best formalization template for a problem and return it with slot-filling instructions.
110
-
111
- This is a GUIDED workflow: the tool finds the right template and tells you how to fill it.
112
- You then fill the slots and submit the result via chiasmus_verify.
101
+ description: `Find best template for problem return skeleton + slot-filling instructions + tips.
113
102
 
114
- WORKFLOW:
115
- 1. Call chiasmus_formalize with your problem description
116
- 2. Read the returned template, slots, and normalization guidance
117
- 3. Fill the template slots based on the guidance
118
- 4. Submit the filled specification via chiasmus_verify
119
-
120
- Use this when you want full control over the formalization process.`,
103
+ Guided workflow:
104
+ 1. chiasmus_formalize get template + slots + tips
105
+ 2. Fill slots using your context
106
+ 3. chiasmus_verify verified result`,
121
107
  inputSchema: {
122
108
  type: "object",
123
109
  properties: {
@@ -131,17 +117,10 @@ Use this when you want full control over the formalization process.`,
131
117
  },
132
118
  {
133
119
  name: "chiasmus_solve",
134
- description: `End-to-end: formalize a problem and verify it automatically.
135
-
136
- Uses an LLM to select a template, fill slots, and run the correction loop.
137
- Requires ANTHROPIC_API_KEY to be set. Without it, falls back to returning
138
- template instructions (same as chiasmus_formalize).
120
+ description: `End-to-end: select template fill slots → lint → verify correction loop.
139
121
 
140
- WHEN TO USE:
141
- - You want a fully automated solve pipeline
142
- - The problem maps to a known domain (authorization, config, dependency, rules, reachability)
143
-
144
- Returns the verified solver result, the template used, and correction loop history.`,
122
+ Needs ANTHROPIC_API_KEY | DEEPSEEK_API_KEY | OPENAI_API_KEY. Without key → falls back to chiasmus_formalize.
123
+ Returns: verified result + template used + correction history.`,
145
124
  inputSchema: {
146
125
  type: "object",
147
126
  properties: {
@@ -155,19 +134,10 @@ Returns the verified solver result, the template used, and correction loop histo
155
134
  },
156
135
  {
157
136
  name: "chiasmus_learn",
158
- description: `Extract a reusable template from a verified solution and add it to the skill library.
159
-
160
- After solving a problem with chiasmus_verify, call this to generalize the solution into a
161
- reusable template. The template is stored as a candidate — it gets promoted to full status
162
- after being successfully reused ${3} times.
137
+ description: `Extract reusable template from verified solution add to skill library.
163
138
 
164
- Requires ANTHROPIC_API_KEY for template extraction (uses LLM to generalize).
165
-
166
- WORKFLOW:
167
- 1. Solve a problem with chiasmus_verify
168
- 2. Call chiasmus_learn with the verified spec and problem description
169
- 3. The extracted template appears in chiasmus_skills searches
170
- 4. Future similar problems can use the template via chiasmus_formalize`,
139
+ Generalizes concrete spec into parameterized template. Stored as candidate promoted after 3+ successful reuses.
140
+ Needs API key. Flow: chiasmus_verify → chiasmus_learn → template appears in chiasmus_skills.`,
171
141
  inputSchema: {
172
142
  type: "object",
173
143
  properties: {
@@ -188,6 +158,29 @@ WORKFLOW:
188
158
  required: ["solver", "spec", "problem"],
189
159
  },
190
160
  },
161
+ {
162
+ name: "chiasmus_lint",
163
+ description: `Fast structural validation of formal spec without running solver.
164
+
165
+ Auto-fixes: markdown fences, (check-sat)/(get-model), (set-logic).
166
+ Checks: balanced parens, unfilled {{SLOT:}} markers, missing periods (Prolog).
167
+ Returns cleaned spec + fixes applied + remaining errors.`,
168
+ inputSchema: {
169
+ type: "object",
170
+ properties: {
171
+ solver: {
172
+ type: "string",
173
+ enum: ["z3", "prolog"],
174
+ description: "Solver type for syntax rules",
175
+ },
176
+ input: {
177
+ type: "string",
178
+ description: "Spec to lint",
179
+ },
180
+ },
181
+ required: ["solver", "input"],
182
+ },
183
+ },
191
184
  ];
192
185
  async function handleVerify(args) {
193
186
  const solver = args.solver;
@@ -213,10 +206,36 @@ async function handleVerify(args) {
213
206
  }
214
207
  }
215
208
  else if (solver === "prolog") {
209
+ const queries = args.queries;
210
+ if (queries && Array.isArray(queries) && queries.length > 0) {
211
+ // Validate all items are strings
212
+ if (queries.some((q) => typeof q !== "string")) {
213
+ return {
214
+ content: [{ type: "text", text: JSON.stringify({
215
+ status: "error",
216
+ error: "queries array must contain only strings",
217
+ }) }],
218
+ };
219
+ }
220
+ // Batch mode: run multiple queries against same program
221
+ const session = await SolverSession.create("prolog");
222
+ try {
223
+ const results = [];
224
+ for (const q of queries) {
225
+ results.push(await session.solve({ type: "prolog", program: input, query: q }));
226
+ }
227
+ return {
228
+ content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
229
+ };
230
+ }
231
+ finally {
232
+ session.dispose();
233
+ }
234
+ }
216
235
  if (!query) {
217
236
  result = {
218
237
  status: "error",
219
- error: "The 'query' parameter is required for the prolog solver",
238
+ error: "'query' or 'queries' parameter required for prolog solver",
220
239
  };
221
240
  }
222
241
  else {
@@ -395,6 +414,28 @@ async function handleLearn(learner, args) {
395
414
  }, null, 2) }],
396
415
  };
397
416
  }
417
+ function handleLint(args) {
418
+ const solver = args.solver;
419
+ const input = args.input;
420
+ if (typeof solver !== "string" || typeof input !== "string") {
421
+ return {
422
+ content: [{ type: "text", text: JSON.stringify({
423
+ error: "Required: solver (string), input (string)",
424
+ }) }],
425
+ };
426
+ }
427
+ if (solver !== "z3" && solver !== "prolog") {
428
+ return {
429
+ content: [{ type: "text", text: JSON.stringify({
430
+ error: `Unknown solver: ${solver}. Use "z3" or "prolog".`,
431
+ }) }],
432
+ };
433
+ }
434
+ const result = lintSpec(input, solver);
435
+ return {
436
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
437
+ };
438
+ }
398
439
  export async function createChiasmusServer(chiasmusHome, llmOverride) {
399
440
  const home = chiasmusHome ?? getChiasmusHome();
400
441
  const library = await SkillLibrary.create(home);
@@ -423,6 +464,8 @@ export async function createChiasmusServer(chiasmusHome, llmOverride) {
423
464
  return handleSolve(formalizer, library, args ?? {});
424
465
  case "chiasmus_learn":
425
466
  return handleLearn(learner, args ?? {});
467
+ case "chiasmus_lint":
468
+ return handleLint(args ?? {});
426
469
  default:
427
470
  return {
428
471
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"learner.d.ts","sourceRoot":"","sources":["../../src/skills/learner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA2BtD,qBAAa,YAAY;IAErB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,GAAG;gBADH,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,UAAU;IAGzB;;;OAGG;IACG,eAAe,CACnB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkEhC,kFAAkF;IAClF,eAAe,IAAI,IAAI;IAiBvB,4DAA4D;IAC5D,OAAO,CAAC,WAAW;IAUnB,yDAAyD;IACzD,OAAO,CAAC,cAAc;CAOvB"}
1
+ {"version":3,"file":"learner.d.ts","sourceRoot":"","sources":["../../src/skills/learner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAatD,qBAAa,YAAY;IAErB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,GAAG;gBADH,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,UAAU;IAGzB;;;OAGG;IACG,eAAe,CACnB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkEhC,kFAAkF;IAClF,eAAe,IAAI,IAAI;IAiBvB,4DAA4D;IAC5D,OAAO,CAAC,WAAW;IAUnB,yDAAyD;IACzD,OAAO,CAAC,cAAc;CAOvB"}
@@ -1,26 +1,12 @@
1
1
  const PROMOTION_THRESHOLD = 3;
2
2
  const PROMOTION_SUCCESS_RATE = 0.6;
3
3
  const DEDUP_SIMILARITY_THRESHOLD = 0.7;
4
- const EXTRACT_SYSTEM = `You are a template extraction engine. Given a verified formal specification and the problem it solved, extract a REUSABLE template.
4
+ const EXTRACT_SYSTEM = `Extract reusable template from verified spec.
5
5
 
6
- Your job:
7
- 1. Identify which parts are problem-specific (concrete values) vs structural (the pattern)
8
- 2. Replace concrete values with {{SLOT:name}} markers
9
- 3. Name and describe each slot
10
- 4. Write a general signature that describes the class of problems this template solves
11
- 5. Suggest normalization recipes for common input formats
6
+ Concrete values → {{SLOT:name}} markers. Name each slot. Write general signature. Suggest normalizations.
12
7
 
13
- Return a JSON object with these fields:
14
- {
15
- "name": "kebab-case-name",
16
- "domain": "one of: authorization, configuration, dependency, validation, rules, analysis",
17
- "signature": "Natural language description of what class of problems this solves",
18
- "slots": [{ "name": "slot_name", "description": "what goes here", "format": "example" }],
19
- "normalizations": [{ "source": "input format", "transform": "how to map it" }],
20
- "skeleton": "the template with {{SLOT:name}} markers"
21
- }
22
-
23
- Return ONLY valid JSON, no markdown fences, no explanation.`;
8
+ Return JSON only no fences, no explanation:
9
+ {"name":"kebab-case","domain":"authorization|configuration|dependency|validation|rules|analysis","signature":"what class of problems this solves","slots":[{"name":"x","description":"what","format":"example"}],"normalizations":[{"source":"format","transform":"how"}],"skeleton":"template with {{SLOT:name}}"}`;
24
10
  export class SkillLearner {
25
11
  library;
26
12
  llm;
@@ -1 +1 @@
1
- {"version":3,"file":"learner.js","sourceRoot":"","sources":["../../src/skills/learner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learner.js","sourceRoot":"","sources":["../../src/skills/learner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"starters.d.ts","sourceRoot":"","sources":["../../src/skills/starters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,iBAAiB,EAAE,aAAa,EAqZ5C,CAAC"}
1
+ {"version":3,"file":"starters.d.ts","sourceRoot":"","sources":["../../src/skills/starters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,iBAAiB,EAAE,aAAa,EA4d5C,CAAC"}
@@ -9,60 +9,81 @@ export const STARTER_TEMPLATES = [
9
9
  ; Principals, resources, and actions as enumerated types
10
10
  {{SLOT:type_declarations}}
11
11
 
12
- ; Decision variables
13
- (declare-const principal {{SLOT:principal_type}})
14
- (declare-const resource {{SLOT:resource_type}})
15
- (declare-const action {{SLOT:action_type}})
12
+ (declare-const r {{SLOT:principal_type}})
13
+ (declare-const a {{SLOT:action_type}})
14
+ (declare-const res {{SLOT:resource_type}})
16
15
  (declare-const allowed Bool)
17
16
  (declare-const denied Bool)
18
17
 
19
- ; Policy rules
20
- {{SLOT:policy_rules}}
18
+ ; allowed is true IFF the (r, a, res) triple matches ANY allow rule
19
+ (assert (= allowed (or {{SLOT:allow_rules}})))
20
+
21
+ ; denied is true IFF the (r, a, res) triple matches ANY deny rule
22
+ (assert (= denied (or {{SLOT:deny_rules}})))
21
23
 
22
- ; Check: can both allowed and denied be true simultaneously?
24
+ ; Check: can both be true simultaneously?
23
25
  (assert allowed)
24
26
  (assert denied)`,
25
27
  slots: [
26
28
  {
27
29
  name: "type_declarations",
28
- description: "SMT-LIB declare-datatypes for principals, resources, actions",
29
- format: "(declare-datatypes ((Principal 0)) (((alice) (bob) ...)))",
30
- },
31
- {
32
- name: "principal_type",
33
- description: "The type name for principals",
34
- format: "Principal",
35
- },
36
- {
37
- name: "resource_type",
38
- description: "The type name for resources",
39
- format: "Resource",
30
+ description: "SMT-LIB declare-datatypes for principals, actions, resources",
31
+ format: "(declare-datatypes ((Role 0)) (((admin) (editor) (viewer))))\n(declare-datatypes ((Action 0)) (((read) (write) (delete))))\n(declare-datatypes ((Resource 0)) (((docs) (settings))))",
40
32
  },
33
+ { name: "principal_type", description: "Type name for principals", format: "Role" },
34
+ { name: "action_type", description: "Type name for actions", format: "Action" },
35
+ { name: "resource_type", description: "Type name for resources", format: "Resource" },
41
36
  {
42
- name: "action_type",
43
- description: "The type name for actions",
44
- format: "Action",
37
+ name: "allow_rules",
38
+ description: "OR of all allow conditions — each is (and (= r X) (= a Y) (= res Z))",
39
+ format: "(and (= r admin) (= a read) (= res docs))\n (and (= r editor) (= a write) (= res docs))",
45
40
  },
46
41
  {
47
- name: "policy_rules",
48
- description: "Implications mapping (principal, resource, action) to allowed/denied",
49
- format: "(assert (=> (and (= principal alice) (= action read)) allowed))",
42
+ name: "deny_rules",
43
+ description: "OR of all deny conditions — each is (and (= r X) (= a Y) (= res Z))",
44
+ format: "(and (= r editor) (= a delete) (= res docs))",
50
45
  },
51
46
  ],
52
47
  normalizations: [
53
48
  {
54
49
  source: "AWS IAM JSON",
55
- transform: "Map each Statement's Effect/Principal/Action/Resource to allow/deny implications",
50
+ transform: "Map each Statement's Effect/Principal/Action/Resource to an (and ...) clause",
56
51
  },
57
52
  {
58
53
  source: "Kubernetes RBAC",
59
- transform: "Expand rules[].{verbs, resources, apiGroups} into action/resource allow implications",
54
+ transform: "Expand rules[].{verbs, resources} into (and (= a verb) (= res resource)) clauses",
60
55
  },
61
56
  {
62
57
  source: "natural language",
63
- transform: "Extract entities, classify as principal/resource/action, map to implications",
58
+ transform: "Extract entities, classify as principal/action/resource, build (and ...) clauses",
64
59
  },
65
60
  ],
61
+ tips: [
62
+ "Use (= flag (or ...)) NOT (=> ... flag) — implication → trivially SAT",
63
+ "No define-fun with args — breaks model. Use declare-const + (assert (=))",
64
+ "Model returns r, a, res = exact conflicting request",
65
+ ],
66
+ example: `(declare-datatypes ((Role 0)) (((admin) (editor))))
67
+ (declare-datatypes ((Action 0)) (((read) (write))))
68
+ (declare-datatypes ((Resource 0)) (((docs) (billing))))
69
+
70
+ (declare-const r Role)
71
+ (declare-const a Action)
72
+ (declare-const res Resource)
73
+ (declare-const allowed Bool)
74
+ (declare-const denied Bool)
75
+
76
+ (assert (= allowed (or
77
+ (and (= r admin) (= a read) (= res billing))
78
+ (and (= r editor) (= a write) (= res docs))
79
+ )))
80
+
81
+ (assert (= denied (or
82
+ (and (= r editor) (= a write) (= res docs))
83
+ )))
84
+
85
+ (assert allowed)
86
+ (assert denied)`,
66
87
  },
67
88
  {
68
89
  name: "policy-reachability",
@@ -77,8 +98,8 @@ export const STARTER_TEMPLATES = [
77
98
  (declare-const action {{SLOT:action_type}})
78
99
  (declare-const can_access Bool)
79
100
 
80
- ; Role assignments and permission rules
81
- {{SLOT:role_rules}}
101
+ ; Define can_access as true IFF role rules grant it
102
+ (assert (= can_access (or {{SLOT:access_rules}})))
82
103
 
83
104
  ; Target: can this specific principal access this specific resource?
84
105
  (assert (= principal {{SLOT:target_principal}}))
@@ -87,16 +108,16 @@ export const STARTER_TEMPLATES = [
87
108
  slots: [
88
109
  {
89
110
  name: "type_declarations",
90
- description: "SMT-LIB declare-datatypes for principals, resources, actions",
111
+ description: "SMT-LIB declare-datatypes",
91
112
  format: "(declare-datatypes ...)",
92
113
  },
93
114
  { name: "principal_type", description: "Type name for principals", format: "Principal" },
94
115
  { name: "resource_type", description: "Type name for resources", format: "Resource" },
95
116
  { name: "action_type", description: "Type name for actions", format: "Action" },
96
117
  {
97
- name: "role_rules",
98
- description: "Rules that derive can_access from roles and permissions",
99
- format: "(assert (=> (and (= principal alice) ...) can_access))",
118
+ name: "access_rules",
119
+ description: "OR of conditions that grant access",
120
+ format: "(and (= principal alice) (= action read) (= resource docs))",
100
121
  },
101
122
  { name: "target_principal", description: "The principal to check", format: "alice" },
102
123
  { name: "target_resource", description: "The resource to check", format: "secret_doc" },
@@ -104,13 +125,17 @@ export const STARTER_TEMPLATES = [
104
125
  normalizations: [
105
126
  {
106
127
  source: "Django permissions",
107
- transform: "Extract user/group assignments and permission checks into role rules",
128
+ transform: "Extract user/group assignments and permission checks into access rule clauses",
108
129
  },
109
130
  {
110
131
  source: "natural language",
111
132
  transform: "Identify the target principal and resource, extract role hierarchy",
112
133
  },
113
134
  ],
135
+ tips: [
136
+ "Use (=) not (=>) for can_access",
137
+ "SAT = access possible | UNSAT = unreachable",
138
+ ],
114
139
  },
115
140
  {
116
141
  name: "config-equivalence",
@@ -121,14 +146,16 @@ export const STARTER_TEMPLATES = [
121
146
  ; Input variables representing all possible inputs
122
147
  {{SLOT:input_declarations}}
123
148
 
124
- ; Output of config A
125
- {{SLOT:config_a_logic}}
149
+ ; Config A output
150
+ (declare-const result_a Bool)
151
+ (assert (= result_a {{SLOT:config_a_expr}}))
126
152
 
127
- ; Output of config B
128
- {{SLOT:config_b_logic}}
153
+ ; Config B output
154
+ (declare-const result_b Bool)
155
+ (assert (= result_b {{SLOT:config_b_expr}}))
129
156
 
130
157
  ; Check: is there any input where the two configs produce different outputs?
131
- (assert (not (= {{SLOT:output_a}} {{SLOT:output_b}})))`,
158
+ (assert (not (= result_a result_b)))`,
132
159
  slots: [
133
160
  {
134
161
  name: "input_declarations",
@@ -136,28 +163,39 @@ export const STARTER_TEMPLATES = [
136
163
  format: "(declare-const port Int) (declare-const src_ip Int)",
137
164
  },
138
165
  {
139
- name: "config_a_logic",
140
- description: "Assertions encoding the first configuration's behavior",
141
- format: "(declare-const result_a Bool) (assert (=> (> port 80) result_a))",
166
+ name: "config_a_expr",
167
+ description: "Boolean expression for config A's behavior",
168
+ format: "(and (>= port 80) (<= port 443))",
142
169
  },
143
170
  {
144
- name: "config_b_logic",
145
- description: "Assertions encoding the second configuration's behavior",
146
- format: "(declare-const result_b Bool) (assert (=> (>= port 80) result_b))",
171
+ name: "config_b_expr",
172
+ description: "Boolean expression for config B's behavior",
173
+ format: "(and (>= port 80) (<= port 8080))",
147
174
  },
148
- { name: "output_a", description: "Output variable from config A", format: "result_a" },
149
- { name: "output_b", description: "Output variable from config B", format: "result_b" },
150
175
  ],
151
176
  normalizations: [
152
177
  {
153
178
  source: "firewall rules",
154
- transform: "Encode each rule set as boolean logic over port/protocol/address variables",
179
+ transform: "Encode each rule set as boolean expression over port/protocol/address variables",
155
180
  },
156
181
  {
157
182
  source: "Kubernetes NetworkPolicy",
158
183
  transform: "Map ingress/egress rules to boolean expressions over pod labels and ports",
159
184
  },
160
185
  ],
186
+ tips: [
187
+ "Use (=) to define result vars",
188
+ "SAT = configs differ (model = diverging input) | UNSAT = equivalent",
189
+ ],
190
+ example: `(declare-const port Int)
191
+
192
+ (declare-const result_a Bool)
193
+ (assert (= result_a (and (>= port 80) (<= port 443))))
194
+
195
+ (declare-const result_b Bool)
196
+ (assert (= result_b (and (>= port 80) (<= port 8080))))
197
+
198
+ (assert (not (= result_a result_b)))`,
161
199
  },
162
200
  {
163
201
  name: "constraint-satisfaction",
@@ -184,12 +222,12 @@ export const STARTER_TEMPLATES = [
184
222
  },
185
223
  {
186
224
  name: "range_constraints",
187
- description: "Constrain each package to its available version range",
188
- format: "(assert (and (>= pkg_a 1) (<= pkg_a 3)))",
225
+ description: "Constrain each package to its available versions using (or (= pkg v1) (= pkg v2) ...)",
226
+ format: "(assert (or (= pkg_a 1) (= pkg_a 2) (= pkg_a 3)))",
189
227
  },
190
228
  {
191
229
  name: "dependency_rules",
192
- description: "Conditional version requirements between packages",
230
+ description: "Conditional version requirements. Use (=>) for 'if pkg_a >= 2 then pkg_b >= 3'",
193
231
  format: "(assert (=> (>= pkg_a 2) (>= pkg_b 3)))",
194
232
  },
195
233
  {
@@ -201,13 +239,23 @@ export const STARTER_TEMPLATES = [
201
239
  normalizations: [
202
240
  {
203
241
  source: "package.json",
204
- transform: "Parse semver ranges into integer constraints, map peer/optional deps to conditional rules",
242
+ transform: "Parse semver ranges into (or (= pkg v) ...) constraints, map peer deps to (=>) rules",
205
243
  },
206
244
  {
207
245
  source: "requirements.txt",
208
246
  transform: "Parse version specifiers (>=, ==, !=) into SMT constraints",
209
247
  },
210
248
  ],
249
+ tips: [
250
+ "Discrete versions: (or (= pkg 1) (= pkg 2)) not (and (>= 1) (<= 2)) — latter allows non-integers",
251
+ "SAT = valid assignment | UNSAT = no solution",
252
+ ],
253
+ example: `(declare-const app Int)
254
+ (declare-const lib Int)
255
+ (assert (or (= app 1) (= app 2) (= app 3)))
256
+ (assert (or (= lib 1) (= lib 2)))
257
+ (assert (=> (>= app 2) (>= lib 2)))
258
+ (assert (not (and (= app 3) (= lib 1))))`,
211
259
  },
212
260
  {
213
261
  name: "schema-consistency",
@@ -218,14 +266,17 @@ export const STARTER_TEMPLATES = [
218
266
  ; Input field variables
219
267
  {{SLOT:field_declarations}}
220
268
 
221
- ; Validation rule set A
222
- {{SLOT:rule_set_a}}
269
+ ; Value passes rule set A
270
+ (declare-const passes_a Bool)
271
+ (assert (= passes_a (and {{SLOT:rule_set_a_conditions}})))
223
272
 
224
- ; Validation rule set B
225
- {{SLOT:rule_set_b}}
273
+ ; Value passes rule set B
274
+ (declare-const passes_b Bool)
275
+ (assert (= passes_b (and {{SLOT:rule_set_b_conditions}})))
226
276
 
227
- ; Check: is there an input that passes A but fails B (or vice versa)?
228
- (assert (and {{SLOT:passes_a}} (not {{SLOT:passes_b}})))`,
277
+ ; Check: is there an input that passes A but fails B?
278
+ (assert passes_a)
279
+ (assert (not passes_b))`,
229
280
  slots: [
230
281
  {
231
282
  name: "field_declarations",
@@ -233,28 +284,41 @@ export const STARTER_TEMPLATES = [
233
284
  format: "(declare-const age Int) (declare-const name_len Int)",
234
285
  },
235
286
  {
236
- name: "rule_set_a",
237
- description: "Assertions for the first set of validation rules",
238
- format: "(declare-const valid_a Bool) (assert (=> (and (>= age 18) ...) valid_a))",
287
+ name: "rule_set_a_conditions",
288
+ description: "Conjunction of conditions for rule set A (e.g. frontend validation)",
289
+ format: "(>= age 13) (<= age 120) (>= name_len 3)",
239
290
  },
240
291
  {
241
- name: "rule_set_b",
242
- description: "Assertions for the second set of validation rules",
243
- format: "(declare-const valid_b Bool) (assert (=> (and (> age 17) ...) valid_b))",
292
+ name: "rule_set_b_conditions",
293
+ description: "Conjunction of conditions for rule set B (e.g. backend validation)",
294
+ format: "(>= age 18) (<= age 150) (>= name_len 3)",
244
295
  },
245
- { name: "passes_a", description: "Variable indicating input passes rule set A", format: "valid_a" },
246
- { name: "passes_b", description: "Variable indicating input passes rule set B", format: "valid_b" },
247
296
  ],
248
297
  normalizations: [
249
298
  {
250
299
  source: "JSON Schema",
251
- transform: "Map minimum/maximum/pattern/required to integer/boolean constraints",
300
+ transform: "Map minimum/maximum/pattern/required to integer/boolean conditions",
252
301
  },
253
302
  {
254
303
  source: "Zod schema",
255
- transform: "Extract .min()/.max()/.refine() chains into SMT assertions",
304
+ transform: "Extract .min()/.max()/.refine() chains into conditions",
256
305
  },
257
306
  ],
307
+ tips: [
308
+ "Use (=) to define passes_a/passes_b",
309
+ "SAT = gap exists (model = concrete counterexample) | UNSAT = no gap",
310
+ "Swap A/B to check both directions. Per-field: separate check per field.",
311
+ ],
312
+ example: `(declare-const age Int)
313
+
314
+ (declare-const passes_frontend Bool)
315
+ (assert (= passes_frontend (and (>= age 13) (<= age 120))))
316
+
317
+ (declare-const passes_backend Bool)
318
+ (assert (= passes_backend (and (>= age 18) (<= age 150))))
319
+
320
+ (assert passes_frontend)
321
+ (assert (not passes_backend))`,
258
322
  },
259
323
  // ─── Prolog Templates ────────────────────────────────────
260
324
  {
@@ -290,19 +354,22 @@ export const STARTER_TEMPLATES = [
290
354
  transform: "Identify entities, properties, and conditional relationships",
291
355
  },
292
356
  ],
357
+ tips: [
358
+ "All clauses end with period. Lowercase = atoms, Uppercase = variables.",
359
+ "No recursive rules on cyclic data — Tau Prolog lacks tabling → infinite loop.",
360
+ ],
293
361
  },
294
362
  {
295
363
  name: "graph-reachability",
296
364
  domain: "analysis",
297
365
  solver: "prolog",
298
- signature: "Check if node A can reach node B through any path in a directed graph — data flow, dependency chains, call graphs",
366
+ signature: "Check if node A can reach node B through any path in a directed graph — data flow, dependency chains, call graphs, taint analysis",
299
367
  skeleton: `
300
368
  % Direct edges in the graph
301
369
  {{SLOT:edges}}
302
370
 
303
- % Transitive reachability
304
- reaches(A, B) :- edge(A, B).
305
- reaches(A, B) :- edge(A, Mid), reaches(Mid, B).`,
371
+ % Direct neighbor query (use for individual checks)
372
+ neighbor(A, B) :- edge(A, B).`,
306
373
  slots: [
307
374
  {
308
375
  name: "edges",
@@ -324,6 +391,15 @@ reaches(A, B) :- edge(A, Mid), reaches(Mid, B).`,
324
391
  transform: "Map function calls to edge(caller, callee) facts",
325
392
  },
326
393
  ],
394
+ tips: [
395
+ "⚠ No recursive reaches/2 on cyclic graphs — infinite loop (no tabling)",
396
+ "Cyclic: query edge(X,Y) individually, BFS externally. DAGs: recursive rule safe.",
397
+ ],
398
+ example: `edge(user_input, handler).
399
+ edge(handler, validator).
400
+ edge(validator, database).
401
+ edge(handler, logger).
402
+ neighbor(A, B) :- edge(A, B).`,
327
403
  },
328
404
  {
329
405
  name: "permission-derivation",
@@ -376,6 +452,10 @@ can(User, Action, Resource) :- has_role(User, Role), permission(Role, Action, Re
376
452
  transform: "Map ClusterRole/Role bindings to role facts, aggregate rules to permission facts",
377
453
  },
378
454
  ],
455
+ tips: [
456
+ "Role hierarchy must be acyclic — cycles → infinite loop",
457
+ "can(alice, Action, Resource) → enumerate all permissions for user",
458
+ ],
379
459
  },
380
460
  ];
381
461
  //# sourceMappingURL=starters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"starters.js","sourceRoot":"","sources":["../../src/skills/starters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"starters.js","sourceRoot":"","sources":["../../src/skills/starters.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,10 @@ export interface SkillTemplate {
31
31
  slots: SlotDef[];
32
32
  /** Known normalization recipes */
33
33
  normalizations: Normalization[];
34
+ /** Encoding tips and pitfalls specific to this template */
35
+ tips?: string[];
36
+ /** A complete worked example showing a filled version of this template */
37
+ example?: string;
34
38
  }
35
39
  /** Runtime metadata tracked per template */
36
40
  export interface SkillMetadata {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,wDAAwD;AACxD,MAAM,WAAW,OAAO;IACtB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,kCAAkC;IAClC,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,wDAAwD;AACxD,MAAM,WAAW,OAAO;IACtB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,kCAAkC;IAClC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chiasmus",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "description": "Neurosymbolic verification engine - MCP server for formal reasoning with Z3 and Tau Prolog",
6
6
  "main": "dist/mcp-server.js",