@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.
- package/LICENSE +96 -0
- package/README.md +31 -2
- package/dist/agent-panel.d.ts +11 -0
- package/dist/agent-panel.d.ts.map +1 -0
- package/dist/agent-panel.js +334 -0
- package/dist/agent-panel.js.map +1 -0
- package/dist/agent.d.ts +24 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +371 -0
- package/dist/agent.js.map +1 -0
- package/dist/changes.d.ts +49 -0
- package/dist/changes.d.ts.map +1 -0
- package/dist/changes.js +217 -0
- package/dist/changes.js.map +1 -0
- package/dist/from-declaration.d.ts +13 -0
- package/dist/from-declaration.d.ts.map +1 -0
- package/dist/from-declaration.js +204 -0
- package/dist/from-declaration.js.map +1 -0
- package/dist/in-place.d.ts +27 -0
- package/dist/in-place.d.ts.map +1 -0
- package/dist/in-place.js +151 -0
- package/dist/in-place.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/lens.d.ts +9 -0
- package/dist/lens.d.ts.map +1 -0
- package/dist/lens.js +40 -0
- package/dist/lens.js.map +1 -0
- package/dist/meta.d.ts +2648 -0
- package/dist/meta.d.ts.map +1 -0
- package/dist/meta.js +553 -0
- package/dist/meta.js.map +1 -0
- package/dist/migration.d.ts +15 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +82 -0
- package/dist/migration.js.map +1 -0
- package/dist/place.d.ts +61 -0
- package/dist/place.d.ts.map +1 -0
- package/dist/place.js +328 -0
- package/dist/place.js.map +1 -0
- package/dist/rewrite.d.ts +28 -0
- package/dist/rewrite.d.ts.map +1 -0
- package/dist/rewrite.js +52 -0
- package/dist/rewrite.js.map +1 -0
- package/dist/source.d.ts +69 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +465 -0
- package/dist/source.js.map +1 -0
- package/dist/studio.d.ts +64 -0
- package/dist/studio.d.ts.map +1 -0
- package/dist/studio.js +96 -0
- package/dist/studio.js.map +1 -0
- package/dist/to-declaration.d.ts +24 -0
- package/dist/to-declaration.d.ts.map +1 -0
- package/dist/to-declaration.js +439 -0
- package/dist/to-declaration.js.map +1 -0
- package/dist/write-in-place.d.ts +27 -0
- package/dist/write-in-place.d.ts.map +1 -0
- package/dist/write-in-place.js +61 -0
- package/dist/write-in-place.js.map +1 -0
- package/dist/zod-source.d.ts +7 -0
- package/dist/zod-source.d.ts.map +1 -0
- package/dist/zod-source.js +124 -0
- package/dist/zod-source.js.map +1 -0
- package/package.json +58 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"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"}
|
package/dist/meta.js
ADDED
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
import { createSchema, defineNode, nodeRef } from "@graview/core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
/*
|
|
4
|
+
* THE DECLARATION, DECLARED.
|
|
5
|
+
*
|
|
6
|
+
* A Graview app is kinds, fields, edges, acts, rules, roles, grants, lenses
|
|
7
|
+
* and a brand. Here each of those is a kind of node, declared with the same
|
|
8
|
+
* `defineNode` an app uses, so the declaration is a graph the scene and the
|
|
9
|
+
* pages can show and the store can edit. Adding a field is an act; renaming
|
|
10
|
+
* a kind is an act; every change is an op with an author, an intent and an
|
|
11
|
+
* inverse, undone like any other. Nothing in the studio is a second way of
|
|
12
|
+
* editing — it is the first way, pointed at itself.
|
|
13
|
+
*/
|
|
14
|
+
const label = z.string().min(1);
|
|
15
|
+
/**
|
|
16
|
+
* The id namespace for a kind the app declares.
|
|
17
|
+
*
|
|
18
|
+
* Deliberately NOT `kind:`, which `@graview/layout` mints its district card
|
|
19
|
+
* ids in (`KIND_PREFIX`). A node and a card sharing an id is a node the
|
|
20
|
+
* scene cannot place, an edge drawn to the wrong district, and a `#sel=`
|
|
21
|
+
* that names two different things.
|
|
22
|
+
*/
|
|
23
|
+
export const DECLARED_KIND = "declared:";
|
|
24
|
+
export const FIELD_TYPES = ["string", "text", "number", "boolean", "date", "enum", "list"];
|
|
25
|
+
export const kindNode = defineNode("kind", {
|
|
26
|
+
description: "A kind of thing the app keeps track of.",
|
|
27
|
+
plural: "kinds",
|
|
28
|
+
fields: z.object({
|
|
29
|
+
label,
|
|
30
|
+
plural: z.string().optional(),
|
|
31
|
+
/** What one of them is called, where the kind's name does not say it. */
|
|
32
|
+
noun: z.string().optional(),
|
|
33
|
+
description: z.string().optional(),
|
|
34
|
+
/** The field the horizon reads, and the values that put a record behind it. */
|
|
35
|
+
lifecycleField: z.string().optional(),
|
|
36
|
+
retired: z.array(z.string()).optional(),
|
|
37
|
+
/**
|
|
38
|
+
* THE DRAWING OF THE THING, carried in the graph like anything else.
|
|
39
|
+
*
|
|
40
|
+
* Inline SVG or the name of a shipped figure. A figure was a decision
|
|
41
|
+
* only a checkout could make: `drawFigure` could draw one and the CLI
|
|
42
|
+
* could print one, but the studio read declarations that had figures
|
|
43
|
+
* and gave back declarations that did not — so opening the studio on a
|
|
44
|
+
* drawn app and applying would have rubbed every drawing out. Modelled
|
|
45
|
+
* here, it survives the round trip and becomes something an agent may
|
|
46
|
+
* propose.
|
|
47
|
+
*/
|
|
48
|
+
figure: z.string().optional(),
|
|
49
|
+
}),
|
|
50
|
+
label: (node) => node.label,
|
|
51
|
+
display: { labels: { label: "name", lifecycleField: "lifecycle field", retired: "retired when" } },
|
|
52
|
+
});
|
|
53
|
+
export const fieldNode = defineNode("field", {
|
|
54
|
+
description: "A field a kind carries: its name, its type, whether it must be given.",
|
|
55
|
+
plural: "fields",
|
|
56
|
+
fields: z.object({
|
|
57
|
+
label,
|
|
58
|
+
type: z.enum(FIELD_TYPES),
|
|
59
|
+
required: z.boolean(),
|
|
60
|
+
options: z.array(z.string()).optional(),
|
|
61
|
+
description: z.string().optional(),
|
|
62
|
+
}),
|
|
63
|
+
edges: {
|
|
64
|
+
of: { to: ["kind"], cardinality: "one", description: "the kind it belongs to", inverse: "its fields" },
|
|
65
|
+
},
|
|
66
|
+
label: (node) => node.label,
|
|
67
|
+
display: { labels: { label: "name" } },
|
|
68
|
+
});
|
|
69
|
+
export const edgeNode = defineNode("edge", {
|
|
70
|
+
description: "A relation one kind may have to another, with a reading from each end.",
|
|
71
|
+
plural: "edges",
|
|
72
|
+
fields: z.object({
|
|
73
|
+
label,
|
|
74
|
+
description: z.string().optional(),
|
|
75
|
+
inverse: z.string().optional(),
|
|
76
|
+
cardinality: z.enum(["one", "many"]),
|
|
77
|
+
appendOnly: z.boolean(),
|
|
78
|
+
/** Declared to any kind at all. */
|
|
79
|
+
toAny: z.boolean(),
|
|
80
|
+
}),
|
|
81
|
+
edges: {
|
|
82
|
+
"from-kind": { to: ["kind"], cardinality: "one", description: "the kind it is declared on", inverse: "its edges" },
|
|
83
|
+
"to-kind": { to: ["kind"], description: "the kinds it may reach", inverse: "the edges that reach it" },
|
|
84
|
+
},
|
|
85
|
+
label: (node) => node.label,
|
|
86
|
+
display: { labels: { label: "name", description: "reading from this end", inverse: "reading from the far end", appendOnly: "append only", toAny: "to any kind" } },
|
|
87
|
+
});
|
|
88
|
+
export const actNode = defineNode("act", {
|
|
89
|
+
description: "A named change: what it is called, what it creates, connects, severs or writes, and what it acts on.",
|
|
90
|
+
plural: "acts",
|
|
91
|
+
fields: z.object({
|
|
92
|
+
label,
|
|
93
|
+
title: z.string().optional(),
|
|
94
|
+
/** How the act reads standing on the far end of the tie it makes or breaks (W-040). */
|
|
95
|
+
fromTheOtherEnd: z.string().optional(),
|
|
96
|
+
description: z.string().optional(),
|
|
97
|
+
destructive: z.boolean(),
|
|
98
|
+
writes: z.array(z.string()).optional(),
|
|
99
|
+
/** The argument that names the subject, when the act has one. */
|
|
100
|
+
subjectArg: z.string().optional(),
|
|
101
|
+
/**
|
|
102
|
+
* The argument that names the far end of the tie an act makes or
|
|
103
|
+
* breaks — the checkout's own word for it (`dependsOn`, `handler`).
|
|
104
|
+
* Written back under an invented `to`, every caller of the act broke:
|
|
105
|
+
* the app's tests, its pages, its seat, all asking by the old name.
|
|
106
|
+
*/
|
|
107
|
+
targetArg: z.string().optional(),
|
|
108
|
+
/** Acts on any kind at all. */
|
|
109
|
+
onAny: z.boolean(),
|
|
110
|
+
/** Derived by the framework from a kind's fields; not written by hand. */
|
|
111
|
+
derived: z.boolean(),
|
|
112
|
+
}),
|
|
113
|
+
edges: {
|
|
114
|
+
on: { to: ["kind"], description: "the kinds it acts on", inverse: "the acts on it" },
|
|
115
|
+
creates: { to: ["kind"], description: "the kind it brings into being", inverse: "how one comes to be" },
|
|
116
|
+
connects: { to: ["edge"], description: "the relation it makes", inverse: "the acts that make it" },
|
|
117
|
+
severs: { to: ["edge"], description: "the relation it breaks", inverse: "the acts that break it" },
|
|
118
|
+
},
|
|
119
|
+
label: (node) => node.title ?? node.label,
|
|
120
|
+
display: { labels: { label: "name", subjectArg: "subject argument", targetArg: "far-end argument", fromTheOtherEnd: "from the other end", onAny: "on any kind" } },
|
|
121
|
+
});
|
|
122
|
+
export const ruleNode = defineNode("rule", {
|
|
123
|
+
description: "An invariant the graph is held to, and the acts that put it right.",
|
|
124
|
+
plural: "rules",
|
|
125
|
+
fields: z.object({
|
|
126
|
+
label,
|
|
127
|
+
/** What the rule is called, in words — the checkout's `label`, kept apart from its name. */
|
|
128
|
+
title: z.string().optional(),
|
|
129
|
+
description: z.string().optional(),
|
|
130
|
+
judgesPast: z.boolean(),
|
|
131
|
+
/** Judged over the whole graph rather than one kind's records. */
|
|
132
|
+
wholeGraph: z.boolean(),
|
|
133
|
+
/**
|
|
134
|
+
* Repairs naming an act the FRAMEWORK derives — `edit-song`,
|
|
135
|
+
* `remove-album` — which has no node here to point an edge at. Kept by
|
|
136
|
+
* name, or the round trip dropped them: "One song per track number"
|
|
137
|
+
* came back with no repairs at all.
|
|
138
|
+
*/
|
|
139
|
+
derivedRepairs: z.array(z.string()).optional(),
|
|
140
|
+
}),
|
|
141
|
+
edges: {
|
|
142
|
+
over: { to: ["kind"], description: "the kind it judges", inverse: "the rules over it" },
|
|
143
|
+
repairs: { to: ["act"], description: "the acts that put it right", inverse: "the rules it repairs" },
|
|
144
|
+
},
|
|
145
|
+
label: (node) => node.label,
|
|
146
|
+
display: { labels: { label: "name", judgesPast: "judges the past", wholeGraph: "over the whole graph" } },
|
|
147
|
+
});
|
|
148
|
+
export const roleNode = defineNode("role", {
|
|
149
|
+
/*
|
|
150
|
+
* A SEAT'S STANDING, and nothing else that happens to be called a role.
|
|
151
|
+
*
|
|
152
|
+
* A lens also has "required roles" — `start`, `end`, `rows`, `columns`,
|
|
153
|
+
* `link` — but those are BINDING SLOTS it asks an app to answer with its
|
|
154
|
+
* own fields and kinds, not something a person can hold. Reading both into
|
|
155
|
+
* this kind put "columns" and "start" in the studio's ROLES district
|
|
156
|
+
* beside "coordinator", and wrote them into the policy the studio hands
|
|
157
|
+
* back — so `permits` would have recognised "columns" as a seat somebody
|
|
158
|
+
* could be granted. They are the lens's own field now.
|
|
159
|
+
*/
|
|
160
|
+
description: "A role a seat may hold.",
|
|
161
|
+
plural: "roles",
|
|
162
|
+
fields: z.object({ label }),
|
|
163
|
+
label: (node) => node.label,
|
|
164
|
+
display: { labels: { label: "name" } },
|
|
165
|
+
});
|
|
166
|
+
export const grantNode = defineNode("grant", {
|
|
167
|
+
description: "One permission: these roles may take these acts, on these kinds.",
|
|
168
|
+
plural: "grants",
|
|
169
|
+
fields: z.object({
|
|
170
|
+
label,
|
|
171
|
+
describe: z.string().optional(),
|
|
172
|
+
self: z.boolean(),
|
|
173
|
+
everyone: z.boolean(),
|
|
174
|
+
allActs: z.boolean(),
|
|
175
|
+
allKinds: z.boolean(),
|
|
176
|
+
}),
|
|
177
|
+
edges: {
|
|
178
|
+
lets: { to: ["role"], description: "the roles it lets", inverse: "what they are let do" },
|
|
179
|
+
may: { to: ["act"], description: "the acts it allows", inverse: "who may take it" },
|
|
180
|
+
// Its own name: `over` is the rule's, and one name is one relation.
|
|
181
|
+
"allows-on": { to: ["kind"], description: "the kinds it allows those acts on", inverse: "who may act on it" },
|
|
182
|
+
},
|
|
183
|
+
label: (node) => node.label,
|
|
184
|
+
display: { labels: { self: "on their own record only", allActs: "every act", allKinds: "every kind" } },
|
|
185
|
+
});
|
|
186
|
+
export const lensNode = defineNode("lens", {
|
|
187
|
+
description: "A named way of looking at the graph, and the slots it asks an app to fill.",
|
|
188
|
+
plural: "lenses",
|
|
189
|
+
fields: z.object({
|
|
190
|
+
label,
|
|
191
|
+
binds: z.enum(["fields", "entities"]).optional(),
|
|
192
|
+
/**
|
|
193
|
+
* The slots the lens asks an app to bind — `start` and `end` for a
|
|
194
|
+
* timeline, `rows`, `columns` and `link` for a coverage grid. A field
|
|
195
|
+
* rather than an edge to `role`, because a slot is part of the lens's
|
|
196
|
+
* own contract and a seat's role is a person's standing; one district
|
|
197
|
+
* holding both said the roster had eight roles, five of which nobody
|
|
198
|
+
* could ever be.
|
|
199
|
+
*/
|
|
200
|
+
requires: z.array(z.string()).optional(),
|
|
201
|
+
}),
|
|
202
|
+
label: (node) => node.label,
|
|
203
|
+
display: { labels: { label: "name", requires: "the slots it asks an app to bind" } },
|
|
204
|
+
});
|
|
205
|
+
export const brandNode = defineNode("brand", {
|
|
206
|
+
description: "The installation's own name and voice.",
|
|
207
|
+
plural: "brands",
|
|
208
|
+
fields: z.object({ label, body: z.string().optional(), display: z.string().optional() }),
|
|
209
|
+
label: (node) => node.label,
|
|
210
|
+
display: { labels: { label: "name", body: "body typeface", display: "display typeface" } },
|
|
211
|
+
});
|
|
212
|
+
export const STUDIO_SCHEMA = createSchema([kindNode, fieldNode, edgeNode, actNode, ruleNode, roleNode, grantNode, lensNode, brandNode]);
|
|
213
|
+
const nameOf = (ctx, id) => {
|
|
214
|
+
const node = ctx.graph.getNode(id);
|
|
215
|
+
return node?.label ?? id;
|
|
216
|
+
};
|
|
217
|
+
const slug = (text) => text
|
|
218
|
+
.trim()
|
|
219
|
+
.toLowerCase()
|
|
220
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
221
|
+
.replace(/^-+|-+$/g, "") || "thing";
|
|
222
|
+
const act = (name, spec) => ({ ...spec, name });
|
|
223
|
+
export const addKind = act("add-kind", {
|
|
224
|
+
title: "Add a kind",
|
|
225
|
+
description: "Declare a new kind of thing the app keeps track of.",
|
|
226
|
+
creates: ["kind"],
|
|
227
|
+
input: z.object({ label: z.string().min(1), plural: z.string().optional(), description: z.string().optional() }),
|
|
228
|
+
describe: (args) => `Add the kind ${args.label}`,
|
|
229
|
+
apply(ctx, args) {
|
|
230
|
+
const name = slug(args.label);
|
|
231
|
+
ctx.addNode({
|
|
232
|
+
id: `${DECLARED_KIND}${name}`,
|
|
233
|
+
kind: "kind",
|
|
234
|
+
label: name,
|
|
235
|
+
...(args.plural ? { plural: args.plural } : {}),
|
|
236
|
+
...(args.description ? { description: args.description } : {}),
|
|
237
|
+
});
|
|
238
|
+
// Every kind has a name to be called by: the field the views read first.
|
|
239
|
+
ctx.addNode({ id: `field:${name}.label`, kind: "field", label: "label", type: "string", required: true });
|
|
240
|
+
ctx.addEdge({ kind: "of", from: `field:${name}.label`, to: `${DECLARED_KIND}${name}` });
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
export const renameKind = act("rename-kind", {
|
|
244
|
+
title: "Rename the kind",
|
|
245
|
+
description: "Call a kind something else. Its records keep their ids; a migration carries their kind.",
|
|
246
|
+
subject: { kinds: ["kind"], arg: "id" },
|
|
247
|
+
writes: ["label"],
|
|
248
|
+
input: z.object({ id: nodeRef(["kind"]), label: z.string().min(1) }),
|
|
249
|
+
describe: (args, graph) => `Rename ${graph.getNode(args.id)?.label ?? args.id} to ${args.label}`,
|
|
250
|
+
apply(ctx, args) {
|
|
251
|
+
ctx.patchNode(args.id, { label: slug(args.label) });
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
export const removeKind = act("remove-kind", {
|
|
255
|
+
title: "Remove the kind",
|
|
256
|
+
description: "Take a kind out of the declaration, with its fields and the edges declared on it. Its records need a migration.",
|
|
257
|
+
subject: { kinds: ["kind"], arg: "id" },
|
|
258
|
+
destructive: true,
|
|
259
|
+
input: z.object({ id: nodeRef(["kind"]) }),
|
|
260
|
+
describe: (args, graph) => `Remove the kind ${graph.getNode(args.id)?.label ?? args.id}`,
|
|
261
|
+
apply(ctx, args) {
|
|
262
|
+
/*
|
|
263
|
+
* The kind, its fields and the edges declared on it go together. Each
|
|
264
|
+
* removal is emitted once: the context reads incident edges from the
|
|
265
|
+
* graph as it stood, so removing a field and then its kind would say
|
|
266
|
+
* "remove the of edge" twice.
|
|
267
|
+
*/
|
|
268
|
+
const gone = [args.id, ...ctx.graph.in(args.id, "of").map((node) => node.id), ...ctx.graph.in(args.id, "from-kind").map((node) => node.id)];
|
|
269
|
+
const going = new Set(gone);
|
|
270
|
+
const touched = new Map();
|
|
271
|
+
for (const edge of ctx.graph.allEdges()) {
|
|
272
|
+
if (going.has(edge.from) || going.has(edge.to))
|
|
273
|
+
touched.set(`${edge.kind} ${edge.from} ${edge.to}`, edge);
|
|
274
|
+
}
|
|
275
|
+
for (const edge of touched.values())
|
|
276
|
+
ctx.emit({ op: "remove-edge", edge });
|
|
277
|
+
for (const id of gone) {
|
|
278
|
+
const node = ctx.graph.getNode(id);
|
|
279
|
+
if (node)
|
|
280
|
+
ctx.emit({ op: "remove-node", node });
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
export const addField = act("add-field", {
|
|
285
|
+
title: "Add a field",
|
|
286
|
+
description: "Give a kind a field: a name, a type, and whether it must be given.",
|
|
287
|
+
subject: { kinds: ["kind"], arg: "kind" },
|
|
288
|
+
creates: ["field"],
|
|
289
|
+
connects: ["of"],
|
|
290
|
+
fromTheOtherEnd: "of",
|
|
291
|
+
input: z.object({
|
|
292
|
+
kind: nodeRef(["kind"]),
|
|
293
|
+
label: z.string().min(1),
|
|
294
|
+
type: z.enum(FIELD_TYPES),
|
|
295
|
+
required: z.boolean(),
|
|
296
|
+
options: z.array(z.string()).optional(),
|
|
297
|
+
description: z.string().optional(),
|
|
298
|
+
}),
|
|
299
|
+
describe: (args, graph) => `Add the field ${args.label} to ${graph.getNode(args.kind)?.label ?? args.kind}`,
|
|
300
|
+
apply(ctx, args) {
|
|
301
|
+
const kind = nameOf(ctx, args.kind);
|
|
302
|
+
const name = slug(args.label);
|
|
303
|
+
const id = `field:${kind}.${name}`;
|
|
304
|
+
ctx.addNode({
|
|
305
|
+
id,
|
|
306
|
+
kind: "field",
|
|
307
|
+
label: name,
|
|
308
|
+
type: args.type,
|
|
309
|
+
required: args.required,
|
|
310
|
+
...(args.options ? { options: args.options } : {}),
|
|
311
|
+
...(args.description ? { description: args.description } : {}),
|
|
312
|
+
});
|
|
313
|
+
ctx.addEdge({ kind: "of", from: id, to: args.kind });
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
export const removeField = act("remove-field", {
|
|
317
|
+
title: "Remove the field",
|
|
318
|
+
description: "Take a field off its kind. Records that carry it need a migration.",
|
|
319
|
+
subject: { kinds: ["field"], arg: "id" },
|
|
320
|
+
destructive: true,
|
|
321
|
+
severs: ["of"],
|
|
322
|
+
input: z.object({ id: nodeRef(["field"]) }),
|
|
323
|
+
describe: (args, graph) => `Remove the field ${graph.getNode(args.id)?.label ?? args.id}`,
|
|
324
|
+
apply(ctx, args) {
|
|
325
|
+
ctx.removeNode(args.id);
|
|
326
|
+
},
|
|
327
|
+
});
|
|
328
|
+
export const addEdge = act("add-edge", {
|
|
329
|
+
title: "Add an edge",
|
|
330
|
+
description: "Declare a relation from one kind to another, with a reading from each end.",
|
|
331
|
+
subject: { kinds: ["kind"], arg: "kind" },
|
|
332
|
+
creates: ["edge"],
|
|
333
|
+
connects: ["from-kind", "to-kind"],
|
|
334
|
+
fromTheOtherEnd: "from-kind",
|
|
335
|
+
input: z.object({
|
|
336
|
+
kind: nodeRef(["kind"]),
|
|
337
|
+
label: z.string().min(1),
|
|
338
|
+
to: nodeRef(["kind"]),
|
|
339
|
+
description: z.string().optional(),
|
|
340
|
+
inverse: z.string().optional(),
|
|
341
|
+
cardinality: z.enum(["one", "many"]).optional(),
|
|
342
|
+
}),
|
|
343
|
+
describe: (args, graph) => `Add the edge ${args.label} from ${graph.getNode(args.kind)?.label ?? args.kind} to ${graph.getNode(args.to)?.label ?? args.to}`,
|
|
344
|
+
apply(ctx, args) {
|
|
345
|
+
const kind = nameOf(ctx, args.kind);
|
|
346
|
+
const name = slug(args.label);
|
|
347
|
+
const id = `edge:${kind}.${name}`;
|
|
348
|
+
ctx.addNode({
|
|
349
|
+
id,
|
|
350
|
+
kind: "edge",
|
|
351
|
+
label: name,
|
|
352
|
+
cardinality: args.cardinality ?? "many",
|
|
353
|
+
appendOnly: false,
|
|
354
|
+
toAny: false,
|
|
355
|
+
...(args.description ? { description: args.description } : {}),
|
|
356
|
+
...(args.inverse ? { inverse: args.inverse } : {}),
|
|
357
|
+
});
|
|
358
|
+
ctx.addEdge({ kind: "from-kind", from: id, to: args.kind });
|
|
359
|
+
ctx.addEdge({ kind: "to-kind", from: id, to: args.to });
|
|
360
|
+
},
|
|
361
|
+
});
|
|
362
|
+
export const removeEdge = act("remove-edge", {
|
|
363
|
+
title: "Remove the edge",
|
|
364
|
+
description: "Take a relation out of the declaration. Records that hold it need a migration.",
|
|
365
|
+
subject: { kinds: ["edge"], arg: "id" },
|
|
366
|
+
destructive: true,
|
|
367
|
+
severs: ["from-kind", "to-kind"],
|
|
368
|
+
input: z.object({ id: nodeRef(["edge"]) }),
|
|
369
|
+
describe: (args, graph) => `Remove the edge ${graph.getNode(args.id)?.label ?? args.id}`,
|
|
370
|
+
apply(ctx, args) {
|
|
371
|
+
ctx.removeNode(args.id);
|
|
372
|
+
},
|
|
373
|
+
});
|
|
374
|
+
export const addAct = act("add-act", {
|
|
375
|
+
title: "Add an act",
|
|
376
|
+
description: "Declare a named change on a kind. What it does is written from what it says: create, connect, sever or write.",
|
|
377
|
+
subject: { kinds: ["kind"], arg: "kind" },
|
|
378
|
+
creates: ["act"],
|
|
379
|
+
connects: ["on"],
|
|
380
|
+
fromTheOtherEnd: "on",
|
|
381
|
+
input: z.object({
|
|
382
|
+
kind: nodeRef(["kind"]),
|
|
383
|
+
label: z.string().min(1),
|
|
384
|
+
title: z.string().min(1),
|
|
385
|
+
description: z.string().optional(),
|
|
386
|
+
writes: z.array(z.string()).optional(),
|
|
387
|
+
}),
|
|
388
|
+
describe: (args, graph) => `Add the act ${args.title} on ${graph.getNode(args.kind)?.label ?? args.kind}`,
|
|
389
|
+
apply(ctx, args) {
|
|
390
|
+
const name = slug(args.label);
|
|
391
|
+
const id = `act:${name}`;
|
|
392
|
+
ctx.addNode({
|
|
393
|
+
id,
|
|
394
|
+
kind: "act",
|
|
395
|
+
label: name,
|
|
396
|
+
title: args.title,
|
|
397
|
+
destructive: false,
|
|
398
|
+
onAny: false,
|
|
399
|
+
derived: false,
|
|
400
|
+
subjectArg: "id",
|
|
401
|
+
...(args.description ? { description: args.description } : {}),
|
|
402
|
+
...(args.writes ? { writes: args.writes } : {}),
|
|
403
|
+
});
|
|
404
|
+
ctx.addEdge({ kind: "on", from: id, to: args.kind });
|
|
405
|
+
},
|
|
406
|
+
});
|
|
407
|
+
export const removeAct = act("remove-act", {
|
|
408
|
+
title: "Remove the act",
|
|
409
|
+
description: "Take an act out of the declaration. Grants that allowed it and rules that repaired with it let go of it.",
|
|
410
|
+
subject: { kinds: ["act"], arg: "id" },
|
|
411
|
+
destructive: true,
|
|
412
|
+
severs: ["on", "creates", "connects", "severs"],
|
|
413
|
+
input: z.object({ id: nodeRef(["act"]) }),
|
|
414
|
+
describe: (args, graph) => `Remove the act ${graph.getNode(args.id)?.label ?? args.id}`,
|
|
415
|
+
apply(ctx, args) {
|
|
416
|
+
ctx.removeNode(args.id);
|
|
417
|
+
},
|
|
418
|
+
});
|
|
419
|
+
export const addRule = act("add-rule", {
|
|
420
|
+
title: "Add a rule",
|
|
421
|
+
description: "Hold a kind to a rule. The judgement is written in the checkout; the studio declares it and names its repairs.",
|
|
422
|
+
subject: { kinds: ["kind"], arg: "kind" },
|
|
423
|
+
creates: ["rule"],
|
|
424
|
+
connects: ["over"],
|
|
425
|
+
fromTheOtherEnd: "over",
|
|
426
|
+
input: z.object({ kind: nodeRef(["kind"]), label: z.string().min(1), description: z.string().min(1) }),
|
|
427
|
+
describe: (args, graph) => `Add the rule ${args.label} over ${graph.getNode(args.kind)?.label ?? args.kind}`,
|
|
428
|
+
apply(ctx, args) {
|
|
429
|
+
const name = slug(args.label);
|
|
430
|
+
const id = `rule:${name}`;
|
|
431
|
+
ctx.addNode({ id, kind: "rule", label: name, description: args.description, judgesPast: false, wholeGraph: false });
|
|
432
|
+
ctx.addEdge({ kind: "over", from: id, to: args.kind });
|
|
433
|
+
},
|
|
434
|
+
});
|
|
435
|
+
export const removeRule = act("remove-rule", {
|
|
436
|
+
title: "Remove the rule",
|
|
437
|
+
description: "Stop holding the graph to a rule.",
|
|
438
|
+
subject: { kinds: ["rule"], arg: "id" },
|
|
439
|
+
destructive: true,
|
|
440
|
+
severs: ["over", "repairs"],
|
|
441
|
+
input: z.object({ id: nodeRef(["rule"]) }),
|
|
442
|
+
describe: (args, graph) => `Remove the rule ${graph.getNode(args.id)?.label ?? args.id}`,
|
|
443
|
+
apply(ctx, args) {
|
|
444
|
+
ctx.removeNode(args.id);
|
|
445
|
+
},
|
|
446
|
+
});
|
|
447
|
+
export const nameRepair = act("name-repair", {
|
|
448
|
+
title: "Name a repair",
|
|
449
|
+
description: "Say which act puts a broken rule right, so the rule becomes a one-press fix and a legal move for an agent.",
|
|
450
|
+
subject: { kinds: ["rule"], arg: "rule" },
|
|
451
|
+
connects: ["repairs"],
|
|
452
|
+
fromTheOtherEnd: "Repairs a rule",
|
|
453
|
+
input: z.object({ rule: nodeRef(["rule"]), act: nodeRef(["act"]) }),
|
|
454
|
+
describe: (args, graph) => `${graph.getNode(args.rule)?.label ?? args.rule} is repaired by ${graph.getNode(args.act)?.label ?? args.act}`,
|
|
455
|
+
apply(ctx, args) {
|
|
456
|
+
ctx.addEdge({ kind: "repairs", from: args.rule, to: args.act });
|
|
457
|
+
},
|
|
458
|
+
});
|
|
459
|
+
export const forgetRepair = act("forget-repair", {
|
|
460
|
+
title: "Forget a repair",
|
|
461
|
+
description: "Take back the claim that an act puts this rule right.",
|
|
462
|
+
subject: { kinds: ["rule"], arg: "rule" },
|
|
463
|
+
severs: ["repairs"],
|
|
464
|
+
fromTheOtherEnd: "No longer repairs a rule",
|
|
465
|
+
input: z.object({ rule: nodeRef(["rule"]), act: nodeRef(["act"]) }),
|
|
466
|
+
describe: (args, graph) => `${graph.getNode(args.rule)?.label ?? args.rule} is no longer repaired by ${graph.getNode(args.act)?.label ?? args.act}`,
|
|
467
|
+
apply(ctx, args) {
|
|
468
|
+
ctx.removeEdge({ kind: "repairs", from: args.rule, to: args.act });
|
|
469
|
+
},
|
|
470
|
+
});
|
|
471
|
+
export const setFigure = act("set-figure", {
|
|
472
|
+
title: "Draw the kind",
|
|
473
|
+
description: "Give a kind its figure: line art of the thing, in the house style, wherever the kind is drawn.",
|
|
474
|
+
subject: { kinds: ["kind"], arg: "id" },
|
|
475
|
+
writes: ["figure"],
|
|
476
|
+
input: z.object({ id: nodeRef(["kind"]), figure: z.string().min(1) }),
|
|
477
|
+
describe: (args, graph) => `Draw ${graph.getNode(args.id)?.label ?? args.id}`,
|
|
478
|
+
apply(ctx, args) {
|
|
479
|
+
ctx.patchNode(args.id, { figure: args.figure });
|
|
480
|
+
},
|
|
481
|
+
});
|
|
482
|
+
export const addRole = act("add-role", {
|
|
483
|
+
title: "Add a role",
|
|
484
|
+
description: "Declare a role a seat may hold.",
|
|
485
|
+
creates: ["role"],
|
|
486
|
+
input: z.object({ label: z.string().min(1) }),
|
|
487
|
+
describe: (args) => `Add the role ${args.label}`,
|
|
488
|
+
apply(ctx, args) {
|
|
489
|
+
const name = slug(args.label);
|
|
490
|
+
ctx.addNode({ id: `role:${name}`, kind: "role", label: name });
|
|
491
|
+
},
|
|
492
|
+
});
|
|
493
|
+
export const grant = act("grant", {
|
|
494
|
+
title: "Grant",
|
|
495
|
+
description: "Let a role take an act, on one kind or on all of them.",
|
|
496
|
+
subject: { kinds: ["role"], arg: "role" },
|
|
497
|
+
creates: ["grant"],
|
|
498
|
+
connects: ["lets", "may", "allows-on"],
|
|
499
|
+
fromTheOtherEnd: "lets",
|
|
500
|
+
input: z.object({ role: nodeRef(["role"]), act: nodeRef(["act"]), kind: nodeRef(["kind"]).optional(), self: z.boolean().optional() }),
|
|
501
|
+
describe: (args, graph) => `${graph.getNode(args.role)?.label ?? args.role} may ${graph.getNode(args.act)?.label ?? args.act}`,
|
|
502
|
+
apply(ctx, args) {
|
|
503
|
+
const role = nameOf(ctx, args.role);
|
|
504
|
+
const actName = nameOf(ctx, args.act);
|
|
505
|
+
const id = ctx.freshId(`${role} may ${actName}`, "grant");
|
|
506
|
+
ctx.addNode({ id, kind: "grant", label: `${role} may ${actName}`, self: args.self ?? false, everyone: false, allActs: false, allKinds: !args.kind });
|
|
507
|
+
ctx.addEdge({ kind: "lets", from: id, to: args.role });
|
|
508
|
+
ctx.addEdge({ kind: "may", from: id, to: args.act });
|
|
509
|
+
if (args.kind)
|
|
510
|
+
ctx.addEdge({ kind: "allows-on", from: id, to: args.kind });
|
|
511
|
+
},
|
|
512
|
+
});
|
|
513
|
+
export const revokeGrant = act("revoke-grant", {
|
|
514
|
+
title: "Revoke the grant",
|
|
515
|
+
description: "Take a permission back.",
|
|
516
|
+
subject: { kinds: ["grant"], arg: "id" },
|
|
517
|
+
destructive: true,
|
|
518
|
+
severs: ["lets", "may", "allows-on"],
|
|
519
|
+
input: z.object({ id: nodeRef(["grant"]) }),
|
|
520
|
+
describe: (args, graph) => `Revoke ${graph.getNode(args.id)?.label ?? args.id}`,
|
|
521
|
+
apply(ctx, args) {
|
|
522
|
+
ctx.removeNode(args.id);
|
|
523
|
+
},
|
|
524
|
+
});
|
|
525
|
+
export const STUDIO_MUTATIONS = [
|
|
526
|
+
addKind,
|
|
527
|
+
renameKind,
|
|
528
|
+
removeKind,
|
|
529
|
+
addField,
|
|
530
|
+
removeField,
|
|
531
|
+
addEdge,
|
|
532
|
+
removeEdge,
|
|
533
|
+
addAct,
|
|
534
|
+
removeAct,
|
|
535
|
+
addRule,
|
|
536
|
+
removeRule,
|
|
537
|
+
nameRepair,
|
|
538
|
+
forgetRepair,
|
|
539
|
+
setFigure,
|
|
540
|
+
addRole,
|
|
541
|
+
grant,
|
|
542
|
+
revokeGrant,
|
|
543
|
+
];
|
|
544
|
+
/** The studio as an app: the meta-schema, its acts, and an agent seat that may propose any of them. */
|
|
545
|
+
export function studioApp(name = "Studio") {
|
|
546
|
+
return {
|
|
547
|
+
name,
|
|
548
|
+
schema: STUDIO_SCHEMA,
|
|
549
|
+
mutations: STUDIO_MUTATIONS,
|
|
550
|
+
intelligence: [{ name: "studio-agent", kind: "llm", description: "Proposes changes to the declaration; a person accepts or declines them." }],
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
//# sourceMappingURL=meta.js.map
|
package/dist/meta.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AnySchema, GraviewApp, MigrationDeclaration } from "@graview/core";
|
|
2
|
+
import { type MigrationStep } from "@graview/ship/browser";
|
|
3
|
+
import { type Reading } from "./to-declaration.js";
|
|
4
|
+
export type { MigrationStep } from "@graview/ship/browser";
|
|
5
|
+
/** The steps between two declarations' graphs; empty when the stored graph needs nothing. */
|
|
6
|
+
export declare function migrationSteps(before: Reading, after: Reading): MigrationStep[];
|
|
7
|
+
/**
|
|
8
|
+
* The migration from one declaration to the next, or null when a stored
|
|
9
|
+
* graph shaped like the old one is already a graph shaped like the new.
|
|
10
|
+
* Given the studio's own graph as `after`, a renamed kind is seen as a
|
|
11
|
+
* rename — its node kept its id — where two declarations read separately
|
|
12
|
+
* would show one kind gone and another arrived.
|
|
13
|
+
*/
|
|
14
|
+
export declare function migrationBetween<S extends AnySchema>(before: GraviewApp<S>, after: GraviewApp<AnySchema> | Reading): MigrationDeclaration | null;
|
|
15
|
+
//# sourceMappingURL=migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAW/D,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQ3D,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,EAAE,CAuD/E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,OAAO,GAAG,oBAAoB,GAAG,IAAI,CAKhJ"}
|