@ldclabs/kip-lang 0.3.0 → 0.3.1

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.
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Best-effort static checks layered on top of the syntax parser. These encode
3
+ * the spec's SHOULD/MUST rules that are decidable without a live schema:
4
+ * - reserved `_` metadata writes (KIP_2002),
5
+ * - unbounded associative-recall patterns lacking a LIMIT (KIP_4002),
6
+ * - concept-type / predicate naming conventions (KIP_2001, §2.8).
7
+ * Everything requiring the graph's schema (undefined types, missing required
8
+ * attributes, protected targets) is left to the engine.
9
+ */
10
+ export function analyzeSemantics(program) {
11
+ const diags = [];
12
+ for (const stmt of program.statements) {
13
+ analyzeStatement(stmt, diags);
14
+ }
15
+ return diags;
16
+ }
17
+ function analyzeStatement(stmt, diags) {
18
+ switch (stmt.kind) {
19
+ case 'FindStatement':
20
+ if (stmt.where)
21
+ checkWhere(stmt.where, !!stmt.limit, diags);
22
+ break;
23
+ case 'UpsertStatement':
24
+ checkMetadata(stmt.metadata, diags);
25
+ for (const block of stmt.blocks) {
26
+ if (block.kind === 'ConceptBlock') {
27
+ checkMatcherNaming(block.matcher, diags);
28
+ checkMetadata(block.metadata, diags);
29
+ for (const item of block.setPropositions?.items ?? []) {
30
+ checkPredicateName(item.predicate, item.range, diags);
31
+ checkEndpointNaming(item.target, diags);
32
+ checkMetadata(item.metadata, diags);
33
+ }
34
+ }
35
+ else {
36
+ checkPropositionNaming(block, diags);
37
+ checkEndpointNaming(block.subject, diags);
38
+ checkEndpointNaming(block.object, diags);
39
+ checkMetadata(block.metadata, diags);
40
+ }
41
+ }
42
+ break;
43
+ case 'UpdateStatement':
44
+ checkMetadata(stmt.setMetadata, diags);
45
+ checkWhere(stmt.where, !!stmt.limit, diags);
46
+ break;
47
+ case 'MergeStatement':
48
+ checkWhere(stmt.where, true, diags);
49
+ break;
50
+ case 'DeleteStatement':
51
+ if (stmt.where)
52
+ checkWhere(stmt.where, true, diags);
53
+ break;
54
+ case 'ExportStatement':
55
+ checkWhere(stmt.where, !!stmt.limit, diags);
56
+ break;
57
+ }
58
+ }
59
+ // ─── Reserved `_` metadata namespace (KIP_2002) ──────────────────────
60
+ function checkMetadata(meta, diags) {
61
+ if (!meta)
62
+ return;
63
+ for (const entry of meta.entries) {
64
+ if (entry.key.startsWith('_')) {
65
+ diags.push({
66
+ range: entry.range,
67
+ severity: 'error',
68
+ message: `Metadata key '${entry.key}' is in the engine-reserved '_' namespace and is read-only to KML (KIP_2002).`,
69
+ code: 'KIP_2002'
70
+ });
71
+ }
72
+ }
73
+ }
74
+ // ─── Naming conventions (§2.8, KIP_2001) ─────────────────────────────
75
+ function checkMatcherNaming(matcher, diags) {
76
+ for (const entry of matcher.entries) {
77
+ if (entry.key !== 'type')
78
+ continue;
79
+ const name = literalString(entry);
80
+ // Skip parameters, meta-types ($-prefixed), and error placeholders.
81
+ if (name == null || name === '' || name.startsWith('$'))
82
+ continue;
83
+ if (!/^[A-Z][A-Za-z0-9]*$/.test(name)) {
84
+ diags.push({
85
+ range: entry.range,
86
+ severity: 'warning',
87
+ message: `Concept type '${name}' should be UpperCamelCase (§2.8); mismatched casing resolves to a different, likely undefined type (KIP_2001).`,
88
+ code: 'KIP_2001'
89
+ });
90
+ }
91
+ }
92
+ }
93
+ /** Recurse into a proposition endpoint, checking concept types and nested predicates. */
94
+ function checkEndpointNaming(endpoint, diags) {
95
+ if (!endpoint)
96
+ return;
97
+ if (endpoint.kind === 'ConceptPattern') {
98
+ checkMatcherNaming(endpoint.matcher, diags);
99
+ }
100
+ else if (endpoint.kind === 'PropositionPattern') {
101
+ checkPropositionNaming(endpoint, diags);
102
+ checkEndpointNaming(endpoint.subject, diags);
103
+ checkEndpointNaming(endpoint.object, diags);
104
+ }
105
+ }
106
+ function checkPredicateName(predicate, range, diags) {
107
+ if (predicate === '')
108
+ return;
109
+ if (!/^[a-z_][a-z0-9_]*$/.test(predicate)) {
110
+ diags.push({
111
+ range,
112
+ severity: 'warning',
113
+ message: `Predicate '${predicate}' should be snake_case (§2.8); mismatched casing resolves to a different, likely undefined predicate (KIP_2001).`,
114
+ code: 'KIP_2001'
115
+ });
116
+ }
117
+ }
118
+ // ─── Unbounded associative recall (KIP_4002) ─────────────────────────
119
+ function checkWhere(where, hasLimit, diags) {
120
+ const constrained = new Set();
121
+ collectConstrainedVars(where.patterns, constrained);
122
+ checkPatternNaming(where.patterns, diags);
123
+ walkPropositions(where.patterns, (p) => {
124
+ if (hasLimit)
125
+ return;
126
+ if (p.predicate?.kind !== 'PredicateVariable')
127
+ return;
128
+ if (isUnconstrained(p.subject, constrained) &&
129
+ isUnconstrained(p.object, constrained)) {
130
+ diags.push({
131
+ range: p.range,
132
+ severity: 'warning',
133
+ message: `Unbounded exploration '(?s, ?p, ?o)' with no constrained endpoint should be paired with a LIMIT (KIP_4002).`,
134
+ code: 'KIP_4002'
135
+ });
136
+ }
137
+ });
138
+ }
139
+ /** Walk every concept matcher and predicate in a pattern tree for naming checks. */
140
+ function checkPatternNaming(patterns, diags) {
141
+ for (const p of patterns) {
142
+ switch (p.kind) {
143
+ case 'ConceptPattern':
144
+ checkMatcherNaming(p.matcher, diags);
145
+ break;
146
+ case 'PropositionPattern':
147
+ checkPropositionNaming(p, diags);
148
+ checkEndpointNaming(p.subject, diags);
149
+ checkEndpointNaming(p.object, diags);
150
+ break;
151
+ case 'NotClause':
152
+ case 'OptionalClause':
153
+ case 'UnionClause':
154
+ checkPatternNaming(p.patterns, diags);
155
+ break;
156
+ }
157
+ }
158
+ }
159
+ function checkPropositionNaming(p, diags) {
160
+ const pred = p.predicate;
161
+ if (!pred)
162
+ return;
163
+ if (pred.kind === 'PredicateLiteral') {
164
+ checkPredicateName(pred.value, pred.range, diags);
165
+ }
166
+ else if (pred.kind === 'PredicateAlternation') {
167
+ for (const alt of pred.predicates) {
168
+ checkPredicateName(alt.value, alt.range, diags);
169
+ }
170
+ }
171
+ }
172
+ /** A variable endpoint is "constrained" if bound elsewhere by type/name/id or a literal-predicate link. */
173
+ function isUnconstrained(endpoint, constrained) {
174
+ if (!endpoint)
175
+ return false;
176
+ if (endpoint.kind !== 'VariableRef')
177
+ return false; // concept/proposition pattern is itself a constraint
178
+ return !constrained.has(endpoint.name);
179
+ }
180
+ function collectConstrainedVars(patterns, out) {
181
+ for (const p of patterns) {
182
+ switch (p.kind) {
183
+ case 'ConceptPattern':
184
+ if (p.variable && p.matcher.entries.length > 0)
185
+ out.add(p.variable);
186
+ break;
187
+ case 'PropositionPattern':
188
+ if (p.predicate?.kind !== 'PredicateVariable') {
189
+ addEndpointVar(p.subject, out);
190
+ addEndpointVar(p.object, out);
191
+ }
192
+ break;
193
+ case 'NotClause':
194
+ case 'OptionalClause':
195
+ case 'UnionClause':
196
+ collectConstrainedVars(p.patterns, out);
197
+ break;
198
+ }
199
+ }
200
+ }
201
+ function addEndpointVar(endpoint, out) {
202
+ if (endpoint?.kind === 'VariableRef')
203
+ out.add(endpoint.name);
204
+ else if (endpoint?.kind === 'ConceptPattern' && endpoint.variable) {
205
+ out.add(endpoint.variable);
206
+ }
207
+ }
208
+ function walkPropositions(patterns, visit) {
209
+ for (const p of patterns) {
210
+ switch (p.kind) {
211
+ case 'PropositionPattern':
212
+ visit(p);
213
+ break;
214
+ case 'NotClause':
215
+ case 'OptionalClause':
216
+ case 'UnionClause':
217
+ walkPropositions(p.patterns, visit);
218
+ break;
219
+ }
220
+ }
221
+ }
222
+ // ─── Helpers ─────────────────────────────────────────────────────────
223
+ function literalString(entry) {
224
+ return entry.value.kind === 'StringLiteral'
225
+ ? entry.value.parsed
226
+ : null;
227
+ }
228
+ //# sourceMappingURL=semantics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantics.js","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"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"}
package/dist/token.d.ts CHANGED
@@ -7,12 +7,12 @@ export declare enum TokenType {
7
7
  Boolean = "Boolean",
8
8
  Null = "Null",
9
9
  Identifier = "Identifier",
10
- Variable = "Variable",
11
- Parameter = "Parameter",
12
- SystemIdent = "SystemIdent",
10
+ Variable = "Variable",// ?foo
11
+ Parameter = "Parameter",// :foo
12
+ SystemIdent = "SystemIdent",// $foo
13
13
  Find = "FIND",
14
14
  Where = "WHERE",
15
- OrderBy = "ORDER_BY",
15
+ OrderBy = "ORDER_BY",// matched as two tokens then merged
16
16
  Limit = "LIMIT",
17
17
  Cursor = "CURSOR",
18
18
  Filter = "FILTER",
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IAEnB,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,OAAO,YAAY;IAGnB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IAGb,UAAU,eAAe;IACzB,QAAQ,aAAa,CAAE,OAAO;IAC9B,SAAS,cAAc,CAAE,OAAO;IAChC,WAAW,gBAAgB,CAAE,OAAO;IAGpC,IAAI,SAAS;IACb,KAAK,UAAU;IACf,OAAO,aAAa,CAAE,oCAAoC;IAC1D,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,IAAI,SAAS;IAGb,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,GAAG,QAAQ;IACX,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;IAGnB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,SAAS,cAAc;IAGvB,KAAK,UAAU;IACf,EAAE,OAAO;IAGT,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,UAAU,gBAAgB;IAC1B,QAAQ,cAAc;IACtB,KAAK,UAAU;IACf,EAAE,OAAO;IACT,MAAM,YAAY;IAClB,SAAS,gBAAgB;IACzB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,QAAQ,aAAa;IAGrB,EAAE,OAAO;IACT,KAAK,OAAO;IACZ,EAAE,MAAM;IACR,EAAE,MAAM;IACR,IAAI,OAAO;IACX,IAAI,OAAO;IACX,GAAG,OAAO;IACV,EAAE,OAAO;IACT,IAAI,MAAM;IAGV,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,QAAQ,MAAM;IACd,QAAQ,MAAM;IACd,KAAK,MAAM;IACX,KAAK,MAAM;IACX,GAAG,MAAM;IACT,IAAI,MAAM;IAGV,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,QAAQ,CAAA;IACf,GAAG,EAAE,QAAQ,CAAA;CACd;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,oEAAoE;AACpE,eAAO,MAAM,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAsClD,CAAA;AAEF,+DAA+D;AAC/D,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAkBnD,CAAA;AAMF,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAElD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAEnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAOlD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAMjD"}
package/dist/token.js CHANGED
@@ -159,19 +159,14 @@ export const FUNCTIONS = new Map([
159
159
  ['CLAMP', TokenType.Clamp],
160
160
  ['COALESCE', TokenType.Coalesce]
161
161
  ]);
162
+ /** Reverse lookup sets, built once, so membership tests are O(1). */
163
+ const KEYWORD_TYPES = new Set(KEYWORDS.values());
164
+ const FUNCTION_TYPES = new Set(FUNCTIONS.values());
162
165
  export function isKeyword(type) {
163
- for (const v of KEYWORDS.values()) {
164
- if (v === type)
165
- return true;
166
- }
167
- return false;
166
+ return KEYWORD_TYPES.has(type);
168
167
  }
169
168
  export function isFunction(type) {
170
- for (const v of FUNCTIONS.values()) {
171
- if (v === type)
172
- return true;
173
- }
174
- return false;
169
+ return FUNCTION_TYPES.has(type);
175
170
  }
176
171
  export function isLiteral(type) {
177
172
  return (type === TokenType.String ||
package/dist/token.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ldclabs/kip-lang",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "KIP (Knowledge Interaction Protocol) language toolkit: lexer, parser, formatter, and diagnostics",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -19,7 +19,9 @@
19
19
  "scripts": {
20
20
  "build": "tsc -p tsconfig.json",
21
21
  "dev": "tsc -p tsconfig.json --watch",
22
- "test": "node --test test/**/*.test.mjs"
22
+ "pretest": "tsc -p tsconfig.json",
23
+ "test": "node --test",
24
+ "prepublishOnly": "tsc -p tsconfig.json"
23
25
  },
24
26
  "keywords": [
25
27
  "kip",
@@ -33,5 +35,8 @@
33
35
  "type": "git",
34
36
  "url": "https://github.com/ldclabs/KIP",
35
37
  "directory": "packages/kip-lang"
38
+ },
39
+ "devDependencies": {
40
+ "typescript": "^5.9.3"
36
41
  }
37
42
  }