@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.
Files changed (111) hide show
  1. package/LICENSE +96 -0
  2. package/README.md +47 -0
  3. package/dist/agent/adapters.d.ts +43 -0
  4. package/dist/agent/adapters.d.ts.map +1 -0
  5. package/dist/agent/adapters.js +52 -0
  6. package/dist/agent/adapters.js.map +1 -0
  7. package/dist/agent/tools.d.ts +105 -0
  8. package/dist/agent/tools.d.ts.map +1 -0
  9. package/dist/agent/tools.js +311 -0
  10. package/dist/agent/tools.js.map +1 -0
  11. package/dist/cli.d.ts +37 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +306 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/conversation.d.ts +108 -0
  16. package/dist/conversation.d.ts.map +1 -0
  17. package/dist/conversation.js +698 -0
  18. package/dist/conversation.js.map +1 -0
  19. package/dist/decide.d.ts +43 -0
  20. package/dist/decide.d.ts.map +1 -0
  21. package/dist/decide.js +125 -0
  22. package/dist/decide.js.map +1 -0
  23. package/dist/derive.d.ts +84 -0
  24. package/dist/derive.d.ts.map +1 -0
  25. package/dist/derive.js +302 -0
  26. package/dist/derive.js.map +1 -0
  27. package/dist/edit.d.ts +70 -0
  28. package/dist/edit.d.ts.map +1 -0
  29. package/dist/edit.js +97 -0
  30. package/dist/edit.js.map +1 -0
  31. package/dist/figure.d.ts +53 -0
  32. package/dist/figure.d.ts.map +1 -0
  33. package/dist/figure.js +86 -0
  34. package/dist/figure.js.map +1 -0
  35. package/dist/index.d.ts +44 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +31 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/intelligence.d.ts +132 -0
  40. package/dist/intelligence.d.ts.map +1 -0
  41. package/dist/intelligence.js +463 -0
  42. package/dist/intelligence.js.map +1 -0
  43. package/dist/local.d.ts +192 -0
  44. package/dist/local.d.ts.map +1 -0
  45. package/dist/local.js +365 -0
  46. package/dist/local.js.map +1 -0
  47. package/dist/loop.d.ts +84 -0
  48. package/dist/loop.d.ts.map +1 -0
  49. package/dist/loop.js +173 -0
  50. package/dist/loop.js.map +1 -0
  51. package/dist/mcp-stdio.d.ts +38 -0
  52. package/dist/mcp-stdio.d.ts.map +1 -0
  53. package/dist/mcp-stdio.js +83 -0
  54. package/dist/mcp-stdio.js.map +1 -0
  55. package/dist/pins.d.ts +29 -0
  56. package/dist/pins.d.ts.map +1 -0
  57. package/dist/pins.js +60 -0
  58. package/dist/pins.js.map +1 -0
  59. package/dist/plan.d.ts +150 -0
  60. package/dist/plan.d.ts.map +1 -0
  61. package/dist/plan.js +303 -0
  62. package/dist/plan.js.map +1 -0
  63. package/dist/providers/insight.d.ts +14 -0
  64. package/dist/providers/insight.d.ts.map +1 -0
  65. package/dist/providers/insight.js +81 -0
  66. package/dist/providers/insight.js.map +1 -0
  67. package/dist/providers/invariant.d.ts +14 -0
  68. package/dist/providers/invariant.d.ts.map +1 -0
  69. package/dist/providers/invariant.js +123 -0
  70. package/dist/providers/invariant.js.map +1 -0
  71. package/dist/providers/jev.d.ts +115 -0
  72. package/dist/providers/jev.d.ts.map +1 -0
  73. package/dist/providers/jev.js +148 -0
  74. package/dist/providers/jev.js.map +1 -0
  75. package/dist/providers/lens.d.ts +24 -0
  76. package/dist/providers/lens.d.ts.map +1 -0
  77. package/dist/providers/lens.js +36 -0
  78. package/dist/providers/lens.js.map +1 -0
  79. package/dist/providers/llm.d.ts +25 -0
  80. package/dist/providers/llm.d.ts.map +1 -0
  81. package/dist/providers/llm.js +44 -0
  82. package/dist/providers/llm.js.map +1 -0
  83. package/dist/providers/schema.d.ts +12 -0
  84. package/dist/providers/schema.d.ts.map +1 -0
  85. package/dist/providers/schema.js +508 -0
  86. package/dist/providers/schema.js.map +1 -0
  87. package/dist/providers/structure.d.ts +14 -0
  88. package/dist/providers/structure.d.ts.map +1 -0
  89. package/dist/providers/structure.js +211 -0
  90. package/dist/providers/structure.js.map +1 -0
  91. package/dist/questions.d.ts +162 -0
  92. package/dist/questions.d.ts.map +1 -0
  93. package/dist/questions.js +316 -0
  94. package/dist/questions.js.map +1 -0
  95. package/dist/run.d.ts +202 -0
  96. package/dist/run.d.ts.map +1 -0
  97. package/dist/run.js +453 -0
  98. package/dist/run.js.map +1 -0
  99. package/dist/space.d.ts +50 -0
  100. package/dist/space.d.ts.map +1 -0
  101. package/dist/space.js +55 -0
  102. package/dist/space.js.map +1 -0
  103. package/dist/types.d.ts +122 -0
  104. package/dist/types.d.ts.map +1 -0
  105. package/dist/types.js +2 -0
  106. package/dist/types.js.map +1 -0
  107. package/dist/usage.d.ts +10 -0
  108. package/dist/usage.d.ts.map +1 -0
  109. package/dist/usage.js +59 -0
  110. package/dist/usage.js.map +1 -0
  111. package/package.json +61 -0
@@ -0,0 +1,122 @@
1
+ import type { AnySchema, NodeOfSchema, Refusal, Store, Violation } from "@graview/core";
2
+ /** Which provider contributed an action. Ranking reads this. */
3
+ export type ProviderName = "invariant" | "structure" | "schema" | "lens" | "llm" | "insight";
4
+ /** An argument the action still needs, and what would satisfy it. */
5
+ import type { ArgShape } from "@graview/core";
6
+ export interface OpenParameter {
7
+ readonly name: string;
8
+ /** May be omitted — an empty picker must not suppress the whole offer. */
9
+ readonly optional?: boolean;
10
+ /** Node kinds this argument accepts, when it names a node. */
11
+ readonly kinds?: readonly string[];
12
+ /** Ids the framework already knows would fit, so the UI can offer them. */
13
+ readonly candidates?: readonly string[];
14
+ /**
15
+ * What sort of answer it wants, read off the mutation's own schema.
16
+ *
17
+ * Without this an interface can only offer candidate ids, so every action
18
+ * needing a name, a date or a time was a dead end that looked live —
19
+ * "Rename · needs label" opened a list of nothing. The declaration always
20
+ * knew `label` was a non-empty string; nobody had asked it.
21
+ */
22
+ readonly shape?: ArgShape;
23
+ }
24
+ /**
25
+ * A legal thing to do with the current selection.
26
+ *
27
+ * Nobody authored these per selection. Each one is a typed mutation the
28
+ * providers below found by looking at the schema, the invariants and the
29
+ * shape of the graph — which is why a useful suggestion can appear that no
30
+ * rule was written to produce.
31
+ */
32
+ export interface Affordance {
33
+ readonly id: string;
34
+ readonly label: string;
35
+ readonly provider: ProviderName;
36
+ /** Set when the mutation declares edge kinds it connects or severs. */
37
+ readonly ties?: boolean;
38
+ /** The mutation this would run. Every action is a typed mutation. */
39
+ readonly mutation: string;
40
+ /** Arguments already determined. */
41
+ readonly args: Readonly<Record<string, unknown>>;
42
+ /** Arguments the person or agent still has to choose. */
43
+ readonly open: readonly OpenParameter[];
44
+ /** Several calls when the action applies across a whole selection. */
45
+ readonly batch?: readonly Readonly<Record<string, unknown>>[];
46
+ /** Higher sorts first. */
47
+ readonly score: number;
48
+ /** Loses something a person made. Listed last, and marked, everywhere. */
49
+ readonly destructive?: boolean;
50
+ /**
51
+ * Held to the top of its band: by the person at this browser ("user") or
52
+ * by the app's declaration ("declared"). User pins outrank declared ones;
53
+ * neither outranks a repair or escapes the destructive tail.
54
+ */
55
+ readonly pinned?: "user" | "declared";
56
+ /** The observation that produced it, in the interface's own words. */
57
+ readonly why: string;
58
+ /** Nodes this acts on, for highlighting across planes. */
59
+ readonly nodeIds: readonly string[];
60
+ /**
61
+ * For a repair, the node whose declaration produced the broken check —
62
+ * the violation's own subject. Read by the ranking so that clicking a
63
+ * rule leads with the rule's repairs.
64
+ */
65
+ readonly subjectId?: string;
66
+ /**
67
+ * Where this sits in the ONE order every surface reads, stamped by the
68
+ * derivation after ranking: allowed acts from 0, then the withheld ones.
69
+ *
70
+ * Nothing needs it to render a list in order — the arrays are already in
71
+ * it — but a surface that regroups (the record page's acts beside its
72
+ * fields, the menu's fold) can say which entry the derivation put first
73
+ * instead of deciding for itself and disagreeing with the strip.
74
+ */
75
+ readonly rank?: number;
76
+ }
77
+ /** Something true about the selection that no rule was written to notice. */
78
+ export interface Observation {
79
+ readonly id: string;
80
+ readonly text: string;
81
+ readonly nodeIds: readonly string[];
82
+ }
83
+ export interface DeriveContext<S extends AnySchema> {
84
+ readonly store: Store<S>;
85
+ readonly selection: readonly string[];
86
+ readonly nodes: readonly NodeOfSchema<S>[];
87
+ /** Kinds the selection denotes when it is kind cards rather than nodes. */
88
+ readonly kindSelection: readonly string[];
89
+ /** Concrete edges the selection names, when lines are selected. */
90
+ readonly edgeSelection: readonly {
91
+ kind: string;
92
+ from: string;
93
+ to: string;
94
+ }[];
95
+ /** Current violations, evaluated once and shared by every provider. */
96
+ readonly violations: readonly Violation[];
97
+ readonly context: Readonly<Record<string, unknown>>;
98
+ }
99
+ export interface AffordanceProvider<S extends AnySchema> {
100
+ readonly name: ProviderName;
101
+ derive(context: DeriveContext<S>): {
102
+ affordances?: readonly Affordance[];
103
+ observations?: readonly Observation[];
104
+ };
105
+ }
106
+ /** An action that exists, that this principal may not take, and why. */
107
+ export interface WithheldAffordance extends Affordance {
108
+ readonly refusal: Refusal;
109
+ }
110
+ export interface AffordanceSet {
111
+ readonly affordances: readonly Affordance[];
112
+ /**
113
+ * Actions withheld by permission. Stated rather than hidden: an interface
114
+ * shows them disabled with the reason, and an agent is told a capability
115
+ * exists that it may not use, which is not the same as it not existing.
116
+ */
117
+ readonly withheld: readonly WithheldAffordance[];
118
+ readonly observations: readonly Observation[];
119
+ /** Milliseconds spent deriving, so a caller can see it stays cheap. */
120
+ readonly ms: number;
121
+ }
122
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { Operation } from "@graview/core";
2
+ /** Decayed use per mutation name, from the tail of the log. */
3
+ export declare function usageWeights(ops: readonly Operation[]): ReadonlyMap<string, number>;
4
+ /**
5
+ * A bounded score boost from decayed use. Monotonic in use, capped at
6
+ * CEILING so history shuffles a band and never jumps one — a much-used act
7
+ * still ranks below every repair and above no destructive tail.
8
+ */
9
+ export declare function usageBoost(weight: number): number;
10
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AA0B/C,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBnF;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjD"}
package/dist/usage.js ADDED
@@ -0,0 +1,59 @@
1
+ /**
2
+ * WHAT YOU ACTUALLY USE, read off the op log.
3
+ *
4
+ * A menu that ranks only by what is structurally possible treats the act a
5
+ * workspace performs forty times a week exactly like the one it has never
6
+ * touched. The log already knows the difference — every applied mutation is
7
+ * an op with a name and a position — so the boost is DERIVED, deterministic
8
+ * and free of any model: recent and frequent use counts, decaying by
9
+ * half-lives of log distance so the menu tracks the season rather than the
10
+ * archive.
11
+ *
12
+ * This is the simple, derived stand-in for the deferred ELM ranking
13
+ * evaluation (ba7345a2): it feeds the same score field, and if that
14
+ * evaluation ever revisits with real data, its model replaces this
15
+ * arithmetic behind the same seam.
16
+ */
17
+ /** How far back the boost reads, in ops. Everything older says nothing. */
18
+ const WINDOW = 512;
19
+ /** Ops of distance over which a use loses half its weight. */
20
+ const HALF_LIFE = 64;
21
+ /** The most a mutation's history may add to its score — well inside a band. */
22
+ const CEILING = 8;
23
+ /** Decayed use per mutation name, from the tail of the log. */
24
+ export function usageWeights(ops) {
25
+ const weights = new Map();
26
+ if (ops.length === 0)
27
+ return weights;
28
+ const tail = ops.slice(-WINDOW);
29
+ /*
30
+ * A RETRACTED ACT IS NOT A USE. Undo ops themselves carry no mutation,
31
+ * so they never counted — but the ORIGINAL op they undo did, which
32
+ * taught the menu to promote exactly the acts people keep taking back.
33
+ * An undo always lands after its target, so a target inside the window
34
+ * has its undo inside it too.
35
+ */
36
+ const retracted = new Set();
37
+ for (const op of tail)
38
+ if (op.undoes)
39
+ retracted.add(op.undoes);
40
+ const last = ops[ops.length - 1].seq;
41
+ for (const op of tail) {
42
+ if (!op.mutation)
43
+ continue;
44
+ if (retracted.has(op.id))
45
+ continue;
46
+ const weight = Math.pow(0.5, (last - op.seq) / HALF_LIFE);
47
+ weights.set(op.mutation.name, (weights.get(op.mutation.name) ?? 0) + weight);
48
+ }
49
+ return weights;
50
+ }
51
+ /**
52
+ * A bounded score boost from decayed use. Monotonic in use, capped at
53
+ * CEILING so history shuffles a band and never jumps one — a much-used act
54
+ * still ranks below every repair and above no destructive tail.
55
+ */
56
+ export function usageBoost(weight) {
57
+ return CEILING * (weight / (weight + 1));
58
+ }
59
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,GAAG,GAAG,CAAC;AACnB,8DAA8D;AAC9D,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,+EAA+E;AAC/E,MAAM,OAAO,GAAG,CAAC,CAAC;AAElB,+DAA+D;AAC/D,MAAM,UAAU,YAAY,CAAC,GAAyB;IACpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACrC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAChC;;;;;;OAMG;IACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,IAAI;QAAE,IAAI,EAAE,CAAC,MAAM;YAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,GAAG,CAAC;IACtC,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,EAAE,CAAC,QAAQ;YAAE,SAAS;QAC3B,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAAE,SAAS;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@graview/tools",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./cli": {
13
+ "types": "./dist/cli.d.ts",
14
+ "default": "./dist/cli.js"
15
+ }
16
+ },
17
+ "dependencies": {
18
+ "@graview/core": "0.1.0",
19
+ "@graview/ship": "0.1.0"
20
+ },
21
+ "devDependencies": {
22
+ "zod": "^4.4.3"
23
+ },
24
+ "description": "Derived affordances and the agent tool surface, generated from the same declarations; graview mcp and graview apply host it against a real store.",
25
+ "keywords": [
26
+ "graview",
27
+ "context-graph",
28
+ "typed-graph",
29
+ "interface",
30
+ "declarative",
31
+ "agents",
32
+ "llm",
33
+ "tool-calling",
34
+ "mcp",
35
+ "affordances"
36
+ ],
37
+ "files": [
38
+ "dist",
39
+ "README.md"
40
+ ],
41
+ "sideEffects": false,
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/en-dash-consulting/graview.git",
45
+ "directory": "packages/tools"
46
+ },
47
+ "publishConfig": {
48
+ "access": "public"
49
+ },
50
+ "license": "Elastic-2.0",
51
+ "homepage": "https://graview.dev/docs/packages/tools.html",
52
+ "bugs": {
53
+ "url": "https://github.com/en-dash-consulting/graview/issues"
54
+ },
55
+ "engines": {
56
+ "node": ">=22"
57
+ },
58
+ "scripts": {
59
+ "build": "tsc -b"
60
+ }
61
+ }