@graview/core 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 +35 -0
- package/dist/app.d.ts +294 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +49 -0
- package/dist/app.js.map +1 -0
- package/dist/arrange.d.ts +185 -0
- package/dist/arrange.d.ts.map +1 -0
- package/dist/arrange.js +456 -0
- package/dist/arrange.js.map +1 -0
- package/dist/beginning.d.ts +65 -0
- package/dist/beginning.d.ts.map +1 -0
- package/dist/beginning.js +94 -0
- package/dist/beginning.js.map +1 -0
- package/dist/bind.d.ts +42 -0
- package/dist/bind.d.ts.map +1 -0
- package/dist/bind.js +26 -0
- package/dist/bind.js.map +1 -0
- package/dist/city.d.ts +93 -0
- package/dist/city.d.ts.map +1 -0
- package/dist/city.js +160 -0
- package/dist/city.js.map +1 -0
- package/dist/cli/check/arrangement.d.ts +13 -0
- package/dist/cli/check/arrangement.d.ts.map +1 -0
- package/dist/cli/check/arrangement.js +63 -0
- package/dist/cli/check/arrangement.js.map +1 -0
- package/dist/cli/check/beginnings.d.ts +16 -0
- package/dist/cli/check/beginnings.d.ts.map +1 -0
- package/dist/cli/check/beginnings.js +53 -0
- package/dist/cli/check/beginnings.js.map +1 -0
- package/dist/cli/check/brand.d.ts +17 -0
- package/dist/cli/check/brand.d.ts.map +1 -0
- package/dist/cli/check/brand.js +153 -0
- package/dist/cli/check/brand.js.map +1 -0
- package/dist/cli/check/city.d.ts +17 -0
- package/dist/cli/check/city.d.ts.map +1 -0
- package/dist/cli/check/city.js +58 -0
- package/dist/cli/check/city.js.map +1 -0
- package/dist/cli/check/context.d.ts +50 -0
- package/dist/cli/check/context.d.ts.map +1 -0
- package/dist/cli/check/context.js +37 -0
- package/dist/cli/check/context.js.map +1 -0
- package/dist/cli/check/fields.d.ts +16 -0
- package/dist/cli/check/fields.d.ts.map +1 -0
- package/dist/cli/check/fields.js +237 -0
- package/dist/cli/check/fields.js.map +1 -0
- package/dist/cli/check/index.d.ts +14 -0
- package/dist/cli/check/index.d.ts.map +1 -0
- package/dist/cli/check/index.js +14 -0
- package/dist/cli/check/index.js.map +1 -0
- package/dist/cli/check/intelligence.d.ts +17 -0
- package/dist/cli/check/intelligence.d.ts.map +1 -0
- package/dist/cli/check/intelligence.js +136 -0
- package/dist/cli/check/intelligence.js.map +1 -0
- package/dist/cli/check/lenses.d.ts +17 -0
- package/dist/cli/check/lenses.d.ts.map +1 -0
- package/dist/cli/check/lenses.js +239 -0
- package/dist/cli/check/lenses.js.map +1 -0
- package/dist/cli/check/migrations.d.ts +16 -0
- package/dist/cli/check/migrations.d.ts.map +1 -0
- package/dist/cli/check/migrations.js +43 -0
- package/dist/cli/check/migrations.js.map +1 -0
- package/dist/cli/check/modules.d.ts +16 -0
- package/dist/cli/check/modules.d.ts.map +1 -0
- package/dist/cli/check/modules.js +123 -0
- package/dist/cli/check/modules.js.map +1 -0
- package/dist/cli/check/policy.d.ts +16 -0
- package/dist/cli/check/policy.d.ts.map +1 -0
- package/dist/cli/check/policy.js +90 -0
- package/dist/cli/check/policy.js.map +1 -0
- package/dist/cli/check/relations.d.ts +29 -0
- package/dist/cli/check/relations.d.ts.map +1 -0
- package/dist/cli/check/relations.js +279 -0
- package/dist/cli/check/relations.js.map +1 -0
- package/dist/cli/check/routes.d.ts +16 -0
- package/dist/cli/check/routes.d.ts.map +1 -0
- package/dist/cli/check/routes.js +31 -0
- package/dist/cli/check/routes.js.map +1 -0
- package/dist/cli/check/settings.d.ts +16 -0
- package/dist/cli/check/settings.d.ts.map +1 -0
- package/dist/cli/check/settings.js +81 -0
- package/dist/cli/check/settings.js.map +1 -0
- package/dist/cli/check.d.ts +36 -0
- package/dist/cli/check.d.ts.map +1 -0
- package/dist/cli/check.js +76 -0
- package/dist/cli/check.js.map +1 -0
- package/dist/cli/create.d.ts +20 -0
- package/dist/cli/create.d.ts.map +1 -0
- package/dist/cli/create.js +251 -0
- package/dist/cli/create.js.map +1 -0
- package/dist/cli/describe.d.ts +35 -0
- package/dist/cli/describe.d.ts.map +1 -0
- package/dist/cli/describe.js +230 -0
- package/dist/cli/describe.js.map +1 -0
- package/dist/cli/docs.d.ts +11 -0
- package/dist/cli/docs.d.ts.map +1 -0
- package/dist/cli/docs.js +152 -0
- package/dist/cli/docs.js.map +1 -0
- package/dist/cli/index.d.ts +18 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +281 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/extend.d.ts +23 -0
- package/dist/extend.d.ts.map +1 -0
- package/dist/extend.js +53 -0
- package/dist/extend.js.map +1 -0
- package/dist/graph/diff.d.ts +31 -0
- package/dist/graph/diff.d.ts.map +1 -0
- package/dist/graph/diff.js +71 -0
- package/dist/graph/diff.js.map +1 -0
- package/dist/graph/graph.d.ts +69 -0
- package/dist/graph/graph.d.ts.map +1 -0
- package/dist/graph/graph.js +284 -0
- package/dist/graph/graph.js.map +1 -0
- package/dist/graph/primitives.d.ts +52 -0
- package/dist/graph/primitives.d.ts.map +1 -0
- package/dist/graph/primitives.js +62 -0
- package/dist/graph/primitives.js.map +1 -0
- package/dist/graph/tracked.d.ts +31 -0
- package/dist/graph/tracked.d.ts.map +1 -0
- package/dist/graph/tracked.js +69 -0
- package/dist/graph/tracked.js.map +1 -0
- package/dist/graph/types.d.ts +34 -0
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +0 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/installation.d.ts +112 -0
- package/dist/installation.d.ts.map +1 -0
- package/dist/installation.js +193 -0
- package/dist/installation.js.map +1 -0
- package/dist/intelligence-bridge.d.ts +73 -0
- package/dist/intelligence-bridge.d.ts.map +1 -0
- package/dist/intelligence-bridge.js +31 -0
- package/dist/intelligence-bridge.js.map +1 -0
- package/dist/invariants/engine.d.ts +36 -0
- package/dist/invariants/engine.d.ts.map +1 -0
- package/dist/invariants/engine.js +88 -0
- package/dist/invariants/engine.js.map +1 -0
- package/dist/invariants/types.d.ts +75 -0
- package/dist/invariants/types.d.ts.map +1 -0
- package/dist/invariants/types.js +2 -0
- package/dist/invariants/types.js.map +1 -0
- package/dist/modules.d.ts +75 -0
- package/dist/modules.d.ts.map +1 -0
- package/dist/modules.js +87 -0
- package/dist/modules.js.map +1 -0
- package/dist/mutations/decidable.d.ts +26 -0
- package/dist/mutations/decidable.d.ts.map +1 -0
- package/dist/mutations/decidable.js +39 -0
- package/dist/mutations/decidable.js.map +1 -0
- package/dist/mutations/define-mutation.d.ts +32 -0
- package/dist/mutations/define-mutation.d.ts.map +1 -0
- package/dist/mutations/define-mutation.js +181 -0
- package/dist/mutations/define-mutation.js.map +1 -0
- package/dist/mutations/derive-edits.d.ts +75 -0
- package/dist/mutations/derive-edits.d.ts.map +1 -0
- package/dist/mutations/derive-edits.js +240 -0
- package/dist/mutations/derive-edits.js.map +1 -0
- package/dist/mutations/form.d.ts +63 -0
- package/dist/mutations/form.d.ts.map +1 -0
- package/dist/mutations/form.js +113 -0
- package/dist/mutations/form.js.map +1 -0
- package/dist/mutations/node-ref.d.ts +83 -0
- package/dist/mutations/node-ref.d.ts.map +1 -0
- package/dist/mutations/node-ref.js +113 -0
- package/dist/mutations/node-ref.js.map +1 -0
- package/dist/mutations/types.d.ts +136 -0
- package/dist/mutations/types.d.ts.map +1 -0
- package/dist/mutations/types.js +2 -0
- package/dist/mutations/types.js.map +1 -0
- package/dist/ops/log.d.ts +35 -0
- package/dist/ops/log.d.ts.map +1 -0
- package/dist/ops/log.js +103 -0
- package/dist/ops/log.js.map +1 -0
- package/dist/ops/types.d.ts +52 -0
- package/dist/ops/types.d.ts.map +1 -0
- package/dist/ops/types.js +2 -0
- package/dist/ops/types.js.map +1 -0
- package/dist/ops/undo.d.ts +33 -0
- package/dist/ops/undo.d.ts.map +1 -0
- package/dist/ops/undo.js +65 -0
- package/dist/ops/undo.js.map +1 -0
- package/dist/permissions/policy.d.ts +68 -0
- package/dist/permissions/policy.d.ts.map +1 -0
- package/dist/permissions/policy.js +191 -0
- package/dist/permissions/policy.js.map +1 -0
- package/dist/permissions/types.d.ts +78 -0
- package/dist/permissions/types.d.ts.map +1 -0
- package/dist/permissions/types.js +17 -0
- package/dist/permissions/types.js.map +1 -0
- package/dist/persistence/memory.d.ts +6 -0
- package/dist/persistence/memory.d.ts.map +1 -0
- package/dist/persistence/memory.js +31 -0
- package/dist/persistence/memory.js.map +1 -0
- package/dist/persistence/sqlite.d.ts +59 -0
- package/dist/persistence/sqlite.d.ts.map +1 -0
- package/dist/persistence/sqlite.js +131 -0
- package/dist/persistence/sqlite.js.map +1 -0
- package/dist/persistence/types.d.ts +22 -0
- package/dist/persistence/types.d.ts.map +1 -0
- package/dist/persistence/types.js +2 -0
- package/dist/persistence/types.js.map +1 -0
- package/dist/presence.d.ts +38 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +50 -0
- package/dist/presence.js.map +1 -0
- package/dist/scaffold/domain.d.ts +8 -0
- package/dist/scaffold/domain.d.ts.map +1 -0
- package/dist/scaffold/domain.js +331 -0
- package/dist/scaffold/domain.js.map +1 -0
- package/dist/scaffold/index.d.ts +66 -0
- package/dist/scaffold/index.d.ts.map +1 -0
- package/dist/scaffold/index.js +142 -0
- package/dist/scaffold/index.js.map +1 -0
- package/dist/scaffold/lens.d.ts +31 -0
- package/dist/scaffold/lens.d.ts.map +1 -0
- package/dist/scaffold/lens.js +176 -0
- package/dist/scaffold/lens.js.map +1 -0
- package/dist/scaffold/names.d.ts +44 -0
- package/dist/scaffold/names.d.ts.map +1 -0
- package/dist/scaffold/names.js +69 -0
- package/dist/scaffold/names.js.map +1 -0
- package/dist/scaffold/project.d.ts +41 -0
- package/dist/scaffold/project.d.ts.map +1 -0
- package/dist/scaffold/project.js +604 -0
- package/dist/scaffold/project.js.map +1 -0
- package/dist/scaffold/ui.d.ts +15 -0
- package/dist/scaffold/ui.d.ts.map +1 -0
- package/dist/scaffold/ui.js +536 -0
- package/dist/scaffold/ui.js.map +1 -0
- package/dist/schema/define-node.d.ts +132 -0
- package/dist/schema/define-node.d.ts.map +1 -0
- package/dist/schema/define-node.js +254 -0
- package/dist/schema/define-node.js.map +1 -0
- package/dist/schema/figures.d.ts +42 -0
- package/dist/schema/figures.d.ts.map +1 -0
- package/dist/schema/figures.js +220 -0
- package/dist/schema/figures.js.map +1 -0
- package/dist/schema/json-schema.d.ts +39 -0
- package/dist/schema/json-schema.d.ts.map +1 -0
- package/dist/schema/json-schema.js +74 -0
- package/dist/schema/json-schema.js.map +1 -0
- package/dist/schema/schema.d.ts +43 -0
- package/dist/schema/schema.d.ts.map +1 -0
- package/dist/schema/schema.js +102 -0
- package/dist/schema/schema.js.map +1 -0
- package/dist/schema/types.d.ts +201 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +2 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/search.d.ts +215 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +449 -0
- package/dist/search.js.map +1 -0
- package/dist/settings.d.ts +30 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +74 -0
- package/dist/settings.js.map +1 -0
- package/dist/store.d.ts +284 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +660 -0
- package/dist/store.js.map +1 -0
- package/dist/studio-door.d.ts +187 -0
- package/dist/studio-door.d.ts.map +1 -0
- package/dist/studio-door.js +20 -0
- package/dist/studio-door.js.map +1 -0
- package/dist/sync/conflict.d.ts +37 -0
- package/dist/sync/conflict.d.ts.map +1 -0
- package/dist/sync/conflict.js +56 -0
- package/dist/sync/conflict.js.map +1 -0
- package/dist/sync/engine.d.ts +118 -0
- package/dist/sync/engine.d.ts.map +1 -0
- package/dist/sync/engine.js +341 -0
- package/dist/sync/engine.js.map +1 -0
- package/dist/sync/google-calendar.d.ts +54 -0
- package/dist/sync/google-calendar.d.ts.map +1 -0
- package/dist/sync/google-calendar.js +167 -0
- package/dist/sync/google-calendar.js.map +1 -0
- package/dist/sync/types.d.ts +125 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +6 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/temporal/effectivity.d.ts +75 -0
- package/dist/temporal/effectivity.d.ts.map +1 -0
- package/dist/temporal/effectivity.js +89 -0
- package/dist/temporal/effectivity.js.map +1 -0
- package/dist/testing.d.ts +63 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +194 -0
- package/dist/testing.js.map +1 -0
- package/dist/theme/contrast.d.ts +47 -0
- package/dist/theme/contrast.d.ts.map +1 -0
- package/dist/theme/contrast.js +172 -0
- package/dist/theme/contrast.js.map +1 -0
- package/dist/theme/derive.d.ts +81 -0
- package/dist/theme/derive.d.ts.map +1 -0
- package/dist/theme/derive.js +171 -0
- package/dist/theme/derive.js.map +1 -0
- package/dist/theme/kit.d.ts +106 -0
- package/dist/theme/kit.d.ts.map +1 -0
- package/dist/theme/kit.js +84 -0
- package/dist/theme/kit.js.map +1 -0
- package/dist/theme/palettes.d.ts +32 -0
- package/dist/theme/palettes.d.ts.map +1 -0
- package/dist/theme/palettes.js +96 -0
- package/dist/theme/palettes.js.map +1 -0
- package/dist/theme/types.d.ts +131 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +23 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/views/types.d.ts +89 -0
- package/dist/views/types.d.ts.map +1 -0
- package/dist/views/types.js +88 -0
- package/dist/views/types.js.map +1 -0
- package/dist/watched.d.ts +33 -0
- package/dist/watched.d.ts.map +1 -0
- package/dist/watched.js +50 -0
- package/dist/watched.js.map +1 -0
- package/dist/who.d.ts +26 -0
- package/dist/who.d.ts.map +1 -0
- package/dist/who.js +20 -0
- package/dist/who.js.map +1 -0
- package/package.json +77 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
export { z } from "zod";
|
|
2
|
+
export { defineNode, isCurrent, labelOf, describeNode, tellApart } from "./schema/define-node.js";
|
|
3
|
+
export { nameOfAuthor } from "./who.js";
|
|
4
|
+
export { createSchema, SchemaError } from "./schema/schema.js";
|
|
5
|
+
export type { AnySchema, EdgeKindInfo, KindOfSchema, NodeOfKind, NodeOfSchema, Schema, } from "./schema/schema.js";
|
|
6
|
+
export type { LifecycleDeclaration, AnyNodeDefinition, DeclaredEdgeTargets, EdgeCardinality, EdgeDeclaration, EdgeMap, EmptyEdgeMap, FieldRoleMap, NodeDefinition, NodeDefinitionSpec, NodeOf, ValidateEdgeTargets, } from "./schema/types.js";
|
|
7
|
+
export { mutationToolSchema, nodeJsonSchema, schemaJson, toJsonSchema, } from "./schema/json-schema.js";
|
|
8
|
+
export type { JsonSchema, MutationToolSchema } from "./schema/json-schema.js";
|
|
9
|
+
export { Graph, GraphError } from "./graph/graph.js";
|
|
10
|
+
export type { GraphListener, GraphOptions } from "./graph/graph.js";
|
|
11
|
+
export { diffSnapshots, EMPTY_DIFF, isEmptyDiff } from "./graph/diff.js";
|
|
12
|
+
export type { GraphDiff, NodeChange } from "./graph/diff.js";
|
|
13
|
+
export { invert, isUnset, normalise, UNSET, writesOf } from "./graph/primitives.js";
|
|
14
|
+
export type { Primitive } from "./graph/primitives.js";
|
|
15
|
+
export { TrackedReader } from "./graph/tracked.js";
|
|
16
|
+
export { edgeId } from "./graph/types.js";
|
|
17
|
+
export type { AnyGraphNode, GraphEdge, GraphNodeBase, GraphReader, GraphSnapshot, } from "./graph/types.js";
|
|
18
|
+
export { defineInvariant, evaluate, UnregisteredInvariantError, violationsTouching } from "./invariants/engine.js";
|
|
19
|
+
export type { EvaluateOptions, InvariantContext, InvariantDefinition, InvariantEvalArgs, InvariantScope, Repair, Violation, } from "./invariants/types.js";
|
|
20
|
+
export { admitArrangement, arrange, arrangeable, arrangeAllows, asksForThePast, bucketStart, conditionHolds, edgesOf, formatArrangement, matches, NO_ARRANGEMENT, parseArrangement, } from "./arrange.js";
|
|
21
|
+
export type { Arrangeable, ArrangeContext, Arranged, ArrangeGraph, ArrangedGroup, Arrangement, ArrangementWords, ArrangeNode, ArrangeOffer, ArrangeOption, Condition, DateBucket, Grouping, OfferType, Sort, SortDirection, } from "./arrange.js";
|
|
22
|
+
export { actsOn, describeSearched, fold, fragmentOf, matchNode, parseQuery, search, searchableFields, squeeze, strengthOf, touchWeights, } from "./search.js";
|
|
23
|
+
export type { Hit, HitAbout, MatchStrength, ParsedQuery, SearchCondition, SearchOptions, SearchResult, Why, } from "./search.js";
|
|
24
|
+
export { compileMutation, defineMutation, takesAnId } from "./mutations/define-mutation.js";
|
|
25
|
+
export type { CompiledMutation } from "./mutations/define-mutation.js";
|
|
26
|
+
export { deriveEditMutations, deriveMutations, deriveRemoveMutations, derivedVia, editMutationName, editVia, removeMutationName, removeVia, fieldWriters, fieldsWrittenBy, settableFields, subjectKindsOf, unwrittenFields, } from "./mutations/derive-edits.js";
|
|
27
|
+
export { argShape, describeArg, nodeRef, nodeRefArgs, nodeRefKinds, } from "./mutations/node-ref.js";
|
|
28
|
+
export type { ArgShape } from "./mutations/node-ref.js";
|
|
29
|
+
export type { AnyMutationDefinition, MutationCall, MutationContext, MutationDefinition, MutationDefinitionSpec, } from "./mutations/types.js";
|
|
30
|
+
export { OperationLog } from "./ops/log.js";
|
|
31
|
+
export { checkUndo, undoPrimitives } from "./ops/undo.js";
|
|
32
|
+
export type { UndoBlock, UndoCheck } from "./ops/undo.js";
|
|
33
|
+
export type { Author, Batch, Operation } from "./ops/types.js";
|
|
34
|
+
export { permits, permittedMutations, rolesOf, rolesWhoCould, whyNot, } from "./permissions/policy.js";
|
|
35
|
+
export type { PolicyWords } from "./permissions/policy.js";
|
|
36
|
+
export { PermissionDeniedError } from "./permissions/types.js";
|
|
37
|
+
export { brandFromAccent, checkBrandContrast, hueFor, } from "./theme/derive.js";
|
|
38
|
+
export type { AccentBrandOptions, DerivedBrand, RefusedBrand } from "./theme/derive.js";
|
|
39
|
+
export { checkContrast, coloursIn, composite, contrast, luminance, } from "./theme/contrast.js";
|
|
40
|
+
export type { ContrastFinding, Rgba } from "./theme/contrast.js";
|
|
41
|
+
export { DARK, LIGHT, SCHEMES } from "./theme/palettes.js";
|
|
42
|
+
export { googleCalendar, googleCalendarMapping } from "./sync/google-calendar.js";
|
|
43
|
+
export type { Fetcher, GoogleCalendarOptions } from "./sync/google-calendar.js";
|
|
44
|
+
export { syncConflictInvariant, SYNC_CONFLICTS } from "./sync/conflict.js";
|
|
45
|
+
export type { SyncConflictOptions } from "./sync/conflict.js";
|
|
46
|
+
export { SyncEngine } from "./sync/engine.js";
|
|
47
|
+
export type { SyncConflict, SyncOptions, SyncReport } from "./sync/engine.js";
|
|
48
|
+
export { EMPTY_SYNC_STATE, systemAuthor } from "./sync/types.js";
|
|
49
|
+
export type { RemoteAck, RemoteChange, RemoteLink, RemoteSystem, RemoteWrite, ResourceMapping, SyncMapping, SyncState, } from "./sync/types.js";
|
|
50
|
+
export { checkpoint, checkpointOn, checkpointsBetween, effectivity, isEffectiveBetween, isEffectiveOn, isoDate, } from "./temporal/effectivity.js";
|
|
51
|
+
export type { Checkpoint, Effectivity } from "./temporal/effectivity.js";
|
|
52
|
+
export { article, fieldWords, humaniseField, nounOf, readableFields, summarise, withArticle } from "./schema/define-node.js";
|
|
53
|
+
export type { ReadableField } from "./schema/define-node.js";
|
|
54
|
+
export { TEXT_PAIRS } from "./theme/types.js";
|
|
55
|
+
export { checkKitContrast, connectorHueColour, connectorKitFor, DEFAULT_KIT, kitVariables, resolveKit } from "./theme/kit.js";
|
|
56
|
+
export type { ConnectorKit, ConnectorRoute, Kit, KitContrastFinding, KitEndCap, KitOverrides, KitStrokePattern } from "./theme/kit.js";
|
|
57
|
+
export type { Brand, Scheme, TextPair, ThemeTokens } from "./theme/types.js";
|
|
58
|
+
export type { Grant, Policy, Principal, Refusal } from "./permissions/types.js";
|
|
59
|
+
export { Store, violationKey } from "./store.js";
|
|
60
|
+
export type { ApplyOptions, ApplyResult, Preview, StoreOptions, UndoPreview, } from "./store.js";
|
|
61
|
+
export { createViewRegistry, FIDELITIES, placeSlug } from "./views/types.js";
|
|
62
|
+
export { FIGURES, FIGURE_NAMES, figureBrief, figureFaults, figureSvg } from "./schema/figures.js";
|
|
63
|
+
export type { Figure } from "./schema/figures.js";
|
|
64
|
+
export type { Cardinality, Fidelity, ViewCell, ViewRegistration, ViewMeta, Place, ViewRegistry, } from "./views/types.js";
|
|
65
|
+
export { createMemoryAdapter } from "./persistence/memory.js";
|
|
66
|
+
export { createSqliteAdapter, SQLITE_TABLE_SHAPE } from "./persistence/sqlite.js";
|
|
67
|
+
export type { SqliteAdapterOptions, SqliteDatabase, SqliteStatement } from "./persistence/sqlite.js";
|
|
68
|
+
export type { PersistenceAdapter } from "./persistence/types.js";
|
|
69
|
+
export { extendInvariants, extendMutations } from "./extend.js";
|
|
70
|
+
export { bindSchema } from "./bind.js";
|
|
71
|
+
export type { SchemaBinding } from "./bind.js";
|
|
72
|
+
export { formField, formFields, formComplete } from "./mutations/form.js";
|
|
73
|
+
export type { FormField, ScalarField } from "./mutations/form.js";
|
|
74
|
+
export { resolveModules } from "./modules.js";
|
|
75
|
+
export { declareInstallation, INSTALLATION_MODULE } from "./installation.js";
|
|
76
|
+
export type { Installation, InstallationOf, InstallationOptions } from "./installation.js";
|
|
77
|
+
export type { ModuleDeclaration, ModuleMap, ModuleProjection } from "./modules.js";
|
|
78
|
+
export type { IntelligenceCapability, IntelligenceKind, IntelligenceProviderDeclaration, IntelligenceReach, MigrationDeclaration, SettingDeclaration, } from "./app.js";
|
|
79
|
+
export { capabilitiesOf, describeCapability, providerCan } from "./app.js";
|
|
80
|
+
export { undecidableArguments } from "./mutations/decidable.js";
|
|
81
|
+
export type { UndecidableArgument } from "./mutations/decidable.js";
|
|
82
|
+
export { motion, readerSettings, textSize } from "./settings.js";
|
|
83
|
+
export { DECISION_BRIDGE_PATH, LOCAL_BRIDGE_PATH } from "./intelligence-bridge.js";
|
|
84
|
+
export { STUDIO_DOOR_PATH } from "./studio-door.js";
|
|
85
|
+
export type { DeclarationChange, StudioDoorAnswer, StudioDoorAsk, StudioDoorDiagnostic, StudioDoorSource, StudioDoorStatus, } from "./studio-door.js";
|
|
86
|
+
export type { DecisionBridgeAnswer, DecisionBridgeAsk, DecisionBridgeStatus, LocalBridgeAnswer, LocalBridgeAsk, LocalBridgeStatus, } from "./intelligence-bridge.js";
|
|
87
|
+
export { describeApp } from "./cli/describe.js";
|
|
88
|
+
export type { DescribeOptions } from "./cli/describe.js";
|
|
89
|
+
export { beginning } from "./beginning.js";
|
|
90
|
+
export type { Beginning, KindBeginning } from "./beginning.js";
|
|
91
|
+
export { defineApp } from "./app.js";
|
|
92
|
+
export type { EntityBinding, GraviewApp, LensDeclaration } from "./app.js";
|
|
93
|
+
export { checkApp, formatFindings } from "./cli/check.js";
|
|
94
|
+
export type { CheckResult, Finding, Severity } from "./cli/check.js";
|
|
95
|
+
export { generateAgentsMd, generateLlmsTxt } from "./cli/docs.js";
|
|
96
|
+
export { BLOCK, cityExtent, cityMap, MAX_SIDE, plotsOverlap, roadsOf, sharedEdges, sideFor, toIso } from "./city.js";
|
|
97
|
+
export type { CityHints, CityMap, Plot, Road } from "./city.js";
|
|
98
|
+
export { foldPresence, PRESENCE_TTL_MS, samePresence } from "./presence.js";
|
|
99
|
+
export type { Presence, PresenceChannel, PresenceRobot } from "./presence.js";
|
|
100
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ONE COPY OF ZOD, AND IT IS THIS ONE.
|
|
3
|
+
*
|
|
4
|
+
* A kind's fields are a `z.ZodObject`, so a project building one with a
|
|
5
|
+
* DIFFERENT copy of zod hands `defineNode` a nominally incompatible type —
|
|
6
|
+
* and comparing a declared field schema across two copies exhausts tsc's
|
|
7
|
+
* heap rather than saying so. The scaffolder used to answer that with a
|
|
8
|
+
* `paths` entry pointing at an exact version inside the framework's own
|
|
9
|
+
* pnpm store, which typechecks until the framework bumps zod and then reads
|
|
10
|
+
* as a corrupted install.
|
|
11
|
+
*
|
|
12
|
+
* Re-exporting is the answer that cannot drift: a project writes
|
|
13
|
+
* `import { z } from "@graview/core"` and gets the copy the framework was
|
|
14
|
+
* built with, for types and at runtime, with nothing to pin and nothing to
|
|
15
|
+
* keep in step.
|
|
16
|
+
*/
|
|
17
|
+
export { z } from "zod";
|
|
18
|
+
// Schema — the single declaration everything else derives from.
|
|
19
|
+
export { defineNode, isCurrent, labelOf, describeNode, tellApart } from "./schema/define-node.js";
|
|
20
|
+
export { nameOfAuthor } from "./who.js";
|
|
21
|
+
export { createSchema, SchemaError } from "./schema/schema.js";
|
|
22
|
+
export { mutationToolSchema, nodeJsonSchema, schemaJson, toJsonSchema, } from "./schema/json-schema.js";
|
|
23
|
+
// Graph — the reactive in-memory model the framework owns.
|
|
24
|
+
export { Graph, GraphError } from "./graph/graph.js";
|
|
25
|
+
export { diffSnapshots, EMPTY_DIFF, isEmptyDiff } from "./graph/diff.js";
|
|
26
|
+
export { invert, isUnset, normalise, UNSET, writesOf } from "./graph/primitives.js";
|
|
27
|
+
export { TrackedReader } from "./graph/tracked.js";
|
|
28
|
+
export { edgeId } from "./graph/types.js";
|
|
29
|
+
// Invariants — pure evaluation, with repairs as the seam to affordances.
|
|
30
|
+
export { defineInvariant, evaluate, UnregisteredInvariantError, violationsTouching } from "./invariants/engine.js";
|
|
31
|
+
// Arrangement — what a kind can be sorted, filtered and grouped by, and the grammar that carries it.
|
|
32
|
+
export { admitArrangement, arrange, arrangeable, arrangeAllows, asksForThePast, bucketStart, conditionHolds, edgesOf, formatArrangement, matches, NO_ARRANGEMENT, parseArrangement, } from "./arrange.js";
|
|
33
|
+
// Search — one matcher finds a record, a kind, a place, an act or a rule; the graph is the result list.
|
|
34
|
+
export { actsOn, describeSearched, fold, fragmentOf, matchNode, parseQuery, search, searchableFields, squeeze, strengthOf, touchWeights, } from "./search.js";
|
|
35
|
+
// Mutations — the only writes.
|
|
36
|
+
export { compileMutation, defineMutation, takesAnId } from "./mutations/define-mutation.js";
|
|
37
|
+
export { deriveEditMutations, deriveMutations, deriveRemoveMutations, derivedVia, editMutationName, editVia, removeMutationName, removeVia, fieldWriters, fieldsWrittenBy, settableFields, subjectKindsOf, unwrittenFields, } from "./mutations/derive-edits.js";
|
|
38
|
+
export { argShape, describeArg, nodeRef, nodeRefArgs, nodeRefKinds, } from "./mutations/node-ref.js";
|
|
39
|
+
// Operation log — attribution, causality, selective undo.
|
|
40
|
+
export { OperationLog } from "./ops/log.js";
|
|
41
|
+
export { checkUndo, undoPrimitives } from "./ops/undo.js";
|
|
42
|
+
export { permits, permittedMutations, rolesOf, rolesWhoCould, whyNot, } from "./permissions/policy.js";
|
|
43
|
+
export { PermissionDeniedError } from "./permissions/types.js";
|
|
44
|
+
export { brandFromAccent, checkBrandContrast, hueFor, } from "./theme/derive.js";
|
|
45
|
+
export { checkContrast, coloursIn, composite, contrast, luminance, } from "./theme/contrast.js";
|
|
46
|
+
export { DARK, LIGHT, SCHEMES } from "./theme/palettes.js";
|
|
47
|
+
export { googleCalendar, googleCalendarMapping } from "./sync/google-calendar.js";
|
|
48
|
+
export { syncConflictInvariant, SYNC_CONFLICTS } from "./sync/conflict.js";
|
|
49
|
+
export { SyncEngine } from "./sync/engine.js";
|
|
50
|
+
export { EMPTY_SYNC_STATE, systemAuthor } from "./sync/types.js";
|
|
51
|
+
export { checkpoint, checkpointOn, checkpointsBetween, effectivity, isEffectiveBetween, isEffectiveOn, isoDate, } from "./temporal/effectivity.js";
|
|
52
|
+
export { article, fieldWords, humaniseField, nounOf, readableFields, summarise, withArticle } from "./schema/define-node.js";
|
|
53
|
+
export { TEXT_PAIRS } from "./theme/types.js";
|
|
54
|
+
export { checkKitContrast, connectorHueColour, connectorKitFor, DEFAULT_KIT, kitVariables, resolveKit } from "./theme/kit.js";
|
|
55
|
+
// Store — graph + log + mutations + invariants, one object.
|
|
56
|
+
export { Store, violationKey } from "./store.js";
|
|
57
|
+
// Views — the cardinality x fidelity matrix.
|
|
58
|
+
export { createViewRegistry, FIDELITIES, placeSlug } from "./views/types.js";
|
|
59
|
+
export { FIGURES, FIGURE_NAMES, figureBrief, figureFaults, figureSvg } from "./schema/figures.js";
|
|
60
|
+
// Persistence — pluggable underneath the framework-owned graph.
|
|
61
|
+
export { createMemoryAdapter } from "./persistence/memory.js";
|
|
62
|
+
/*
|
|
63
|
+
* The sqlite adapter, exported so `graview serve --sqlite` can reach it.
|
|
64
|
+
* It takes a database OBJECT rather than opening one, so `better-sqlite3`
|
|
65
|
+
* is the caller's dependency and never this package's — nothing here is a
|
|
66
|
+
* native module and nothing here needs building.
|
|
67
|
+
*/
|
|
68
|
+
export { createSqliteAdapter, SQLITE_TABLE_SHAPE } from "./persistence/sqlite.js";
|
|
69
|
+
// Extending a schema without rewriting what was written against the base.
|
|
70
|
+
export { extendInvariants, extendMutations } from "./extend.js";
|
|
71
|
+
// Schema binding — infers mutation and invariant types from one schema.
|
|
72
|
+
export { bindSchema } from "./bind.js";
|
|
73
|
+
// App bundle, checks and generated agent docs.
|
|
74
|
+
export { formField, formFields, formComplete } from "./mutations/form.js";
|
|
75
|
+
export { resolveModules } from "./modules.js";
|
|
76
|
+
export { declareInstallation, INSTALLATION_MODULE } from "./installation.js";
|
|
77
|
+
export { capabilitiesOf, describeCapability, providerCan } from "./app.js";
|
|
78
|
+
export { undecidableArguments } from "./mutations/decidable.js";
|
|
79
|
+
export { motion, readerSettings, textSize } from "./settings.js";
|
|
80
|
+
export { DECISION_BRIDGE_PATH, LOCAL_BRIDGE_PATH } from "./intelligence-bridge.js";
|
|
81
|
+
export { STUDIO_DOOR_PATH } from "./studio-door.js";
|
|
82
|
+
export { describeApp } from "./cli/describe.js";
|
|
83
|
+
export { beginning } from "./beginning.js";
|
|
84
|
+
export { defineApp } from "./app.js";
|
|
85
|
+
export { checkApp, formatFindings } from "./cli/check.js";
|
|
86
|
+
export { generateAgentsMd, generateLlmsTxt } from "./cli/docs.js";
|
|
87
|
+
// The city: a map drawn from the declaration, in lattice cells.
|
|
88
|
+
export { BLOCK, cityExtent, cityMap, MAX_SIDE, plotsOverlap, roadsOf, sharedEdges, sideFor, toIso } from "./city.js";
|
|
89
|
+
export { foldPresence, PRESENCE_TTL_MS, samePresence } from "./presence.js";
|
|
90
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AnyMutationDefinition } from "./mutations/types.js";
|
|
3
|
+
import type { ModuleMap } from "./modules.js";
|
|
4
|
+
import type { Grant, Policy } from "./permissions/types.js";
|
|
5
|
+
import type { AnyNodeDefinition } from "./schema/types.js";
|
|
6
|
+
export interface InstallationOptions<R extends string = string> {
|
|
7
|
+
/** Every role the policy knows. A user holds some of them. */
|
|
8
|
+
readonly roles: readonly R[];
|
|
9
|
+
/** The role that administers: invites, welcomes, removes, grants, revokes. */
|
|
10
|
+
readonly admin: R;
|
|
11
|
+
/** Plural nouns for the two kinds, if "People" and "Invitations" are wrong here. */
|
|
12
|
+
readonly plurals?: {
|
|
13
|
+
readonly user?: string;
|
|
14
|
+
readonly invitation?: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* People are not optional in this app.
|
|
18
|
+
*
|
|
19
|
+
* An installation without people is a household of one — a graph with no
|
|
20
|
+
* user nodes, not a disabled module — and an app whose domain points at a
|
|
21
|
+
* person ("who looks after this ground") has no way to say so otherwise:
|
|
22
|
+
* it either drops the module, drawing the installation for everybody, or
|
|
23
|
+
* carries a `module-edge-leak` warning per edge forever. Declared
|
|
24
|
+
* required, the module is never off, and the checker stops asking a
|
|
25
|
+
* question with only one answer.
|
|
26
|
+
*/
|
|
27
|
+
readonly required?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface InstallationOf<U extends AnyNodeDefinition = AnyNodeDefinition, I extends AnyNodeDefinition = AnyNodeDefinition> {
|
|
30
|
+
/**
|
|
31
|
+
* The two kinds, ready for `createSchema([...yours, ...installation.kinds])`.
|
|
32
|
+
*
|
|
33
|
+
* WITH THEIR OWN TYPES, as a tuple, because they are statically known —
|
|
34
|
+
* they are built a few lines down from here. They used to be widened to
|
|
35
|
+
* `AnyNodeDefinition[]`, and an app that spread them lost every kind name
|
|
36
|
+
* in its schema type, so every app spread them as an empty tuple instead
|
|
37
|
+
* and `user` ended up in the graph and not in the type. That is fine until
|
|
38
|
+
* the domain wants to point at a person — "who looks after this ground",
|
|
39
|
+
* "whose round is this", "who reported it" — because `ValidateEdgeTargets`
|
|
40
|
+
* is a TYPE-level check: the runtime resolved the edge perfectly and tsc
|
|
41
|
+
* refused to compile it. No first-party app had ever pointed at a person,
|
|
42
|
+
* which is why it survived this long.
|
|
43
|
+
*/
|
|
44
|
+
readonly kinds: readonly [U, I];
|
|
45
|
+
/** The acts, ready for `mutations: [...yours, ...installation.mutations]`. */
|
|
46
|
+
readonly mutations: readonly AnyMutationDefinition<never>[];
|
|
47
|
+
/** The module, drawn only for those who administer it. */
|
|
48
|
+
readonly modules: ModuleMap;
|
|
49
|
+
/** The policy's grants for the acts, and the self grant for a profile. */
|
|
50
|
+
readonly grants: readonly Grant[];
|
|
51
|
+
/** Your policy with the installation's grants and roles folded in. */
|
|
52
|
+
withPolicy(policy?: Policy): Policy;
|
|
53
|
+
}
|
|
54
|
+
export declare const INSTALLATION_MODULE = "installation";
|
|
55
|
+
/**
|
|
56
|
+
* What `declareInstallation` gives back, with the two kinds' own types.
|
|
57
|
+
*
|
|
58
|
+
* Inferred rather than annotated: the shapes are built inside the function
|
|
59
|
+
* from the roles it was handed, so writing them out by hand would be a
|
|
60
|
+
* second copy of the declaration that could disagree with the first.
|
|
61
|
+
*/
|
|
62
|
+
export type Installation<R extends string = string> = ReturnType<typeof declareInstallation<R>>;
|
|
63
|
+
/**
|
|
64
|
+
* Declares the installation's kinds and acts for a set of roles.
|
|
65
|
+
*
|
|
66
|
+
* `admin` names the role that runs the acts. Every other role may edit its
|
|
67
|
+
* own profile and nothing else here; the app's own policy says the rest.
|
|
68
|
+
*/
|
|
69
|
+
export declare function declareInstallation<const R extends string>(options: InstallationOptions<R>): {
|
|
70
|
+
kinds: readonly [import("./index.js").NodeDefinition<"user", z.ZodObject<{
|
|
71
|
+
label: z.ZodString;
|
|
72
|
+
email: z.ZodString;
|
|
73
|
+
roles: z.ZodArray<z.ZodEnum<{
|
|
74
|
+
[x: string]: string;
|
|
75
|
+
}>>;
|
|
76
|
+
status: z.ZodEnum<{
|
|
77
|
+
active: "active";
|
|
78
|
+
removed: "removed";
|
|
79
|
+
}>;
|
|
80
|
+
}, z.core.$strip>, import("./index.js").EmptyEdgeMap>, import("./index.js").NodeDefinition<"invitation", z.ZodObject<{
|
|
81
|
+
label: z.ZodString;
|
|
82
|
+
email: z.ZodString;
|
|
83
|
+
roles: z.ZodArray<z.ZodEnum<{
|
|
84
|
+
[x: string]: string;
|
|
85
|
+
}>>;
|
|
86
|
+
status: z.ZodEnum<{
|
|
87
|
+
pending: "pending";
|
|
88
|
+
accepted: "accepted";
|
|
89
|
+
revoked: "revoked";
|
|
90
|
+
}>;
|
|
91
|
+
}, z.core.$strip>, {
|
|
92
|
+
readonly became: {
|
|
93
|
+
readonly to: readonly ["user"];
|
|
94
|
+
readonly description: "who it became";
|
|
95
|
+
readonly inverse: "the invitation they came by";
|
|
96
|
+
readonly appendOnly: true;
|
|
97
|
+
};
|
|
98
|
+
}>];
|
|
99
|
+
mutations: readonly AnyMutationDefinition<never>[];
|
|
100
|
+
modules: {
|
|
101
|
+
installation: {
|
|
102
|
+
required?: true | undefined;
|
|
103
|
+
description: string;
|
|
104
|
+
kinds: string[];
|
|
105
|
+
mutations: ("invite" | "welcome" | "revoke-invitation" | "remove-user" | "grant" | "revoke")[];
|
|
106
|
+
visibility: "admin";
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
grants: readonly Grant[];
|
|
110
|
+
withPolicy(policy?: Policy): Policy;
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=installation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../src/installation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAoB3D,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC5D,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,oFAAoF;IACpF,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAC/C,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IAE/C;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,SAAS,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5D,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC,sEAAsE;IACtE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC;AAED,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAGhG;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAsKzD,SAAS,qBAAqB,CAAC,KAAK,CAAC,EAAE;;;;;;;;;;;wBAWjD,MAAM,GAAG,MAAM;EAYtC"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { defineMutation } from "./mutations/define-mutation.js";
|
|
3
|
+
import { nodeRef } from "./mutations/node-ref.js";
|
|
4
|
+
import { defineNode } from "./schema/define-node.js";
|
|
5
|
+
export const INSTALLATION_MODULE = "installation";
|
|
6
|
+
/**
|
|
7
|
+
* Declares the installation's kinds and acts for a set of roles.
|
|
8
|
+
*
|
|
9
|
+
* `admin` names the role that runs the acts. Every other role may edit its
|
|
10
|
+
* own profile and nothing else here; the app's own policy says the rest.
|
|
11
|
+
*/
|
|
12
|
+
export function declareInstallation(options) {
|
|
13
|
+
const roles = options.roles;
|
|
14
|
+
if (roles.length === 0)
|
|
15
|
+
throw new Error("declareInstallation needs at least one role.");
|
|
16
|
+
if (!roles.includes(options.admin)) {
|
|
17
|
+
throw new Error(`declareInstallation: the admin role "${options.admin}" is not one of the roles.`);
|
|
18
|
+
}
|
|
19
|
+
const role = z.enum(roles);
|
|
20
|
+
const user = defineNode("user", {
|
|
21
|
+
description: "Somebody who may use this installation, and the roles they hold.",
|
|
22
|
+
fields: z.object({
|
|
23
|
+
label: z.string().min(1),
|
|
24
|
+
email: z.string().min(3),
|
|
25
|
+
roles: z.array(role),
|
|
26
|
+
status: z.enum(["active", "removed"]),
|
|
27
|
+
}),
|
|
28
|
+
plural: options.plurals?.user ?? "People",
|
|
29
|
+
label: (node) => node.label,
|
|
30
|
+
// A removed person leaves the picture and never the record: what they did
|
|
31
|
+
// is still theirs in the log.
|
|
32
|
+
lifecycle: { field: "status", retired: ["removed"] },
|
|
33
|
+
});
|
|
34
|
+
const invitation = defineNode("invitation", {
|
|
35
|
+
description: "Somebody asked to join, and the roles they will hold when they do.",
|
|
36
|
+
fields: z.object({
|
|
37
|
+
label: z.string().min(1),
|
|
38
|
+
email: z.string().min(3),
|
|
39
|
+
roles: z.array(role),
|
|
40
|
+
status: z.enum(["pending", "accepted", "revoked"]),
|
|
41
|
+
}),
|
|
42
|
+
edges: {
|
|
43
|
+
// One edge, two readings: from the invitation, who it became; from
|
|
44
|
+
// the person, how they came in.
|
|
45
|
+
became: {
|
|
46
|
+
to: ["user"],
|
|
47
|
+
description: "who it became",
|
|
48
|
+
inverse: "the invitation they came by",
|
|
49
|
+
appendOnly: true,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
plural: options.plurals?.invitation ?? "Invitations",
|
|
53
|
+
label: (node) => node.label,
|
|
54
|
+
lifecycle: { field: "status", retired: ["accepted", "revoked"] },
|
|
55
|
+
});
|
|
56
|
+
const invite = defineMutation("invite", {
|
|
57
|
+
title: "Invite somebody",
|
|
58
|
+
description: "Ask somebody to join, with the roles they will hold when they do.",
|
|
59
|
+
creates: ["invitation"],
|
|
60
|
+
input: z.object({ email: z.string().min(3), roles: z.array(role).min(1) }),
|
|
61
|
+
describe: (args) => `Invite ${args.email} as ${args.roles.join(", ")}`,
|
|
62
|
+
apply(ctx, args) {
|
|
63
|
+
ctx.addNode({
|
|
64
|
+
id: ctx.freshId(args.email, "invitation"),
|
|
65
|
+
kind: "invitation",
|
|
66
|
+
label: args.email,
|
|
67
|
+
email: args.email,
|
|
68
|
+
roles: args.roles,
|
|
69
|
+
status: "pending",
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
const welcome = defineMutation("welcome", {
|
|
74
|
+
title: "Welcome them in",
|
|
75
|
+
description: "An invitation is accepted: the person exists, with the roles they were invited to hold.",
|
|
76
|
+
subject: { kinds: ["invitation"], arg: "invitationId" },
|
|
77
|
+
creates: ["user"],
|
|
78
|
+
connects: ["became"],
|
|
79
|
+
writes: ["status"],
|
|
80
|
+
input: z.object({ invitationId: nodeRef(["invitation"]), label: z.string().min(1) }),
|
|
81
|
+
describe: (args) => `Welcome ${args.label}`,
|
|
82
|
+
apply(ctx, args) {
|
|
83
|
+
const asked = ctx.graph.getNode(args.invitationId);
|
|
84
|
+
if (!asked || asked["status"] !== "pending") {
|
|
85
|
+
throw new Error("Only a pending invitation can be welcomed.");
|
|
86
|
+
}
|
|
87
|
+
const id = ctx.freshId(args.label, "user");
|
|
88
|
+
ctx.addNode({
|
|
89
|
+
id,
|
|
90
|
+
kind: "user",
|
|
91
|
+
label: args.label,
|
|
92
|
+
email: asked["email"],
|
|
93
|
+
roles: asked["roles"],
|
|
94
|
+
status: "active",
|
|
95
|
+
});
|
|
96
|
+
ctx.addEdge({ kind: "became", from: args.invitationId, to: id });
|
|
97
|
+
ctx.patchNode(args.invitationId, { status: "accepted" });
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
const revokeInvitation = defineMutation("revoke-invitation", {
|
|
101
|
+
title: "Withdraw the invitation",
|
|
102
|
+
description: "An invitation that will not be accepted.",
|
|
103
|
+
subject: { kinds: ["invitation"], arg: "invitationId" },
|
|
104
|
+
writes: ["status"],
|
|
105
|
+
input: z.object({ invitationId: nodeRef(["invitation"]) }),
|
|
106
|
+
describe: (args) => `Withdraw ${args.invitationId}`,
|
|
107
|
+
apply(ctx, args) {
|
|
108
|
+
ctx.patchNode(args.invitationId, { status: "revoked" });
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
const removeUser = defineMutation("remove-user", {
|
|
112
|
+
title: "Remove them",
|
|
113
|
+
description: "They may no longer use this installation. What they did stays theirs in the record.",
|
|
114
|
+
subject: { kinds: ["user"], arg: "userId" },
|
|
115
|
+
writes: ["status"],
|
|
116
|
+
destructive: true,
|
|
117
|
+
input: z.object({ userId: nodeRef(["user"]) }),
|
|
118
|
+
describe: (args) => `Remove ${args.userId}`,
|
|
119
|
+
apply(ctx, args) {
|
|
120
|
+
ctx.patchNode(args.userId, { status: "removed" });
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
const grant = defineMutation("grant", {
|
|
124
|
+
title: "Give a role",
|
|
125
|
+
description: "Somebody holds one more role, and may do what it may.",
|
|
126
|
+
subject: { kinds: ["user"], arg: "userId" },
|
|
127
|
+
writes: ["roles"],
|
|
128
|
+
input: z.object({ userId: nodeRef(["user"]), role }),
|
|
129
|
+
describe: (args) => `Give ${args.userId} the ${args.role} role`,
|
|
130
|
+
apply(ctx, args) {
|
|
131
|
+
const held = ctx.graph.getNode(args.userId)?.roles ?? [];
|
|
132
|
+
if (held.includes(args.role))
|
|
133
|
+
return;
|
|
134
|
+
ctx.patchNode(args.userId, { roles: [...held, args.role] });
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
const revoke = defineMutation("revoke", {
|
|
138
|
+
title: "Take a role away",
|
|
139
|
+
description: "Somebody holds one role fewer.",
|
|
140
|
+
subject: { kinds: ["user"], arg: "userId" },
|
|
141
|
+
writes: ["roles"],
|
|
142
|
+
input: z.object({ userId: nodeRef(["user"]), role }),
|
|
143
|
+
describe: (args) => `Take the ${args.role} role from ${args.userId}`,
|
|
144
|
+
apply(ctx, args) {
|
|
145
|
+
const held = ctx.graph.getNode(args.userId)?.roles ?? [];
|
|
146
|
+
if (!held.includes(args.role))
|
|
147
|
+
return;
|
|
148
|
+
ctx.patchNode(args.userId, { roles: held.filter((r) => r !== args.role) });
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
const acts = [invite, welcome, revokeInvitation, removeUser, grant, revoke];
|
|
152
|
+
const grants = [
|
|
153
|
+
{
|
|
154
|
+
roles: [options.admin],
|
|
155
|
+
mutations: acts.map((act) => act.name),
|
|
156
|
+
describe: `The ${options.admin} keeps the installation: who is here, and what each of them may do.`,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
// A person's profile is theirs: the derived edit of a user, on their own record only.
|
|
160
|
+
roles: "*",
|
|
161
|
+
mutations: ["edit-user"],
|
|
162
|
+
kinds: ["user"],
|
|
163
|
+
self: true,
|
|
164
|
+
describe: "Anyone may change their own name and address.",
|
|
165
|
+
},
|
|
166
|
+
];
|
|
167
|
+
return {
|
|
168
|
+
kinds: [user, invitation],
|
|
169
|
+
mutations: acts,
|
|
170
|
+
modules: {
|
|
171
|
+
[INSTALLATION_MODULE]: {
|
|
172
|
+
description: "Who may use this installation, who has been asked to, and what each may do.",
|
|
173
|
+
kinds: ["user", "invitation"],
|
|
174
|
+
mutations: acts.map((act) => act.name),
|
|
175
|
+
visibility: "admin",
|
|
176
|
+
...(options.required ? { required: true } : {}),
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
grants,
|
|
180
|
+
withPolicy(policy) {
|
|
181
|
+
return {
|
|
182
|
+
roles: [...new Set([...(policy?.roles ?? []), ...roles])],
|
|
183
|
+
grants: [...(policy?.grants ?? []), ...grants],
|
|
184
|
+
};
|
|
185
|
+
},
|
|
186
|
+
/*
|
|
187
|
+
* INFERRED, AND STILL HELD TO THE SHAPE. `satisfies` keeps the two
|
|
188
|
+
* kinds' own types — which is the whole point — while the interface goes
|
|
189
|
+
* on being a contract the compiler checks rather than a comment.
|
|
190
|
+
*/
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=installation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installation.js","sourceRoot":"","sources":["../src/installation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE LOCAL DOOR'S CONTRACT — what a page and a dev server agree on.
|
|
3
|
+
*
|
|
4
|
+
* `reach: ["local"]` says a provider can be reached by a process on this
|
|
5
|
+
* machine. This is the whole of what the two sides share: one path and three
|
|
6
|
+
* message shapes. It carries no Node and no DOM, so the browser bundle and
|
|
7
|
+
* the dev-server plugin can both hold it, and neither has to import the
|
|
8
|
+
* other — which matters here, because the plugin lives a tier above the
|
|
9
|
+
* hook that probes it.
|
|
10
|
+
*
|
|
11
|
+
* Not to be confused with a model running IN the browser (`localCompletion`
|
|
12
|
+
* in `@graview/tools`, which downloads weights and runs them on WebGPU).
|
|
13
|
+
* This door is a process on the machine the dev server is running on:
|
|
14
|
+
* somebody's own CLI, already installed, already logged in, already paid
|
|
15
|
+
* for, and reachable for as long as `pnpm dev` is up.
|
|
16
|
+
*/
|
|
17
|
+
/** Where the bridge answers unless an app says otherwise. */
|
|
18
|
+
export declare const LOCAL_BRIDGE_PATH = "/__graview/local";
|
|
19
|
+
/** GET — is the door open on this machine, and what is behind it? */
|
|
20
|
+
export type LocalBridgeStatus = {
|
|
21
|
+
readonly available: true;
|
|
22
|
+
readonly version: string;
|
|
23
|
+
} | {
|
|
24
|
+
readonly available: false;
|
|
25
|
+
readonly reason: string;
|
|
26
|
+
};
|
|
27
|
+
/** POST — words, and photographs as base64 data URLs. */
|
|
28
|
+
export interface LocalBridgeAsk {
|
|
29
|
+
readonly prompt: string;
|
|
30
|
+
readonly photos?: readonly string[];
|
|
31
|
+
}
|
|
32
|
+
/** What comes back: what it said, or why there is nothing. */
|
|
33
|
+
export type LocalBridgeAnswer = {
|
|
34
|
+
readonly text: string;
|
|
35
|
+
} | {
|
|
36
|
+
readonly error: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* THE DOOR A DECISION PROVIDER IS REACHED BY from a browser: the dev server
|
|
40
|
+
* holds the key, the page holds the questions. Same three shapes as the
|
|
41
|
+
* local door — a probe, an ask, an answer — and the same rule about who may
|
|
42
|
+
* knock: the page this server serves, and nobody else.
|
|
43
|
+
*
|
|
44
|
+
* The key is read on the SERVER side from the environment, so it is never
|
|
45
|
+
* in a bundle, a repo or the browser's storage: the person running
|
|
46
|
+
* `pnpm dev` set it once, and the page never sees it.
|
|
47
|
+
*/
|
|
48
|
+
export declare const DECISION_BRIDGE_PATH = "/__graview/decide";
|
|
49
|
+
/** GET — is a decision provider reachable through this server, and which? */
|
|
50
|
+
export type DecisionBridgeStatus = {
|
|
51
|
+
readonly available: true;
|
|
52
|
+
readonly model: string;
|
|
53
|
+
} | {
|
|
54
|
+
readonly available: false;
|
|
55
|
+
readonly reason: string;
|
|
56
|
+
};
|
|
57
|
+
/** POST — one state, a map of typed questions. The provider's own wire shape. */
|
|
58
|
+
export interface DecisionBridgeAsk {
|
|
59
|
+
readonly state: unknown;
|
|
60
|
+
readonly questions: Readonly<Record<string, unknown>>;
|
|
61
|
+
}
|
|
62
|
+
/** What comes back: the provider's answers under the same keys, or why not. */
|
|
63
|
+
export type DecisionBridgeAnswer = {
|
|
64
|
+
readonly answers: Readonly<Record<string, unknown>>;
|
|
65
|
+
readonly usage?: {
|
|
66
|
+
readonly input_tokens?: number;
|
|
67
|
+
readonly output_tokens?: number;
|
|
68
|
+
};
|
|
69
|
+
} | {
|
|
70
|
+
readonly error: string;
|
|
71
|
+
readonly status?: number;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=intelligence-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intelligence-bridge.d.ts","sourceRoot":"","sources":["../src/intelligence-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAEpD,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,8DAA8D;AAC9D,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,6EAA6E;AAC7E,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED,+EAA+E;AAC/E,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtF,GACD;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC"}
|