@graview/tools 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 +47 -0
- package/dist/agent/adapters.d.ts +43 -0
- package/dist/agent/adapters.d.ts.map +1 -0
- package/dist/agent/adapters.js +52 -0
- package/dist/agent/adapters.js.map +1 -0
- package/dist/agent/tools.d.ts +105 -0
- package/dist/agent/tools.d.ts.map +1 -0
- package/dist/agent/tools.js +311 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/cli.d.ts +37 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +306 -0
- package/dist/cli.js.map +1 -0
- package/dist/conversation.d.ts +108 -0
- package/dist/conversation.d.ts.map +1 -0
- package/dist/conversation.js +698 -0
- package/dist/conversation.js.map +1 -0
- package/dist/decide.d.ts +43 -0
- package/dist/decide.d.ts.map +1 -0
- package/dist/decide.js +125 -0
- package/dist/decide.js.map +1 -0
- package/dist/derive.d.ts +84 -0
- package/dist/derive.d.ts.map +1 -0
- package/dist/derive.js +302 -0
- package/dist/derive.js.map +1 -0
- package/dist/edit.d.ts +70 -0
- package/dist/edit.d.ts.map +1 -0
- package/dist/edit.js +97 -0
- package/dist/edit.js.map +1 -0
- package/dist/figure.d.ts +53 -0
- package/dist/figure.d.ts.map +1 -0
- package/dist/figure.js +86 -0
- package/dist/figure.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/intelligence.d.ts +132 -0
- package/dist/intelligence.d.ts.map +1 -0
- package/dist/intelligence.js +463 -0
- package/dist/intelligence.js.map +1 -0
- package/dist/local.d.ts +192 -0
- package/dist/local.d.ts.map +1 -0
- package/dist/local.js +365 -0
- package/dist/local.js.map +1 -0
- package/dist/loop.d.ts +84 -0
- package/dist/loop.d.ts.map +1 -0
- package/dist/loop.js +173 -0
- package/dist/loop.js.map +1 -0
- package/dist/mcp-stdio.d.ts +38 -0
- package/dist/mcp-stdio.d.ts.map +1 -0
- package/dist/mcp-stdio.js +83 -0
- package/dist/mcp-stdio.js.map +1 -0
- package/dist/pins.d.ts +29 -0
- package/dist/pins.d.ts.map +1 -0
- package/dist/pins.js +60 -0
- package/dist/pins.js.map +1 -0
- package/dist/plan.d.ts +150 -0
- package/dist/plan.d.ts.map +1 -0
- package/dist/plan.js +303 -0
- package/dist/plan.js.map +1 -0
- package/dist/providers/insight.d.ts +14 -0
- package/dist/providers/insight.d.ts.map +1 -0
- package/dist/providers/insight.js +81 -0
- package/dist/providers/insight.js.map +1 -0
- package/dist/providers/invariant.d.ts +14 -0
- package/dist/providers/invariant.d.ts.map +1 -0
- package/dist/providers/invariant.js +123 -0
- package/dist/providers/invariant.js.map +1 -0
- package/dist/providers/jev.d.ts +115 -0
- package/dist/providers/jev.d.ts.map +1 -0
- package/dist/providers/jev.js +148 -0
- package/dist/providers/jev.js.map +1 -0
- package/dist/providers/lens.d.ts +24 -0
- package/dist/providers/lens.d.ts.map +1 -0
- package/dist/providers/lens.js +36 -0
- package/dist/providers/lens.js.map +1 -0
- package/dist/providers/llm.d.ts +25 -0
- package/dist/providers/llm.d.ts.map +1 -0
- package/dist/providers/llm.js +44 -0
- package/dist/providers/llm.js.map +1 -0
- package/dist/providers/schema.d.ts +12 -0
- package/dist/providers/schema.d.ts.map +1 -0
- package/dist/providers/schema.js +508 -0
- package/dist/providers/schema.js.map +1 -0
- package/dist/providers/structure.d.ts +14 -0
- package/dist/providers/structure.d.ts.map +1 -0
- package/dist/providers/structure.js +211 -0
- package/dist/providers/structure.js.map +1 -0
- package/dist/questions.d.ts +162 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +316 -0
- package/dist/questions.js.map +1 -0
- package/dist/run.d.ts +202 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +453 -0
- package/dist/run.js.map +1 -0
- package/dist/space.d.ts +50 -0
- package/dist/space.d.ts.map +1 -0
- package/dist/space.js +55 -0
- package/dist/space.js.map +1 -0
- package/dist/types.d.ts +122 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/usage.d.ts +10 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +59 -0
- package/dist/usage.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/agent/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Store, type AnySchema, type GraviewApp, type Principal } from "@graview/core";
|
|
2
|
+
/**
|
|
3
|
+
* THE AGENT HOST. An external agent — an editor's assistant, a worker on a
|
|
4
|
+
* schedule — evolves a live graph the way a person does: through the same
|
|
5
|
+
* store, under its own seat, judged by the same policy. It edited the seed
|
|
6
|
+
* before this because the seed was the only thing it could reach; the live
|
|
7
|
+
* truth was a browser's localStorage and the tool runtime lived inside the
|
|
8
|
+
* page. These two commands put the runtime where the data is.
|
|
9
|
+
*
|
|
10
|
+
* Nothing here decides anything. `createToolRuntime` is the tool surface,
|
|
11
|
+
* `store.apply` is the write path, `openStore` and `openRemote` are the
|
|
12
|
+
* stores — this parses flags and moves bytes.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MCP_USAGE = " graview mcp <entry> [--data <dir> | --sqlite <file> | --remote-url <url>]\n [--seed <file>] [--as <seat>] [--roles a,b] [--header \"k: v\"]\n [--read-only] [--list]\n Speaks MCP over stdio for the app's store, so an agent with only a\n shell attaches to the same tools the in-app seat has: the reads, the\n previews, undo, and every act the seat's principal may run. Against a\n folder (default ./data), a SQLite file, or a running graview serve.\n --list prints the seat's tools as tools/list JSON and exits \u2014 the\n catalog a host registers without hand-writing a schema.\n\n graview apply <entry> (--call <name> --args '<json>' | --plan <file> | --undo <batch>)\n [--preview] [--intent \"...\"] [--as <seat>] [--roles a,b]\n [--data <dir> | --sqlite <file> | --remote-url <url>] [--header \"k: v\"]\n One act, a plan of many as one batch, or a take-back \u2014 through\n store.apply under the seat, so the policy refuses here what it refuses\n in the browser, with its own sentence and exit code 1. A plan is a JSON\n array of { mutation, args, as? }; a later call names an earlier one's\n node as { \"$plan\": \"<as>\" }. --preview says what would happen and\n writes nothing.\n";
|
|
15
|
+
/** Who the command acts as: an agent, named, with the roles it was given. */
|
|
16
|
+
export declare function seatFrom(argv: readonly string[], fallback: string): Principal;
|
|
17
|
+
/**
|
|
18
|
+
* The store, wherever it is. The two shapes agree on what a command needs:
|
|
19
|
+
* the store to act on, a way to wait for the verdict, and a word for where.
|
|
20
|
+
*/
|
|
21
|
+
export interface Host<S extends AnySchema> {
|
|
22
|
+
readonly store: Store<S>;
|
|
23
|
+
readonly where: string;
|
|
24
|
+
/** Resolves once every change so far is decided — persisted here, or answered by the server. */
|
|
25
|
+
settled(): Promise<void>;
|
|
26
|
+
/** Brings a remote graph up to date before a read; nothing to do locally. */
|
|
27
|
+
refresh(): Promise<void>;
|
|
28
|
+
/** The server's refusals since the last look, in the policy's words. */
|
|
29
|
+
refusals(): string[];
|
|
30
|
+
close(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare function openHost<S extends AnySchema>(app: GraviewApp<S>, argv: readonly string[], principal: Principal): Promise<Host<S>>;
|
|
33
|
+
/** How to work here, told to the model on connecting — derived, not authored per app. */
|
|
34
|
+
export declare function instructionsFor(app: GraviewApp, principal: Principal, where: string): string;
|
|
35
|
+
export declare function mcp(argv: readonly string[]): Promise<number>;
|
|
36
|
+
export declare function apply(argv: readonly string[]): Promise<number>;
|
|
37
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAqC,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAO1H;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,SAAS,8zCAmBrB,CAAC;AAeF,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAG7E;AAYD;;;GAGG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,SAAS,SAAS;IACvC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,6EAA6E;IAC7E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,wEAAwE;IACxE,QAAQ,IAAI,MAAM,EAAE,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAsB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAqCvI;AAcD,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAS5F;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuDlE;AA4BD,wBAAsB,KAAK,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmFpE"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { loadApp } from "@graview/core/cli";
|
|
4
|
+
import { Store } from "@graview/core";
|
|
5
|
+
import { backendFrom, openRemote, openStore } from "@graview/ship";
|
|
6
|
+
import { createMcpAdapter } from "./agent/adapters.js";
|
|
7
|
+
import { createToolRuntime } from "./agent/tools.js";
|
|
8
|
+
import { serveMcpStdio } from "./mcp-stdio.js";
|
|
9
|
+
import { applyPlan, planFrom } from "./plan.js";
|
|
10
|
+
/**
|
|
11
|
+
* THE AGENT HOST. An external agent — an editor's assistant, a worker on a
|
|
12
|
+
* schedule — evolves a live graph the way a person does: through the same
|
|
13
|
+
* store, under its own seat, judged by the same policy. It edited the seed
|
|
14
|
+
* before this because the seed was the only thing it could reach; the live
|
|
15
|
+
* truth was a browser's localStorage and the tool runtime lived inside the
|
|
16
|
+
* page. These two commands put the runtime where the data is.
|
|
17
|
+
*
|
|
18
|
+
* Nothing here decides anything. `createToolRuntime` is the tool surface,
|
|
19
|
+
* `store.apply` is the write path, `openStore` and `openRemote` are the
|
|
20
|
+
* stores — this parses flags and moves bytes.
|
|
21
|
+
*/
|
|
22
|
+
export const MCP_USAGE = ` graview mcp <entry> [--data <dir> | --sqlite <file> | --remote-url <url>]
|
|
23
|
+
[--seed <file>] [--as <seat>] [--roles a,b] [--header "k: v"]
|
|
24
|
+
[--read-only] [--list]
|
|
25
|
+
Speaks MCP over stdio for the app's store, so an agent with only a
|
|
26
|
+
shell attaches to the same tools the in-app seat has: the reads, the
|
|
27
|
+
previews, undo, and every act the seat's principal may run. Against a
|
|
28
|
+
folder (default ./data), a SQLite file, or a running graview serve.
|
|
29
|
+
--list prints the seat's tools as tools/list JSON and exits — the
|
|
30
|
+
catalog a host registers without hand-writing a schema.
|
|
31
|
+
|
|
32
|
+
graview apply <entry> (--call <name> --args '<json>' | --plan <file> | --undo <batch>)
|
|
33
|
+
[--preview] [--intent "..."] [--as <seat>] [--roles a,b]
|
|
34
|
+
[--data <dir> | --sqlite <file> | --remote-url <url>] [--header "k: v"]
|
|
35
|
+
One act, a plan of many as one batch, or a take-back — through
|
|
36
|
+
store.apply under the seat, so the policy refuses here what it refuses
|
|
37
|
+
in the browser, with its own sentence and exit code 1. A plan is a JSON
|
|
38
|
+
array of { mutation, args, as? }; a later call names an earlier one's
|
|
39
|
+
node as { "$plan": "<as>" }. --preview says what would happen and
|
|
40
|
+
writes nothing.
|
|
41
|
+
`;
|
|
42
|
+
function flag(argv, name) {
|
|
43
|
+
const at = argv.indexOf(name);
|
|
44
|
+
return at === -1 ? undefined : argv[at + 1];
|
|
45
|
+
}
|
|
46
|
+
function flags(argv, name) {
|
|
47
|
+
const out = [];
|
|
48
|
+
argv.forEach((arg, at) => {
|
|
49
|
+
if (arg === name && argv[at + 1] !== undefined)
|
|
50
|
+
out.push(argv[at + 1]);
|
|
51
|
+
});
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
/** Who the command acts as: an agent, named, with the roles it was given. */
|
|
55
|
+
export function seatFrom(argv, fallback) {
|
|
56
|
+
const roles = (flag(argv, "--roles") ?? "").split(",").map((role) => role.trim()).filter(Boolean);
|
|
57
|
+
return { kind: "agent", id: flag(argv, "--as") ?? fallback, ...(roles.length > 0 ? { roles } : {}) };
|
|
58
|
+
}
|
|
59
|
+
function headersFrom(argv) {
|
|
60
|
+
const headers = {};
|
|
61
|
+
for (const given of flags(argv, "--header")) {
|
|
62
|
+
const colon = given.indexOf(":");
|
|
63
|
+
if (colon === -1)
|
|
64
|
+
throw new Error(`--header wants "name: value", got ${JSON.stringify(given)}`);
|
|
65
|
+
headers[given.slice(0, colon).trim().toLowerCase()] = given.slice(colon + 1).trim();
|
|
66
|
+
}
|
|
67
|
+
return headers;
|
|
68
|
+
}
|
|
69
|
+
export async function openHost(app, argv, principal) {
|
|
70
|
+
const url = flag(argv, "--remote-url");
|
|
71
|
+
if (url) {
|
|
72
|
+
const remote = await openRemote({ app, url, principal, headers: headersFrom(argv), pollMs: 0 });
|
|
73
|
+
let heard = [];
|
|
74
|
+
remote.onRefusal((reason) => heard.push(reason));
|
|
75
|
+
return {
|
|
76
|
+
store: remote.store,
|
|
77
|
+
where: url,
|
|
78
|
+
settled: () => remote.settled(),
|
|
79
|
+
refresh: async () => {
|
|
80
|
+
await remote.pull();
|
|
81
|
+
},
|
|
82
|
+
refusals: () => {
|
|
83
|
+
const out = heard;
|
|
84
|
+
heard = [];
|
|
85
|
+
return out;
|
|
86
|
+
},
|
|
87
|
+
close: async () => {
|
|
88
|
+
await remote.settled();
|
|
89
|
+
remote.close();
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const backend = await backendFrom(argv);
|
|
94
|
+
const opened = await openStore({ app, adapter: backend.adapter, scope: app.name, ...(backend.seed ? { seed: backend.seed } : {}) });
|
|
95
|
+
return {
|
|
96
|
+
store: opened.store,
|
|
97
|
+
where: backend.where,
|
|
98
|
+
settled: () => opened.flush(),
|
|
99
|
+
refresh: async () => { },
|
|
100
|
+
refusals: () => [],
|
|
101
|
+
close: async () => {
|
|
102
|
+
await opened.flush();
|
|
103
|
+
opened.close();
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/** The entry module, or the exit code for not having one. */
|
|
108
|
+
async function entryOf(argv, command) {
|
|
109
|
+
const entry = argv[0];
|
|
110
|
+
if (!entry || entry.startsWith("--")) {
|
|
111
|
+
process.stderr.write(`graview ${command}: an entry module is required\n\n${MCP_USAGE}`);
|
|
112
|
+
return 2;
|
|
113
|
+
}
|
|
114
|
+
return loadApp(entry);
|
|
115
|
+
}
|
|
116
|
+
const say = (text) => process.stderr.write(text);
|
|
117
|
+
/** How to work here, told to the model on connecting — derived, not authored per app. */
|
|
118
|
+
export function instructionsFor(app, principal, where) {
|
|
119
|
+
return (`${app.name} is a Graview app; its graph is the interface and this seat (${principal.id ?? "an agent"}` +
|
|
120
|
+
`${principal.roles?.length ? `, roles ${principal.roles.join(", ")}` : ""}) acts on the store at ${where}. ` +
|
|
121
|
+
`Find a thing by name with search_graph before reaching for get_graph; read with get_node and get_violations; ask get_affordances what is legal on a selection; ` +
|
|
122
|
+
`change the graph only through the named mutation tools, which are every write there is. preview_mutation first when unsure; ` +
|
|
123
|
+
`undo_batch takes a batch back. An act that creates a kind takes an optional id for the node it makes; remove-<kind> takes one out. ` +
|
|
124
|
+
`Every change is judged under this seat's principal, logged with your name, and shown to everyone else within a second.`);
|
|
125
|
+
}
|
|
126
|
+
export async function mcp(argv) {
|
|
127
|
+
const app = await entryOf(argv, "mcp");
|
|
128
|
+
if (typeof app === "number")
|
|
129
|
+
return app;
|
|
130
|
+
const principal = seatFrom(argv, "graview-mcp");
|
|
131
|
+
const readOnly = argv.includes("--read-only");
|
|
132
|
+
if (argv.includes("--list")) {
|
|
133
|
+
/*
|
|
134
|
+
* THE CATALOG, from the declaration alone: which tools this seat gets
|
|
135
|
+
* depends on the policy and the principal, never on the data, so
|
|
136
|
+
* nothing is opened and nothing is written to a folder that may not
|
|
137
|
+
* exist yet.
|
|
138
|
+
*/
|
|
139
|
+
const store = new Store({ schema: app.schema, mutations: app.mutations ?? [], invariants: app.invariants ?? [], ...(app.policy ? { policy: app.policy } : {}), ...(app.intelligence ? { intelligence: app.intelligence } : {}) });
|
|
140
|
+
const adapter = createMcpAdapter(createToolRuntime(store, { author: principal, readOnly, places: () => app.views?.places?.() ?? [] }));
|
|
141
|
+
process.stdout.write(`${JSON.stringify({ tools: adapter.listTools() }, null, 2)}\n`);
|
|
142
|
+
return 0;
|
|
143
|
+
}
|
|
144
|
+
const host = await openHost(app, argv, principal);
|
|
145
|
+
const runtime = createToolRuntime(host.store, { author: principal, readOnly, places: () => app.views?.places?.() ?? [] });
|
|
146
|
+
const inner = createMcpAdapter(runtime);
|
|
147
|
+
say(`graview mcp: ${app.name} as ${principal.id} on ${host.where} — ${inner.listTools().length} tools\n`);
|
|
148
|
+
/*
|
|
149
|
+
* THE VERDICT BEFORE THE ANSWER. The runtime answers as soon as the local
|
|
150
|
+
* store has moved; against a remote the server has not spoken yet, and
|
|
151
|
+
* against a folder the write has not landed. A reply that said "done" and
|
|
152
|
+
* was then refused would be the one lie an agent cannot recover from, so
|
|
153
|
+
* each call waits for settlement and reports a refusal as the error it is.
|
|
154
|
+
*/
|
|
155
|
+
const adapter = {
|
|
156
|
+
listTools: () => inner.listTools(),
|
|
157
|
+
async callTool(name, args = {}) {
|
|
158
|
+
const mutating = runtime.definitions.find((tool) => tool.name === name)?.mutating ?? false;
|
|
159
|
+
if (!mutating)
|
|
160
|
+
await host.refresh();
|
|
161
|
+
const result = await inner.callTool(name, args);
|
|
162
|
+
await host.settled();
|
|
163
|
+
const refused = host.refusals();
|
|
164
|
+
if (refused.length > 0)
|
|
165
|
+
return { content: [{ type: "text", text: refused.join("\n") }], isError: true };
|
|
166
|
+
return result;
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
await serveMcpStdio({
|
|
170
|
+
adapter,
|
|
171
|
+
name: app.name,
|
|
172
|
+
version: String(app.version ?? 1),
|
|
173
|
+
instructions: instructionsFor(app, principal, host.where),
|
|
174
|
+
input: process.stdin,
|
|
175
|
+
output: process.stdout,
|
|
176
|
+
onRequest: (method, ok) => say(`graview mcp: ${method} ${ok ? "ok" : "failed"}\n`),
|
|
177
|
+
});
|
|
178
|
+
await host.close();
|
|
179
|
+
return 0;
|
|
180
|
+
}
|
|
181
|
+
/** What the log now says about a change, small enough to read and complete enough to act on. */
|
|
182
|
+
function report(ops, extra = {}) {
|
|
183
|
+
const touched = (op) => op.primitives.map((primitive) => {
|
|
184
|
+
switch (primitive.op) {
|
|
185
|
+
case "add-node": return `+ ${primitive.node.kind} ${primitive.node.id}`;
|
|
186
|
+
case "remove-node": return `- ${primitive.node.kind} ${primitive.node.id}`;
|
|
187
|
+
case "patch-node": return `~ ${primitive.id}: ${Object.keys(primitive.after).join(", ")}`;
|
|
188
|
+
case "add-edge": return `+ ${primitive.edge.from} ${primitive.edge.kind} ${primitive.edge.to}`;
|
|
189
|
+
case "remove-edge": return `- ${primitive.edge.from} ${primitive.edge.kind} ${primitive.edge.to}`;
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
return `${JSON.stringify({ ok: true, batch: ops[0]?.batch ?? null, ops: ops.map((op) => ({ id: op.id, intent: op.intent, changes: touched(op) })), ...extra }, null, 2)}\n`;
|
|
193
|
+
}
|
|
194
|
+
function readPlan(file) {
|
|
195
|
+
const parsed = JSON.parse(readFileSync(resolve(process.cwd(), file), "utf8"));
|
|
196
|
+
const calls = Array.isArray(parsed) ? parsed : parsed.calls;
|
|
197
|
+
if (!Array.isArray(calls))
|
|
198
|
+
throw new Error(`${file} is not a plan: expected an array of { mutation, args }, or { calls: [...] }.`);
|
|
199
|
+
return calls.map((call, at) => {
|
|
200
|
+
const given = call;
|
|
201
|
+
const mutation = given.mutation ?? given.name;
|
|
202
|
+
if (typeof mutation !== "string")
|
|
203
|
+
throw new Error(`${file}: call ${at} names no mutation.`);
|
|
204
|
+
return { mutation, args: given.args ?? {}, ...(given.as ? { as: given.as } : {}), ...(given.why ? { why: given.why } : {}) };
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
export async function apply(argv) {
|
|
208
|
+
const app = await entryOf(argv, "apply");
|
|
209
|
+
if (typeof app === "number")
|
|
210
|
+
return app;
|
|
211
|
+
const principal = seatFrom(argv, "graview-apply");
|
|
212
|
+
const callName = flag(argv, "--call");
|
|
213
|
+
const planFile = flag(argv, "--plan");
|
|
214
|
+
const undoBatch = flag(argv, "--undo");
|
|
215
|
+
if ([callName, planFile, undoBatch].filter(Boolean).length !== 1) {
|
|
216
|
+
say(`graview apply: say exactly one of --call, --plan or --undo\n\n${MCP_USAGE}`);
|
|
217
|
+
return 2;
|
|
218
|
+
}
|
|
219
|
+
const intent = flag(argv, "--intent");
|
|
220
|
+
const preview = argv.includes("--preview");
|
|
221
|
+
const host = await openHost(app, argv, principal);
|
|
222
|
+
try {
|
|
223
|
+
await host.refresh();
|
|
224
|
+
const store = host.store;
|
|
225
|
+
if (undoBatch) {
|
|
226
|
+
const check = store.canUndo(undoBatch);
|
|
227
|
+
if (!check.ok) {
|
|
228
|
+
say(`graview apply: ${check.message}\n`);
|
|
229
|
+
return 1;
|
|
230
|
+
}
|
|
231
|
+
if (preview) {
|
|
232
|
+
const would = store.previewUndo(undoBatch);
|
|
233
|
+
process.stdout.write(`${JSON.stringify({ ok: would.ok, preview: true, ...(would.ok ? { intent: would.intent, introduces: would.introduces } : {}) }, null, 2)}\n`);
|
|
234
|
+
return 0;
|
|
235
|
+
}
|
|
236
|
+
const since = store.log.all().length;
|
|
237
|
+
store.undo(undoBatch, { author: principal, ...(intent ? { intent } : {}) });
|
|
238
|
+
return finish(host, since);
|
|
239
|
+
}
|
|
240
|
+
if (callName) {
|
|
241
|
+
const args = JSON.parse(flag(argv, "--args") ?? "{}");
|
|
242
|
+
const call = { name: callName, args };
|
|
243
|
+
const verdict = store.permits(call, principal);
|
|
244
|
+
if (!verdict.ok) {
|
|
245
|
+
say(`graview apply: ${verdict.refusal.message}\n`);
|
|
246
|
+
return 1;
|
|
247
|
+
}
|
|
248
|
+
if (preview) {
|
|
249
|
+
const would = store.preview(call);
|
|
250
|
+
process.stdout.write(`${JSON.stringify({ ok: true, preview: true, intent: would.intent, primitives: would.primitives, introduces: would.introduces, resolves: would.resolves }, null, 2)}\n`);
|
|
251
|
+
return 0;
|
|
252
|
+
}
|
|
253
|
+
const since = store.log.all().length;
|
|
254
|
+
const result = store.apply(call, { author: principal, ...(intent ? { intent } : {}) });
|
|
255
|
+
return finish(host, since, { introduces: result.introduces, resolves: result.resolves });
|
|
256
|
+
}
|
|
257
|
+
const calls = readPlan(planFile);
|
|
258
|
+
/*
|
|
259
|
+
* A PLAN IS JUDGED BEFORE IT RUNS, on the seat's own refusals — and a
|
|
260
|
+
* preview runs it on a copy, because a plan's later calls need the ids
|
|
261
|
+
* its earlier ones make and no single preview can say those.
|
|
262
|
+
*/
|
|
263
|
+
const target = preview
|
|
264
|
+
? new Store({ schema: app.schema, mutations: app.mutations ?? [], invariants: app.invariants ?? [], ...(app.policy ? { policy: app.policy } : {}), snapshot: store.graph.snapshot() })
|
|
265
|
+
: store;
|
|
266
|
+
const plan = planFrom(target, calls, { principal, app });
|
|
267
|
+
if (plan.refused.length > 0) {
|
|
268
|
+
say(`graview apply: ${plan.refused.length} of ${plan.entries.length} calls cannot run:\n${plan.refused.map((entry) => ` ${entry.call.mutation}: ${entry.refusal.message}\n`).join("")}`);
|
|
269
|
+
return 1;
|
|
270
|
+
}
|
|
271
|
+
const before = target.log.all().length;
|
|
272
|
+
const applied = applyPlan(target, plan, { author: principal });
|
|
273
|
+
if (applied.stoppedAt) {
|
|
274
|
+
say(`graview apply: stopped at call ${applied.stoppedAt.at}: ${applied.stoppedAt.why}${applied.undone ? " — what had run was taken back." : ""}\n`);
|
|
275
|
+
return 1;
|
|
276
|
+
}
|
|
277
|
+
const ops = target.log.all().slice(before);
|
|
278
|
+
if (preview) {
|
|
279
|
+
process.stdout.write(report(ops, { preview: true, made: applied.made, violations: target.violations().length }));
|
|
280
|
+
return 0;
|
|
281
|
+
}
|
|
282
|
+
return finish(host, before, { made: applied.made });
|
|
283
|
+
}
|
|
284
|
+
finally {
|
|
285
|
+
await host.close();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Said once the verdict is in: the server's refusal, or what landed. What
|
|
290
|
+
* landed is read from the log AFTER settling, minus the provisional ops a
|
|
291
|
+
* remote store minted on the way — so the ids and batch printed are the
|
|
292
|
+
* ones every other client has, and the ones an `--undo` must name.
|
|
293
|
+
*/
|
|
294
|
+
async function finish(host, since, extra = {}) {
|
|
295
|
+
await host.settled();
|
|
296
|
+
const refused = host.refusals();
|
|
297
|
+
if (refused.length > 0) {
|
|
298
|
+
say(`graview apply: ${refused.join("\n")}\n`);
|
|
299
|
+
return 1;
|
|
300
|
+
}
|
|
301
|
+
const landed = host.store.log.all().slice(since);
|
|
302
|
+
const theirs = landed.filter((op) => !op.id.startsWith("local-"));
|
|
303
|
+
process.stdout.write(report(theirs.length > 0 ? theirs : landed, extra));
|
|
304
|
+
return 0;
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type AnySchema, type Hit, type Principal, type Store } from "@graview/core";
|
|
2
|
+
import { type Completion, type ProposedCall } from "./intelligence.js";
|
|
3
|
+
import type { OfferedQuestion } from "./questions.js";
|
|
4
|
+
/**
|
|
5
|
+
* A CONVERSATION over the same seam everything else uses.
|
|
6
|
+
*
|
|
7
|
+
* A turn takes words and the current selection and answers with something
|
|
8
|
+
* to read plus zero or more proposed calls to declared mutations — the
|
|
9
|
+
* exact shape a provider proposes, the exact path a seat applies through.
|
|
10
|
+
* Chat is therefore not a new capability with new trust: it is the existing
|
|
11
|
+
* intelligence contract given a voice, and the graph-native responder means
|
|
12
|
+
* an app can hold a useful conversation before any key exists.
|
|
13
|
+
*/
|
|
14
|
+
export interface ChatReply {
|
|
15
|
+
readonly say: string;
|
|
16
|
+
readonly proposals: readonly ProposedCall[];
|
|
17
|
+
/**
|
|
18
|
+
* True when the answer is a FACT the graph holds — the standing, a named
|
|
19
|
+
* thing, a when, a who, a rule's own repairs. A grounded answer outranks
|
|
20
|
+
* any model on the ladder: a small local model asked who can play left
|
|
21
|
+
* back will fluently invent a goalkeeper, and no rung may replace a fact
|
|
22
|
+
* with a guess about the same fact.
|
|
23
|
+
*
|
|
24
|
+
* NOT for a reading of what somebody wants CHANGED. That is an
|
|
25
|
+
* interpretation, and interpretation is the whole reason a model is on
|
|
26
|
+
* the ladder at all: "add details to Meal, the name of the food and the
|
|
27
|
+
* number of people it can feed" is two fields and a pattern-matcher can
|
|
28
|
+
* only ever see one. Marking those answers grounded shut the model out of
|
|
29
|
+
* exactly the turns it was there for — so a change is a `reading`, which
|
|
30
|
+
* a model may improve on and must never be quietly worse than.
|
|
31
|
+
*/
|
|
32
|
+
readonly grounded?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* The answer is "I could not read that", rather than an answer.
|
|
35
|
+
*
|
|
36
|
+
* The keyless rung reads a handful of sentence shapes, and says so when a
|
|
37
|
+
* sentence is not one of them. That is honest, and on its own it is a dead
|
|
38
|
+
* end: the person is left to guess which phrasing the pattern-matcher
|
|
39
|
+
* wants, when the thing that reads any phrasing is one press away behind
|
|
40
|
+
* the gear. A surface that knows no model is chosen can offer to choose
|
|
41
|
+
* one — and a surface where one already is has nothing to offer, so this
|
|
42
|
+
* is a fact about the ANSWER, not an instruction to the interface.
|
|
43
|
+
*/
|
|
44
|
+
readonly unsure?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* QUESTIONS FOR THE PERSON, each standing at the node it is about.
|
|
47
|
+
*
|
|
48
|
+
* A decision that came back split, or not sure enough, is not applied and
|
|
49
|
+
* not dropped: it is offered, with its options as presses. It travels here
|
|
50
|
+
* — the seat's own answer — so every surface the seat speaks from can
|
|
51
|
+
* stand it at the node by name: the chat thread now, a figure's bubble
|
|
52
|
+
* when the city has one.
|
|
53
|
+
*/
|
|
54
|
+
readonly questions?: readonly OfferedQuestion[];
|
|
55
|
+
/**
|
|
56
|
+
* THINGS THE WORDS FOUND, each a press. A message that named no act and
|
|
57
|
+
* no fact but matched records is answered with them — the Find box's
|
|
58
|
+
* strip, in prose — and a surface draws each as a way to go there.
|
|
59
|
+
*/
|
|
60
|
+
readonly picks?: readonly Extract<Hit, {
|
|
61
|
+
about: "node";
|
|
62
|
+
}>[];
|
|
63
|
+
}
|
|
64
|
+
export interface ChatContext {
|
|
65
|
+
/** The current selection: what "this" means. */
|
|
66
|
+
readonly selection?: readonly string[];
|
|
67
|
+
/** Prior turns, oldest first, for responders that use them. */
|
|
68
|
+
readonly history?: readonly {
|
|
69
|
+
readonly role: "person" | "seat";
|
|
70
|
+
readonly text: string;
|
|
71
|
+
}[];
|
|
72
|
+
/**
|
|
73
|
+
* WHAT THE FLOOR ALREADY WORKED OUT, handed up the ladder.
|
|
74
|
+
*
|
|
75
|
+
* The graph-native reading of a change is usually right and always cheap,
|
|
76
|
+
* and a model that starts from it does better than one starting from
|
|
77
|
+
* nothing: it can keep it, correct the one argument it can see is wrong,
|
|
78
|
+
* or split it into the several acts the sentence actually described. A
|
|
79
|
+
* model that answers with nothing does not get to replace it.
|
|
80
|
+
*/
|
|
81
|
+
readonly reading?: readonly ProposedCall[];
|
|
82
|
+
/** Who is asking, so what the words find is only what this seat may see. */
|
|
83
|
+
readonly principal?: Principal;
|
|
84
|
+
}
|
|
85
|
+
export type Responder<S extends AnySchema = AnySchema> = (store: Store<S>, text: string, context?: ChatContext) => Promise<ChatReply>;
|
|
86
|
+
/**
|
|
87
|
+
* The graph answers for itself. Deterministic, keyless, derived:
|
|
88
|
+
* - "what's wrong / broken / problems" → the standing, with ready repairs;
|
|
89
|
+
* - a node named in the message (or selected) → its facts, its trouble,
|
|
90
|
+
* and that trouble's repairs;
|
|
91
|
+
* - a mutation's own title phrased in the message → that call, proposed
|
|
92
|
+
* with what can honestly be filled and nothing guessed;
|
|
93
|
+
* - anything else → the shape of the graph and how to ask.
|
|
94
|
+
*/
|
|
95
|
+
export declare function graphResponder<S extends AnySchema>(options?: {
|
|
96
|
+
readonly today?: string;
|
|
97
|
+
}): Responder<S>;
|
|
98
|
+
/**
|
|
99
|
+
* A model holds the conversation, through the same one-function seam and
|
|
100
|
+
* the same validation gate as every other model use. The reply contract is
|
|
101
|
+
* JSON — something to say, calls to propose — and an unparseable answer
|
|
102
|
+
* degrades to words with no proposals rather than to guesses.
|
|
103
|
+
*/
|
|
104
|
+
export declare function llmResponder<S extends AnySchema>(options: {
|
|
105
|
+
readonly complete: Completion;
|
|
106
|
+
readonly may?: readonly string[];
|
|
107
|
+
}): Responder<S>;
|
|
108
|
+
//# sourceMappingURL=conversation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,SAAS,EAEd,KAAK,GAAG,EACR,KAAK,SAAS,EACd,KAAK,KAAK,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;;;;;;;GASG;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,OAAO,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1F;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,CACvD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,SAAS,CAAC,CAAC;AAyBxB;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAChD,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACxC,SAAS,CAAC,CAAC,CAAC,CAodd;AAkDD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,EAAE;IACzD,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,GAAG,SAAS,CAAC,CAAC,CAAC,CAgLf"}
|