@graview/studio 0.0.0-stage → 0.1.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.
Files changed (67) hide show
  1. package/LICENSE +96 -0
  2. package/README.md +31 -2
  3. package/dist/agent-panel.d.ts +11 -0
  4. package/dist/agent-panel.d.ts.map +1 -0
  5. package/dist/agent-panel.js +334 -0
  6. package/dist/agent-panel.js.map +1 -0
  7. package/dist/agent.d.ts +24 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +371 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/changes.d.ts +49 -0
  12. package/dist/changes.d.ts.map +1 -0
  13. package/dist/changes.js +217 -0
  14. package/dist/changes.js.map +1 -0
  15. package/dist/from-declaration.d.ts +13 -0
  16. package/dist/from-declaration.d.ts.map +1 -0
  17. package/dist/from-declaration.js +204 -0
  18. package/dist/from-declaration.js.map +1 -0
  19. package/dist/in-place.d.ts +27 -0
  20. package/dist/in-place.d.ts.map +1 -0
  21. package/dist/in-place.js +151 -0
  22. package/dist/in-place.js.map +1 -0
  23. package/dist/index.d.ts +24 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +15 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/lens.d.ts +9 -0
  28. package/dist/lens.d.ts.map +1 -0
  29. package/dist/lens.js +40 -0
  30. package/dist/lens.js.map +1 -0
  31. package/dist/meta.d.ts +2648 -0
  32. package/dist/meta.d.ts.map +1 -0
  33. package/dist/meta.js +553 -0
  34. package/dist/meta.js.map +1 -0
  35. package/dist/migration.d.ts +15 -0
  36. package/dist/migration.d.ts.map +1 -0
  37. package/dist/migration.js +82 -0
  38. package/dist/migration.js.map +1 -0
  39. package/dist/place.d.ts +61 -0
  40. package/dist/place.d.ts.map +1 -0
  41. package/dist/place.js +328 -0
  42. package/dist/place.js.map +1 -0
  43. package/dist/rewrite.d.ts +28 -0
  44. package/dist/rewrite.d.ts.map +1 -0
  45. package/dist/rewrite.js +52 -0
  46. package/dist/rewrite.js.map +1 -0
  47. package/dist/source.d.ts +69 -0
  48. package/dist/source.d.ts.map +1 -0
  49. package/dist/source.js +465 -0
  50. package/dist/source.js.map +1 -0
  51. package/dist/studio.d.ts +64 -0
  52. package/dist/studio.d.ts.map +1 -0
  53. package/dist/studio.js +96 -0
  54. package/dist/studio.js.map +1 -0
  55. package/dist/to-declaration.d.ts +24 -0
  56. package/dist/to-declaration.d.ts.map +1 -0
  57. package/dist/to-declaration.js +439 -0
  58. package/dist/to-declaration.js.map +1 -0
  59. package/dist/write-in-place.d.ts +27 -0
  60. package/dist/write-in-place.d.ts.map +1 -0
  61. package/dist/write-in-place.js +61 -0
  62. package/dist/write-in-place.js.map +1 -0
  63. package/dist/zod-source.d.ts +7 -0
  64. package/dist/zod-source.d.ts.map +1 -0
  65. package/dist/zod-source.js +124 -0
  66. package/dist/zod-source.js.map +1 -0
  67. package/package.json +58 -3
@@ -0,0 +1,151 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useGraview } from "@graview/react";
3
+ import { completionFor } from "@graview/tools";
4
+ import { useEffect, useMemo, useState } from "react";
5
+ import { codeTouched } from "./changes.js";
6
+ import { rewriteCode } from "./rewrite.js";
7
+ import { readCode, writeChanges } from "./write-in-place.js";
8
+ /**
9
+ * THE CHANGE, WRITTEN INTO THE CHECKOUT — and the code it leaves wrong,
10
+ * rewritten first.
11
+ *
12
+ * A change to the declaration is only half of a change to the app: the act
13
+ * that ties a gardener to a plot is code, and moving the tie to plantings
14
+ * leaves that code tying gardeners to plots. The checker cannot see it and
15
+ * the compiler will not mind. So before anything is written, every act and
16
+ * rule the change touches is put in front of the person — as it is written,
17
+ * editable here, with the seat one press away for a first draft — and the
18
+ * change is written only once each has been rewritten or said to still
19
+ * hold. Then the door compiles the result before a byte lands.
20
+ */
21
+ export function InPlaceWriter({ studio, migration, files, }) {
22
+ const { intelligence } = useGraview();
23
+ const complete = useMemo(() => completionFor(intelligence), [intelligence]);
24
+ // Read once, as Apply was pressed: what is written is what was checked.
25
+ const plan = useMemo(() => studio.sourceChanges(), [studio]);
26
+ const blockers = plan.unwritten;
27
+ const [code, setCode] = useState(null);
28
+ const [failed, setFailed] = useState(null);
29
+ const [texts, setTexts] = useState(new Map());
30
+ const [holds, setHolds] = useState(new Set());
31
+ const [asking, setAsking] = useState(null);
32
+ const [outcome, setOutcome] = useState(null);
33
+ const [writing, setWriting] = useState(false);
34
+ useEffect(() => {
35
+ if (blockers.length > 0)
36
+ return;
37
+ readCode()
38
+ .then(setCode)
39
+ .catch((error) => setFailed(error instanceof Error ? error.message : String(error)));
40
+ }, [blockers]);
41
+ /** Every act and rule that must be rewritten or said to hold, once each. */
42
+ const rewrites = useMemo(() => {
43
+ if (!code)
44
+ return [];
45
+ const all = [...plan.rewrite, ...codeTouched(plan.changes, code)];
46
+ const seen = new Map();
47
+ for (const one of all) {
48
+ const key = `${one.sort}:${one.name}`;
49
+ const held = seen.get(key);
50
+ seen.set(key, held ? { ...held, why: `${held.why} ${one.why}` } : one);
51
+ }
52
+ return [...seen.values()];
53
+ }, [code, plan]);
54
+ /** The code as the checkout writes it — or, for one the studio is adding, as the studio would. */
55
+ const original = (rewrite) => {
56
+ const written = (rewrite.sort === "act" ? code?.acts : code?.rules)?.[rewrite.name]?.text;
57
+ if (written !== undefined)
58
+ return written;
59
+ return addedAs(rewrite)?.text ?? "";
60
+ };
61
+ /** The change that adds this act or rule, when the studio is adding it. */
62
+ const addedAs = (rewrite) => plan.changes.find((change) => (change.what === "add-rule" && rewrite.sort === "rule" && change.rule === rewrite.name) ||
63
+ (change.what === "add-act" && rewrite.sort === "act" && change.act === rewrite.name));
64
+ const keyOf = (rewrite) => `${rewrite.sort}:${rewrite.name}`;
65
+ const textOf = (rewrite) => texts.get(keyOf(rewrite)) ?? original(rewrite);
66
+ const settled = (rewrite) => holds.has(keyOf(rewrite)) || textOf(rewrite) !== original(rewrite);
67
+ /** The changes, with each rewrite in place of what it replaces. */
68
+ const withRewrites = () => {
69
+ const edited = rewrites.filter((rewrite) => textOf(rewrite) !== original(rewrite));
70
+ const changes = plan.changes.map((change) => {
71
+ const mine = edited.find((rewrite) => addedAs(rewrite) === change);
72
+ return mine ? { ...change, text: textOf(mine) } : change;
73
+ });
74
+ for (const rewrite of edited) {
75
+ if (addedAs(rewrite))
76
+ continue;
77
+ changes.push(rewrite.sort === "act" ? { what: "replace-act", act: rewrite.name, text: textOf(rewrite) } : { what: "replace-rule", rule: rewrite.name, text: textOf(rewrite) });
78
+ }
79
+ return changes;
80
+ };
81
+ const write = async () => {
82
+ setWriting(true);
83
+ setOutcome(await writeChanges(withRewrites()));
84
+ setWriting(false);
85
+ };
86
+ // Nothing to rewrite: nothing to ask the person, so it is written straight away.
87
+ useEffect(() => {
88
+ if (code && rewrites.length === 0 && !outcome && !writing)
89
+ void write();
90
+ // Once, when the code has been read and found untouched.
91
+ }, [code, rewrites.length]);
92
+ const ask = async (rewrite) => {
93
+ if (!complete)
94
+ return;
95
+ setAsking(keyOf(rewrite));
96
+ try {
97
+ const text = await rewriteCode(complete, { ...rewrite, text: original(rewrite), changes: plan.changes });
98
+ setTexts((current) => new Map(current).set(keyOf(rewrite), text));
99
+ }
100
+ catch (error) {
101
+ setFailed(`The seat could not rewrite ${rewrite.name}: ${error instanceof Error ? error.message : String(error)}`);
102
+ }
103
+ setAsking(null);
104
+ };
105
+ const quiet = { fontSize: "0.8125rem", color: "var(--graview-ink-muted)" };
106
+ if (outcome?.state === "written") {
107
+ return (_jsxs("strong", { "data-testid": "studio-written", style: { fontSize: "0.875rem", fontWeight: 550 }, children: ["The checker is happy, and the change is written into ", outcome.paths.join(", "), ". The app reloads onto it", migration ? `, and a stored graph is carried forward: ${migration}` : "", "."] }));
108
+ }
109
+ const reasons = [...blockers, ...(failed ? [failed] : []), ...(outcome?.state === "not-written" ? outcome.reasons : [])];
110
+ return (_jsxs(_Fragment, { children: [migration && blockers.length === 0 ? (_jsxs("span", { "data-testid": "studio-carried", style: quiet, children: ["A stored graph is carried forward when it next opens: ", migration, "."] })) : null, _jsx("strong", { style: { fontSize: "0.875rem", fontWeight: 550 }, children: blockers.length > 0
111
+ ? "The checker is happy, but this cannot be written into the checkout yet:"
112
+ : rewrites.length > 0
113
+ ? `The checker is happy. Before it is written, ${rewrites.length === 1 ? "one piece of code needs" : `${rewrites.length} pieces of code need`} to say what the change means:`
114
+ : writing || !code
115
+ ? "Writing it into the checkout…"
116
+ : "The checker is happy." }), reasons.length > 0 ? (_jsxs("ul", { "data-testid": "studio-not-written", style: { margin: 0, paddingLeft: 18, display: "grid", gap: 4, fontSize: "0.875rem" }, children: [reasons.map((reason) => (_jsx("li", { children: reason }, reason))), outcome?.state === "not-written"
117
+ ? (outcome.diagnostics ?? []).map((diagnostic) => (_jsxs("li", { children: [_jsxs("code", { children: [diagnostic.path, ":", diagnostic.line] }), " ", diagnostic.message] }, `${diagnostic.path}:${diagnostic.line}:${diagnostic.message}`)))
118
+ : null] })) : null, blockers.length === 0
119
+ ? rewrites.map((rewrite) => (_jsxs("div", { "data-testid": "studio-rewrite", "data-name": rewrite.name, style: { display: "grid", gap: 6 }, children: [_jsxs("span", { style: { fontSize: "0.875rem" }, children: [_jsxs("strong", { children: ["The ", rewrite.sort, " \u201C", rewrite.name, "\u201D"] }), " ", _jsxs("span", { style: quiet, children: ["\u2014 ", rewrite.why] })] }), _jsx("textarea", { "data-testid": "studio-rewrite-code", "aria-label": `The ${rewrite.sort} ${rewrite.name}, as it will be written`, value: textOf(rewrite), onChange: (event) => setTexts((current) => new Map(current).set(keyOf(rewrite), event.target.value)), spellCheck: false, rows: Math.min(18, textOf(rewrite).split("\n").length + 1), style: {
120
+ font: "0.75rem/1.45 ui-monospace, SFMono-Regular, Menlo, monospace",
121
+ padding: 8,
122
+ borderRadius: 8,
123
+ border: "1px solid var(--graview-edge)",
124
+ background: "var(--graview-float)",
125
+ color: "var(--graview-ink)",
126
+ resize: "vertical",
127
+ } }), _jsxs("span", { style: { display: "flex", flexWrap: "wrap", gap: 6, alignItems: "center" }, children: [_jsx("button", { type: "button", "data-testid": "studio-rewrite-ask", disabled: !complete || asking !== null, title: complete ? "A first draft from the model the ladder has chosen — yours to read and correct" : "Choose a model from the seat's gear to have it draft this", onClick: () => void ask(rewrite), style: { fontSize: "0.8125rem" }, children: asking === keyOf(rewrite) ? "Asking…" : "Ask the seat to rewrite it" }), _jsxs("label", { style: { ...quiet, display: "inline-flex", gap: 4, alignItems: "center" }, children: [_jsx("input", { type: "checkbox", "data-testid": "studio-rewrite-holds", checked: holds.has(keyOf(rewrite)), onChange: (event) => setHolds((current) => {
128
+ const next = new Set(current);
129
+ if (event.target.checked)
130
+ next.add(keyOf(rewrite));
131
+ else
132
+ next.delete(keyOf(rewrite));
133
+ return next;
134
+ }) }), "It still holds as written"] })] })] }, keyOf(rewrite))))
135
+ : null, blockers.length === 0 && rewrites.length > 0 ? (_jsx("button", { type: "button", "data-testid": "studio-write", disabled: writing || !rewrites.every(settled), title: rewrites.every(settled) ? "Write the change and these into the checkout, once the compiler agrees" : "Each piece of code above needs rewriting, or saying it still holds", onClick: () => void write(), style: { justifySelf: "start", fontSize: "0.875rem", fontWeight: 600 }, children: writing ? "Writing…" : "Write it into the checkout" })) : null, blockers.length > 0 || failed ? _jsx(Downloads, { files: files }) : null] }));
136
+ }
137
+ /** The files, as downloads: what the studio hands over when it cannot write in place. */
138
+ export function Downloads({ files }) {
139
+ return (_jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 8 }, children: files.map((file) => (_jsxs("a", { "data-testid": `studio-file-${file.path}`, download: file.path.split("/").pop(), href: `data:text/plain;charset=utf-8,${encodeURIComponent(file.contents)}`, style: {
140
+ minHeight: 24,
141
+ display: "inline-flex",
142
+ alignItems: "center",
143
+ padding: "3px 10px",
144
+ borderRadius: 999,
145
+ border: "1px solid var(--graview-edge)",
146
+ fontSize: "0.875rem",
147
+ color: "var(--graview-accent)",
148
+ textDecoration: "none",
149
+ }, children: [file.path, " \u2193"] }, file.path))) }));
150
+ }
151
+ //# sourceMappingURL=in-place.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-place.js","sourceRoot":"","sources":["../src/in-place.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export { STUDIO_SCHEMA, STUDIO_MUTATIONS, FIELD_TYPES, studioApp, kindNode, fieldNode, edgeNode, actNode, ruleNode, roleNode, grantNode, lensNode, brandNode, } from "./meta.js";
2
+ export type { StudioSchema, FieldType } from "./meta.js";
3
+ export { declarationToGraph, fieldTypeOf } from "./from-declaration.js";
4
+ export { graphToDeclaration, zodFor, defaultFor } from "./to-declaration.js";
5
+ export type { DeclarationOptions, Reading } from "./to-declaration.js";
6
+ export { migrationBetween, migrationSteps } from "./migration.js";
7
+ export type { MigrationStep } from "./migration.js";
8
+ export { declarationFiles } from "./source.js";
9
+ export type { SourceOptions, WrittenFile } from "./source.js";
10
+ export { codeTouched, sourceChanges } from "./changes.js";
11
+ export type { Rewrite, SourceChanges } from "./changes.js";
12
+ export { rewriteCode, theObject } from "./rewrite.js";
13
+ export type { RewriteAsk } from "./rewrite.js";
14
+ export { readCode, useStudioDoor, writeChanges } from "./write-in-place.js";
15
+ export type { InPlace } from "./write-in-place.js";
16
+ export { InPlaceWriter } from "./in-place.js";
17
+ export { createStudio } from "./studio.js";
18
+ export type { Studio, StudioOptions } from "./studio.js";
19
+ export { createStudioLens } from "./lens.js";
20
+ export { StudioPlace, maySeeTheStudio } from "./place.js";
21
+ export { studioResponder, typeFromName } from "./agent.js";
22
+ export type { StudioResponderOptions } from "./agent.js";
23
+ export { StudioAgentPanel } from "./agent-panel.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7E,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1D,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5E,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ export { STUDIO_SCHEMA, STUDIO_MUTATIONS, FIELD_TYPES, studioApp, kindNode, fieldNode, edgeNode, actNode, ruleNode, roleNode, grantNode, lensNode, brandNode, } from "./meta.js";
2
+ export { declarationToGraph, fieldTypeOf } from "./from-declaration.js";
3
+ export { graphToDeclaration, zodFor, defaultFor } from "./to-declaration.js";
4
+ export { migrationBetween, migrationSteps } from "./migration.js";
5
+ export { declarationFiles } from "./source.js";
6
+ export { codeTouched, sourceChanges } from "./changes.js";
7
+ export { rewriteCode, theObject } from "./rewrite.js";
8
+ export { readCode, useStudioDoor, writeChanges } from "./write-in-place.js";
9
+ export { InPlaceWriter } from "./in-place.js";
10
+ export { createStudio } from "./studio.js";
11
+ export { createStudioLens } from "./lens.js";
12
+ export { StudioPlace, maySeeTheStudio } from "./place.js";
13
+ export { studioResponder, typeFromName } from "./agent.js";
14
+ export { StudioAgentPanel } from "./agent-panel.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,GACV,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/lens.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { type AnySchema, type GraviewApp } from "@graview/core";
2
+ import { type ViewComponent } from "@graview/react";
3
+ import type { StudioSchema } from "./meta.js";
4
+ export declare function createStudioLens<S extends AnySchema>(base: GraviewApp<S>): {
5
+ readonly name: "studio-check";
6
+ readonly requiredRoles: readonly [];
7
+ readonly View: ViewComponent<StudioSchema>;
8
+ };
9
+ //# sourceMappingURL=lens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lens.d.ts","sourceRoot":"","sources":["../src/lens.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAsB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAc,KAAK,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAGhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAU9C,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;CAAE,CA0D7L"}
package/dist/lens.js ADDED
@@ -0,0 +1,40 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { checkApp } from "@graview/core";
3
+ import { useGraview } from "@graview/react";
4
+ import { useMemo } from "react";
5
+ import { graphToDeclaration } from "./to-declaration.js";
6
+ /*
7
+ * WHAT THE CHECKER SAYS, as a place in the studio. The declaration as it
8
+ * now stands is judged on every render — the same `checkApp` the CLI runs —
9
+ * so a change that would ship a broken app is a finding beside the change,
10
+ * not a surprise at the terminal. Registered over the kinds with a title,
11
+ * it is one press from anywhere in the studio.
12
+ */
13
+ export function createStudioLens(base) {
14
+ function StudioCheckView({ label, fidelity, mode }) {
15
+ const { store } = useGraview();
16
+ const snapshot = store.snapshot();
17
+ const result = useMemo(() => checkApp(graphToDeclaration(snapshot, { base: base, name: base.name })), [snapshot]);
18
+ const kinds = snapshot.nodes.filter((node) => node.kind === "kind").length;
19
+ const acts = snapshot.nodes.filter((node) => node.kind === "act" && node["derived"] !== true).length;
20
+ const rules = snapshot.nodes.filter((node) => node.kind === "rule").length;
21
+ const title = label ?? "What the checker says";
22
+ const verdict = result.ok ? "no problems found" : `${result.errors} ${result.errors === 1 ? "error" : "errors"}, ${result.warnings} ${result.warnings === 1 ? "warning" : "warnings"}`;
23
+ if (fidelity === "glyph") {
24
+ return (_jsxs("span", { "data-testid": "studio-check", "data-graview-check": result.ok ? "ok" : "failed", style: { fontSize: "0.8125rem", color: "var(--graview-ink-muted)" }, children: [title, " \u00B7 ", verdict] }));
25
+ }
26
+ const page = mode === "fullscreen";
27
+ return (_jsxs("div", { "data-testid": "studio-check", "data-graview-check": result.ok ? "ok" : "failed", style: {
28
+ display: "grid",
29
+ gap: 10,
30
+ padding: page ? 0 : 14,
31
+ borderRadius: "var(--graview-radius, 12px)",
32
+ background: page ? "transparent" : "var(--graview-panel)",
33
+ border: page ? "none" : "1px solid var(--graview-edge)",
34
+ color: "var(--graview-ink)",
35
+ minWidth: 0,
36
+ }, children: [_jsxs("div", { style: { display: "flex", alignItems: "baseline", gap: 10, flexWrap: "wrap" }, children: [_jsx("span", { style: { fontFamily: "var(--graview-font-display)", fontSize: "1.125rem", fontWeight: 600 }, children: title }), _jsxs("span", { style: { marginLeft: "auto", fontSize: "0.75rem", color: "var(--graview-ink-faint)" }, children: [kinds, " ", kinds === 1 ? "kind" : "kinds", " \u00B7 ", acts, " ", acts === 1 ? "act" : "acts", " \u00B7 ", rules, " ", rules === 1 ? "rule" : "rules"] })] }), _jsxs("p", { style: { margin: 0, fontSize: "0.875rem", color: result.ok ? "var(--graview-ink-muted)" : "var(--graview-warn)" }, children: ["graview check: ", result.app, " \u2014 ", verdict, "."] }), result.findings.length > 0 ? (_jsx("ul", { style: { margin: 0, padding: 0, listStyle: "none", display: "grid", gap: 6 }, children: result.findings.map((finding, index) => (_jsxs("li", { "data-graview-finding": finding.code, style: { fontSize: "0.875rem", lineHeight: 1.5, borderTop: "1px solid var(--graview-edge)", paddingTop: 6 }, children: [_jsx("code", { style: { fontSize: "0.8125rem", color: finding.severity === "error" ? "var(--graview-warn)" : "var(--graview-ink-muted)" }, children: finding.code }), " ", _jsx("span", { style: { color: "var(--graview-ink-faint)" }, children: finding.where }), _jsx("div", { children: finding.message }), _jsx("div", { style: { color: "var(--graview-ink-muted)" }, children: finding.fix })] }, `${finding.code}:${finding.where}:${index}`))) })) : null] }));
37
+ }
38
+ return { name: "studio-check", requiredRoles: [], View: StudioCheckView };
39
+ }
40
+ //# sourceMappingURL=lens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lens.js","sourceRoot":"","sources":["../src/lens.tsx"],"names":[],"mappings":"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"}