@graview/core 0.1.54 → 0.1.55

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 (111) hide show
  1. package/dist/alias-findings.d.ts +40 -0
  2. package/dist/alias-findings.d.ts.map +1 -0
  3. package/dist/alias-findings.js +95 -0
  4. package/dist/alias-findings.js.map +1 -0
  5. package/dist/app.d.ts +13 -0
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js.map +1 -1
  8. package/dist/catalog.d.ts +32 -0
  9. package/dist/catalog.d.ts.map +1 -1
  10. package/dist/catalog.js +17 -1
  11. package/dist/catalog.js.map +1 -1
  12. package/dist/check.d.ts +2 -0
  13. package/dist/check.d.ts.map +1 -1
  14. package/dist/check.js +2 -0
  15. package/dist/check.js.map +1 -1
  16. package/dist/cli/check/aliases.d.ts +11 -0
  17. package/dist/cli/check/aliases.d.ts.map +1 -0
  18. package/dist/cli/check/aliases.js +17 -0
  19. package/dist/cli/check/aliases.js.map +1 -0
  20. package/dist/cli/check/context.d.ts +2 -0
  21. package/dist/cli/check/context.d.ts.map +1 -1
  22. package/dist/cli/check/context.js.map +1 -1
  23. package/dist/cli/check/index.d.ts +2 -0
  24. package/dist/cli/check/index.d.ts.map +1 -1
  25. package/dist/cli/check/index.js +2 -0
  26. package/dist/cli/check/index.js.map +1 -1
  27. package/dist/cli/check/jobs.d.ts +12 -0
  28. package/dist/cli/check/jobs.d.ts.map +1 -0
  29. package/dist/cli/check/jobs.js +25 -0
  30. package/dist/cli/check/jobs.js.map +1 -0
  31. package/dist/cli/check.d.ts +13 -0
  32. package/dist/cli/check.d.ts.map +1 -1
  33. package/dist/cli/check.js +25 -2
  34. package/dist/cli/check.js.map +1 -1
  35. package/dist/cli/describe.d.ts.map +1 -1
  36. package/dist/cli/describe.js +41 -0
  37. package/dist/cli/describe.js.map +1 -1
  38. package/dist/cli/document-schema.d.ts.map +1 -1
  39. package/dist/cli/document-schema.js +7 -0
  40. package/dist/cli/document-schema.js.map +1 -1
  41. package/dist/compose.d.ts +99 -0
  42. package/dist/compose.d.ts.map +1 -0
  43. package/dist/compose.js +245 -0
  44. package/dist/compose.js.map +1 -0
  45. package/dist/document/compile-checked.d.ts.map +1 -1
  46. package/dist/document/compile-checked.js +11 -5
  47. package/dist/document/compile-checked.js.map +1 -1
  48. package/dist/document/compiled.d.ts.map +1 -1
  49. package/dist/document/compiled.js +6 -0
  50. package/dist/document/compiled.js.map +1 -1
  51. package/dist/document/design-findings.d.ts +32 -0
  52. package/dist/document/design-findings.d.ts.map +1 -0
  53. package/dist/document/design-findings.js +593 -0
  54. package/dist/document/design-findings.js.map +1 -0
  55. package/dist/document/edit.d.ts +1 -1
  56. package/dist/document/edit.d.ts.map +1 -1
  57. package/dist/document/edit.js +231 -2
  58. package/dist/document/edit.js.map +1 -1
  59. package/dist/document/findings.d.ts +8 -2
  60. package/dist/document/findings.d.ts.map +1 -1
  61. package/dist/document/findings.js +4 -3
  62. package/dist/document/findings.js.map +1 -1
  63. package/dist/document/graview-template.d.ts +3 -3
  64. package/dist/document/purpose-spec.d.ts +37 -0
  65. package/dist/document/purpose-spec.d.ts.map +1 -0
  66. package/dist/document/purpose-spec.js +41 -0
  67. package/dist/document/purpose-spec.js.map +1 -0
  68. package/dist/document/schema.d.ts +24 -11
  69. package/dist/document/schema.d.ts.map +1 -1
  70. package/dist/document/schema.js +16 -0
  71. package/dist/document/schema.js.map +1 -1
  72. package/dist/document/to-document.d.ts.map +1 -1
  73. package/dist/document/to-document.js +5 -1
  74. package/dist/document/to-document.js.map +1 -1
  75. package/dist/document.schema.json +120 -2
  76. package/dist/friction-record.d.ts +52 -0
  77. package/dist/friction-record.d.ts.map +1 -0
  78. package/dist/friction-record.js +36 -0
  79. package/dist/friction-record.js.map +1 -0
  80. package/dist/friction.d.ts +209 -0
  81. package/dist/friction.d.ts.map +1 -0
  82. package/dist/friction.js +302 -0
  83. package/dist/friction.js.map +1 -0
  84. package/dist/index.d.ts +3 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +2 -0
  87. package/dist/index.js.map +1 -1
  88. package/dist/job-findings.d.ts +39 -0
  89. package/dist/job-findings.d.ts.map +1 -0
  90. package/dist/job-findings.js +171 -0
  91. package/dist/job-findings.js.map +1 -0
  92. package/dist/job-shape.d.ts +57 -0
  93. package/dist/job-shape.d.ts.map +1 -0
  94. package/dist/job-shape.js +5 -0
  95. package/dist/job-shape.js.map +1 -0
  96. package/dist/jobs.d.ts +62 -0
  97. package/dist/jobs.d.ts.map +1 -0
  98. package/dist/jobs.js +112 -0
  99. package/dist/jobs.js.map +1 -0
  100. package/dist/learn.d.ts +151 -0
  101. package/dist/learn.d.ts.map +1 -0
  102. package/dist/learn.js +520 -0
  103. package/dist/learn.js.map +1 -0
  104. package/dist/schema/types.d.ts +9 -0
  105. package/dist/schema/types.d.ts.map +1 -1
  106. package/dist/search.d.ts.map +1 -1
  107. package/dist/search.js +2 -0
  108. package/dist/search.js.map +1 -1
  109. package/dist/version.d.ts +1 -1
  110. package/dist/version.js +1 -1
  111. package/package.json +17 -1
@@ -0,0 +1,99 @@
1
+ /**
2
+ * `@graview/core/compose` — ONE COHERENT LOOK, DERIVED FROM THE DECLARATION
3
+ * (Roadmap f-design-composer).
4
+ *
5
+ * An app looked generic until somebody told a model, several times over, to
6
+ * make it usable, intuitive and beautiful; and the advice a host answered
7
+ * with was a table from a field's type to a lens, which only ever added. The
8
+ * framework already draws a good default from the declaration — a home that
9
+ * opens on the app's jobs, a card from a glance, the gallery of its places —
10
+ * so what is left to propose is small, and is one proposal:
11
+ *
12
+ * - `inferJobs(document | app)`: what the app's people most likely come to
13
+ * do, read off its kinds (a status that ends and a date it is due by; a
14
+ * flow's opening value; a relation many records lack), at most three,
15
+ * conservative, never drawn until a person declares them;
16
+ * - `composeDesign(document)`: those jobs where the app says none, the
17
+ * critic's own edits (`designFindings`: removals and hides first, a
18
+ * glance for the kind people see most where it lacks one, the home
19
+ * given what it needs to read first), and an accent where the brand has
20
+ * none — nothing the derived defaults already draw well. Applied with
21
+ * `editDocument`, the document compiles and the critic has no warning
22
+ * left to say.
23
+ *
24
+ * Off every page: a host proposes it (Graview Cloud's create and improve
25
+ * tools), a person accepts it, and only then is it the declaration.
26
+ */
27
+ import type { GraviewApp } from "./app.js";
28
+ import { type DocumentEdit } from "./document/edit.js";
29
+ import type { GraviewDocument } from "./document/schema.js";
30
+ import type { JobDeclaration } from "./job-shape.js";
31
+ import type { AnySchema } from "./schema/schema.js";
32
+ export type { DocumentEdit } from "./document/edit.js";
33
+ /** The records an inference may count — a snapshot's or a seed's nodes and edges. Without them, nothing is inferred from data. */
34
+ export interface ComposeRecords {
35
+ readonly nodes: readonly {
36
+ readonly id: string;
37
+ readonly kind: string;
38
+ }[];
39
+ readonly edges: readonly {
40
+ readonly kind: string;
41
+ readonly from: string;
42
+ readonly to: string;
43
+ }[];
44
+ }
45
+ export interface ComposeOptions {
46
+ /** The app's records, so a relation many of them lack can be a job ("Which features have no area?"). */
47
+ readonly records?: ComposeRecords;
48
+ }
49
+ /** The most jobs an inference proposes: a guess past three is no longer about what matters most. */
50
+ export declare const MOST_INFERRED_JOBS = 3;
51
+ /** A design proposed whole: the edits, in `propose_change`'s words, and why, a sentence each. */
52
+ export interface DesignProposal {
53
+ readonly edits: readonly DocumentEdit[];
54
+ readonly said: readonly string[];
55
+ }
56
+ /**
57
+ * WHAT AN APP'S PEOPLE MOST LIKELY COME TO DO, read off its declaration (and
58
+ * its records, where given): at most three jobs, one per kind, each one the
59
+ * checker accepts. Conservative — a kind says a job only where its fields
60
+ * leave no doubt:
61
+ *
62
+ * - a choice that ends (done, booked, shipped…) and a date it is due by:
63
+ * "Which vendors are due within a week and not yet booked?";
64
+ * - a relation of one that a quarter or more of its records lack (with
65
+ * `records`): "Which features have no area?";
66
+ * - a status whose first value is one a record waits at (new, open,
67
+ * pending, draft…): "Which requests are still open?".
68
+ *
69
+ * Each names the act that answers it where the app has one. A proposal for a
70
+ * person to accept (`add-job`): never drawn until it is declared.
71
+ */
72
+ export declare function inferJobs(source: GraviewDocument | GraviewApp<AnySchema>, options?: ComposeOptions): JobDeclaration[];
73
+ export declare const ACCENT_PALETTE: readonly ["#0f6e5c", "#1d5fbf", "#8a3ffc", "#b5487a", "#2f7d32", "#5b6b12", "#0b6e8a", "#6d4bb3"];
74
+ /** The palette's color for a name: the same name, the same color. */
75
+ export declare function accentFor(name: string): string;
76
+ /**
77
+ * ONE COHERENT DESIGN FOR A DOCUMENT, PROPOSED WHOLE: `{ edits, said }`. A
78
+ * TypeScript app is read as the document it would be (`toDocument`), and
79
+ * its brand, a whole palette, counts as a color of its own; its edits say
80
+ * what to change in its code.
81
+ *
82
+ * 1. jobs (`add-job`), inferred by `inferJobs`, where the document says
83
+ * none — the derived home opens on them; a declared home is given a
84
+ * list answering each (the critic's `design-job-unanswered` edit);
85
+ * 2. the critic's own edits (`designFindings`), asked again after each
86
+ * until it has no warning left: places that repeat removed, more than
87
+ * a person scans kept off the bar, the home given one thing to read
88
+ * first, cards that say only their name derived again, ids taken out,
89
+ * a glance for the kind people see most where it lacks a card;
90
+ * 3. an accent (`set-brand`) only where the brand has none, from
91
+ * `ACCENT_PALETTE` by the app's name.
92
+ *
93
+ * Nothing the derived defaults already draw well. Every edit is one
94
+ * `editDocument` accepts in turn, so applying `edits` gives a document that
95
+ * compiles, on which `designFindings` warns of nothing. `said` gives the
96
+ * reason for each, in a sentence a person reads before accepting.
97
+ */
98
+ export declare function composeDesign(source: GraviewDocument | GraviewApp<AnySchema>, options?: ComposeOptions): DesignProposal;
99
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,sBAAsB,CAAC;AAItE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,kIAAkI;AAClI,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1E,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClG;AAED,MAAM,WAAW,cAAc;IAC7B,wGAAwG;IACxG,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC;AAED,oGAAoG;AACpG,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,iGAAiG;AACjG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AA4HD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,EAAE,CAiBzH;AAQD,eAAO,MAAM,cAAc,mGAAoG,CAAC;AAEhI,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI9C;AAKD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAyC3H"}
@@ -0,0 +1,245 @@
1
+ import { designFindings } from "./document/design-findings.js";
2
+ import { editDocument } from "./document/edit.js";
3
+ import { givesRelationAct } from "./document/relation-acts.js";
4
+ import { NAME } from "./document/schema.js";
5
+ import { toDocument } from "./document/to-document.js";
6
+ import { jobFindings, jobWorldOfDocument } from "./job-findings.js";
7
+ import { relationActName } from "./mutations/derived-names.js";
8
+ import { humanizeField } from "./schema/define-node.js";
9
+ import { accentProblem } from "./theme/accent.js";
10
+ /** The most jobs an inference proposes: a guess past three is no longer about what matters most. */
11
+ export const MOST_INFERRED_JOBS = 3;
12
+ /*
13
+ * VALUES THAT END A RECORD'S WAY. Done-like ones are what people work
14
+ * toward (and say: "not yet booked"); the ones that end it otherwise are
15
+ * left out of a job's records but never named as its goal.
16
+ */
17
+ const DONE = new Set(["done", "complete", "completed", "closed", "shipped", "booked", "paid", "finished", "resolved", "published", "delivered", "approved", "merged", "released", "signed", "won", "returned", "fixed", "filed"]);
18
+ const ENDED = new Set(["canceled", "cancelled", "declined", "rejected", "withdrawn", "abandoned", "lost", "dropped", "archived", "wontfix", "won't do", "duplicate"]);
19
+ /** A flow's opening values, as a question says them: "Which requests are still open?" */
20
+ const OPENING = { new: "new", open: "open", pending: "pending", submitted: "submitted", requested: "requested", proposed: "proposed", draft: "in draft", unread: "unread", waiting: "waiting", inbox: "in the inbox", todo: "to do", "to do": "to do", triage: "in triage", received: "received", unassigned: "unassigned" };
21
+ /** A date a record is due by — not the day it was written or happened. */
22
+ const DUE = /due|deadline|until|needed|needby|target|expires|^ends?(on|at)?$|^by$/i;
23
+ const said = (value) => value.trim().toLowerCase();
24
+ const kebab = (words) => words
25
+ .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
26
+ .toLowerCase()
27
+ .replace(/[^a-z0-9]+/g, "-")
28
+ .replace(/^-+|-+$/g, "");
29
+ const quote = (value) => `'${value.replace(/\\/g, "\\\\").replace(/'/g, "\\'")}'`;
30
+ /** A kind's words as the rest of the framework says them (`pluralOf`, `nounOf`): its own, else its name humanized. */
31
+ const nounOf = (document, kind) => document.kinds[kind]?.noun?.toLowerCase() ?? humanizeField(kind).toLowerCase();
32
+ const pluralOf = (document, kind) => document.kinds[kind]?.plural?.toLowerCase() ?? `${nounOf(document, kind)}s`;
33
+ const listed = (words, join = "or") => (words.length < 2 ? words.join("") : `${words.slice(0, -1).join(", ")} ${join} ${words[words.length - 1]}`);
34
+ const actsOn = (document, kind) => Object.entries(document.acts ?? {}).filter(([, act]) => [act.on ?? []].flat().includes(kind));
35
+ /** A choice field that ends: some values a record is done at, some it is still on the way. */
36
+ function endingChoice(spec) {
37
+ const choices = Object.entries(spec.fields).filter(([, field]) => field.type === "enum" && Array.isArray(field.options) && field.options.length >= 2);
38
+ // A field called a status, stage or state first; then any choice whose values end.
39
+ const ranked = [...choices].sort(([a], [b]) => Number(/status|stage|state|phase/i.test(b)) - Number(/status|stage|state|phase/i.test(a)));
40
+ for (const [field, choice] of ranked) {
41
+ const options = choice.options;
42
+ const done = options.filter((value) => DONE.has(said(value)));
43
+ const ended = options.filter((value) => ENDED.has(said(value)));
44
+ if (done.length > 0 && done.length + ended.length < options.length)
45
+ return { field, options, done, ended };
46
+ }
47
+ return undefined;
48
+ }
49
+ /** The act people take next to bring a record to one of these values: one that sets the field to it. */
50
+ function actSetting(document, kind, field, values) {
51
+ return actsOn(document, kind).find(([, act]) => typeof act.sets?.[field] === "string" && values.includes(act.sets[field]))?.[0];
52
+ }
53
+ /** "Which vendors are due within a week and not yet booked?" — a choice that ends and the date a record is due by. */
54
+ function dueSoon(document, kind, spec) {
55
+ const choice = endingChoice(spec);
56
+ const due = Object.entries(spec.fields).find(([name, field]) => (field.type === "date" || field.type === "datetime") && DUE.test(name));
57
+ if (!choice || !due)
58
+ return undefined;
59
+ const [date, field] = due;
60
+ const ends = [...choice.done, ...choice.ended];
61
+ const open = ends.length === 1 ? `${choice.field} != ${quote(ends[0])}` : `not (${choice.field} in [${ends.map(quote).join(", ")}])`;
62
+ const day = field.type === "datetime" ? `date(${date})` : date;
63
+ const act = actSetting(document, kind, choice.field, choice.done);
64
+ return {
65
+ rank: 0,
66
+ name: `${kebab(kind)}-due-soon`,
67
+ ask: `Which ${pluralOf(document, kind)} are due within a week and not yet ${listed(choice.done.map(said))}?`,
68
+ kind,
69
+ where: `${open} and days(today(), ${day}) <= 7`,
70
+ sort: date,
71
+ ...(act ? { act } : {}),
72
+ };
73
+ }
74
+ /** "Which features have no area?" — a relation of one that many of the records lack. */
75
+ function lacking(document, kind, spec, records) {
76
+ if (!records)
77
+ return undefined;
78
+ const ids = records.nodes.filter((node) => node.kind === kind).map((node) => node.id);
79
+ if (ids.length < 4)
80
+ return undefined;
81
+ for (const [edge, relation] of Object.entries(spec.edges ?? {})) {
82
+ if (relation.cardinality !== "one" || !Array.isArray(relation.to) || relation.to.length !== 1 || !document.kinds[relation.to[0]])
83
+ continue;
84
+ const linked = new Set(records.edges.filter((one) => one.kind === edge).map((one) => one.from));
85
+ const without = ids.filter((id) => !linked.has(id)).length;
86
+ // Many: a quarter of them or more, and at least three — a hole in the data, not one record waiting.
87
+ if (without < 3 || without / ids.length < 0.25)
88
+ continue;
89
+ const declared = actsOn(document, kind).find(([, act]) => act.connects === edge)?.[0];
90
+ const derived = relationActName("connect", kind, edge);
91
+ const act = declared ?? (givesRelationAct(derived, document.kinds) ? derived : undefined);
92
+ return {
93
+ rank: 1,
94
+ name: `${kebab(kind)}-without-${kebab(edge)}`,
95
+ ask: `Which ${pluralOf(document, kind)} have no ${nounOf(document, relation.to[0])}?`,
96
+ kind,
97
+ where: `count(out(${quote(edge)})) == 0`,
98
+ ...(act ? { act } : {}),
99
+ };
100
+ }
101
+ return undefined;
102
+ }
103
+ /** "Which requests are still open?" — a flow whose first value is one a record waits at. */
104
+ function stillOpening(document, kind, spec) {
105
+ const choice = endingChoice(spec);
106
+ if (!choice || !/status|stage|state|phase/i.test(choice.field))
107
+ return undefined;
108
+ const first = choice.options[0];
109
+ const words = OPENING[said(first)];
110
+ if (!words || choice.done.includes(first))
111
+ return undefined;
112
+ const acts = actsOn(document, kind);
113
+ // The act that moves a record on from it: allowed only there, else one that sets the field to another value.
114
+ const act = acts.find(([, act]) => typeof act.allowedWhen === "string" && act.allowedWhen.includes(quote(first)) && act.sets?.[choice.field] !== undefined)?.[0] ??
115
+ acts.find(([, act]) => typeof act.sets?.[choice.field] === "string" && act.sets[choice.field] !== first && !choice.ended.includes(act.sets[choice.field]))?.[0];
116
+ const date = Object.entries(spec.fields).find(([, field]) => field.type === "date")?.[0];
117
+ return {
118
+ rank: 2,
119
+ name: `${kebab(kind)}-still-${kebab(first)}`,
120
+ ask: `Which ${pluralOf(document, kind)} are still ${words}?`,
121
+ kind,
122
+ where: `${choice.field} == ${quote(first)}`,
123
+ ...(date ? { sort: date } : {}),
124
+ ...(act ? { act } : {}),
125
+ };
126
+ }
127
+ const isDocument = (source) => source.format === "graview-document";
128
+ /**
129
+ * WHAT AN APP'S PEOPLE MOST LIKELY COME TO DO, read off its declaration (and
130
+ * its records, where given): at most three jobs, one per kind, each one the
131
+ * checker accepts. Conservative — a kind says a job only where its fields
132
+ * leave no doubt:
133
+ *
134
+ * - a choice that ends (done, booked, shipped…) and a date it is due by:
135
+ * "Which vendors are due within a week and not yet booked?";
136
+ * - a relation of one that a quarter or more of its records lack (with
137
+ * `records`): "Which features have no area?";
138
+ * - a status whose first value is one a record waits at (new, open,
139
+ * pending, draft…): "Which requests are still open?".
140
+ *
141
+ * Each names the act that answers it where the app has one. A proposal for a
142
+ * person to accept (`add-job`): never drawn until it is declared.
143
+ */
144
+ export function inferJobs(source, options = {}) {
145
+ const document = isDocument(source) ? source : toDocument(source).document;
146
+ const world = jobWorldOfDocument(document);
147
+ const candidates = [];
148
+ for (const [kind, spec] of Object.entries(document.kinds)) {
149
+ const found = dueSoon(document, kind, spec) ?? lacking(document, kind, spec, options.records) ?? stillOpening(document, kind, spec);
150
+ if (!found || !NAME.test(found.name))
151
+ continue;
152
+ // Only what the checker would accept: a where that reads, a sort it sorts by, an act on the kind.
153
+ if (jobFindings({ jobs: [found] }, world).length > 0)
154
+ continue;
155
+ candidates.push(found);
156
+ }
157
+ return candidates
158
+ .map((candidate, at) => ({ candidate, at }))
159
+ .sort((a, b) => a.candidate.rank - b.candidate.rank || a.at - b.at)
160
+ .slice(0, MOST_INFERRED_JOBS)
161
+ .sort((a, b) => a.at - b.at)
162
+ .map(({ candidate: { rank: _rank, ...job } }) => job);
163
+ }
164
+ /*
165
+ * THE PALETTE AN APP WITH NO ACCENT IS GIVEN ONE FROM: eight hues, each one
166
+ * that reads as a link on Graview's light and dark grounds (`accentProblem`),
167
+ * picked by a stable hash of the app's name so the same app always gets the
168
+ * same one and two apps side by side most likely differ.
169
+ */
170
+ export const ACCENT_PALETTE = ["#0f6e5c", "#1d5fbf", "#8a3ffc", "#b5487a", "#2f7d32", "#5b6b12", "#0b6e8a", "#6d4bb3"];
171
+ /** The palette's color for a name: the same name, the same color. */
172
+ export function accentFor(name) {
173
+ let hash = 2166136261;
174
+ for (const char of name)
175
+ hash = Math.imul(hash ^ char.codePointAt(0), 16777619) >>> 0;
176
+ return ACCENT_PALETTE[hash % ACCENT_PALETTE.length];
177
+ }
178
+ /** The most rounds the critic is asked again: each fixes what it said, and a fix can uncover one more. */
179
+ const MOST_ROUNDS = 40;
180
+ /**
181
+ * ONE COHERENT DESIGN FOR A DOCUMENT, PROPOSED WHOLE: `{ edits, said }`. A
182
+ * TypeScript app is read as the document it would be (`toDocument`), and
183
+ * its brand, a whole palette, counts as a color of its own; its edits say
184
+ * what to change in its code.
185
+ *
186
+ * 1. jobs (`add-job`), inferred by `inferJobs`, where the document says
187
+ * none — the derived home opens on them; a declared home is given a
188
+ * list answering each (the critic's `design-job-unanswered` edit);
189
+ * 2. the critic's own edits (`designFindings`), asked again after each
190
+ * until it has no warning left: places that repeat removed, more than
191
+ * a person scans kept off the bar, the home given one thing to read
192
+ * first, cards that say only their name derived again, ids taken out,
193
+ * a glance for the kind people see most where it lacks a card;
194
+ * 3. an accent (`set-brand`) only where the brand has none, from
195
+ * `ACCENT_PALETTE` by the app's name.
196
+ *
197
+ * Nothing the derived defaults already draw well. Every edit is one
198
+ * `editDocument` accepts in turn, so applying `edits` gives a document that
199
+ * compiles, on which `designFindings` warns of nothing. `said` gives the
200
+ * reason for each, in a sentence a person reads before accepting.
201
+ */
202
+ export function composeDesign(source, options = {}) {
203
+ // A TypeScript app is read as the document it would be; its brand is a whole palette a document cannot carry, so it has a color of its own.
204
+ const colored = isDocument(source) ? source.brand?.accent !== undefined : source.brand !== undefined;
205
+ let doc = isDocument(source) ? source : toDocument(source).document;
206
+ const edits = [];
207
+ const reasons = [];
208
+ const applied = new Set();
209
+ const attempt = (edit) => {
210
+ const key = JSON.stringify(edit);
211
+ if (applied.has(key) || edits.length >= 50)
212
+ return false;
213
+ applied.add(key);
214
+ const outcome = editDocument(doc, [edit]);
215
+ if (!outcome.ok)
216
+ return false;
217
+ doc = outcome.document;
218
+ edits.push(edit);
219
+ return true;
220
+ };
221
+ const declared = Array.isArray(doc.purpose?.jobs) ? doc.purpose.jobs : [];
222
+ if (declared.length === 0) {
223
+ for (const job of inferJobs(doc, options)) {
224
+ const title = job.act ? doc.acts?.[job.act]?.title : undefined;
225
+ if (attempt({ op: "add-job", job: job }))
226
+ reasons.push(`Nothing says what this app's people come to do, so its home said only what it holds: "${job.ask}" is a job it can answer from its ${pluralOf(doc, job.kind)}${title ? `, with "${title}" offered on each` : job.act ? ", with the act that answers it offered on each" : ""}.`);
227
+ }
228
+ }
229
+ for (let round = 0; round < MOST_ROUNDS; round += 1) {
230
+ // One finding at a time, asked again after it: two edits worked out against the same home would undo each other.
231
+ const next = designFindings(doc).find((finding) => finding.severity === "warning" && (finding.edits ?? []).some((edit) => !applied.has(JSON.stringify(edit))));
232
+ if (!next)
233
+ break;
234
+ const took = (next.edits ?? []).map((edit) => attempt(edit)).some(Boolean);
235
+ if (took)
236
+ reasons.push(next.fix ? `${next.message} So: ${next.fix}.` : next.message);
237
+ }
238
+ if (!colored) {
239
+ const accent = accentFor(doc.name);
240
+ if (!accentProblem(accent) && attempt({ op: "set-brand", accent }))
241
+ reasons.push(`The app has no color of its own, so it takes ${accent}, chosen from Graview's palette by its name ("${doc.name}"); set-brand says another.`);
242
+ }
243
+ return { edits, said: reasons };
244
+ }
245
+ //# sourceMappingURL=compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compile-checked.d.ts","sourceRoot":"","sources":["../../src/document/compile-checked.ts"],"names":[],"mappings":"AASA,OAAO,EAA8D,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAY5J;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,gBAAgB,GAAG,eAAe,CA6B9G"}
1
+ {"version":3,"file":"compile-checked.d.ts","sourceRoot":"","sources":["../../src/document/compile-checked.ts"],"names":[],"mappings":"AAUA,OAAO,EAA8D,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAc5J;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,gBAAgB,GAAG,eAAe,CAgC9G"}
@@ -1,4 +1,5 @@
1
- import { checkApp } from "../cli/check.js";
1
+ import { checkApp, dropAnsweredGlances } from "../cli/check.js";
2
+ import { designFindings } from "./design-findings.js";
2
3
  import { actFindings } from "./act-findings.js";
3
4
  import { linkedFindings } from "./linked-findings.js";
4
5
  import { connectionFindings } from "./connection-findings.js";
@@ -11,6 +12,8 @@ import { compileDocumentWithoutCheck, inDocumentWords, readDocument } from "./co
11
12
  import { hasErrors } from "./findings.js";
12
13
  import { viewBraces, viewKeys } from "./views.js";
13
14
  import { withRightNames } from "./right-names.js";
15
+ import { documentJobFindings } from "../job-findings.js";
16
+ import { documentAliasFindings } from "../alias-findings.js";
14
17
  /*
15
18
  * THE CHECKED COMPILE, in a module of its own: `compile.ts` is what a page
16
19
  * compiles a document with, and the checker it does not ask for — with
@@ -30,28 +33,31 @@ export function compileDocument(raw, options = {}) {
30
33
  const read = readDocument(raw).document;
31
34
  // A name written in the other convention is told its right spelling (`right-names.ts`).
32
35
  const named = withRightNames(compiled.findings, raw);
33
- return { ok: false, findings: read ? [...named, ...actFindings(read), ...computedFindings(read), ...factFindings(read), ...roleFindings(read), ...formatFindings(read), ...linkedFindings(read), ...connectionFindings(read)] : named };
36
+ return { ok: false, findings: read ? [...named, ...actFindings(read), ...computedFindings(read), ...factFindings(read), ...roleFindings(read), ...formatFindings(read), ...linkedFindings(read), ...connectionFindings(read), ...documentJobFindings(read), ...documentAliasFindings(read)] : named };
34
37
  }
35
38
  const { app, document } = compiled;
36
39
  // What the brand may hold (FR-124): a mark that could act or load, a face from off the list.
37
40
  // A block's key is its own in its view: a face claims it by that key.
38
41
  // A relation to another app's kinds (FR-171), said in the checker's words, not the page's.
39
- const own = [...linkedFindings(document), ...actFindings(document), ...formatFindings(document), ...computedFindings(document), ...factFindings(document), ...roleFindings(document), ...brandFindings(document.brand, options.fonts ? { fonts: options.fonts } : {}), ...viewKeys(document.views, "views", undefined, document.lenses), ...connectionFindings(document, app)];
42
+ const own = [...linkedFindings(document), ...actFindings(document), ...formatFindings(document), ...computedFindings(document), ...factFindings(document), ...roleFindings(document), ...brandFindings(document.brand, options.fonts ? { fonts: options.fonts } : {}), ...viewKeys(document.views, "views", undefined, document.lenses), ...connectionFindings(document, app), ...documentJobFindings(document), ...documentAliasFindings(document)];
40
43
  if (hasErrors(own))
41
44
  return { ok: false, findings: [...compiled.findings, ...own] };
42
45
  // Braces in a block's plain words (FR-99): asked here, with the checker, and not of a page that compiles without it.
43
46
  // The checker's sentence for an accent (FR-126) or a ground says what the compile's did, and more: once is enough.
44
47
  const said = compiled.findings.filter((f) => !(f.code === "brand" && ((f.path === "brand.accent" && own.some((o) => o.code === "brand-accent")) || (f.path === "brand.ground" && own.some((o) => o.code === "brand-ground")))));
45
48
  const findings = [...said, ...own, ...viewBraces(document.views, "views", undefined, document.lenses)];
46
- const check = checkApp(app, options.views ? { views: options.views } : {});
49
+ // The look is judged of the document itself, in its own words and paths, so the framework's check is not asked it again.
50
+ const check = checkApp(app, { ...(options.views ? { views: options.views } : {}), design: false });
47
51
  for (const f of check.findings) {
48
52
  // Located and said in the document's own words: `acts.finish.on`, never `defineMutation("finish")`.
49
- const finding = { severity: f.severity === "error" ? "error" : f.severity === "warning" ? "warning" : "note", code: `check:${f.code}`, path: frameworkPath(f.where, document), message: inDocumentText(f.message, document), ...(f.fix ? { fix: inDocumentText(f.fix, document) } : {}) };
53
+ const finding = { severity: f.severity === "error" ? "error" : f.severity === "warning" ? "warning" : "note", code: `check:${f.code}`, path: frameworkPath(f.where, document), message: inDocumentText(f.message, document), ...(f.fix ? { fix: inDocumentText(f.fix, document) } : {}), ...(f.edits ? { edits: f.edits } : {}) };
50
54
  // The document already said it, at the same path (a blocks lens's words are held by both): once is enough.
51
55
  if (compiled.findings.some((said) => said.code === f.code && said.path === finding.path))
52
56
  continue;
53
57
  findings.push(f.code === "glance-unchosen" ? inDocumentWords(finding, f.where, document) : finding);
54
58
  }
59
+ findings.push(...designFindings(document));
60
+ dropAnsweredGlances(findings, "check:glance-unchosen", (f) => /^kinds\.([^.]+)\./.exec(f.path)?.[1]);
55
61
  if (hasErrors(findings))
56
62
  return { ok: false, findings };
57
63
  return { ...compiled, findings };
@@ -1 +1 @@
1
- {"version":3,"file":"compile-checked.js","sourceRoot":"","sources":["../../src/document/compile-checked.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile-checked.js","sourceRoot":"","sources":["../../src/document/compile-checked.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compiled.d.ts","sourceRoot":"","sources":["../../src/document/compiled.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiled.d.ts","sourceRoot":"","sources":["../../src/document/compiled.ts"],"names":[],"mappings":"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"}
@@ -267,12 +267,16 @@ export function build(plan, options = {}) {
267
267
  // A relation as the kind declares it, less the name it had in the version before, which is the migration's.
268
268
  const edgeDecls = Object.fromEntries(Object.entries(localEdges(spec.edges)).map(([n, { renamedFrom: _, ...e }]) => [n, e]));
269
269
  // What the definition says as the document says it, where it is said.
270
+ const fieldAliases = Object.entries(spec.fields).flatMap(([n, f]) => (f.aliases ? [[n, f.aliases]] : []));
270
271
  const said = (key) => (spec[key] ? { [key]: spec[key] } : {});
271
272
  return defineNode(kind, {
272
273
  fields: z.object(shape),
273
274
  edges: edgeDecls,
274
275
  ...said("plural"),
275
276
  ...said("noun"),
277
+ ...said("aliases"),
278
+ // Other words for its fields (Roadmap f-learned-suggestions), by field.
279
+ ...(fieldAliases.length > 0 ? { fieldAliases: Object.fromEntries(fieldAliases) } : {}),
276
280
  ...said("description"),
277
281
  ...(labelParts ? { label: (node) => renderTemplate(labelParts, { node: node, kinds: shapes, today: today(), money }) || node.id } : {}),
278
282
  ...(describeParts ? { describe: (node) => renderTemplate(describeParts, { node: node, kinds: shapes, today: today(), money }) } : {}),
@@ -615,6 +619,8 @@ export function build(plan, options = {}) {
615
619
  ...(document.forms ? { forms: document.forms } : {}),
616
620
  // When edits reach readers (Roadmap f-publishing-lifecycle): the store a host makes honors it.
617
621
  ...(document.publishing ? { publishing: document.publishing } : {}),
622
+ // Who it is for and what they come to do (Roadmap f-app-jobs): data the checker, the describer and a seat read.
623
+ ...(document.purpose ? { purpose: document.purpose } : {}),
618
624
  // The document's views are the declaration's view specs (FR-03): data the framework draws.
619
625
  ...(plan.viewSpecs ? { viewSpecs: plan.viewSpecs } : {}),
620
626
  // And its home view, about no one record, is the app's home (FR-81).