@graview/core 0.1.18 → 0.1.20

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.
Files changed (129) hide show
  1. package/dist/arrangement.d.ts.map +1 -1
  2. package/dist/arrangement.js +1 -1
  3. package/dist/arrangement.js.map +1 -1
  4. package/dist/capabilities.js +1 -1
  5. package/dist/capabilities.js.map +1 -1
  6. package/dist/capital.d.ts +3 -0
  7. package/dist/capital.d.ts.map +1 -0
  8. package/dist/capital.js +3 -0
  9. package/dist/capital.js.map +1 -0
  10. package/dist/cli/create.d.ts +2 -0
  11. package/dist/cli/create.d.ts.map +1 -1
  12. package/dist/cli/create.js +38 -1
  13. package/dist/cli/create.js.map +1 -1
  14. package/dist/cli/describe.d.ts.map +1 -1
  15. package/dist/cli/describe.js +9 -3
  16. package/dist/cli/describe.js.map +1 -1
  17. package/dist/cli/docs.d.ts.map +1 -1
  18. package/dist/cli/docs.js +2 -9
  19. package/dist/cli/docs.js.map +1 -1
  20. package/dist/days.d.ts +12 -0
  21. package/dist/days.d.ts.map +1 -0
  22. package/dist/days.js +33 -0
  23. package/dist/days.js.map +1 -0
  24. package/dist/document/blocks.d.ts.map +1 -1
  25. package/dist/document/blocks.js +2 -2
  26. package/dist/document/blocks.js.map +1 -1
  27. package/dist/document/compiled.d.ts.map +1 -1
  28. package/dist/document/compiled.js +26 -4
  29. package/dist/document/compiled.js.map +1 -1
  30. package/dist/document/describe-place.d.ts +3 -1
  31. package/dist/document/describe-place.d.ts.map +1 -1
  32. package/dist/document/describe-place.js +10 -9
  33. package/dist/document/describe-place.js.map +1 -1
  34. package/dist/document/diff.d.ts.map +1 -1
  35. package/dist/document/diff.js +7 -5
  36. package/dist/document/diff.js.map +1 -1
  37. package/dist/document/edit.d.ts.map +1 -1
  38. package/dist/document/edit.js +28 -11
  39. package/dist/document/edit.js.map +1 -1
  40. package/dist/document/migrate.d.ts +2 -1
  41. package/dist/document/migrate.d.ts.map +1 -1
  42. package/dist/document/migrate.js +1 -1
  43. package/dist/document/migrate.js.map +1 -1
  44. package/dist/document/rule-line.d.ts +33 -0
  45. package/dist/document/rule-line.d.ts.map +1 -0
  46. package/dist/document/rule-line.js +512 -0
  47. package/dist/document/rule-line.js.map +1 -0
  48. package/dist/document/rules.d.ts.map +1 -1
  49. package/dist/document/rules.js +7 -0
  50. package/dist/document/rules.js.map +1 -1
  51. package/dist/document/schema.d.ts +2 -0
  52. package/dist/document/schema.d.ts.map +1 -1
  53. package/dist/document/schema.js +2 -0
  54. package/dist/document/schema.js.map +1 -1
  55. package/dist/document/template.d.ts.map +1 -1
  56. package/dist/document/template.js +5 -2
  57. package/dist/document/template.js.map +1 -1
  58. package/dist/document/to-document.d.ts +2 -1
  59. package/dist/document/to-document.d.ts.map +1 -1
  60. package/dist/document/to-document.js.map +1 -1
  61. package/dist/index.d.ts +11 -7
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +9 -5
  64. package/dist/index.js.map +1 -1
  65. package/dist/intelligence-bridge.d.ts +28 -0
  66. package/dist/intelligence-bridge.d.ts.map +1 -1
  67. package/dist/intelligence-bridge.js +10 -0
  68. package/dist/intelligence-bridge.js.map +1 -1
  69. package/dist/invariants/broken.d.ts +9 -0
  70. package/dist/invariants/broken.d.ts.map +1 -0
  71. package/dist/invariants/broken.js +14 -0
  72. package/dist/invariants/broken.js.map +1 -0
  73. package/dist/invariants/engine.d.ts.map +1 -1
  74. package/dist/invariants/engine.js +14 -1
  75. package/dist/invariants/engine.js.map +1 -1
  76. package/dist/invariants/line.d.ts +59 -0
  77. package/dist/invariants/line.d.ts.map +1 -0
  78. package/dist/invariants/line.js +69 -0
  79. package/dist/invariants/line.js.map +1 -0
  80. package/dist/invariants/types.d.ts +49 -0
  81. package/dist/invariants/types.d.ts.map +1 -1
  82. package/dist/lines.d.ts +33 -0
  83. package/dist/lines.d.ts.map +1 -0
  84. package/dist/lines.js +57 -0
  85. package/dist/lines.js.map +1 -0
  86. package/dist/places.d.ts +52 -0
  87. package/dist/places.d.ts.map +1 -1
  88. package/dist/places.js +89 -20
  89. package/dist/places.js.map +1 -1
  90. package/dist/scaffold/agents.d.ts +17 -0
  91. package/dist/scaffold/agents.d.ts.map +1 -0
  92. package/dist/scaffold/agents.js +78 -0
  93. package/dist/scaffold/agents.js.map +1 -0
  94. package/dist/scaffold/index.d.ts.map +1 -1
  95. package/dist/scaffold/index.js +7 -3
  96. package/dist/scaffold/index.js.map +1 -1
  97. package/dist/scaffold/project.d.ts +1 -1
  98. package/dist/scaffold/project.d.ts.map +1 -1
  99. package/dist/scaffold/project.js +23 -5
  100. package/dist/scaffold/project.js.map +1 -1
  101. package/dist/scene-districts.d.ts.map +1 -1
  102. package/dist/scene-districts.js +2 -2
  103. package/dist/scene-districts.js.map +1 -1
  104. package/dist/schema/define-node.d.ts +38 -2
  105. package/dist/schema/define-node.d.ts.map +1 -1
  106. package/dist/schema/define-node.js +56 -13
  107. package/dist/schema/define-node.js.map +1 -1
  108. package/dist/search.d.ts.map +1 -1
  109. package/dist/search.js +57 -17
  110. package/dist/search.js.map +1 -1
  111. package/dist/store.d.ts +7 -0
  112. package/dist/store.d.ts.map +1 -1
  113. package/dist/store.js +13 -1
  114. package/dist/store.js.map +1 -1
  115. package/dist/version.d.ts +1 -1
  116. package/dist/version.js +1 -1
  117. package/dist/via.d.ts +15 -0
  118. package/dist/via.d.ts.map +1 -0
  119. package/dist/via.js +29 -0
  120. package/dist/via.js.map +1 -0
  121. package/dist/views/types.d.ts +46 -0
  122. package/dist/views/types.d.ts.map +1 -1
  123. package/dist/views/types.js +34 -1
  124. package/dist/views/types.js.map +1 -1
  125. package/dist/who.d.ts +0 -6
  126. package/dist/who.d.ts.map +1 -1
  127. package/dist/who.js +0 -20
  128. package/dist/who.js.map +1 -1
  129. package/package.json +5 -1
@@ -1,4 +1,5 @@
1
- import { type GraphEdge, type Primitive } from "../index.js";
1
+ import { type Primitive } from "../graph/primitives.js";
2
+ import type { GraphEdge } from "../graph/types.js";
2
3
  import type { FieldSpec, FieldType, GraviewDocument } from "./schema.js";
3
4
  export interface StoredGraph {
4
5
  readonly nodes: readonly Record<string, unknown>[];
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/document/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqBzE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACnN,iGAAiG;IACjG,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,+GAA+G;AAC/G,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEtD;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAmBD,6FAA6F;AAC7F,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CA6D9E;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAAO,GAAG,aAAa,CA4I7K"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/document/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqBzE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACnN,iGAAiG;IACjG,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,+GAA+G;AAC/G,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEtD;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAmBD,6FAA6F;AAC7F,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CA6D9E;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAAO,GAAG,aAAa,CA4I7K"}
@@ -1,4 +1,4 @@
1
- import { UNSET } from "../index.js";
1
+ import { UNSET } from "../graph/primitives.js";
2
2
  import { canonicalize } from "./canonical.js";
3
3
  import { hasRange, outsideRange, rangeWords } from "./range.js";
4
4
  /** Whether a plan loses anything: a value cleared, a record or link removed, a required value left missing. */
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/document/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/document/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type AnySchema, type FieldFormat, type RuleLine } from "../index.js";
2
+ import { type EvalContext } from "./expr/evaluate.js";
3
+ import type { Expr } from "./expr/parse.js";
4
+ import { type Formatter, type Money, type TemplatePart } from "./template.js";
5
+ /** What a line is said with: the declaration's words, and how its values are written. */
6
+ export interface LineWords {
7
+ readonly schema: AnySchema;
8
+ /** A field's format where the declaration says one. */
9
+ readonly formatOf?: (kind: string, field: string) => FieldFormat | undefined;
10
+ /** The app's currency and locale. */
11
+ readonly money?: Money;
12
+ /** The formats the rule's own sentence gives a name — `{margin|percent}` — for a value the declaration does not format. */
13
+ readonly said?: ReadonlyMap<string, Formatter>;
14
+ }
15
+ /** A rule as its line is made from: the kind it judges and its parsed judgment. */
16
+ export interface LinedRule {
17
+ readonly over: string;
18
+ readonly require: Expr;
19
+ readonly when?: Expr | undefined;
20
+ }
21
+ /** A rule's line from the declaration alone: what must hold, and which records it judges. */
22
+ export declare function ruleLineOf(rule: LinedRule, words: LineWords): RuleLine;
23
+ /**
24
+ * THE SAME LINE FOR ONE RECORD THAT BREAKS IT: each part of the judgment
25
+ * that does not hold, with the values the record has, the comparison turned
26
+ * the way it stands. A part it cannot read with values is said as the rule
27
+ * says it, after "not". Never throws: a line that cannot be worked out is
28
+ * the rule's own line.
29
+ */
30
+ export declare function brokenLineOf(rule: LinedRule, words: LineWords, ctx: EvalContext): RuleLine;
31
+ /** The formats a rule's own sentence gives its names: `{margin|percent}` says margin is a percent. */
32
+ export declare function formatsSaid(says: readonly TemplatePart[] | undefined): ReadonlyMap<string, Formatter>;
33
+ //# sourceMappingURL=rule-line.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-line.d.ts","sourceRoot":"","sources":["../../src/document/rule-line.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA2E,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAGtK,OAAO,EAAyB,KAAK,WAAW,EAAc,MAAM,oBAAoB,CAAC;AACzF,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAe,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAE3F,yFAAyF;AACzF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC7E,qCAAqC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,2HAA2H;IAC3H,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAChD;AAED,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAClC;AAwWD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,QAAQ,CAQtE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,CA4F1F;AAED,sGAAsG;AACtG,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAMrG"}
@@ -0,0 +1,512 @@
1
+ /*
2
+ * A RULE, READ BACK AS ITS SHAPE (the parts are `../invariants/line.ts`).
3
+ *
4
+ * A rule in the rule language says what must hold; this says that back in
5
+ * the declaration's own words and in symbols a person knows from
6
+ * arithmetic: `margin >= first(all('assumptions')).targetMargin` is
7
+ * "margin ≥ target margin", `present(owner)` is "owner ≠ —", `status ==
8
+ * 'open' || status == 'fixing'` is "status ∈ {open, fixing}". And when a
9
+ * record breaks it, the same line with that record's values, the
10
+ * comparison turned the way it actually stands: "margin 44% < target
11
+ * margin 50%".
12
+ *
13
+ * From the barrel on purpose, as `rules.ts` is: this sits beside the
14
+ * evaluator in whatever chunk judges rules, and a page that only draws a
15
+ * line carries none of it.
16
+ */
17
+ import { fieldWords, humanizeField, labelOf, nounOf, pluralOf } from "../index.js";
18
+ import { finishedLine } from "../invariants/line.js";
19
+ import { dayAsRead, ISO_DAY } from "../days.js";
20
+ import { evaluateExpr, NodeSet } from "./expr/evaluate.js";
21
+ import { formatMoney } from "./template.js";
22
+ const name = (text) => ({ text, as: "name" });
23
+ const word = (text, said) => (said === undefined ? { text, as: "word" } : { text, as: "word", said });
24
+ const value = (text, said) => (said === undefined || said === text ? { text, as: "value" } : { text, as: "value", said });
25
+ const op = (text, said) => ({ text, as: "op", said });
26
+ const OPEN = { text: "(", as: "open" };
27
+ const CLOSE = { text: ")", as: "close" };
28
+ const NONE = { text: "—", as: "value", said: "empty" };
29
+ const COMPARE = {
30
+ ">=": ["≥", "at least"],
31
+ "<=": ["≤", "at most"],
32
+ "<": ["<", "less than"],
33
+ ">": [">", "more than"],
34
+ "==": ["=", "is"],
35
+ "!=": ["≠", "is not"],
36
+ };
37
+ /** The comparison that holds when this one does not. */
38
+ const TURNED = { ">=": "<", "<=": ">", "<": ">=", ">": "<=", "==": "!=", "!=": "==" };
39
+ const ARITHMETIC = { "+": ["+", "plus"], "-": ["−", "minus"], "*": ["×", "times"], "/": ["÷", "divided by"], "%": ["mod", "modulo"] };
40
+ const isComparison = (e) => e.t === "binary" && e.op in COMPARE;
41
+ /** "Target margin" inside a line is "target margin"; "AI uses" stays as it is. */
42
+ function inLine(text) {
43
+ return text.length > 1 && text[1] === text[1].toUpperCase() && /[A-Z]/.test(text[1]) ? text : text.charAt(0).toLowerCase() + text.slice(1);
44
+ }
45
+ /** The reader both lines share: the declaration's names for things, and its values in words. */
46
+ function reader(words) {
47
+ const { schema } = words;
48
+ const definition = (kind) => (kind === null ? undefined : schema.tryDefinition(kind));
49
+ const relation = (kind, key) => {
50
+ const edges = definition(kind)?.edges;
51
+ return edges && Object.prototype.hasOwnProperty.call(edges, key) ? edges[key] : undefined;
52
+ };
53
+ const farOf = (kind, key) => {
54
+ const to = relation(kind, key)?.to;
55
+ return Array.isArray(to) && to.length === 1 ? to[0] : null;
56
+ };
57
+ /** The kinds whose `key` relation reaches `kind`: what `in('key')` holds. */
58
+ const nearOf = (kind, key) => {
59
+ const from = (schema.edge(key)?.from ?? []).filter((one) => {
60
+ const to = relation(one, key)?.to;
61
+ return kind === null || to === "*" || (Array.isArray(to) && to.includes(kind));
62
+ });
63
+ return from.length === 1 ? from[0] : null;
64
+ };
65
+ const fieldName = (kind, key) => relation(kind, key) ? humanizeField(key).toLowerCase() : inLine(fieldWords(definition(kind), key));
66
+ const plural = (kind) => inLine(pluralOf(schema, kind));
67
+ const noun = (kind) => inLine(nounOf(definition(kind), kind));
68
+ const formatOf = (kind, key) => {
69
+ const declared = kind === null ? undefined : words.formatOf?.(kind, key);
70
+ if (declared?.format)
71
+ return declared;
72
+ const said = words.said?.get(key);
73
+ return said ? { ...declared, format: said } : declared;
74
+ };
75
+ const recordName = (node) => labelOf(schema.tryDefinition(node.kind), node);
76
+ /** A value in words: formatted as its field says, a day as a person reads it, a record by its name. */
77
+ const valueWords = (v, at) => {
78
+ if (v === null || v === undefined)
79
+ return NONE;
80
+ if (v instanceof NodeSet) {
81
+ if (v.nodes.length === 0)
82
+ return NONE;
83
+ const names = v.nodes.slice(0, 3).map(recordName);
84
+ const more = v.nodes.length - names.length;
85
+ return value(more > 0 ? `${names.join(", ")} and ${more} more` : names.length > 1 ? `${names.slice(0, -1).join(", ")} and ${names[names.length - 1]}` : names[0]);
86
+ }
87
+ if (Array.isArray(v))
88
+ return value(`{${v.map((one) => valueWords(one, at).text).join(", ")}}`, v.map((one) => valueWords(one, at).text).join(" or "));
89
+ if (typeof v === "object")
90
+ return value(recordName(v));
91
+ if (typeof v === "boolean")
92
+ return value(v ? "yes" : "no");
93
+ const format = at?.format ?? (at ? formatOf(at.kind, at.key) : undefined);
94
+ if (typeof v === "number") {
95
+ if (format?.format === "money")
96
+ return value(formatMoney(v, { ...words.money, ...(format.unit && /^[A-Z]{3}$/.test(format.unit) ? { currency: format.unit } : {}) }));
97
+ if (format?.format === "percent")
98
+ return value(`${Math.round(v * 100)}%`);
99
+ const plain = v.toLocaleString("en-US", { maximumFractionDigits: 2 });
100
+ return value(format?.unit && !/^[A-Z]{3}$/.test(format.unit) ? `${plain} ${format.unit}` : plain);
101
+ }
102
+ if (ISO_DAY.test(v) || format?.format === "date")
103
+ return value(dayAsRead(v.slice(0, 10)));
104
+ // A choice as the declaration says it, else spoken: 'to-order' is "to order".
105
+ const shown = at && at.kind !== null ? definition(at.kind)?.display?.format?.[at.key] : undefined;
106
+ if (shown)
107
+ return value(shown(v));
108
+ return value(/^[a-z][a-z0-9]*([-_][a-z0-9]+)*$/.test(v) ? v.replace(/[-_]+/g, " ") : v);
109
+ };
110
+ return { definition, relation, farOf, nearOf, fieldName, plural, noun, formatOf, valueWords };
111
+ }
112
+ /** The field an expression reads, where it reads one: for its format and its literal's words. */
113
+ function fieldAt(e, kind, r) {
114
+ if (e.t === "ident")
115
+ return { kind, key: e.name };
116
+ if (e.t === "member") {
117
+ const owner = kindOf(e.object, kind, r);
118
+ return { kind: owner, key: e.name };
119
+ }
120
+ if (e.t === "call" && (e.fn === "sum" || e.fn === "min" || e.fn === "max") && e.args.length === 2) {
121
+ const of = kindOf(e.args[0], kind, r);
122
+ const second = e.args[1];
123
+ if (second.t === "ident")
124
+ return { kind: of, key: second.name };
125
+ if (second.t === "lit" && typeof second.value === "string")
126
+ return { kind: of, key: second.value };
127
+ }
128
+ if (e.t === "binary" && (e.op === "+" || e.op === "-"))
129
+ return fieldAt(e.left, kind, r) ?? fieldAt(e.right, kind, r);
130
+ if (e.t === "call" && e.fn === "if" && e.args.length === 3)
131
+ return fieldAt(e.args[1], kind, r) ?? fieldAt(e.args[2], kind, r);
132
+ return undefined;
133
+ }
134
+ /** The kind of the records an expression reaches, where one kind is all it can reach. */
135
+ function kindOf(e, kind, r) {
136
+ switch (e.t) {
137
+ case "ident":
138
+ return r.relation(kind, e.name) ? r.farOf(kind, e.name) : null;
139
+ case "member":
140
+ return r.farOf(kindOf(e.object, kind, r), e.name);
141
+ case "where":
142
+ return kindOf(e.set, kind, r);
143
+ case "binary":
144
+ return e.op === "|" || e.op === "&" || e.op === "-" ? kindOf(e.left, kind, r) : null;
145
+ case "call": {
146
+ const word = (i) => {
147
+ const arg = e.args[i];
148
+ return arg?.t === "lit" && typeof arg.value === "string" ? arg.value : undefined;
149
+ };
150
+ if (e.fn === "all")
151
+ return word(0) ?? null;
152
+ if (e.fn === "out")
153
+ return e.args.length === 2 ? r.farOf(kindOf(e.args[0], kind, r), word(1) ?? "") : r.farOf(kind, word(0) ?? "");
154
+ if (e.fn === "in")
155
+ return e.args.length === 2 ? r.nearOf(kindOf(e.args[0], kind, r), word(1) ?? "") : r.nearOf(kind, word(0) ?? "");
156
+ if (e.fn === "first" || e.fn === "sort")
157
+ return e.args[0] ? kindOf(e.args[0], kind, r) : null;
158
+ return null;
159
+ }
160
+ default:
161
+ return null;
162
+ }
163
+ }
164
+ /** How tightly a reading binds, for where it needs brackets: a value 9, a comparison 4, and 2, or 1. */
165
+ function level(e) {
166
+ if (e.t === "binary")
167
+ return e.op === "||" ? (oneOf(e) ? 4 : 1) : e.op === "&&" ? 2 : e.op in COMPARE || e.op === "in" ? 4 : e.op === "+" || e.op === "-" ? 5 : e.op === "*" || e.op === "/" || e.op === "%" ? 6 : 4.5;
168
+ if (e.t === "unary" && e.op === "!")
169
+ return 3;
170
+ if (e.t === "where")
171
+ return 3.5;
172
+ return 9;
173
+ }
174
+ const literalOf = (e) => e.t === "lit";
175
+ const callOf = (e, fn) => e.t === "call" && e.fn === fn;
176
+ /** The sides of a run of `and`s, or of `or`s, in order. */
177
+ function sidesOf(e, joiner) {
178
+ return e.t === "binary" && e.op === joiner ? [...sidesOf(e.left, joiner), ...sidesOf(e.right, joiner)] : [e];
179
+ }
180
+ /**
181
+ * `a == 'x' || a == 'y'` is one question — is `a` one of these? — and is
182
+ * read as one: "status ∈ {open, fixing}". The values, or nothing when the
183
+ * disjunction is anything else.
184
+ */
185
+ function oneOf(e) {
186
+ if (e.t !== "binary" || e.op !== "||")
187
+ return undefined;
188
+ const sides = [];
189
+ sides.push(...sidesOf(e, "||"));
190
+ let subject;
191
+ const values = [];
192
+ for (const side of sides) {
193
+ if (side.t !== "binary" || side.op !== "==" || !literalOf(side.right) || typeof side.right.value !== "string")
194
+ return undefined;
195
+ if (subject && JSON.stringify(strip(subject)) !== JSON.stringify(strip(side.left)))
196
+ return undefined;
197
+ subject = side.left;
198
+ values.push(side.right);
199
+ }
200
+ return subject ? { subject, values } : undefined;
201
+ }
202
+ /** A tree without its positions, to compare two readings of the same name. */
203
+ const strip = (e) => JSON.parse(JSON.stringify(e, (key, v) => (key === "at" ? undefined : v)));
204
+ /** The parts that read an expression, in the kind it is read from. */
205
+ function say(e, kind, r, partner) {
206
+ const within = (x, at, k = kind) => (level(x) < at ? [OPEN, ...say(x, k, r), CLOSE] : say(x, k, r));
207
+ switch (e.t) {
208
+ case "lit":
209
+ return [r.valueWords(e.value, partner)];
210
+ case "list":
211
+ return [r.valueWords(e.items.map((item) => (item.t === "lit" ? item.value : null)), partner)];
212
+ case "ident":
213
+ return [name(r.fieldName(kind, e.name))];
214
+ case "member": {
215
+ // The one sheet of assumptions is not a path to say every time: its target margin is the target margin.
216
+ const singleton = callOf(e.object, "first") && e.object.args[0] && callOf(e.object.args[0], "all");
217
+ const owner = kindOf(e.object, kind, r);
218
+ if (singleton && owner) {
219
+ const own = kind !== null && r.fieldName(kind, e.name) === r.fieldName(owner, e.name) && r.definition(kind)?.fields?.shape && Object.prototype.hasOwnProperty.call(r.definition(kind).fields.shape, e.name);
220
+ return own ? [name(`${r.noun(owner)}'s ${r.fieldName(owner, e.name)}`)] : [name(r.fieldName(owner, e.name))];
221
+ }
222
+ const object = say(e.object, kind, r);
223
+ const last = object[object.length - 1];
224
+ if (object.length === 1 && last?.as === "name")
225
+ return [name(`${last.text}'s ${r.fieldName(owner, e.name)}`)];
226
+ return [...object, word("'s"), name(r.fieldName(owner, e.name))];
227
+ }
228
+ case "unary": {
229
+ if (e.op === "-")
230
+ return [op("−", "minus"), ...within(e.operand, 7)];
231
+ return negated(e.operand, kind, r);
232
+ }
233
+ case "where": {
234
+ const of = kindOf(e.set, kind, r);
235
+ const filter = say(e.filter, of, r);
236
+ // A yes/no field needs no "with": "steps not done", "plots tended".
237
+ const plain = filter.every((part) => part.as === "name" || (part.as === "word" && part.text === "not"));
238
+ return [...within(e.set, 4), ...(plain ? [] : [word("with")]), ...(level(e.filter) <= 2 ? [OPEN, ...filter, CLOSE] : filter)];
239
+ }
240
+ case "binary":
241
+ return binary(e, kind, r);
242
+ case "call":
243
+ return call(e, kind, r);
244
+ }
245
+ }
246
+ /** `not …`, read as the thing it denies: `!present(x)` is "x = —", `!(a == b)` is "a ≠ b". */
247
+ function negated(e, kind, r) {
248
+ if (isComparison(e))
249
+ return binary({ ...e, op: TURNED[e.op] }, kind, r);
250
+ if (callOf(e, "present") || callOf(e, "exists"))
251
+ return [...say(e.args[0], kind, r), op("=", "is"), NONE];
252
+ if (e.t === "ident")
253
+ return [word("not"), name(r.fieldName(kind, e.name))];
254
+ return [word("not"), OPEN, ...say(e, kind, r), CLOSE];
255
+ }
256
+ function binary(e, kind, r) {
257
+ const within = (x, at) => (level(x) < at ? [OPEN, ...say(x, kind, r), CLOSE] : say(x, kind, r));
258
+ if (e.op === "&&" || e.op === "||") {
259
+ const many = oneOf(e);
260
+ if (many) {
261
+ const at = fieldAt(many.subject, kind, r);
262
+ return [...say(many.subject, kind, r), op("∈", "is one of"), r.valueWords(many.values.map((v) => v.value), at)];
263
+ }
264
+ const l = e.op === "&&" ? 2 : 1;
265
+ return [...within(e.left, l), word(e.op === "&&" ? "and" : "or"), ...within(e.right, l + 0.5)];
266
+ }
267
+ if (e.op in COMPARE) {
268
+ // A yes/no field said as itself: `done == true` is "done", `done != true` is "not done".
269
+ if (literalOf(e.right) && typeof e.right.value === "boolean" && (e.op === "==" || e.op === "!=")) {
270
+ const yes = (e.op === "==") === e.right.value;
271
+ return yes ? say(e.left, kind, r) : negated(e.left, kind, r);
272
+ }
273
+ const [symbol, said] = COMPARE[e.op];
274
+ const leftAt = fieldAt(e.left, kind, r);
275
+ const rightAt = fieldAt(e.right, kind, r);
276
+ return [...sayAt(e.left, kind, r, rightAt), op(symbol, said), ...sayAt(e.right, kind, r, leftAt)];
277
+ }
278
+ if (e.op === "in")
279
+ return [...within(e.left, 5), op("∈", "is one of"), ...sayAt(e.right, kind, r, fieldAt(e.left, kind, r))];
280
+ const arithmetic = ARITHMETIC[e.op];
281
+ if (arithmetic) {
282
+ const l = level(e);
283
+ return [...within(e.left, l), op(arithmetic[0], arithmetic[1]), ...within(e.right, l + 0.5)];
284
+ }
285
+ const sets = { "|": "or", "&": "and also", "-": "except" };
286
+ return [...within(e.left, 5), word(sets[e.op] ?? e.op), ...within(e.right, 5)];
287
+ }
288
+ /** A side of a comparison: a literal said in the words of the field on the other side. */
289
+ function sayAt(e, kind, r, partner) {
290
+ return e.t === "lit" || e.t === "list" ? say(e, kind, r, partner) : level(e) < 5 ? [OPEN, ...say(e, kind, r), CLOSE] : say(e, kind, r);
291
+ }
292
+ function call(e, kind, r) {
293
+ const arg = (i) => e.args[i];
294
+ const quoted = (i) => {
295
+ const a = e.args[i];
296
+ return a?.t === "lit" && typeof a.value === "string" ? a.value : undefined;
297
+ };
298
+ const set = (i) => {
299
+ const x = arg(i);
300
+ return level(x) < 9 && x.t !== "where" ? [OPEN, ...say(x, kind, r), CLOSE] : say(x, kind, r);
301
+ };
302
+ switch (e.fn) {
303
+ case "out": {
304
+ const key = quoted(e.args.length - 1) ?? "";
305
+ const words = name(humanizeField(key).toLowerCase());
306
+ return e.args.length === 2 ? [words, word("of"), ...set(0)] : [words];
307
+ }
308
+ case "in": {
309
+ const key = quoted(e.args.length - 1) ?? "";
310
+ const near = e.args.length === 2 ? r.nearOf(kindOf(arg(0), kind, r), key) : r.nearOf(kind, key);
311
+ const words = name(near ? r.plural(near) : humanizeField(key).toLowerCase());
312
+ return e.args.length === 2 ? [words, word("of"), ...set(0)] : [words];
313
+ }
314
+ case "all": {
315
+ const of = quoted(0);
316
+ return [name(of ? r.plural(of) : "everything")];
317
+ }
318
+ case "count":
319
+ return [word("number of"), ...set(0)];
320
+ case "exists":
321
+ return [...set(0), op("≠", "is not"), NONE];
322
+ case "present":
323
+ return [...say(arg(0), kind, r), op("≠", "is not"), NONE];
324
+ case "some":
325
+ case "every": {
326
+ const of = kindOf(arg(0), kind, r);
327
+ const condition = arg(1);
328
+ return [...(e.fn === "some" ? [word("some")] : []), ...set(0), word(e.fn === "some" ? "with" : "all with"), ...(level(condition) <= 2 ? [OPEN, ...say(condition, of, r), CLOSE] : say(condition, of, r))];
329
+ }
330
+ case "sum":
331
+ case "min":
332
+ case "max": {
333
+ const of = kindOf(arg(0), kind, r);
334
+ const second = arg(1);
335
+ const what = second.t === "lit" && typeof second.value === "string" ? [name(r.fieldName(of, second.value))] : level(second) < 9 ? [OPEN, ...say(second, of, r), CLOSE] : say(second, of, r);
336
+ return [word(e.fn === "sum" ? "total" : e.fn === "min" ? "least" : "most"), ...what, word("of"), ...set(0)];
337
+ }
338
+ case "first": {
339
+ const inner = arg(0);
340
+ if (callOf(inner, "all")) {
341
+ const of = inner.args[0]?.value;
342
+ if (typeof of === "string")
343
+ return [name(`the ${r.noun(of)}`)];
344
+ }
345
+ return [word("first of"), ...set(0)];
346
+ }
347
+ case "sort":
348
+ return [...set(0), word("by"), ...say(arg(1), kindOf(arg(0), kind, r), r)];
349
+ case "len":
350
+ return [word("length of"), ...say(arg(0), kind, r)];
351
+ case "lower":
352
+ return say(arg(0), kind, r);
353
+ case "contains":
354
+ case "startsWith":
355
+ return [...say(arg(0), kind, r), word(e.fn === "contains" ? "contains" : "starts with"), ...sayAt(arg(1), kind, r, fieldAt(arg(0), kind, r))];
356
+ case "today":
357
+ return [value("today")];
358
+ case "now":
359
+ return [value("now")];
360
+ case "date":
361
+ return literalOf(arg(0)) && typeof arg(0).value === "string" ? [value(dayAsRead(String(arg(0).value)))] : say(arg(0), kind, r);
362
+ case "days":
363
+ case "hours": {
364
+ const unit = e.fn;
365
+ const [from, to] = [arg(0), arg(1)];
366
+ if (callOf(to, "today") || callOf(to, "now"))
367
+ return [word(`${unit} since`), ...say(from, kind, r)];
368
+ if (callOf(from, "today") || callOf(from, "now"))
369
+ return [word(`${unit} until`), ...say(to, kind, r)];
370
+ return [word(`${unit} from`), ...say(from, kind, r), word("to"), ...say(to, kind, r)];
371
+ }
372
+ case "if":
373
+ return [OPEN, ...say(arg(1), kind, r), word("if"), ...say(arg(0), kind, r), word(","), word("else"), ...say(arg(2), kind, r), CLOSE];
374
+ case "either":
375
+ return e.args.flatMap((one, i) => (i === 0 ? say(one, kind, r) : [word(","), word("else"), ...say(one, kind, r)]));
376
+ default:
377
+ return [word(e.fn), OPEN, ...e.args.flatMap((one, i) => (i === 0 ? say(one, kind, r) : [word(","), ...say(one, kind, r)])), CLOSE];
378
+ }
379
+ }
380
+ /** A rule's line from the declaration alone: what must hold, and which records it judges. */
381
+ export function ruleLineOf(rule, words) {
382
+ const r = reader(words);
383
+ const kind = rule.over === "graph" ? null : rule.over;
384
+ return finishedLine({
385
+ ...(kind === null ? {} : { kind }),
386
+ parts: say(rule.require, kind, r),
387
+ ...(rule.when ? { when: say(rule.when, kind, r) } : {}),
388
+ });
389
+ }
390
+ /**
391
+ * THE SAME LINE FOR ONE RECORD THAT BREAKS IT: each part of the judgment
392
+ * that does not hold, with the values the record has, the comparison turned
393
+ * the way it stands. A part it cannot read with values is said as the rule
394
+ * says it, after "not". Never throws: a line that cannot be worked out is
395
+ * the rule's own line.
396
+ */
397
+ export function brokenLineOf(rule, words, ctx) {
398
+ const r = reader(words);
399
+ const kind = rule.over === "graph" ? null : rule.over;
400
+ const subject = ctx.subject;
401
+ const held = (e) => {
402
+ try {
403
+ return evaluateExpr(e, { ...ctx, budget: 2_000 });
404
+ }
405
+ catch {
406
+ return undefined;
407
+ }
408
+ };
409
+ const valued = (e, partner) => {
410
+ const parts = sayAt(e, kind, r, partner);
411
+ if (e.t === "lit" || e.t === "list" || callOf(e, "today") || callOf(e, "now") || callOf(e, "date"))
412
+ return parts;
413
+ const v = held(e);
414
+ if (v === undefined)
415
+ return parts;
416
+ const at = fieldAt(e, kind, r);
417
+ const shown = r.valueWords(v, at ? { ...at, format: r.formatOf(at.kind, at.key) ?? (partner ? r.formatOf(partner.kind, partner.key) : undefined) } : partner);
418
+ return v instanceof NodeSet ? [...parts, word(":"), shown] : [...parts, shown];
419
+ };
420
+ const why = (e) => {
421
+ if (e.t === "binary" && e.op === "&&") {
422
+ const sides = [];
423
+ sides.push(...sidesOf(e, "&&"));
424
+ const broken = sides.filter((side) => held(side) !== true);
425
+ return (broken.length > 0 ? broken : sides).flatMap((side, i) => [...(i > 0 ? [word("and")] : []), ...(level(side) <= 2 ? [OPEN, ...why(side), CLOSE] : why(side))]);
426
+ }
427
+ if (e.t === "binary" && e.op === "||") {
428
+ const many = oneOf(e);
429
+ if (many) {
430
+ const at = fieldAt(many.subject, kind, r);
431
+ return [...valued(many.subject), op("∉", "is not one of"), r.valueWords(many.values.map((v) => v.value), at)];
432
+ }
433
+ const sides = [];
434
+ sides.push(...sidesOf(e, "||"));
435
+ return sides.flatMap((side, i) => [...(i > 0 ? [word("and")] : []), ...(level(side) <= 2 ? [OPEN, ...why(side), CLOSE] : why(side))]);
436
+ }
437
+ if (e.t === "binary" && e.op in COMPARE) {
438
+ if (literalOf(e.right) && typeof e.right.value === "boolean" && (e.op === "==" || e.op === "!=")) {
439
+ // It was not what was asked: `done == true` broken is "not done".
440
+ const yes = (e.op === "==") === e.right.value;
441
+ return yes ? negated(e.left, kind, r) : say(e.left, kind, r);
442
+ }
443
+ const turned = TURNED[e.op];
444
+ const [symbol, said] = COMPARE[turned];
445
+ const leftAt = fieldAt(e.left, kind, r);
446
+ const rightAt = fieldAt(e.right, kind, r);
447
+ // Absent where there is nothing to compare: `quote != null` broken is "quote = —".
448
+ if (literalOf(e.right) && e.right.value === null)
449
+ return [...(turned === "==" ? sayAt(e.left, kind, r, rightAt) : valued(e.left, rightAt)), op(symbol, said), NONE];
450
+ // `status != 'booked'` broken is "status = booked": the value would only say the word again.
451
+ const plain = turned === "==" && (literalOf(e.right) || literalOf(e.left));
452
+ return [...(plain ? sayAt(e.left, kind, r, rightAt) : valued(e.left, rightAt)), op(symbol, said), ...(plain ? sayAt(e.right, kind, r, leftAt) : valued(e.right, leftAt))];
453
+ }
454
+ if (e.t === "binary" && e.op === "in")
455
+ return [...valued(e.left), op("∉", "is not one of"), ...sayAt(e.right, kind, r, fieldAt(e.left, kind, r))];
456
+ if (e.t === "unary" && e.op === "!") {
457
+ const inner = e.operand;
458
+ if (isComparison(inner))
459
+ return why({ ...inner, op: TURNED[inner.op] });
460
+ // It is there after all: "applied 3 Oct 2026 ≠ —", "purchases with status ≠ done: Tile and Grout ≠ —".
461
+ if (callOf(inner, "present") || callOf(inner, "exists"))
462
+ return [...valued(inner.args[0]), op("≠", "is not"), NONE];
463
+ if (inner.t === "ident")
464
+ return say(inner, kind, r);
465
+ return [word("not"), OPEN, ...negated(inner, kind, r), CLOSE];
466
+ }
467
+ if (callOf(e, "present") || callOf(e, "exists"))
468
+ return [...say(e.args[0], kind, r), op("=", "is"), NONE];
469
+ if (callOf(e, "some"))
470
+ return [...say(e, kind, r).slice(1), op("=", "is"), NONE];
471
+ if (callOf(e, "every") && e.args.length === 2) {
472
+ // The members that do not, by name.
473
+ const set = held(e.args[0]);
474
+ if (set instanceof NodeSet) {
475
+ const failing = set.nodes.filter((member) => {
476
+ try {
477
+ return evaluateExpr(e.args[1], { ...ctx, subject: member, budget: 2_000 }) !== true;
478
+ }
479
+ catch {
480
+ return true;
481
+ }
482
+ });
483
+ return [...say(e, kind, r), word(","), word("not"), r.valueWords(new NodeSet(failing))];
484
+ }
485
+ }
486
+ if (e.t === "ident")
487
+ return [word("not"), name(r.fieldName(kind, e.name))];
488
+ return [word("not"), OPEN, ...say(e, kind, r), CLOSE];
489
+ };
490
+ let parts;
491
+ try {
492
+ parts = why(rule.require);
493
+ }
494
+ catch {
495
+ parts = [word("not"), OPEN, ...say(rule.require, kind, r), CLOSE];
496
+ }
497
+ return finishedLine({
498
+ ...(kind === null ? {} : { kind }),
499
+ parts,
500
+ ...(subject ? { record: labelOf(words.schema.tryDefinition(subject.kind), subject) } : {}),
501
+ });
502
+ }
503
+ /** The formats a rule's own sentence gives its names: `{margin|percent}` says margin is a percent. */
504
+ export function formatsSaid(says) {
505
+ const said = new Map();
506
+ for (const part of says ?? []) {
507
+ if (part.expr?.t === "ident" && part.format && (part.format === "money" || part.format === "percent" || part.format === "date"))
508
+ said.set(part.expr.name, part.format);
509
+ }
510
+ return said;
511
+ }
512
+ //# sourceMappingURL=rule-line.js.map