graphvault-studio 0.1.2 → 0.1.3
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/CHANGELOG.md +14 -0
- package/README.md +38 -2
- package/dist/admin-cli.d.ts +3 -0
- package/dist/admin-cli.js +52 -3
- package/dist/admin-cli.js.map +1 -1
- package/dist/admin-client.d.ts +20 -3
- package/dist/admin-client.js +206 -55
- package/dist/admin-client.js.map +1 -1
- package/dist/admin-compatibility.d.ts +2 -0
- package/dist/admin-compatibility.js +53 -0
- package/dist/admin-compatibility.js.map +1 -0
- package/dist/admin-integrity.d.ts +26 -0
- package/dist/admin-integrity.js +76 -0
- package/dist/admin-integrity.js.map +1 -0
- package/dist/admin-server.d.ts +6 -0
- package/dist/admin-server.js +102 -6
- package/dist/admin-server.js.map +1 -1
- package/dist/admin-storage-io.d.ts +10 -0
- package/dist/admin-storage-io.js +80 -0
- package/dist/admin-storage-io.js.map +1 -0
- package/dist/admin-subtree.d.ts +8 -0
- package/dist/admin-subtree.js +92 -0
- package/dist/admin-subtree.js.map +1 -0
- package/dist/admin-types.d.ts +71 -0
- package/dist/admin-ui.js +100 -12
- package/dist/admin-ui.js.map +1 -1
- package/docs/PUBLISHING.md +5 -2
- package/docs/RELEASE_NOTES_0.1.0.md +2 -0
- package/docs/REMOTE_STORAGE.md +19 -1
- package/package.json +5 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.3
|
|
4
|
+
|
|
5
|
+
- Fix the published `graphvault-studio` npm binary so it starts correctly through npm's `.bin` symlink.
|
|
6
|
+
- Align CLI help with the published `graphvault-studio` command name.
|
|
7
|
+
- Add a package install smoke gate that verifies the published CLI and programmatic API from a fresh tarball install.
|
|
8
|
+
|
|
3
9
|
## 0.1.2
|
|
4
10
|
|
|
5
11
|
- Publish the Studio CLI under the unscoped `graphvault-studio` npm package name for a reliable `npx graphvault-studio` install path.
|
|
12
|
+
- Add WAL-backed admin mutation commits with writer-lock protection and optional fencing-token validation.
|
|
13
|
+
- Add operational hardening information to the summary API, Studio KPI bar, `/api/operations`, and a dedicated Operations view.
|
|
14
|
+
- Publish `manifest.json` last for Studio mutation commits so late metadata failures remain recoverable instead of partially visible.
|
|
15
|
+
- Add versioned object-record read/write compatibility for GraphVault 0.2+ stores and maintenance.
|
|
16
|
+
- Add role-based access tokens for viewer, operator, and admin workflows.
|
|
17
|
+
- Add bounded graph-slice/subtree endpoints and a Studio graph view depth control for large stores.
|
|
18
|
+
- Show installed GraphVault Library compatibility status in the summary API and KPI bar.
|
|
19
|
+
- Add a CI-friendly compatibility preflight so Studio's dependency range must accept the recommended GraphVault Library runtime.
|
|
6
20
|
|
|
7
21
|
## 0.1.1
|
|
8
22
|
|
package/README.md
CHANGED
|
@@ -41,11 +41,17 @@ It is deliberately generic. It does not assume customers, orders, tickets, CMS p
|
|
|
41
41
|
- parent path lookup from object to root
|
|
42
42
|
- support for objects with multiple direct parents
|
|
43
43
|
- paged object browser for large stores
|
|
44
|
-
- graph
|
|
44
|
+
- depth-limited graph/subtree view for large stores and REST-style graph slices
|
|
45
45
|
- GVQL query console for graph queries and batch-update previews
|
|
46
46
|
- editable primitive fields with preview and confirmation-token safety
|
|
47
|
+
- reads and writes versioned GraphVault object records used by crash-safe 0.2+ stores
|
|
48
|
+
- admin mutations use writer locks, WAL prepare/commit records, and fencing-token validation when the installed GraphVault Library supports it
|
|
49
|
+
- admin mutations preserve GraphVault's SHA-256 transaction hash chain for audit-oriented stores
|
|
50
|
+
- direct edits and committed GVQL updates can attach actor, reason, source, and trace metadata to the transaction record
|
|
51
|
+
- operational hardening KPIs and an Operations view for WAL mode, pending WAL recovery, writer lock status, mutation mode, and latest transaction
|
|
52
|
+
- visible GraphVault Library compatibility status, including warnings for older runtime packages
|
|
47
53
|
- verification, maintenance, backup, transaction and journal views
|
|
48
|
-
- optional bearer-token protection
|
|
54
|
+
- optional bearer-token protection with viewer, operator, and admin roles
|
|
49
55
|
- zero frontend build step; the UI is embedded in the TypeScript package
|
|
50
56
|
|
|
51
57
|
## Install
|
|
@@ -93,6 +99,33 @@ Optional auth:
|
|
|
93
99
|
GRAPHVAULT_ADMIN_TOKEN=secret npx graphvault-studio --dir ./data
|
|
94
100
|
```
|
|
95
101
|
|
|
102
|
+
Role-based tokens:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
npx graphvault-studio \
|
|
106
|
+
--dir ./data \
|
|
107
|
+
--viewer-token view-secret \
|
|
108
|
+
--operator-token ops-secret \
|
|
109
|
+
--admin-token admin-secret \
|
|
110
|
+
--allow-mutations \
|
|
111
|
+
--confirm-token confirm
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
- viewer: read-only API and UI access.
|
|
115
|
+
- operator: viewer access plus maintenance and backup endpoints.
|
|
116
|
+
- admin: full access, including committed direct edits and GVQL mutations.
|
|
117
|
+
|
|
118
|
+
For critical stores, run Studio with mutations behind authentication and a confirmation token:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
GRAPHVAULT_ADMIN_ROLE_TOKEN=secret npx graphvault-studio \
|
|
122
|
+
--dir ./data \
|
|
123
|
+
--allow-mutations \
|
|
124
|
+
--confirm-token "$(openssl rand -hex 16)"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Studio mutation commits are written through the same storage-level safety shape expected from GraphVault deployments: writer lock, WAL prepare, data write, WAL commit marker, transaction journal, parent index, current pointer, and manifest publish as the final visibility step. With GraphVault Library 0.2 or newer, fencing tokens prevent stale recovered writers from publishing or releasing newer locks.
|
|
128
|
+
|
|
96
129
|
Then open:
|
|
97
130
|
|
|
98
131
|
```text
|
|
@@ -114,6 +147,9 @@ The storage engine lives in [graphvault-library](https://github.com/Sprengmeiste
|
|
|
114
147
|
|
|
115
148
|
- Studio is a pure TypeScript package with no frontend build toolchain.
|
|
116
149
|
- The UI is served from the embedded admin server, so `npx graphvault-studio --dir ./data` is enough to inspect a store.
|
|
150
|
+
- The HTTP API exposes bounded graph slices through `/api/subtree?depth=2` and `/api/objects/:id/subtree?depth=2`, which is useful when you want to preview what an external REST endpoint would return.
|
|
151
|
+
- The Overview API and UI report the installed GraphVault Library version and warn when it is older than the recommended runtime for the current Studio build.
|
|
117
152
|
- The package depends on GraphVault Library for storage layout, verification, parent index reading, and storage targets.
|
|
118
153
|
- Run `npm test` to type-check, emit `dist/`, create a real store, exercise the admin client, and verify the embedded HTTP API.
|
|
154
|
+
- Run `npm run package:smoke` before publishing to install the generated tarball into a fresh temporary project and verify the CLI plus public programmatic API as a consumer would use them.
|
|
119
155
|
- CI runs on Node.js 20 and 22.
|
package/dist/admin-cli.d.ts
CHANGED
package/dist/admin-cli.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
2
4
|
import { startAdminServer } from "./admin-server.js";
|
|
3
5
|
const DEFAULT_HOST = "127.0.0.1";
|
|
4
6
|
const DEFAULT_PORT = 4177;
|
|
@@ -12,6 +14,15 @@ export function parseAdminCliArgs(argv, env = process.env) {
|
|
|
12
14
|
if (env["GRAPHVAULT_ADMIN_TOKEN"]) {
|
|
13
15
|
parsed.authToken = env["GRAPHVAULT_ADMIN_TOKEN"];
|
|
14
16
|
}
|
|
17
|
+
if (env["GRAPHVAULT_VIEWER_TOKEN"]) {
|
|
18
|
+
parsed.viewerToken = env["GRAPHVAULT_VIEWER_TOKEN"];
|
|
19
|
+
}
|
|
20
|
+
if (env["GRAPHVAULT_OPERATOR_TOKEN"]) {
|
|
21
|
+
parsed.operatorToken = env["GRAPHVAULT_OPERATOR_TOKEN"];
|
|
22
|
+
}
|
|
23
|
+
if (env["GRAPHVAULT_ADMIN_ROLE_TOKEN"]) {
|
|
24
|
+
parsed.adminToken = env["GRAPHVAULT_ADMIN_ROLE_TOKEN"];
|
|
25
|
+
}
|
|
15
26
|
if (env["GRAPHVAULT_ADMIN_CONFIRM_TOKEN"]) {
|
|
16
27
|
parsed.mutationConfirmToken = env["GRAPHVAULT_ADMIN_CONFIRM_TOKEN"];
|
|
17
28
|
}
|
|
@@ -41,6 +52,18 @@ export function parseAdminCliArgs(argv, env = process.env) {
|
|
|
41
52
|
parsed.authToken = readValue(argv, ++index, arg);
|
|
42
53
|
continue;
|
|
43
54
|
}
|
|
55
|
+
if (arg === "--viewer-token") {
|
|
56
|
+
parsed.viewerToken = readValue(argv, ++index, arg);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (arg === "--operator-token") {
|
|
60
|
+
parsed.operatorToken = readValue(argv, ++index, arg);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (arg === "--admin-token") {
|
|
64
|
+
parsed.adminToken = readValue(argv, ++index, arg);
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
44
67
|
if (arg === "--confirm-token" || arg === "--mutation-confirm-token") {
|
|
45
68
|
parsed.mutationConfirmToken = readValue(argv, ++index, arg);
|
|
46
69
|
continue;
|
|
@@ -51,19 +74,25 @@ export function parseAdminCliArgs(argv, env = process.env) {
|
|
|
51
74
|
}
|
|
52
75
|
export function adminCliHelp() {
|
|
53
76
|
return [
|
|
54
|
-
"Usage: graphvault-
|
|
77
|
+
"Usage: graphvault-studio --dir <storage-directory> [options]",
|
|
55
78
|
"",
|
|
56
79
|
"Options:",
|
|
57
80
|
" --dir, --storage-directory <path> Storage directory to inspect.",
|
|
58
81
|
" --host <host> Host to bind. Defaults to 127.0.0.1.",
|
|
59
82
|
" --port <port> Port to bind. Defaults to 4177.",
|
|
60
83
|
" --token, --auth-token <token> Bearer token for UI/API access.",
|
|
84
|
+
" --viewer-token <token> Read-only bearer token.",
|
|
85
|
+
" --operator-token <token> Maintenance and backup bearer token.",
|
|
86
|
+
" --admin-token <token> Full mutation bearer token.",
|
|
61
87
|
" --confirm-token <token> Token required to commit mutations.",
|
|
62
88
|
" --allow-mutations Enable maintenance and data mutation APIs.",
|
|
63
89
|
" -h, --help Show this help.",
|
|
64
90
|
"",
|
|
65
91
|
"Environment:",
|
|
66
92
|
" GRAPHVAULT_ADMIN_TOKEN Default bearer token.",
|
|
93
|
+
" GRAPHVAULT_VIEWER_TOKEN Read-only bearer token.",
|
|
94
|
+
" GRAPHVAULT_OPERATOR_TOKEN Maintenance and backup bearer token.",
|
|
95
|
+
" GRAPHVAULT_ADMIN_ROLE_TOKEN Full mutation bearer token.",
|
|
67
96
|
" GRAPHVAULT_ADMIN_CONFIRM_TOKEN Default mutation confirmation token.",
|
|
68
97
|
].join("\n");
|
|
69
98
|
}
|
|
@@ -85,12 +114,13 @@ async function main(argv) {
|
|
|
85
114
|
const running = await startAdminServer({
|
|
86
115
|
...serverOptions,
|
|
87
116
|
...(options.authToken ? { authToken: options.authToken } : {}),
|
|
117
|
+
...(accessTokensFromOptions(options).length ? { accessTokens: accessTokensFromOptions(options) } : {}),
|
|
88
118
|
...(options.mutationConfirmToken ? { mutationConfirmToken: options.mutationConfirmToken } : {}),
|
|
89
119
|
});
|
|
90
120
|
console.log(`GraphVault Studio: ${running.url}`);
|
|
91
121
|
console.log(`Storage directory: ${options.storageDirectory}`);
|
|
92
122
|
console.log(`Mutations: ${options.allowMutations ? "enabled" : "disabled"}`);
|
|
93
|
-
if (options.authToken) {
|
|
123
|
+
if (options.authToken || accessTokensFromOptions(options).length) {
|
|
94
124
|
console.log("Auth: bearer token required");
|
|
95
125
|
}
|
|
96
126
|
if (options.mutationConfirmToken) {
|
|
@@ -107,6 +137,13 @@ async function main(argv) {
|
|
|
107
137
|
process.once("SIGINT", close);
|
|
108
138
|
process.once("SIGTERM", close);
|
|
109
139
|
}
|
|
140
|
+
function accessTokensFromOptions(options) {
|
|
141
|
+
return [
|
|
142
|
+
...(options.viewerToken ? [{ token: options.viewerToken, role: "viewer" }] : []),
|
|
143
|
+
...(options.operatorToken ? [{ token: options.operatorToken, role: "operator" }] : []),
|
|
144
|
+
...(options.adminToken ? [{ token: options.adminToken, role: "admin" }] : []),
|
|
145
|
+
];
|
|
146
|
+
}
|
|
110
147
|
function readValue(argv, index, option) {
|
|
111
148
|
const value = argv[index];
|
|
112
149
|
if (!value || value.startsWith("-")) {
|
|
@@ -121,7 +158,19 @@ function parsePort(value) {
|
|
|
121
158
|
}
|
|
122
159
|
return port;
|
|
123
160
|
}
|
|
124
|
-
|
|
161
|
+
function isCliEntryPoint(moduleUrl, argvPath) {
|
|
162
|
+
if (!argvPath) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
const modulePath = fileURLToPath(moduleUrl);
|
|
166
|
+
try {
|
|
167
|
+
return realpathSync(argvPath) === realpathSync(modulePath);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return argvPath === modulePath;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (isCliEntryPoint(import.meta.url, process.argv[1])) {
|
|
125
174
|
main(process.argv.slice(2)).catch((error) => {
|
|
126
175
|
console.error(error instanceof Error ? error.message : String(error));
|
|
127
176
|
console.error("");
|
package/dist/admin-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-cli.js","sourceRoot":"","sources":["../src/admin-cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-cli.js","sourceRoot":"","sources":["../src/admin-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/admin-client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { BackupResult, MaintenanceResult, ObjectRecord, StorageTarget, TransactionRecord, TypeDictionary, VerificationResult } from "@sprengmeister/graphvault/internal/core/types";
|
|
2
2
|
import type { GvqlExecutionOptions, GvqlResult } from "@sprengmeister/graphvault/internal/gvql/gvql";
|
|
3
|
-
import type { AdminGraph, AdminHierarchyPath, AdminMutation, AdminMutationPreview, AdminObjectChild, AdminObjectListItem, AdminObjectPage, AdminRootReference, AdminSearchResult, AdminSummary, StorageAdminClientOptions } from "./admin-types.js";
|
|
4
|
-
export type { AdminGraph, AdminGraphEdge, AdminGraphNode, AdminHierarchyPath, AdminHierarchyPathItem, AdminMutation, AdminMutationPreview, GvqlResult, AdminObjectChild, AdminObjectListItem, AdminObjectPage, AdminObjectParent, AdminRootReference, AdminSearchResult, AdminSummary, StorageAdminClientOptions, } from "./admin-types.js";
|
|
3
|
+
import type { AdminGraph, AdminHierarchyPath, AdminMutation, AdminMutationPreview, AdminObjectChild, AdminObjectListItem, AdminObjectPage, AdminRootReference, AdminSearchResult, AdminSummary, AdminSubtree, AdminTransactionMetadata, StorageAdminClientOptions } from "./admin-types.js";
|
|
4
|
+
export type { AdminGraph, AdminGraphEdge, AdminGraphNode, AdminHierarchyPath, AdminHierarchyPathItem, AdminMutation, AdminMutationPreview, GvqlResult, AdminObjectChild, AdminObjectListItem, AdminObjectPage, AdminObjectParent, AdminOperationalStatus, AdminRootReference, AdminSearchResult, AdminSummary, AdminSubtree, StorageAdminClientOptions, } from "./admin-types.js";
|
|
5
5
|
export declare class StorageAdminClient {
|
|
6
6
|
private readonly options;
|
|
7
7
|
private readonly target;
|
|
@@ -24,10 +24,16 @@ export declare class StorageAdminClient {
|
|
|
24
24
|
listObjectChildren(objectId: string): Promise<AdminObjectChild[]>;
|
|
25
25
|
hierarchyPath(targetObjectId: string): Promise<AdminHierarchyPath>;
|
|
26
26
|
graph(): Promise<AdminGraph>;
|
|
27
|
+
subtree(options?: {
|
|
28
|
+
rootObjectId?: string;
|
|
29
|
+
depth?: number;
|
|
30
|
+
}): Promise<AdminSubtree>;
|
|
27
31
|
search(query: string, options?: {
|
|
28
32
|
limit?: number;
|
|
29
33
|
}): Promise<AdminSearchResult[]>;
|
|
30
|
-
gvql(query: string, options?: GvqlExecutionOptions
|
|
34
|
+
gvql(query: string, options?: GvqlExecutionOptions & {
|
|
35
|
+
metadata?: AdminTransactionMetadata;
|
|
36
|
+
}): Promise<GvqlResult>;
|
|
31
37
|
listTransactions(): Promise<TransactionRecord[]>;
|
|
32
38
|
readJournal(): Promise<string>;
|
|
33
39
|
readTypeDictionary(): Promise<TypeDictionary | undefined>;
|
|
@@ -41,7 +47,18 @@ export declare class StorageAdminClient {
|
|
|
41
47
|
}): Promise<BackupResult>;
|
|
42
48
|
previewMutation(mutation: AdminMutation): Promise<AdminMutationPreview>;
|
|
43
49
|
mutate(mutation: AdminMutation): Promise<TransactionRecord>;
|
|
50
|
+
private commitEnvelope;
|
|
44
51
|
private requireManifest;
|
|
52
|
+
private readObjectRecord;
|
|
53
|
+
private envelopeFromManifest;
|
|
54
|
+
private get walDirectory();
|
|
55
|
+
private get transactionLogEnabled();
|
|
56
|
+
private hardening;
|
|
57
|
+
private operations;
|
|
58
|
+
private acquireWriteLock;
|
|
59
|
+
private lockOptions;
|
|
60
|
+
private assertLockValid;
|
|
61
|
+
private writeWalJson;
|
|
45
62
|
private compact;
|
|
46
63
|
private collectGarbage;
|
|
47
64
|
private assertMutationsAllowed;
|