@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":"conversation.js","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}
|
package/dist/decide.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { AnySchema, Store } from "@graview/core";
|
|
2
|
+
import type { Completion } from "./intelligence.js";
|
|
3
|
+
import type { Decide, Decided } from "./providers/jev.js";
|
|
4
|
+
import type { Question } from "./questions.js";
|
|
5
|
+
/**
|
|
6
|
+
* THE OTHER TWO WAYS A DECISION IS ANSWERED.
|
|
7
|
+
*
|
|
8
|
+
* A decision provider answers a typed question exactly. The two rungs
|
|
9
|
+
* either side of it can answer the same question, worse: the graph by its
|
|
10
|
+
* own rules — a rule's truth is whatever the store's judgement says, a
|
|
11
|
+
* repair is one the violation named — and a model with the whole
|
|
12
|
+
* parse-and-refuse layer behind it, which is what a decision provider
|
|
13
|
+
* makes unnecessary and what this file has to carry so the LLM rung can
|
|
14
|
+
* serve the capability at all. Both answer in the SAME shape, so a surface
|
|
15
|
+
* asking for a decision cannot tell which rung answered except by the
|
|
16
|
+
* confidence, which is the point.
|
|
17
|
+
*/
|
|
18
|
+
/** An answer the graph could not give is left out and named here. */
|
|
19
|
+
export interface PartlyDecided extends Decided {
|
|
20
|
+
readonly unanswered: readonly string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The graph decides what its own rules already decided. A question keyed
|
|
24
|
+
* `rule:<name>[:<subject>]` is answered from `store.violations()` — a
|
|
25
|
+
* probability of exactly 1 or 0, because the store does not guess — and a
|
|
26
|
+
* `repair:` question is answered with the first option, which is the
|
|
27
|
+
* violation's first ready repair. Everything else is unanswered: the graph
|
|
28
|
+
* has no opinion about which surface a lawn is.
|
|
29
|
+
*/
|
|
30
|
+
export declare function graphDecide<S extends AnySchema>(store: Store<S>): (state: unknown, questions: Readonly<Record<string, Question>>) => Promise<PartlyDecided>;
|
|
31
|
+
/**
|
|
32
|
+
* A model as a decision provider: the parse-and-refuse layer, in full.
|
|
33
|
+
*
|
|
34
|
+
* The questions go up as they are; the model is asked for a JSON object
|
|
35
|
+
* of answers under the same keys. What comes back is held to the
|
|
36
|
+
* question: a Choice must name an option that was offered, a truth must
|
|
37
|
+
* be a probability, a Score must be a level that exists. Anything else is
|
|
38
|
+
* a refusal for that key — never a guess — and the model's confidence is
|
|
39
|
+
* what it says it is, which a reader should trust rather less than a
|
|
40
|
+
* decision provider's.
|
|
41
|
+
*/
|
|
42
|
+
export declare function completionDecide(complete: Completion): Decide;
|
|
43
|
+
//# sourceMappingURL=decide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAU,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;;;;;;GAYG;AAEH,qEAAqE;AACrE,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CA2B3J;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAsE7D"}
|
package/dist/decide.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { firstJsonObject } from "./intelligence.js";
|
|
2
|
+
/**
|
|
3
|
+
* The graph decides what its own rules already decided. A question keyed
|
|
4
|
+
* `rule:<name>[:<subject>]` is answered from `store.violations()` — a
|
|
5
|
+
* probability of exactly 1 or 0, because the store does not guess — and a
|
|
6
|
+
* `repair:` question is answered with the first option, which is the
|
|
7
|
+
* violation's first ready repair. Everything else is unanswered: the graph
|
|
8
|
+
* has no opinion about which surface a lawn is.
|
|
9
|
+
*/
|
|
10
|
+
export function graphDecide(store) {
|
|
11
|
+
return async (_state, questions) => {
|
|
12
|
+
const violations = store.violations();
|
|
13
|
+
const answers = {};
|
|
14
|
+
const unanswered = [];
|
|
15
|
+
for (const [key, question] of Object.entries(questions)) {
|
|
16
|
+
const rule = /^rule:([^:]+)(?::(.+))?$/.exec(key);
|
|
17
|
+
if (rule && question.type === "noul") {
|
|
18
|
+
const [, name, subject] = rule;
|
|
19
|
+
const broken = violations.some((v) => v.invariant === name && (subject === undefined || v.subjectId === subject));
|
|
20
|
+
answers[key] = { type: "noul", noul: broken ? 0 : 1 };
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const repair = /^repair:/.exec(key);
|
|
24
|
+
if (repair && question.type === "choice") {
|
|
25
|
+
const first = Object.keys(question.criteria)[0];
|
|
26
|
+
if (first) {
|
|
27
|
+
const probabilities = {};
|
|
28
|
+
for (const option of Object.keys(question.criteria))
|
|
29
|
+
probabilities[option] = option === first ? 1 : 0;
|
|
30
|
+
answers[key] = { type: "choice", choice: first, confidence: 1, probabilities };
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
unanswered.push(key);
|
|
35
|
+
}
|
|
36
|
+
return { answers, unanswered, usage: { inputTokens: 0, outputTokens: 0 } };
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A model as a decision provider: the parse-and-refuse layer, in full.
|
|
41
|
+
*
|
|
42
|
+
* The questions go up as they are; the model is asked for a JSON object
|
|
43
|
+
* of answers under the same keys. What comes back is held to the
|
|
44
|
+
* question: a Choice must name an option that was offered, a truth must
|
|
45
|
+
* be a probability, a Score must be a level that exists. Anything else is
|
|
46
|
+
* a refusal for that key — never a guess — and the model's confidence is
|
|
47
|
+
* what it says it is, which a reader should trust rather less than a
|
|
48
|
+
* decision provider's.
|
|
49
|
+
*/
|
|
50
|
+
export function completionDecide(complete) {
|
|
51
|
+
return async (state, questions) => {
|
|
52
|
+
const asked = Object.keys(questions);
|
|
53
|
+
if (asked.length === 0)
|
|
54
|
+
return { answers: {}, usage: { inputTokens: 0, outputTokens: 0 } };
|
|
55
|
+
const prompt = [
|
|
56
|
+
"You are answering typed questions about a state. Answer ONLY a JSON object keyed by question id.",
|
|
57
|
+
"For a \"choice\" question answer {\"choice\": <one of the criteria keys>, \"confidence\": 0..1}.",
|
|
58
|
+
"For a \"noul\" question answer {\"noul\": <probability 0..1 that the answer is yes>}.",
|
|
59
|
+
"For a \"score\" question answer {\"level\": <index into criteria, 0-based>, \"confidence\": 0..1}.",
|
|
60
|
+
`State:\n${JSON.stringify(state)}`,
|
|
61
|
+
`Questions:\n${JSON.stringify(questions)}`,
|
|
62
|
+
].join("\n\n");
|
|
63
|
+
const text = await complete(prompt);
|
|
64
|
+
const read = firstJsonObject(text);
|
|
65
|
+
if (!read || typeof read !== "object" || Array.isArray(read)) {
|
|
66
|
+
throw new Error("The model answered in a shape that is not a map of answers.");
|
|
67
|
+
}
|
|
68
|
+
const given = read;
|
|
69
|
+
const answers = {};
|
|
70
|
+
const refused = [];
|
|
71
|
+
for (const key of asked) {
|
|
72
|
+
const question = questions[key];
|
|
73
|
+
const said = given[key];
|
|
74
|
+
const clamp = (n, fallback) => (typeof n === "number" && n >= 0 && n <= 1 ? n : fallback);
|
|
75
|
+
if (!said || typeof said !== "object") {
|
|
76
|
+
refused.push(key);
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (question.type === "choice") {
|
|
80
|
+
const options = Object.keys(question.criteria);
|
|
81
|
+
const choice = typeof said["choice"] === "string" ? said["choice"] : undefined;
|
|
82
|
+
if (!choice || !options.includes(choice)) {
|
|
83
|
+
refused.push(key);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const confidence = clamp(said["confidence"], 0.5);
|
|
87
|
+
const probabilities = {};
|
|
88
|
+
const rest = options.length > 1 ? (1 - confidence) / (options.length - 1) : 0;
|
|
89
|
+
for (const option of options)
|
|
90
|
+
probabilities[option] = option === choice ? confidence : rest;
|
|
91
|
+
answers[key] = { type: "choice", choice, confidence, probabilities };
|
|
92
|
+
}
|
|
93
|
+
else if (question.type === "noul") {
|
|
94
|
+
const noul = said["noul"];
|
|
95
|
+
if (typeof noul !== "number" || noul < 0 || noul > 1) {
|
|
96
|
+
refused.push(key);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
answers[key] = { type: "noul", noul };
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const level = said["level"];
|
|
103
|
+
if (typeof level !== "number" || !Number.isInteger(level) || level < 0 || level >= question.criteria.length) {
|
|
104
|
+
refused.push(key);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const confidence = clamp(said["confidence"], 0.5);
|
|
108
|
+
const probabilities = {};
|
|
109
|
+
const legend = {};
|
|
110
|
+
const rest = question.criteria.length > 1 ? (1 - confidence) / (question.criteria.length - 1) : 0;
|
|
111
|
+
question.criteria.forEach((description, at) => {
|
|
112
|
+
probabilities[String(at)] = at === level ? confidence : rest;
|
|
113
|
+
legend[String(at)] = description;
|
|
114
|
+
});
|
|
115
|
+
const score = Object.entries(probabilities).reduce((sum, [at, p]) => sum + Number(at) * p, 0);
|
|
116
|
+
answers[key] = { type: "score", score, confidence, probabilities, legend };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (refused.length > 0) {
|
|
120
|
+
throw new Error(`The model did not answer ${refused.map((key) => `"${key}"`).join(", ")} in the shape asked, so nothing was taken for them.`);
|
|
121
|
+
}
|
|
122
|
+
return { answers, usage: { inputTokens: 0, outputTokens: 0 } };
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=decide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"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"}
|
package/dist/derive.d.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { type AnySchema, type Principal, type Store } from "@graview/core";
|
|
2
|
+
import type { Affordance, AffordanceProvider, AffordanceSet } from "./types.js";
|
|
3
|
+
export interface DeriveOptions<S extends AnySchema> {
|
|
4
|
+
/** Replaces the default set. Spread `defaultProviders()` to add to it. */
|
|
5
|
+
readonly providers?: readonly AffordanceProvider<S>[];
|
|
6
|
+
readonly context?: Readonly<Record<string, unknown>>;
|
|
7
|
+
/** Caps the returned list; observations are never capped. */
|
|
8
|
+
readonly limit?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Who is asking. Actions this principal may not run move to `withheld`
|
|
11
|
+
* rather than being dropped.
|
|
12
|
+
*
|
|
13
|
+
* The narrowing happens HERE, once, rather than in each provider — a
|
|
14
|
+
* provider's job is to notice what could be done, and whether you in
|
|
15
|
+
* particular may do it is a different question asked of the same answer.
|
|
16
|
+
* No app writes filtering code, and a provider written tomorrow inherits it.
|
|
17
|
+
*/
|
|
18
|
+
readonly principal?: Principal;
|
|
19
|
+
/**
|
|
20
|
+
* Kinds the selection DENOTES when it is not nodes — a selected kind card
|
|
21
|
+
* or district. Supplied by the binding, which owns those ids; providers
|
|
22
|
+
* only see the kinds. This is how an empty kind can still answer "how does
|
|
23
|
+
* the first one get here".
|
|
24
|
+
*/
|
|
25
|
+
readonly kindSelection?: readonly string[];
|
|
26
|
+
/** Edges the selection names — supplied by the binding, like kinds. */
|
|
27
|
+
readonly edgeSelection?: readonly {
|
|
28
|
+
kind: string;
|
|
29
|
+
from: string;
|
|
30
|
+
to: string;
|
|
31
|
+
}[];
|
|
32
|
+
/**
|
|
33
|
+
* The person's pin overrides. Supplied by the binding (which owns the
|
|
34
|
+
* browser's storage — see `loadPins`); the dev's pins come from the
|
|
35
|
+
* declarations and need no option. `pinned` outranks a declared pin,
|
|
36
|
+
* `unpinned` demotes one.
|
|
37
|
+
*/
|
|
38
|
+
readonly pins?: {
|
|
39
|
+
readonly pinned?: readonly string[];
|
|
40
|
+
readonly unpinned?: readonly string[];
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* THE THING UNDER THE POINTER — the node right-clicked, the node the
|
|
44
|
+
* strip's last press selected, the record a page is about.
|
|
45
|
+
*
|
|
46
|
+
* The selection says what the acts are DERIVED from; this says which one
|
|
47
|
+
* of them you just touched, and the ranking leads with it: that node's own
|
|
48
|
+
* repair, then its own acts, then everything else. Without it a rule that
|
|
49
|
+
* implicates six late tasks in ONE violation offered the six repairs in
|
|
50
|
+
* the order it happened to list them, so right-clicking the fourth task
|
|
51
|
+
* met the first task's repair at the top — asking to fix a different
|
|
52
|
+
* thing than the one you pressed on.
|
|
53
|
+
*
|
|
54
|
+
* Optional, and omitting it changes nothing: with no focus every act is
|
|
55
|
+
* equally about the selection and the older bands decide alone.
|
|
56
|
+
*/
|
|
57
|
+
readonly focus?: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Schema, invariant and structure, in that order of precedence when scores
|
|
61
|
+
* tie. Lens and LLM providers are added by the app, because only the app
|
|
62
|
+
* knows which lens is active and whether an LLM is available at all.
|
|
63
|
+
*/
|
|
64
|
+
export declare function defaultProviders<S extends AnySchema>(): AffordanceProvider<S>[];
|
|
65
|
+
/**
|
|
66
|
+
* Given a selection, what can be done with it.
|
|
67
|
+
*
|
|
68
|
+
* Every provider contributes candidates and they merge into one ranked set —
|
|
69
|
+
* there is no menu to hunt and no prompt to write. An LLM is one optional
|
|
70
|
+
* provider among these, not the mechanism: the useful suggestions come from
|
|
71
|
+
* the schema, the invariants and the shape of the graph.
|
|
72
|
+
*/
|
|
73
|
+
export declare function deriveAffordances<S extends AnySchema>(store: Store<S>, selection: readonly string[], options?: DeriveOptions<S>): AffordanceSet;
|
|
74
|
+
/**
|
|
75
|
+
* Applies an affordance. Human-initiated and agent-initiated actions run the
|
|
76
|
+
* same path and produce the same diff, which is why watching an agent work
|
|
77
|
+
* needs no bespoke observability layer.
|
|
78
|
+
*/
|
|
79
|
+
export declare function applyAffordance<S extends AnySchema>(store: Store<S>, affordance: Affordance, extraArgs?: Readonly<Record<string, unknown>>, options?: {
|
|
80
|
+
author?: Principal;
|
|
81
|
+
}): import("@graview/core").ApplyResult<S>;
|
|
82
|
+
/** What an affordance would do, as a diff plus the invariants it would break. */
|
|
83
|
+
export declare function previewAffordance<S extends AnySchema>(store: Store<S>, affordance: Affordance, extraArgs?: Readonly<Record<string, unknown>>): import("@graview/core").Preview<S>;
|
|
84
|
+
//# sourceMappingURL=derive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../src/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,SAAS,EAAqB,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAM3G,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,aAAa,EAId,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,SAAS;IAChD,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,uEAAuE;IACvE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/E;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KACvC,CAAC;IACF;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,KAAK,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAE/E;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,SAAS,EACnD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,OAAO,GAAE,aAAa,CAAC,CAAC,CAAM,GAC7B,aAAa,CA4Nf;AAoCD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EACjD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,UAAU,EAAE,UAAU,EACtB,SAAS,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,EACjD,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,SAAS,CAAA;CAAO,0CAuBrC;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,SAAS,EACnD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,UAAU,EAAE,UAAU,EACtB,SAAS,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,sCAMlD"}
|
package/dist/derive.js
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { nodeRefArgs } from "@graview/core";
|
|
2
|
+
import { insightProvider } from "./providers/insight.js";
|
|
3
|
+
import { usageBoost, usageWeights } from "./usage.js";
|
|
4
|
+
import { invariantProvider } from "./providers/invariant.js";
|
|
5
|
+
import { schemaProvider } from "./providers/schema.js";
|
|
6
|
+
import { structureProvider } from "./providers/structure.js";
|
|
7
|
+
/**
|
|
8
|
+
* Schema, invariant and structure, in that order of precedence when scores
|
|
9
|
+
* tie. Lens and LLM providers are added by the app, because only the app
|
|
10
|
+
* knows which lens is active and whether an LLM is available at all.
|
|
11
|
+
*/
|
|
12
|
+
export function defaultProviders() {
|
|
13
|
+
return [invariantProvider(), structureProvider(), schemaProvider(), insightProvider()];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Given a selection, what can be done with it.
|
|
17
|
+
*
|
|
18
|
+
* Every provider contributes candidates and they merge into one ranked set —
|
|
19
|
+
* there is no menu to hunt and no prompt to write. An LLM is one optional
|
|
20
|
+
* provider among these, not the mechanism: the useful suggestions come from
|
|
21
|
+
* the schema, the invariants and the shape of the graph.
|
|
22
|
+
*/
|
|
23
|
+
export function deriveAffordances(store, selection, options = {}) {
|
|
24
|
+
const started = now();
|
|
25
|
+
const providers = options.providers ?? defaultProviders();
|
|
26
|
+
const nodes = selection
|
|
27
|
+
.map((id) => store.graph.getNode(id))
|
|
28
|
+
.filter((node) => node !== undefined);
|
|
29
|
+
const context = {
|
|
30
|
+
store,
|
|
31
|
+
selection,
|
|
32
|
+
nodes,
|
|
33
|
+
kindSelection: options.kindSelection ?? [],
|
|
34
|
+
edgeSelection: options.edgeSelection ?? [],
|
|
35
|
+
// Evaluated once and shared: every provider that cares about violations
|
|
36
|
+
// sees the same ones, and a selection change costs one evaluation.
|
|
37
|
+
violations: store.violations(options.context),
|
|
38
|
+
context: options.context ?? {},
|
|
39
|
+
};
|
|
40
|
+
const affordances = [];
|
|
41
|
+
const observations = [];
|
|
42
|
+
for (const provider of providers) {
|
|
43
|
+
const result = provider.derive(context);
|
|
44
|
+
affordances.push(...(result.affordances ?? []));
|
|
45
|
+
observations.push(...(result.observations ?? []));
|
|
46
|
+
}
|
|
47
|
+
/*
|
|
48
|
+
* THE BANDS ARE INVIOLATE; everything else shuffles inside them.
|
|
49
|
+
*
|
|
50
|
+
* Destructive actions come LAST, whatever their score — "Remove" sorting
|
|
51
|
+
* first on an ordinary selection is an interface leading with the one
|
|
52
|
+
* thing that cannot be taken back. Then the PRESS decides: the thing you
|
|
53
|
+
* clicked gets its own repairs, then its own acts, before anything the
|
|
54
|
+
* rest of the selection offers (see `focusRank`). Repairs come FIRST
|
|
55
|
+
* within each of those halves: a broken rule outranks any preference,
|
|
56
|
+
* and between two of a rule's own repairs the RULE's order stands —
|
|
57
|
+
* naming "give it a new date" before "finish it" is a judgement, and a
|
|
58
|
+
* pin is not entitled to overrule it. Below the repairs, pins rank before
|
|
59
|
+
* the rest (a person's own pin before the app's declared one), and a
|
|
60
|
+
* deterministic usage boost — decayed recency and frequency read off the
|
|
61
|
+
* op log, no model — lets what this workspace actually does rank ahead of
|
|
62
|
+
* what it never touches. The same order reaches the strip, the pointer
|
|
63
|
+
* menu, the record page and an agent's tool list, so no surface
|
|
64
|
+
* contradicts another.
|
|
65
|
+
*/
|
|
66
|
+
const declaredPins = new Set(store
|
|
67
|
+
.allMutations()
|
|
68
|
+
.filter((mutation) => mutation.pinned)
|
|
69
|
+
.map((mutation) => mutation.name));
|
|
70
|
+
const userPins = new Set(options.pins?.pinned ?? []);
|
|
71
|
+
// A declared pin the person turned off ranks like anything else.
|
|
72
|
+
const demoted = new Set(options.pins?.unpinned ?? []);
|
|
73
|
+
const holds = (affordance) => userPins.has(affordance.mutation)
|
|
74
|
+
? "user"
|
|
75
|
+
: declaredPins.has(affordance.mutation) && !demoted.has(affordance.mutation)
|
|
76
|
+
? "declared"
|
|
77
|
+
: undefined;
|
|
78
|
+
const pinnedAs = (affordance) => {
|
|
79
|
+
const held = holds(affordance);
|
|
80
|
+
return held ? { ...affordance, pinned: held } : affordance;
|
|
81
|
+
};
|
|
82
|
+
// Stamped and summed once; the comparator reads plain fields.
|
|
83
|
+
const boost = new Map();
|
|
84
|
+
for (const [name, weight] of usageWeights(store.log.all()))
|
|
85
|
+
boost.set(name, usageBoost(weight));
|
|
86
|
+
const pinRank = (affordance) => affordance.pinned === "user" ? 0 : affordance.pinned === "declared" ? 1 : 2;
|
|
87
|
+
const boosted = (affordance) => affordance.score + (boost.get(affordance.mutation) ?? 0);
|
|
88
|
+
/*
|
|
89
|
+
* WHICH NODES AN ACT WOULD ACTUALLY CHANGE, read off the mutation's own
|
|
90
|
+
* input rather than declared per act.
|
|
91
|
+
*
|
|
92
|
+
* `nodeIds` is what an act is ABOUT — a violation hands its repairs the
|
|
93
|
+
* whole set of nodes it implicates — and that is right for highlighting
|
|
94
|
+
* and wrong for "is this the thing I clicked". The arguments are precise:
|
|
95
|
+
* a repair carrying `taskId: "t-book"` acts on that task and no other,
|
|
96
|
+
* whichever six the rule mentioned in passing.
|
|
97
|
+
*/
|
|
98
|
+
const declaredMutations = new Map(store.allMutations().map((mutation) => [mutation.name, mutation]));
|
|
99
|
+
const refNames = new Map();
|
|
100
|
+
const targetsOf = (affordance) => {
|
|
101
|
+
const declared = declaredMutations.get(affordance.mutation);
|
|
102
|
+
if (!declared)
|
|
103
|
+
return [];
|
|
104
|
+
let names = refNames.get(affordance.mutation);
|
|
105
|
+
if (!names) {
|
|
106
|
+
names = nodeRefArgs(declared.input).map((arg) => arg.name);
|
|
107
|
+
refNames.set(affordance.mutation, names);
|
|
108
|
+
}
|
|
109
|
+
const found = [];
|
|
110
|
+
for (const call of affordance.batch ?? [affordance.args]) {
|
|
111
|
+
for (const name of names) {
|
|
112
|
+
const value = call[name] ?? affordance.args[name];
|
|
113
|
+
if (typeof value === "string")
|
|
114
|
+
found.push(value);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return found;
|
|
118
|
+
};
|
|
119
|
+
/*
|
|
120
|
+
* THE PRESS LEADS THE LIST.
|
|
121
|
+
*
|
|
122
|
+
* Five bands, and the focus decides the first four: the clicked thing's
|
|
123
|
+
* own repair, then a repair that merely implicates it, then its own acts
|
|
124
|
+
* — the ones already settled to a single press ahead of the ones that
|
|
125
|
+
* still ask — and finally everything the rest of the selection offers,
|
|
126
|
+
* where the older bands (repairs first, pins, usage) decide as they
|
|
127
|
+
* always did. The destructive tail is untouched and still outermost: a
|
|
128
|
+
* "Delete" for the thing you clicked is still not the first thing an
|
|
129
|
+
* interface should offer you.
|
|
130
|
+
*
|
|
131
|
+
* With no focus every act lands in the last band, which is the order this
|
|
132
|
+
* function returned before there was a focus at all.
|
|
133
|
+
*/
|
|
134
|
+
const focus = options.focus;
|
|
135
|
+
const REST = 4;
|
|
136
|
+
/*
|
|
137
|
+
* SETTLED, OR STILL ASKING — and an optional argument is still a question.
|
|
138
|
+
*
|
|
139
|
+
* Asking only about the required ones put "Change the task", whose fields
|
|
140
|
+
* are every one of them optional, ahead of "Rename", which needs a name.
|
|
141
|
+
* Both open a form; neither is one press. What the band is for is the act
|
|
142
|
+
* the derivation already worked out in full, which is the act with nothing
|
|
143
|
+
* left open at all.
|
|
144
|
+
*/
|
|
145
|
+
const asks = (affordance) => (affordance.open.length > 0 ? 1 : 0);
|
|
146
|
+
const focusRank = (affordance) => {
|
|
147
|
+
if (focus === undefined)
|
|
148
|
+
return REST;
|
|
149
|
+
const targets = targetsOf(affordance);
|
|
150
|
+
/*
|
|
151
|
+
* AN ACT THAT NAMES A NODE NAMES WHOSE ACT IT IS, whatever the rule it
|
|
152
|
+
* came from was about. "A new date for Book the hall" arrived from the
|
|
153
|
+
* same violation as yours and implicates your task in passing; it is
|
|
154
|
+
* still somebody else's repair and belongs with the rest.
|
|
155
|
+
*/
|
|
156
|
+
if (targets.length > 0)
|
|
157
|
+
return targets.includes(focus) ? bandFor(affordance, 0) : REST;
|
|
158
|
+
// Nothing named: it is yours if the rule implicates you, or judges you.
|
|
159
|
+
if (affordance.nodeIds.includes(focus) || affordance.subjectId === focus) {
|
|
160
|
+
return bandFor(affordance, 1);
|
|
161
|
+
}
|
|
162
|
+
return REST;
|
|
163
|
+
};
|
|
164
|
+
/** A repair leads; an act follows, settled before asking. */
|
|
165
|
+
const bandFor = (affordance, repairBand) => affordance.provider === "invariant" ? repairBand : 2 + asks(affordance);
|
|
166
|
+
const candidates = dedupe(affordances).map(pinnedAs);
|
|
167
|
+
// The order the rules listed them in, kept for the two repair bands: a
|
|
168
|
+
// rule that names "finish it" before "put it back" meant that.
|
|
169
|
+
const listed = new Map(candidates.map((affordance, at) => [affordance, at]));
|
|
170
|
+
const ranked = candidates.sort((a, b) => {
|
|
171
|
+
const destructive = Number(a.destructive ?? false) - Number(b.destructive ?? false);
|
|
172
|
+
if (destructive !== 0)
|
|
173
|
+
return destructive;
|
|
174
|
+
const band = focusRank(a) - focusRank(b);
|
|
175
|
+
if (band !== 0)
|
|
176
|
+
return band;
|
|
177
|
+
if (focusRank(a) < 2)
|
|
178
|
+
return listed.get(a) - listed.get(b);
|
|
179
|
+
return (Number(b.provider === "invariant") - Number(a.provider === "invariant") ||
|
|
180
|
+
pinRank(a) - pinRank(b) ||
|
|
181
|
+
boosted(b) - boosted(a) ||
|
|
182
|
+
a.id.localeCompare(b.id));
|
|
183
|
+
});
|
|
184
|
+
/*
|
|
185
|
+
* An action you may not take SAYS SO rather than vanishing.
|
|
186
|
+
*
|
|
187
|
+
* The framework already treats an empty action list as a result and
|
|
188
|
+
* explains it; "you cannot do this, and here is who can" is the same
|
|
189
|
+
* honesty. Silently hiding it teaches people the software is broken, and
|
|
190
|
+
* teaches an agent that a capability does not exist when it does.
|
|
191
|
+
*/
|
|
192
|
+
/*
|
|
193
|
+
* ASKED AS SOMEBODY, ALWAYS — the same somebody the store assumes.
|
|
194
|
+
*
|
|
195
|
+
* This skipped the check entirely when no principal was passed, so a
|
|
196
|
+
* caller that did not thread one was told it could do everything while
|
|
197
|
+
* `store.apply` refused it: `store.permits` and `applyAll` both default to
|
|
198
|
+
* `{ kind: "human" }` and fail CLOSED, and this failed open. The scene was
|
|
199
|
+
* fine because the React provider defaults the principal to that same
|
|
200
|
+
* anonymous human; every other caller — `recordFacts`, `kindFacts`, an
|
|
201
|
+
* app calling this directly — got a face full of acts that refused on
|
|
202
|
+
* press, which is the one thing the permission contract exists to prevent.
|
|
203
|
+
*
|
|
204
|
+
* Opt-in is unaffected: a store with no policy permits this principal
|
|
205
|
+
* everything, which is exactly what made the old shortcut look harmless.
|
|
206
|
+
*/
|
|
207
|
+
const asking = options.principal ?? { kind: "human" };
|
|
208
|
+
const allowed = [];
|
|
209
|
+
const withheld = [];
|
|
210
|
+
for (const affordance of ranked) {
|
|
211
|
+
const verdict = store.permits({ name: affordance.mutation, args: { ...affordance.args, ...(affordance.batch?.[0] ?? {}) } }, asking);
|
|
212
|
+
if (verdict.ok)
|
|
213
|
+
allowed.push(affordance);
|
|
214
|
+
else
|
|
215
|
+
withheld.push({ ...affordance, refusal: verdict.refusal });
|
|
216
|
+
}
|
|
217
|
+
/*
|
|
218
|
+
* ONE RANK, STAMPED ONCE. The strip, the pointer menu, the record page's
|
|
219
|
+
* acts and an agent's tool list all read these arrays; a surface that
|
|
220
|
+
* regroups them can still say which entry the derivation put first rather
|
|
221
|
+
* than deciding for itself and contradicting its neighbour. Withheld acts
|
|
222
|
+
* continue the same numbering, because "last, and still shown" is where
|
|
223
|
+
* the order puts them.
|
|
224
|
+
*/
|
|
225
|
+
const offered = allowed.map((affordance, at) => ({ ...affordance, rank: at }));
|
|
226
|
+
const stated = withheld.map((affordance, at) => ({ ...affordance, rank: allowed.length + at }));
|
|
227
|
+
return {
|
|
228
|
+
affordances: options.limit === undefined ? offered : offered.slice(0, options.limit),
|
|
229
|
+
withheld: stated,
|
|
230
|
+
observations: dedupeObservations(observations),
|
|
231
|
+
ms: now() - started,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* The same mutation with the same arguments reached by two providers is one
|
|
236
|
+
* action, kept at the better score. A repair and a schema-derived action can
|
|
237
|
+
* be the same edit — showing it twice would make the interface look confused
|
|
238
|
+
* about itself.
|
|
239
|
+
*
|
|
240
|
+
* The batch is part of the identity: "reassign this run" and "reassign all
|
|
241
|
+
* three" are different actions even though they share a first call, and
|
|
242
|
+
* collapsing them would quietly drop the one that acts on the selection.
|
|
243
|
+
*/
|
|
244
|
+
function dedupe(affordances) {
|
|
245
|
+
const best = new Map();
|
|
246
|
+
for (const affordance of affordances) {
|
|
247
|
+
const key = [
|
|
248
|
+
affordance.mutation,
|
|
249
|
+
JSON.stringify(affordance.args),
|
|
250
|
+
JSON.stringify(affordance.batch ?? null),
|
|
251
|
+
].join("|");
|
|
252
|
+
const existing = best.get(key);
|
|
253
|
+
if (!existing || affordance.score > existing.score)
|
|
254
|
+
best.set(key, affordance);
|
|
255
|
+
}
|
|
256
|
+
return [...best.values()];
|
|
257
|
+
}
|
|
258
|
+
function dedupeObservations(observations) {
|
|
259
|
+
const seen = new Map();
|
|
260
|
+
for (const observation of observations)
|
|
261
|
+
seen.set(observation.text, observation);
|
|
262
|
+
return [...seen.values()];
|
|
263
|
+
}
|
|
264
|
+
function now() {
|
|
265
|
+
return typeof performance !== "undefined" ? performance.now() : Date.now();
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Applies an affordance. Human-initiated and agent-initiated actions run the
|
|
269
|
+
* same path and produce the same diff, which is why watching an agent work
|
|
270
|
+
* needs no bespoke observability layer.
|
|
271
|
+
*/
|
|
272
|
+
export function applyAffordance(store, affordance, extraArgs = {}, options = {}) {
|
|
273
|
+
const calls = (affordance.batch ?? [affordance.args]).map((args) => ({
|
|
274
|
+
name: affordance.mutation,
|
|
275
|
+
args: { ...affordance.args, ...args, ...extraArgs },
|
|
276
|
+
}));
|
|
277
|
+
/*
|
|
278
|
+
* THE LOG SAYS WHAT HAPPENED, NOT WHAT THE BUTTON SAID.
|
|
279
|
+
*
|
|
280
|
+
* An act that declares `describe` has words for itself with its arguments
|
|
281
|
+
* in — "Pay the deposit is handled by Ada Nowak" — and the routed face
|
|
282
|
+
* has always logged those. The strip logged the BUTTON instead: "Hand it
|
|
283
|
+
* to someone", and for a repair answered through an ask, "Hand Pay the
|
|
284
|
+
* deposit to somebody" after Ada had been chosen — the question's words
|
|
285
|
+
* standing in the history for the answer. One act, one sentence, on
|
|
286
|
+
* every face; the label is only the fallback for an act with no words of
|
|
287
|
+
* its own, where the compiled intent would be `name(k=v)`.
|
|
288
|
+
*/
|
|
289
|
+
const declared = store.allMutations().find((mutation) => mutation.name === affordance.mutation);
|
|
290
|
+
return store.applyAll(calls, {
|
|
291
|
+
...(declared?.describe ? {} : { intent: affordance.label }),
|
|
292
|
+
...(options.author ? { author: options.author } : {}),
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
/** What an affordance would do, as a diff plus the invariants it would break. */
|
|
296
|
+
export function previewAffordance(store, affordance, extraArgs = {}) {
|
|
297
|
+
return store.preview({
|
|
298
|
+
name: affordance.mutation,
|
|
299
|
+
args: { ...affordance.args, ...extraArgs },
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=derive.js.map
|