@cavelang/canonical 0.35.0 → 0.36.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/README.md +234 -3
- package/dist/src/canonicalize.d.ts.map +1 -1
- package/dist/src/canonicalize.js +31 -2
- package/dist/src/canonicalize.js.map +1 -1
- package/dist/src/emit.d.ts +5 -0
- package/dist/src/emit.d.ts.map +1 -1
- package/dist/src/emit.js +239 -52
- package/dist/src/emit.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/package.json +4 -4
- package/src/canonicalize.ts +27 -3
- package/src/emit.ts +238 -62
- package/src/index.ts +1 -1
package/dist/src/emit.js
CHANGED
|
@@ -7,45 +7,147 @@
|
|
|
7
7
|
* order. Qualifier edges re-indent under their parent; grouped claims
|
|
8
8
|
* (`QUALIFIES` edges) re-indent as full lines.
|
|
9
9
|
*/
|
|
10
|
-
import { Claim, Confidence, Tag, Value } from '@cavelang/core';
|
|
11
|
-
import { parseDocument, Token } from '@cavelang/parser';
|
|
10
|
+
import { Claim, Confidence, Entity, Tag, Uncertainty, Value, Verb } from '@cavelang/core';
|
|
11
|
+
import { parseDocument, Token, Line } from '@cavelang/parser';
|
|
12
|
+
const checkLiteral = (kind, text) => {
|
|
13
|
+
if (typeof text !== 'string')
|
|
14
|
+
throw new TypeError('CAVE term and value text must be a string');
|
|
15
|
+
const delimiter = kind === 'text' ? '"' : kind === 'code' ? '`' : undefined;
|
|
16
|
+
if (delimiter !== undefined && text.includes(delimiter)) {
|
|
17
|
+
throw new TypeError(`CAVE ${kind} literal cannot contain its own delimiter`);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const termText = (term) => {
|
|
21
|
+
if (term.kind !== 'entity' && term.kind !== 'text' && term.kind !== 'code') {
|
|
22
|
+
throw new TypeError('CAVE term kind must be entity, text or code');
|
|
23
|
+
}
|
|
24
|
+
checkLiteral(term.kind, term.text);
|
|
25
|
+
return Claim.formatTerm(term);
|
|
26
|
+
};
|
|
27
|
+
// Letter/underscore-led names exclude numeric/date prefixes and payload syntax.
|
|
28
|
+
// The separate NOT check retains the only bare negation token in this subset.
|
|
29
|
+
const simpleObject = /^[A-Za-z_][A-Za-z0-9_./-]*(?![\s\S])/;
|
|
30
|
+
// This subset cannot contain token separators, literal delimiters, comments or metadata.
|
|
31
|
+
const simpleSubject = /^[A-Za-z0-9_][A-Za-z0-9_./:-]*(?![\s\S])/;
|
|
32
|
+
const subjectText = (subject) => {
|
|
33
|
+
if (subject.kind === 'entity') {
|
|
34
|
+
if (typeof subject.text !== 'string')
|
|
35
|
+
throw new TypeError('CAVE entity subject must be one non-metadata atom');
|
|
36
|
+
if (!simpleSubject.test(subject.text)) {
|
|
37
|
+
const head = Token.splitComment(subject.text).head;
|
|
38
|
+
const tokens = Token.tokenize(head);
|
|
39
|
+
const token = tokens[0];
|
|
40
|
+
if (head !== subject.text || tokens.length !== 1 || token?.kind !== 'word' ||
|
|
41
|
+
token.text !== subject.text || Line.isMetaStart(token)) {
|
|
42
|
+
throw new TypeError('CAVE entity subject must be one non-metadata atom; use a text or code literal');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return termText(subject);
|
|
47
|
+
};
|
|
48
|
+
const valueText = (value) => {
|
|
49
|
+
checkLiteral(value.kind, value.raw);
|
|
50
|
+
const parsed = value.kind === 'text' ? Value.ofText(value.raw) :
|
|
51
|
+
value.kind === 'code' ? Value.ofCode(value.raw) : Value.parse(value.raw);
|
|
52
|
+
if (value.kind !== parsed.kind || value.approx !== parsed.approx ||
|
|
53
|
+
value.num !== parsed.num || value.from !== parsed.from || value.to !== parsed.to || value.unit !== parsed.unit) {
|
|
54
|
+
throw new TypeError('CAVE value fields must agree with their emitted raw text');
|
|
55
|
+
}
|
|
56
|
+
if (value.kind !== 'text' && value.kind !== 'code') {
|
|
57
|
+
const tokens = Token.tokenize(value.raw);
|
|
58
|
+
if (tokens.length === 0 || tokens.some(token => token.kind !== 'word' || Line.isMetaStart(token)) ||
|
|
59
|
+
tokens.map(token => token.text).join(' ') !== value.raw) {
|
|
60
|
+
throw new TypeError('CAVE unquoted value must retain its text and remain outside metadata; use a text or code literal');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return Value.format(value);
|
|
64
|
+
};
|
|
65
|
+
const attributeText = (attribute) => {
|
|
66
|
+
const text = `${attribute}:`;
|
|
67
|
+
const head = Token.splitComment(text).head;
|
|
68
|
+
const tokens = Token.tokenize(head), token = tokens[0];
|
|
69
|
+
if (typeof attribute !== 'string' || attribute.length === 0 || head !== text ||
|
|
70
|
+
tokens.length !== 1 || token?.kind !== 'word' || token.text !== text || Line.isMetaStart(token)) {
|
|
71
|
+
throw new TypeError('CAVE attribute name must retain one non-metadata word before its value');
|
|
72
|
+
}
|
|
73
|
+
return text;
|
|
74
|
+
};
|
|
12
75
|
const payloadText = (payload) => {
|
|
13
76
|
switch (payload.kind) {
|
|
14
77
|
case 'relation':
|
|
15
|
-
return
|
|
78
|
+
return termText(payload.object);
|
|
16
79
|
case 'attribute':
|
|
17
|
-
return `${payload.attribute}
|
|
80
|
+
return `${attributeText(payload.attribute)} ${valueText(payload.value)}`;
|
|
18
81
|
case 'metric':
|
|
19
|
-
return
|
|
82
|
+
return valueText(payload.value);
|
|
20
83
|
case 'none':
|
|
21
84
|
return undefined;
|
|
85
|
+
default:
|
|
86
|
+
throw new TypeError('CAVE payload kind must be relation, attribute, metric or none');
|
|
22
87
|
}
|
|
23
88
|
};
|
|
89
|
+
const metadataWord = (text) => {
|
|
90
|
+
const head = Token.splitComment(text).head;
|
|
91
|
+
const tokens = Token.tokenize(head), token = tokens[0];
|
|
92
|
+
if (head !== text || tokens.length !== 1 || token?.kind !== 'word' || token.text !== text || text === '@' || text === '#') {
|
|
93
|
+
throw new TypeError('CAVE metadata must retain one nonempty context or tag token');
|
|
94
|
+
}
|
|
95
|
+
return text;
|
|
96
|
+
};
|
|
24
97
|
const metaText = (claim) => {
|
|
98
|
+
for (const name of ['contexts', 'tags']) {
|
|
99
|
+
if (!Array.isArray(claim[name]))
|
|
100
|
+
throw new TypeError(`CAVE claim ${name} must be an array`);
|
|
101
|
+
}
|
|
25
102
|
const parts = [];
|
|
26
103
|
if (claim.delta !== undefined) {
|
|
27
|
-
|
|
104
|
+
Uncertainty.validateDelta(claim.delta.num);
|
|
105
|
+
parts.push(`+/- ${valueText(claim.delta)}`);
|
|
28
106
|
}
|
|
29
107
|
if (claim.sigmaLevel !== undefined) {
|
|
30
|
-
parts.push(`(${claim.sigmaLevel}σ)`);
|
|
108
|
+
parts.push(`(${Value.formatNumber(Uncertainty.validateSigmaLevel(claim.sigmaLevel))}σ)`);
|
|
31
109
|
}
|
|
32
110
|
for (const context of claim.contexts) {
|
|
33
|
-
|
|
111
|
+
if (typeof context !== 'string')
|
|
112
|
+
throw new TypeError('CAVE context metadata must be a string');
|
|
113
|
+
parts.push(metadataWord(`@${context}`));
|
|
34
114
|
}
|
|
35
115
|
for (const tag of claim.tags) {
|
|
36
|
-
|
|
116
|
+
const text = metadataWord(Tag.format(tag));
|
|
117
|
+
if (!Tag.equals(Tag.parse(text.slice(1)), tag))
|
|
118
|
+
throw new TypeError('CAVE tag must retain its key and value through emission');
|
|
119
|
+
parts.push(text);
|
|
37
120
|
}
|
|
38
121
|
if (claim.conf !== 1) {
|
|
39
|
-
parts.push(`@ ${Confidence.
|
|
122
|
+
parts.push(`@ ${Confidence.formatExact(claim.conf)}`);
|
|
40
123
|
}
|
|
41
124
|
if (claim.importance) {
|
|
42
125
|
parts.push('!');
|
|
43
126
|
}
|
|
44
127
|
return parts;
|
|
45
128
|
};
|
|
129
|
+
const singleLine = (line) => {
|
|
130
|
+
if (line.includes('\n'))
|
|
131
|
+
throw new TypeError('CAVE claim fields cannot contain a newline; use comment lines for multiline commentary');
|
|
132
|
+
if (/["`;]/.test(line) && Token.splitComment(`${line};`).head !== line) {
|
|
133
|
+
throw new TypeError('CAVE claim fields must not open a comment or leave an unmatched literal delimiter');
|
|
134
|
+
}
|
|
135
|
+
return line;
|
|
136
|
+
};
|
|
137
|
+
const validateFlags = (claim) => {
|
|
138
|
+
for (const name of ['negated', 'importance']) {
|
|
139
|
+
if (typeof claim[name] !== 'boolean')
|
|
140
|
+
throw new TypeError(`CAVE claim ${name} must be a boolean`);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
46
143
|
/** @returns the canonical claim line without its comment. */
|
|
47
144
|
const claimLine = (claim) => {
|
|
48
|
-
|
|
145
|
+
validateFlags(claim);
|
|
146
|
+
if (typeof claim.verb !== 'string' || !Verb.isVerbToken(claim.verb))
|
|
147
|
+
throw new TypeError('CAVE claim verb must be an uppercase atom');
|
|
148
|
+
if (claim.payload.kind === 'none' && claim.verb !== 'EXISTS')
|
|
149
|
+
throw new TypeError('CAVE claim requires an object or value payload unless its verb is EXISTS');
|
|
150
|
+
const parts = [subjectText(claim.subject), claim.verb];
|
|
49
151
|
if (claim.negated) {
|
|
50
152
|
parts.push('NOT');
|
|
51
153
|
}
|
|
@@ -53,25 +155,56 @@ const claimLine = (claim) => {
|
|
|
53
155
|
if (payload !== undefined) {
|
|
54
156
|
parts.push(payload);
|
|
55
157
|
}
|
|
56
|
-
|
|
57
|
-
|
|
158
|
+
for (const metadata of metaText(claim))
|
|
159
|
+
parts.push(metadata);
|
|
160
|
+
const line = singleLine(parts.join(' '));
|
|
161
|
+
if (claim.payload.kind === 'metric' && !['number', 'date', 'trajectory'].includes(claim.payload.value.kind)) {
|
|
162
|
+
throw new TypeError('CAVE metric payload requires a number, date or trajectory; use a relation or attribute for other values');
|
|
163
|
+
}
|
|
164
|
+
if (claim.payload.kind === 'relation' && claim.payload.object.kind === 'entity' &&
|
|
165
|
+
(claim.payload.object.text === 'NOT' || !simpleObject.test(claim.payload.object.text))) {
|
|
166
|
+
const parsed = Line.parseBody(Token.tokenize(`${claim.verb} ${payload}`));
|
|
167
|
+
if (!parsed.ok || parsed.problems.length > 0 || parsed.value.negated ||
|
|
168
|
+
parsed.value.payload.kind !== 'relation' || parsed.value.payload.object.kind !== 'entity' ||
|
|
169
|
+
Entity.normalize(parsed.value.payload.object.text) !== Entity.normalize(claim.payload.object.text)) {
|
|
170
|
+
throw new TypeError('CAVE entity relation object must retain its payload identity; use an explicit value or literal when needed');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return line;
|
|
174
|
+
};
|
|
175
|
+
const fullClaimLine = (claim) => {
|
|
176
|
+
const line = claimLine(claim);
|
|
177
|
+
if (claim.subject.kind === 'entity' && Verb.isVerbToken(claim.subject.text) &&
|
|
178
|
+
parseDocument(line).lines[0]?.kind !== 'claim')
|
|
179
|
+
return `@claim ${line}`;
|
|
180
|
+
return line;
|
|
58
181
|
};
|
|
59
182
|
/**
|
|
60
183
|
* @returns the canonical text of one claim (no indentation): a single line,
|
|
61
184
|
* or — when the comment spans several lines (§6.4) — its leading comment
|
|
62
185
|
* lines above the claim line, the last comment line riding on the claim.
|
|
63
186
|
*/
|
|
64
|
-
export const emitClaim = (claim) => Token.joinComment(
|
|
187
|
+
export const emitClaim = (claim) => Token.joinComment(fullClaimLine(claim), claim.comment);
|
|
65
188
|
/**
|
|
66
|
-
* @returns the qualifier-payload text of a condition claim. Negation
|
|
67
|
-
* emits as a `NOT` *prefix* — the §8.2 canonical `WHEN NOT x` shape —
|
|
68
|
-
*
|
|
189
|
+
* @returns the qualifier-payload text of a condition claim. Negation
|
|
190
|
+
* normally emits as a `NOT` *prefix* — the §8.2 canonical `WHEN NOT x` shape —
|
|
191
|
+
* rather than the claim-internal `VERB NOT` form: a postfix `NOT` after a symbolic
|
|
69
192
|
* comparison verb (`WHEN cpu >= NOT 900`) would be unreadable to the
|
|
70
|
-
* parser and silently invert the condition on round trip.
|
|
193
|
+
* parser and silently invert the condition on round trip. The reserved entity
|
|
194
|
+
* name NOT uses an explicit claim marker for an affirmative condition, as does
|
|
195
|
+
* a condition whose verb is NOT.
|
|
71
196
|
*/
|
|
72
197
|
const conditionText = (claim) => {
|
|
198
|
+
validateFlags(claim);
|
|
199
|
+
// A leading entity named NOT would be consumed as qualifier negation.
|
|
200
|
+
// An explicit full claim preserves its affirmative reading and also allows
|
|
201
|
+
// NOT in the verb position, which unmarked qualifier parsing excludes.
|
|
202
|
+
if (claim.verb === 'NOT' || (claim.subject.kind === 'entity' && claim.subject.text === 'NOT' && !claim.negated)) {
|
|
203
|
+
const body = `@claim ${claimLine({ ...claim, negated: false })}`;
|
|
204
|
+
return claim.negated ? `NOT ${body}` : body;
|
|
205
|
+
}
|
|
73
206
|
const body = claim.verb === 'EXISTS' && claim.payload.kind === 'none' ?
|
|
74
|
-
[
|
|
207
|
+
singleLine([subjectText(claim.subject), ...metaText(claim)].join(' ')) :
|
|
75
208
|
claimLine({ ...claim, negated: false });
|
|
76
209
|
return claim.negated ? `NOT ${body}` : body;
|
|
77
210
|
};
|
|
@@ -90,6 +223,8 @@ export const txComment = (tx) => `;@ ${tx}`;
|
|
|
90
223
|
* caller validates the id shape.
|
|
91
224
|
*/
|
|
92
225
|
export const txOfLine = Token.txOfLine;
|
|
226
|
+
/** Optional annotation payload, interpreted by the interchange reader. */
|
|
227
|
+
export const txDataOfLine = Token.txDataOfLine;
|
|
93
228
|
const tokenText = (token) => {
|
|
94
229
|
switch (token.kind) {
|
|
95
230
|
case 'text':
|
|
@@ -101,7 +236,7 @@ const tokenText = (token) => {
|
|
|
101
236
|
}
|
|
102
237
|
};
|
|
103
238
|
const commonPrefixLength = (items) => {
|
|
104
|
-
const shortest =
|
|
239
|
+
const shortest = items.reduce((minimum, item) => Math.min(minimum, item.tokens.length), Infinity);
|
|
105
240
|
let length = 0;
|
|
106
241
|
while (length < shortest &&
|
|
107
242
|
items.every(item => item.tokens[length] === items[0].tokens[length])) {
|
|
@@ -121,17 +256,31 @@ const isIncomplete = (tokens, topLevel) => {
|
|
|
121
256
|
return document.lines[document.lines.length - 1].kind === 'invalid';
|
|
122
257
|
};
|
|
123
258
|
const emitForest = (forest, depth, topLevel, inherited, lines) => {
|
|
124
|
-
|
|
125
|
-
while (
|
|
259
|
+
const stack = [{ forest, depth, topLevel, inherited, at: 0, runEnd: 0, canFactor: undefined }];
|
|
260
|
+
while (stack.length > 0) {
|
|
261
|
+
const frame = stack[stack.length - 1];
|
|
262
|
+
const { forest, depth, topLevel, inherited, at } = frame;
|
|
263
|
+
if (at >= forest.length) {
|
|
264
|
+
stack.pop();
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
126
267
|
const firstToken = forest[at].tokens[0];
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
268
|
+
if (at >= frame.runEnd) {
|
|
269
|
+
frame.canFactor = undefined;
|
|
270
|
+
frame.runEnd = at + 1;
|
|
271
|
+
while (frame.runEnd < forest.length && forest[frame.runEnd].tokens[0] === firstToken) {
|
|
272
|
+
frame.runEnd += 1;
|
|
273
|
+
}
|
|
130
274
|
}
|
|
131
|
-
const
|
|
132
|
-
|
|
275
|
+
const end = frame.runEnd;
|
|
276
|
+
// A one-token line cannot lose a prefix and still retain a leaf token.
|
|
277
|
+
// Every suffix shares this first token. If it already completes a claim,
|
|
278
|
+
// none can form a safe header, so avoid copying and scanning each suffix.
|
|
279
|
+
if (end - at > 1 && forest[at].tokens.length > 1 &&
|
|
280
|
+
(frame.canFactor ??= isIncomplete([...inherited, firstToken], topLevel))) {
|
|
281
|
+
const run = forest.slice(at, end);
|
|
133
282
|
const common = commonPrefixLength(run);
|
|
134
|
-
const shortest =
|
|
283
|
+
const shortest = run.reduce((minimum, item) => Math.min(minimum, item.tokens.length), Infinity);
|
|
135
284
|
const maximum = Math.min(common, shortest - 1);
|
|
136
285
|
let safe = 0;
|
|
137
286
|
for (let length = 1; length <= maximum; length += 1) {
|
|
@@ -144,8 +293,16 @@ const emitForest = (forest, depth, topLevel, inherited, lines) => {
|
|
|
144
293
|
if (safe > 0) {
|
|
145
294
|
const prefix = run[0].tokens.slice(0, safe);
|
|
146
295
|
lines.push(`${' '.repeat(depth)}${prefix.join(' ')}`);
|
|
147
|
-
|
|
148
|
-
|
|
296
|
+
frame.at = end;
|
|
297
|
+
stack.push({
|
|
298
|
+
forest: run.map(item => ({ node: item.node, tokens: item.tokens.slice(safe) })),
|
|
299
|
+
depth: depth + 1,
|
|
300
|
+
topLevel,
|
|
301
|
+
inherited: [...inherited, ...prefix],
|
|
302
|
+
at: 0,
|
|
303
|
+
runEnd: 0,
|
|
304
|
+
canFactor: undefined
|
|
305
|
+
});
|
|
149
306
|
continue;
|
|
150
307
|
}
|
|
151
308
|
}
|
|
@@ -155,13 +312,24 @@ const emitForest = (forest, depth, topLevel, inherited, lines) => {
|
|
|
155
312
|
// annotation stays the line directly above the claim.
|
|
156
313
|
const rendered = Token.joinComment(item.tokens.join(' '), item.node.comment).split('\n');
|
|
157
314
|
const last = rendered.pop();
|
|
158
|
-
|
|
315
|
+
for (const line of rendered)
|
|
316
|
+
lines.push(`${indent}${line}`);
|
|
159
317
|
if (item.node.annotation !== undefined) {
|
|
160
318
|
lines.push(`${indent}${item.node.annotation}`);
|
|
161
319
|
}
|
|
162
320
|
lines.push(`${indent}${last}`);
|
|
163
|
-
|
|
164
|
-
|
|
321
|
+
frame.at += 1;
|
|
322
|
+
if (item.node.children.length > 0) {
|
|
323
|
+
stack.push({
|
|
324
|
+
forest: item.node.children.map(node => ({ node, tokens: node.tokens })),
|
|
325
|
+
depth: depth + 1,
|
|
326
|
+
topLevel: false,
|
|
327
|
+
inherited: [],
|
|
328
|
+
at: 0,
|
|
329
|
+
runEnd: 0,
|
|
330
|
+
canFactor: undefined
|
|
331
|
+
});
|
|
332
|
+
}
|
|
165
333
|
}
|
|
166
334
|
};
|
|
167
335
|
/**
|
|
@@ -179,9 +347,24 @@ const emitForest = (forest, depth, topLevel, inherited, lines) => {
|
|
|
179
347
|
* the re-statement.
|
|
180
348
|
*/
|
|
181
349
|
export const emit = (result, options = {}) => {
|
|
350
|
+
if (!Array.isArray(result.claims))
|
|
351
|
+
throw new TypeError('CAVE claims must be a dense array');
|
|
352
|
+
for (let index = 0; index < result.claims.length; index++) {
|
|
353
|
+
if (!Object.hasOwn(result.claims, index))
|
|
354
|
+
throw new TypeError('CAVE claims must be a dense array');
|
|
355
|
+
}
|
|
182
356
|
const childEdges = new Map();
|
|
183
357
|
const isChild = new Set();
|
|
184
|
-
for (const
|
|
358
|
+
for (const { parent, child, role } of result.edges) {
|
|
359
|
+
for (const [field, index] of [['parent', parent], ['child', child]]) {
|
|
360
|
+
if (!Number.isSafeInteger(index) || index < 0 || index >= result.claims.length) {
|
|
361
|
+
throw new TypeError(`CAVE edge ${field} must index an existing claim`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
if (role !== 'WHEN' && role !== 'VIA' && role !== 'BECAUSE' && role !== 'QUALIFIES') {
|
|
365
|
+
throw new TypeError('CAVE edge role must be WHEN, VIA, BECAUSE or QUALIFIES');
|
|
366
|
+
}
|
|
367
|
+
const edge = { parent, child, role };
|
|
185
368
|
isChild.add(edge.child);
|
|
186
369
|
const existing = childEdges.get(edge.parent);
|
|
187
370
|
if (existing === undefined) {
|
|
@@ -193,29 +376,33 @@ export const emit = (result, options = {}) => {
|
|
|
193
376
|
}
|
|
194
377
|
const expanded = new Set();
|
|
195
378
|
const nodeAt = (index, role) => {
|
|
196
|
-
const
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
379
|
+
const roots = [];
|
|
380
|
+
const pending = [{ index, role, target: roots }];
|
|
381
|
+
while (pending.length > 0) {
|
|
382
|
+
const { index, role, target } = pending.pop();
|
|
383
|
+
const { claim } = result.claims[index];
|
|
384
|
+
const text = role === undefined || role === 'QUALIFIES' ?
|
|
385
|
+
fullClaimLine(claim) : `${role} ${conditionText(claim)}`;
|
|
386
|
+
const tokens = Token.tokenize(text).map(tokenText);
|
|
387
|
+
const annotation = options.annotate?.(index);
|
|
388
|
+
const children = [];
|
|
389
|
+
target.push({
|
|
204
390
|
index,
|
|
205
391
|
tokens,
|
|
206
392
|
...claim.comment === undefined ? {} : { comment: claim.comment },
|
|
207
393
|
...annotation === undefined ? {} : { annotation },
|
|
208
|
-
children
|
|
209
|
-
};
|
|
394
|
+
children
|
|
395
|
+
});
|
|
396
|
+
if (expanded.has(index))
|
|
397
|
+
continue;
|
|
398
|
+
expanded.add(index);
|
|
399
|
+
const edges = childEdges.get(index) ?? [];
|
|
400
|
+
for (let at = edges.length - 1; at >= 0; at--) {
|
|
401
|
+
const edge = edges[at];
|
|
402
|
+
pending.push({ index: edge.child, role: edge.role, target: children });
|
|
403
|
+
}
|
|
210
404
|
}
|
|
211
|
-
|
|
212
|
-
return {
|
|
213
|
-
index,
|
|
214
|
-
tokens,
|
|
215
|
-
...claim.comment === undefined ? {} : { comment: claim.comment },
|
|
216
|
-
...annotation === undefined ? {} : { annotation },
|
|
217
|
-
children: (childEdges.get(index) ?? []).map(edge => nodeAt(edge.child, edge.role))
|
|
218
|
-
};
|
|
405
|
+
return roots[0];
|
|
219
406
|
};
|
|
220
407
|
const forest = [];
|
|
221
408
|
result.claims.forEach((_, index) => {
|
package/dist/src/emit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/emit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/emit.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
export * as Registry from './registry.ts';
|
|
18
18
|
export { canonicalize, canonicalizeText } from './canonicalize.ts';
|
|
19
19
|
export type { Edge, EdgeRole, Entry, Problem, Result } from './canonicalize.ts';
|
|
20
|
-
export { emit, emitClaim, txComment, txOfLine } from './emit.ts';
|
|
20
|
+
export { emit, emitClaim, txComment, txOfLine, txDataOfLine } from './emit.ts';
|
|
21
21
|
export type { EmitOptions } from './emit.ts';
|
|
22
22
|
export { standardPrelude, standardRegistry } from './prelude.ts';
|
|
23
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAClE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAClE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC9E,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -16,6 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export * as Registry from "./registry.js";
|
|
18
18
|
export { canonicalize, canonicalizeText } from "./canonicalize.js";
|
|
19
|
-
export { emit, emitClaim, txComment, txOfLine } from "./emit.js";
|
|
19
|
+
export { emit, emitClaim, txComment, txOfLine, txDataOfLine } from "./emit.js";
|
|
20
20
|
export { standardPrelude, standardRegistry } from "./prelude.js";
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE9E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cavelang/canonical",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CAVE canonicalization — verb lifecycle and inverse registry, continuation expansion, canonical emitter.",
|
|
6
6
|
"keywords": [
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"directory": "packages/canonical"
|
|
22
22
|
},
|
|
23
23
|
"engines": {
|
|
24
|
-
"node": "^
|
|
24
|
+
"node": "^24.16.0 || ^26.1.0"
|
|
25
25
|
},
|
|
26
26
|
"exports": {
|
|
27
27
|
".": {
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"access": "public"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@cavelang/core": "0.
|
|
47
|
-
"@cavelang/parser": "0.
|
|
46
|
+
"@cavelang/core": "0.36.0",
|
|
47
|
+
"@cavelang/parser": "0.36.0"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"build": "tsc -b",
|
package/src/canonicalize.ts
CHANGED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
import { Claim, Entity, Value, Verb } from '@cavelang/core'
|
|
24
24
|
import { parseDocument, type Ast } from '@cavelang/parser'
|
|
25
25
|
import * as Registry from './registry.ts'
|
|
26
|
+
import { emitClaim } from './emit.ts'
|
|
26
27
|
|
|
27
28
|
/** Edge roles persisted in `cave_edge` (spec §13.2). */
|
|
28
29
|
export type EdgeRole = 'WHEN' | 'VIA' | 'BECAUSE' | 'QUALIFIES'
|
|
@@ -103,6 +104,18 @@ const payloadOfTerm = (term: Claim.Term): Claim.Payload => {
|
|
|
103
104
|
return Claim.relation(term)
|
|
104
105
|
}
|
|
105
106
|
|
|
107
|
+
/** Match ordinary claim parsing so comparison emission keeps its payload identity. */
|
|
108
|
+
const comparisonPayload = (value: Value.t): Claim.Payload => {
|
|
109
|
+
switch (value.kind) {
|
|
110
|
+
case 'number':
|
|
111
|
+
case 'date':
|
|
112
|
+
case 'trajectory': return Claim.metric(value)
|
|
113
|
+
case 'text': return Claim.relation(Claim.text(value.raw))
|
|
114
|
+
case 'code': return Claim.relation(Claim.code(value.raw))
|
|
115
|
+
default: return Claim.relation(Claim.entity(Entity.normalize(value.raw)))
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
106
119
|
const initOf = (meta: Ast.Meta): Partial<Claim.Init> => ({
|
|
107
120
|
contexts: meta.contexts,
|
|
108
121
|
tags: meta.tags,
|
|
@@ -156,7 +169,14 @@ export const canonicalize = (document: Ast.Document, registry: Registry.t = Regi
|
|
|
156
169
|
return { claim, writtenSubject }
|
|
157
170
|
}
|
|
158
171
|
|
|
159
|
-
const append = (claim: Claim.t, line: number, writtenSubject: Claim.Term, lineIndex: number): number => {
|
|
172
|
+
const append = (claim: Claim.t, line: number, writtenSubject: Claim.Term, lineIndex: number): number | undefined => {
|
|
173
|
+
try {
|
|
174
|
+
emitClaim(claim)
|
|
175
|
+
} catch (error) {
|
|
176
|
+
if (!(error instanceof TypeError)) throw error
|
|
177
|
+
problem(line, error.message)
|
|
178
|
+
return undefined
|
|
179
|
+
}
|
|
160
180
|
const index = claims.length
|
|
161
181
|
claims.push({ claim, line })
|
|
162
182
|
byLine.set(lineIndex, { index, writtenSubject })
|
|
@@ -212,7 +232,7 @@ export const canonicalize = (document: Ast.Document, registry: Registry.t = Regi
|
|
|
212
232
|
subject: payload.left,
|
|
213
233
|
verb: comparisonVerbs[payload.op],
|
|
214
234
|
negated: payload.negated !== unless,
|
|
215
|
-
payload:
|
|
235
|
+
payload: comparisonPayload(payload.value),
|
|
216
236
|
meta: payload.meta
|
|
217
237
|
}
|
|
218
238
|
}
|
|
@@ -223,10 +243,13 @@ export const canonicalize = (document: Ast.Document, registry: Registry.t = Regi
|
|
|
223
243
|
case 'claim': {
|
|
224
244
|
const { claim, writtenSubject } = buildClaim(line.claim, line.expanded ?? line.raw, line.line)
|
|
225
245
|
const index = append(claim, line.line, writtenSubject, lineIndex)
|
|
246
|
+
if (index === undefined) return
|
|
226
247
|
if (line.parent !== undefined) {
|
|
227
248
|
const parent = byLine.get(line.parent)
|
|
228
249
|
if (parent !== undefined) {
|
|
229
250
|
edges.push({ parent: parent.index, role: 'QUALIFIES', child: index })
|
|
251
|
+
} else {
|
|
252
|
+
problem(line.line, 'grouped claim has no canonicalized parent — keeping the independent claim (spec §8.4)')
|
|
230
253
|
}
|
|
231
254
|
}
|
|
232
255
|
applyDeclarations(claim, line.line)
|
|
@@ -240,7 +263,7 @@ export const canonicalize = (document: Ast.Document, registry: Registry.t = Regi
|
|
|
240
263
|
}
|
|
241
264
|
const full: Ast.Full = { subject: parent.writtenSubject, ...line.body }
|
|
242
265
|
const { claim, writtenSubject } = buildClaim(full, line.expanded ?? line.raw, line.line)
|
|
243
|
-
append(claim, line.line, writtenSubject, lineIndex)
|
|
266
|
+
if (append(claim, line.line, writtenSubject, lineIndex) === undefined) return
|
|
244
267
|
// §8.3: each continuation is an ordinary independent claim, so an
|
|
245
268
|
// in-band declaration works here exactly as on a full line (§5.4).
|
|
246
269
|
applyDeclarations(claim, line.line)
|
|
@@ -255,6 +278,7 @@ export const canonicalize = (document: Ast.Document, registry: Registry.t = Regi
|
|
|
255
278
|
const full = conditionOf(line.payload, line.qualifier === 'UNLESS')
|
|
256
279
|
const { claim, writtenSubject } = buildClaim(full, line.expanded ?? line.raw, line.line)
|
|
257
280
|
const index = append(claim, line.line, writtenSubject, lineIndex)
|
|
281
|
+
if (index === undefined) return
|
|
258
282
|
edges.push({ parent: parent.index, role: roleOf[line.qualifier], child: index })
|
|
259
283
|
return
|
|
260
284
|
}
|