@graview/primitives 0.1.18 → 0.1.19

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 (178) hide show
  1. package/dist/app-bar.d.ts +7 -0
  2. package/dist/app-bar.d.ts.map +1 -1
  3. package/dist/app-bar.js +10 -5
  4. package/dist/app-bar.js.map +1 -1
  5. package/dist/arrange-bar.d.ts +1 -1
  6. package/dist/arrange-bar.d.ts.map +1 -1
  7. package/dist/arrange-bar.js +48 -16
  8. package/dist/arrange-bar.js.map +1 -1
  9. package/dist/bar-panes.d.ts +3 -1
  10. package/dist/bar-panes.d.ts.map +1 -1
  11. package/dist/bar-panes.js +12 -5
  12. package/dist/bar-panes.js.map +1 -1
  13. package/dist/chat.d.ts +68 -30
  14. package/dist/chat.d.ts.map +1 -1
  15. package/dist/chat.js +205 -222
  16. package/dist/chat.js.map +1 -1
  17. package/dist/declared-lens-doors.d.ts +18 -0
  18. package/dist/declared-lens-doors.d.ts.map +1 -1
  19. package/dist/declared-lens-doors.js +25 -3
  20. package/dist/declared-lens-doors.js.map +1 -1
  21. package/dist/declared-lenses.d.ts.map +1 -1
  22. package/dist/declared-lenses.js +4 -7
  23. package/dist/declared-lenses.js.map +1 -1
  24. package/dist/draft-door.d.ts +3 -0
  25. package/dist/draft-door.d.ts.map +1 -0
  26. package/dist/draft-door.js +22 -0
  27. package/dist/draft-door.js.map +1 -0
  28. package/dist/draft-frame.d.ts +25 -0
  29. package/dist/draft-frame.d.ts.map +1 -0
  30. package/dist/draft-frame.js +69 -0
  31. package/dist/draft-frame.js.map +1 -0
  32. package/dist/editable.d.ts +4 -1
  33. package/dist/editable.d.ts.map +1 -1
  34. package/dist/editable.js +9 -8
  35. package/dist/editable.js.map +1 -1
  36. package/dist/find.d.ts.map +1 -1
  37. package/dist/find.js +23 -5
  38. package/dist/find.js.map +1 -1
  39. package/dist/frame.d.ts +5 -4
  40. package/dist/frame.d.ts.map +1 -1
  41. package/dist/frame.js +5 -4
  42. package/dist/frame.js.map +1 -1
  43. package/dist/index.d.ts +12 -6
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +12 -5
  46. package/dist/index.js.map +1 -1
  47. package/dist/lens/board.d.ts.map +1 -1
  48. package/dist/lens/board.js +7 -3
  49. package/dist/lens/board.js.map +1 -1
  50. package/dist/lens/calendar-options.d.ts +8 -1
  51. package/dist/lens/calendar-options.d.ts.map +1 -1
  52. package/dist/lens/calendar-options.js +5 -0
  53. package/dist/lens/calendar-options.js.map +1 -1
  54. package/dist/lens/calendar-view.d.ts.map +1 -1
  55. package/dist/lens/calendar-view.js +2 -2
  56. package/dist/lens/calendar-view.js.map +1 -1
  57. package/dist/lens/columns.d.ts.map +1 -1
  58. package/dist/lens/columns.js +2 -2
  59. package/dist/lens/columns.js.map +1 -1
  60. package/dist/lens/coverage.d.ts.map +1 -1
  61. package/dist/lens/coverage.js +14 -10
  62. package/dist/lens/coverage.js.map +1 -1
  63. package/dist/lens/more.d.ts.map +1 -1
  64. package/dist/lens/more.js +2 -1
  65. package/dist/lens/more.js.map +1 -1
  66. package/dist/lens-keeping.d.ts +17 -0
  67. package/dist/lens-keeping.d.ts.map +1 -0
  68. package/dist/lens-keeping.js +127 -0
  69. package/dist/lens-keeping.js.map +1 -0
  70. package/dist/lines-key.d.ts +12 -0
  71. package/dist/lines-key.d.ts.map +1 -0
  72. package/dist/lines-key.js +74 -0
  73. package/dist/lines-key.js.map +1 -0
  74. package/dist/notice-place.d.ts +3 -3
  75. package/dist/notice-place.d.ts.map +1 -1
  76. package/dist/notice-place.js +4 -4
  77. package/dist/notice-place.js.map +1 -1
  78. package/dist/notices.d.ts +6 -0
  79. package/dist/notices.d.ts.map +1 -1
  80. package/dist/notices.js +7 -1
  81. package/dist/notices.js.map +1 -1
  82. package/dist/pages.d.ts +9 -5
  83. package/dist/pages.d.ts.map +1 -1
  84. package/dist/pages.js +9 -5
  85. package/dist/pages.js.map +1 -1
  86. package/dist/places.d.ts +0 -24
  87. package/dist/places.d.ts.map +1 -1
  88. package/dist/places.js +5 -1
  89. package/dist/places.js.map +1 -1
  90. package/dist/profile.d.ts +7 -1
  91. package/dist/profile.d.ts.map +1 -1
  92. package/dist/profile.js +2 -2
  93. package/dist/profile.js.map +1 -1
  94. package/dist/quick-relations.d.ts.map +1 -1
  95. package/dist/quick-relations.js +2 -2
  96. package/dist/quick-relations.js.map +1 -1
  97. package/dist/reader-lenses.d.ts +21 -0
  98. package/dist/reader-lenses.d.ts.map +1 -0
  99. package/dist/reader-lenses.js +27 -0
  100. package/dist/reader-lenses.js.map +1 -0
  101. package/dist/relation-key.d.ts +2 -0
  102. package/dist/relation-key.d.ts.map +1 -1
  103. package/dist/relation-key.js +13 -23
  104. package/dist/relation-key.js.map +1 -1
  105. package/dist/scene-bar.d.ts +29 -0
  106. package/dist/scene-bar.d.ts.map +1 -0
  107. package/dist/scene-bar.js +72 -0
  108. package/dist/scene-bar.js.map +1 -0
  109. package/dist/scene-css.d.ts.map +1 -1
  110. package/dist/scene-css.js +525 -0
  111. package/dist/scene-css.js.map +1 -1
  112. package/dist/scene.d.ts +5 -2
  113. package/dist/scene.d.ts.map +1 -1
  114. package/dist/scene.js +5 -1
  115. package/dist/scene.js.map +1 -1
  116. package/dist/seat-field.d.ts +58 -0
  117. package/dist/seat-field.d.ts.map +1 -0
  118. package/dist/seat-field.js +144 -0
  119. package/dist/seat-field.js.map +1 -0
  120. package/dist/seat-move.d.ts +32 -0
  121. package/dist/seat-move.d.ts.map +1 -0
  122. package/dist/seat-move.js +56 -0
  123. package/dist/seat-move.js.map +1 -0
  124. package/dist/seat-panel.d.ts +37 -0
  125. package/dist/seat-panel.d.ts.map +1 -0
  126. package/dist/seat-panel.js +131 -0
  127. package/dist/seat-panel.js.map +1 -0
  128. package/dist/seat.d.ts +20 -58
  129. package/dist/seat.d.ts.map +1 -1
  130. package/dist/seat.js +28 -45
  131. package/dist/seat.js.map +1 -1
  132. package/dist/seeding.d.ts.map +1 -1
  133. package/dist/seeding.js +4 -4
  134. package/dist/seeding.js.map +1 -1
  135. package/dist/shell.d.ts +25 -21
  136. package/dist/shell.d.ts.map +1 -1
  137. package/dist/shell.js +46 -116
  138. package/dist/shell.js.map +1 -1
  139. package/dist/spec-views.d.ts.map +1 -1
  140. package/dist/spec-views.js +3 -2
  141. package/dist/spec-views.js.map +1 -1
  142. package/dist/subject.d.ts +4 -2
  143. package/dist/subject.d.ts.map +1 -1
  144. package/dist/subject.js +12 -8
  145. package/dist/subject.js.map +1 -1
  146. package/dist/theme.d.ts.map +1 -1
  147. package/dist/theme.js +6 -523
  148. package/dist/theme.js.map +1 -1
  149. package/dist/workbench/activity.d.ts.map +1 -1
  150. package/dist/workbench/activity.js +9 -9
  151. package/dist/workbench/activity.js.map +1 -1
  152. package/dist/workbench/back-out.js +3 -3
  153. package/dist/workbench/back-out.js.map +1 -1
  154. package/dist/workbench/inspector.d.ts +11 -6
  155. package/dist/workbench/inspector.d.ts.map +1 -1
  156. package/dist/workbench/inspector.js +42 -56
  157. package/dist/workbench/inspector.js.map +1 -1
  158. package/dist/workbench/trail.d.ts +10 -17
  159. package/dist/workbench/trail.d.ts.map +1 -1
  160. package/dist/workbench/trail.js +29 -41
  161. package/dist/workbench/trail.js.map +1 -1
  162. package/package.json +7 -7
  163. package/dist/companion.d.ts +0 -58
  164. package/dist/companion.d.ts.map +0 -1
  165. package/dist/companion.js +0 -463
  166. package/dist/companion.js.map +0 -1
  167. package/dist/ladder.d.ts +0 -2
  168. package/dist/ladder.d.ts.map +0 -1
  169. package/dist/ladder.js +0 -48
  170. package/dist/ladder.js.map +0 -1
  171. package/dist/popover.d.ts +0 -21
  172. package/dist/popover.d.ts.map +0 -1
  173. package/dist/popover.js +0 -28
  174. package/dist/popover.js.map +0 -1
  175. package/dist/wordmark.d.ts +0 -15
  176. package/dist/wordmark.d.ts.map +0 -1
  177. package/dist/wordmark.js +0 -50
  178. package/dist/wordmark.js.map +0 -1
package/dist/chat.js CHANGED
@@ -1,96 +1,128 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useAttention } from "@graview/react/drawing";
3
- import { POPOVER_STYLE, useGraview, usePopover, useSelection } from "@graview/react/provider";
3
+ import { useGraview, useSeatTalkState, useSelection } from "@graview/react/provider";
4
4
  import { kindCardId, withFocus, withOverview, withSelection } from "@graview/layout/view";
5
- import { configuredResponder, createToolRuntime, describeIntelligence, describeProposal, loadPins, resolveProposal, stillNeeded, } from "@graview/tools";
5
+ import { completionFor, createToolRuntime, describeProposal, loadPins, resolveProposal, seatResponder, stillNeeded, } from "@graview/tools";
6
6
  import { useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
7
+ import { useLensKeeping } from "./lens-keeping.js";
8
+ import { useSceneGo } from "./seat-move.js";
7
9
  import { useSubject } from "./subject.js";
8
- import { describeSource, proposalKey, SeatComposer, SeatHeader, SeatSettings, SeatThread, Settled, useSeatConversation } from "./seat.js";
10
+ import { proposalKey, SeatComposer, SeatThread, Settled, useSeatConversation } from "./seat.js";
9
11
  import { AnswerArgs } from "./workbench/index.js";
10
- export function ChatPanel({ inside = false, offer, respond, onCall, onPick, testId = "chat", }) {
11
- const { store, views, principal, setView, seatWho, noteSeat, session, intelligence: config, registerHostAnswers } = useGraview();
12
+ /** An ask for a way of seeing: a board, a calendar, a timeline, who covers what, a list of … */
13
+ const DRAW = /\b(?:board|kanban|timeline|calendar|gantt|who covers|covers what|coverage|floor plan|layout|draw|chart|(?:list|table) of|as an? (?:list|table|board|calendar|timeline|grid))\b/i;
14
+ /** An ask that changes the view on screen: group by, sort by, only, call it, as a … */
15
+ const REFINE = /\b(?:group(?:ed)? by|split by|sort(?:ed)? by|order(?:ed)? by|only|call it|name it|as an? (?:board|kanban|calendar|timeline|list|table|cards|rows|grid|plan|layout)|show all|all of them|clear the filter|no filter)\b/i;
16
+ const lowerFirst = (text) => text.charAt(0).toLowerCase() + text.slice(1);
17
+ /** What a move is called in the sentence that says it: a link that goes there again. */
18
+ const nameOfMove = (move) => (move.to === "record" ? move.label : move.to === "problems" ? "problems" : move.title);
19
+ /** The seat's words with the names its moves went to made links, each the first time it is said. */
20
+ function linked(said, moves, link) {
21
+ const parts = [];
22
+ let rest = said;
23
+ for (const move of moves) {
24
+ const name = nameOfMove(move);
25
+ const at = name ? rest.toLowerCase().indexOf(name.toLowerCase()) : -1;
26
+ if (at < 0)
27
+ continue;
28
+ parts.push(rest.slice(0, at), link(move, rest.slice(at, at + name.length)));
29
+ rest = rest.slice(at + name.length);
30
+ }
31
+ return parts.length === 0 ? said : [...parts, rest];
32
+ }
33
+ export function ChatPanel({ respond, onCall, onPick, testId = "chat", empty, shared = false, composer = true, onMove, place, onDraft, }) {
34
+ const { store, views, view, principal, setView, seatWho, noteSeat, session, ai, seatTalk, brand } = useGraview();
35
+ const sceneGo = useSceneGo();
36
+ const go = onMove ?? sceneGo;
37
+ const { takeBack } = useLensKeeping(go);
12
38
  const { selection } = useSelection();
13
39
  const subject = useSubject();
14
40
  /* The chat writes as the tab's seat when one has sat down, so the two are one robot — in this tab's own session. */
15
41
  const who = seatWho ?? "chat";
16
42
  const author = useMemo(() => ({ kind: "agent", id: who, session }), [who, session]);
17
43
  /*
18
- * On a bar of its own it is a popover of the family (FR-77); inside the
19
- * rail there is nothing to open: the rail is what opens.
20
- */
21
- const popover = usePopover("chat", { popover: !inside });
22
- const open = inside || popover.open;
23
- const [settings, setSettings] = useState(false);
24
- /*
25
- * THE LADDER IS A SETTING — the provider's, chosen in the profile pane
26
- * beside text size and scheme, and read here. There is no gear on the
27
- * chat: the profile is on the same bar. "Let a model read it" shows the
28
- * same setting in place. A host that passes `respond` has decided.
44
+ * WHAT A CHANGE CAME THROUGH: a proposal a model made is applied with the
45
+ * model's `via`, so the log keeps which provider proposed it — the reader
46
+ * is shown only the act.
29
47
  */
30
- const [warmth, setWarmth] = useState(null);
31
- useEffect(() => setWarmth(null), [config]);
32
- // A host that passes `respond` has decided which rung answers; the profile's ladder steps aside.
33
- useEffect(() => {
34
- registerHostAnswers(respond !== undefined);
35
- return () => registerHostAnswers(false);
36
- }, [respond, registerHostAnswers]);
48
+ const viaNow = useRef(undefined);
37
49
  const runtime = useMemo(() => createToolRuntime(store, {
38
50
  author: {
39
51
  ...author,
40
52
  ...(principal.roles ? { roles: principal.roles } : {}),
41
53
  },
42
- // The person's pins reach this seat too — read per call, so a pin
43
- // toggled in the menu reorders the chat's tool list without a
44
- // rebuild. No surface may disagree with another about the acts.
54
+ // The person's pins reach this seat too — read per call, so no surface disagrees about the acts.
45
55
  derive: () => ({ pins: loadPins() }),
46
56
  places: () => views.places(),
57
+ via: () => viaNow.current,
47
58
  }), [store, principal, author, views]);
48
- const statusToken = useRef(0);
49
- /*
50
- * The setting as it is NOW, for a turn that started before it changed:
51
- * the answer says which rung made it and which the person has moved to,
52
- * rather than finishing silently on a rung they left.
53
- */
54
- const configNow = useRef(config);
55
- configNow.current = config;
56
- const answer = useMemo(() => {
57
- // A replaced responder must not keep narrating: only the current
58
- // build's status reaches the header.
59
- const token = ++statusToken.current;
60
- return (respond ??
61
- configuredResponder(config, {
62
- onStatus: (status) => {
63
- if (token === statusToken.current)
64
- setWarmth(status);
65
- },
66
- current: () => configNow.current,
67
- }));
68
- }, [respond, config]);
59
+ /* THE GRAPH FIRST, THE HOST'S MODEL AFTER IT: a host that passes `respond` answers in its place. */
60
+ const answer = useMemo(() => respond ?? seatResponder(ai), [respond, ai]);
69
61
  useEffect(() => (onCall ? runtime.onCall(onCall) : undefined), [runtime, onCall]);
70
62
  // What the conversation looked at reaches the picture, like any seat's reads.
71
63
  useAttention(runtime);
72
64
  /*
73
- * NO BUBBLE, NO ANCHOR. The panel used to be drawn beside the robot's
74
- * body while it followed the pointer; the seat has no body now and the
75
- * companion on the frame is where it speaks.
65
+ * THE APP AS A DRAFT READS IT: its kinds and who may see what. A drawn
66
+ * view binds only what this seat may see (`draftSight`).
67
+ */
68
+ const seatApp = useMemo(() => ({ name: brand?.name ?? "app", schema: store.schema, ...(store.policy ? { policy: store.policy } : {}) }), [store, brand]);
69
+ /*
70
+ * ASKED FOR A WAY OF SEEING, THE SEAT DRAWS IT (`@graview/tools/draft`,
71
+ * fetched with the first such ask): a template with no model, the app's
72
+ * model for what no template reads. With a view on screen, an ask that
73
+ * changes it ("group by status", "only this month") changes that one.
74
+ * Drawn, it stands in place of the picture; an ask that cannot be drawn
75
+ * says why in one line and the last good view stays.
76
76
  */
77
+ const drawIfAsked = async (text) => {
78
+ const current = seatTalk.get().draft;
79
+ const refining = current !== null && REFINE.test(text);
80
+ if (!refining && !DRAW.test(text))
81
+ return undefined;
82
+ const engine = await import("@graview/tools/draft");
83
+ const complete = respond ? undefined : completionFor(ai);
84
+ const options = { app: seatApp, sight: engine.draftSight(seatApp, seatAs), ...(complete ? { complete } : {}), ...(current ? { lastGood: current } : {}) };
85
+ const result = refining && current ? await engine.refineDraft(current, text, options) : await engine.draftView(text, options);
86
+ if (engine.isDraftFailure(result)) {
87
+ const kept = result.lastGood ?? current;
88
+ if (kept) {
89
+ seatTalk.setDraft(kept, result.failed);
90
+ onDraft?.();
91
+ return { say: `${result.failed} The last view stays.`, proposals: [], grounded: true };
92
+ }
93
+ return { say: result.failed, proposals: [], grounded: true };
94
+ }
95
+ seatTalk.setDraft(result, null);
96
+ onDraft?.();
97
+ return { say: `Here is ${lowerFirst(result.said)} Ask to change it, or keep it as a lens.`, proposals: [], grounded: true };
98
+ };
77
99
  const conversation = useSeatConversation({
78
- /*
79
- * "THIS" IS THE COMPANION'S SUBJECT: the selection, else what the
80
- * pointer has settled on, else where you are. One answer for the whole
81
- * frame, so the panel and the header above it cannot disagree.
82
- */
83
- answer: (text, context) => answer(store, text, {
84
- ...context,
85
- selection: subject.id ? [subject.id] : selection,
86
- principal: { ...author, ...(principal.roles ? { roles: principal.roles } : {}) },
87
- }),
100
+ ...(shared ? { talk: seatTalk } : {}),
101
+ /* "This" is the seat's subject: the selection, else what the pointer settled on, else where you are. */
102
+ answer: async (text, context) => {
103
+ const drawn = await drawIfAsked(text);
104
+ if (drawn)
105
+ return drawn;
106
+ /* The places this seat may go to, and where it stands: what "go to The week" and "here" are read against. */
107
+ const { placesFromViews } = await import("@graview/tools/go");
108
+ const here = place ?? view.within?.["view"];
109
+ const arranged = views.arrangement?.();
110
+ const today = store.today();
111
+ return answer(store, text, {
112
+ ...context,
113
+ selection: subject.id ? [subject.id] : selection,
114
+ principal: { ...author, ...(principal.roles ? { roles: principal.roles } : {}) },
115
+ // Arranged as the bar arranges them, the scene called what the bar calls it.
116
+ places: placesFromViews(store.schema, views.places(), arranged ? { pages: arranged } : {}),
117
+ ...(here ? { place: here } : {}),
118
+ ...(today ? { today } : {}),
119
+ });
120
+ },
88
121
  onReply: (reply) => {
89
- /*
90
- * SAID FROM THE BODY TOO. The reply — prose, the graph's answer, or a
91
- * typed answer with the rung's own honesty sentence — is the robot's
92
- * bubble; a question for the person stands it on the node's doorstep.
93
- */
122
+ /* WHERE THE ANSWER TAKES THE APP: the first move is made, and said ("Went to The week."). */
123
+ const move = reply.moves?.[0];
124
+ if (move)
125
+ go(move);
94
126
  const asked = reply.questions?.[0];
95
127
  if (asked) {
96
128
  noteSeat({ type: "asking", author, where: asked.nodeId ?? null, say: `${asked.nodeLabel ? `${asked.nodeLabel}: ` : ""}${asked.asks}`, confidence: asked.confidence });
@@ -108,11 +140,22 @@ export function ChatPanel({ inside = false, offer, respond, onCall, onPick, test
108
140
  },
109
141
  });
110
142
  const { outcomes, settle } = conversation;
143
+ /*
144
+ * ASKED FROM OUTSIDE: the seat's field, a suggestion, Find's "Ask:" row.
145
+ * They put the question on the app's conversation; the panel drawing it
146
+ * sends it, once.
147
+ */
148
+ const talk = useSeatTalkState(seatTalk);
149
+ useEffect(() => {
150
+ if (!shared || talk.pending === null || conversation.busy)
151
+ return;
152
+ const question = seatTalk.takePending();
153
+ if (question)
154
+ void conversation.send(question);
155
+ }, [shared, talk.pending, conversation.busy]);
111
156
  /*
112
157
  * ASKED AS THE SEAT THAT WILL APPLY IT — the agent, with the person's
113
- * roles — which is what the runtime applies as. Asked as the person, a
114
- * proposal the agent's declared `may` excludes was offered and refused on
115
- * press.
158
+ * roles — which is what the runtime applies as.
116
159
  */
117
160
  const seatAs = { ...author, ...(principal.roles ? { roles: principal.roles } : {}) };
118
161
  const permitted = (proposal) => store.permits({ name: proposal.mutation, args: { ...proposal.args } }, seatAs).ok;
@@ -122,41 +165,22 @@ export function ChatPanel({ inside = false, offer, respond, onCall, onPick, test
122
165
  };
123
166
  /*
124
167
  * A PROPOSAL THE ACT'S OWN ARGUMENTS ARE NOT SATISFIED BY IS AN ASK, NOT
125
- * A REFUSAL.
126
- *
127
- * The seat already refuses to OFFER what the policy withholds, for the
128
- * reason written above the proposal list: the responder proposes from the
129
- * graph and knows nothing of the policy. It knows just as little about
130
- * what an act NEEDS. A model told "add a shift called soup kitchen"
131
- * answers `add-shift` with a label and none of the day, the place or the
132
- * hours — and pressing it handed the person the validator talking to
133
- * itself, six clauses of "expected string, received undefined".
134
- *
135
- * The act was never impossible, only under-specified, and this framework
136
- * already knows what to do with an under-specified act: a person pressing
137
- * "Add a shift" from the menu is asked for each missing argument in turn,
138
- * with the graph's own candidates offered for anything that names a node.
139
- * The seat's proposals go the same way now — the same component, the same
140
- * questions, the model's own answers already filled in.
168
+ * A REFUSAL: the person is asked for each missing argument in turn, with
169
+ * the graph's own candidates offered for anything that names a node —
170
+ * the same component the context menu raises.
141
171
  */
142
172
  const [answering, setAnswering] = useState(null);
143
173
  const apply = async (offered, key) => {
144
- /*
145
- * Resolved AT THE PRESS, not when it was offered: a sowing proposed in
146
- * the same breath as its plot names a plot that exists only once the
147
- * first press has landed.
148
- */
174
+ // Resolved at the press, not when offered: a name made by the press before it exists only now.
149
175
  const proposal = resolveProposal(store, offered);
150
176
  const said = describeProposal(store, proposal);
151
- /*
152
- * The runtime RESOLVES refusals rather than throwing them — a policy
153
- * denial, a validation failure — so the flag must be read. Skipping it
154
- * had the chat saying "Done" over a change the store had refused, which
155
- * is the one lie a seat must never tell.
156
- */
157
- // By the tool the act is listed as: an act named like a read tool is still the act.
177
+ // The runtime resolves refusals rather than throwing them, so the flag must be read: never "Done" over a refusal.
158
178
  const tool = runtime.definitions.find((definition) => definition.act === proposal.mutation)?.name ?? proposal.mutation;
159
- const result = await runtime.call(tool, { ...proposal.args });
179
+ // The turn that offered it says whether a model did: its `via` goes into the log with the act.
180
+ viaNow.current = conversation.turns[Number(key.split(":")[0])]?.via;
181
+ const result = await runtime.call(tool, { ...proposal.args }).finally(() => {
182
+ viaNow.current = undefined;
183
+ });
160
184
  if (!result.ok) {
161
185
  settle(key, { state: "refused", error: result.error });
162
186
  noteSeat({ type: "refused", author, where: gateOf(proposal.mutation), say: result.error });
@@ -165,12 +189,7 @@ export function ChatPanel({ inside = false, offer, respond, onCall, onPick, test
165
189
  settle(key, { state: "applied", said });
166
190
  return true;
167
191
  };
168
- /*
169
- * ONE REQUEST, ONE PRESS. "Add a plot and put a sunflower in it" is two
170
- * proposals and one intention; applied in order, each resolved after the
171
- * one before it has landed, stopping at the first that still needs an
172
- * answer (asked, as ever) or is refused.
173
- */
192
+ /* ONE REQUEST, ONE PRESS: a turn's proposals in order, stopping at the first that asks or is refused. */
174
193
  const applyAll = async (turn, proposals) => {
175
194
  for (const [at, proposal] of proposals.entries()) {
176
195
  const key = proposalKey(turn, at);
@@ -186,10 +205,9 @@ export function ChatPanel({ inside = false, offer, respond, onCall, onPick, test
186
205
  }
187
206
  };
188
207
  /*
189
- * THE KEYBOARD OUTLIVES THE PROPOSAL IT PRESSED. Applied, a proposal's
190
- * button becomes a line saying it was done, and the element the keyboard
191
- * was on left the document for <body>. It goes on to the next proposal
192
- * still to press, else back to the words.
208
+ * THE KEYBOARD OUTLIVES THE PROPOSAL IT PRESSED: applied, its line
209
+ * becomes a line saying it was done, and the keyboard goes on to the
210
+ * next one still to press, else back to the words.
193
211
  */
194
212
  const panel = useRef(null);
195
213
  const kept = useRef(null);
@@ -199,133 +217,98 @@ export function ChatPanel({ inside = false, offer, respond, onCall, onPick, test
199
217
  return;
200
218
  kept.current = null;
201
219
  const next = panel.current?.querySelector(`[data-testid="${testId}-apply"]:not([disabled])`) ??
202
- panel.current?.querySelector(`[data-testid="${testId}-draft"]`);
220
+ panel.current?.querySelector(`[data-testid="${testId}-draft"]`) ??
221
+ panel.current?.closest("[data-testid='seat']")?.querySelector("[data-testid='seat-field']");
203
222
  next?.focus();
204
223
  });
205
224
  const offerOne = (turnIndex, at, proposal, key) => {
206
- /*
207
- * WITHHELD, NOT OFFERED — the same rule as the strip. The responder
208
- * proposes from the graph and knows nothing of the policy, so the seat
209
- * was handed "Add an item" with an apply button and refused on press.
210
- * The store's own verdict, asked as the person at the keyboard, decides
211
- * whether a proposal is a press or a struck line with the policy's
212
- * reason beside it.
213
- */
225
+ /* WITHHELD, NOT OFFERED: the store's own verdict decides whether a proposal is a press or a struck line with the reason. */
214
226
  const verdict = store.permits({ name: proposal.mutation, args: { ...proposal.args } }, seatAs);
215
227
  if (!verdict.ok) {
216
228
  return (_jsxs("span", { "data-testid": `${testId}-withheld`, style: { fontSize: "0.8125rem", color: "var(--graview-ink-muted)" }, children: [_jsx("s", { children: describeProposal(store, proposal) }), " \u2014 ", verdict.refusal.message] }));
217
229
  }
218
- // The same question asked of the ACT rather than of the policy: has the responder said what this needs?
219
230
  const owed = stillNeeded(store, proposal);
220
- /*
221
- * WAITING, NOT MISSING. A thing named by an earlier proposal in this
222
- * same reply — the plot it stakes out — is an answer that has not
223
- * landed yet, so the press waits for that one rather than asking again.
224
- */
231
+ /* WAITING, NOT MISSING: a thing an earlier proposal in this reply makes is an answer that has not landed yet. */
225
232
  const before = (conversation.turns[turnIndex]?.proposals ?? [])
226
233
  .slice(0, at)
227
234
  .filter((_, was) => outcomes.get(proposalKey(turnIndex, was))?.state !== "applied")
228
235
  .find((earlier) => owed.some((one) => one.kinds && typeof proposal.args[one.name] === "string" && earlier.args["label"] === proposal.args[one.name]));
229
- return (_jsxs("button", { type: "button", "data-testid": `${testId}-apply`, "data-graview-asks": owed.length > 0 ? owed.length : undefined, disabled: before !== undefined, onClick: () => (owed.length > 0 ? setAnswering({ proposal, open: owed, key }) : void apply(proposal, key)), title: before
230
- ? `After “${describeProposal(store, before)}”`
231
- : owed.length > 0
232
- ? `${proposal.why ?? "Apply this change"} — needs ${owed.map((one) => one.name).join(", ")}`
233
- : (proposal.why ?? "Apply this change"), style: { fontSize: "0.8125rem", textAlign: "start" }, children: [describeProposal(store, proposal), owed.length > 0 && !before ? " …" : ""] }));
236
+ const said = describeProposal(store, proposal);
237
+ /* ONE LINE, AND TWO WORDS: what it would do, "Do it", "Not now". The preview, the check and the undo are the act's own. */
238
+ return (_jsxs("span", { style: { display: "flex", flexWrap: "wrap", alignItems: "baseline", gap: "4px 10px" }, children: [_jsxs("span", { style: { fontSize: "0.875rem", color: "var(--graview-ink)" }, title: proposal.why, children: [said, owed.length > 0 && !before ? " …" : ""] }), _jsxs("span", { style: { display: "inline-flex", gap: 6 }, children: [_jsx("button", { type: "button", "data-testid": `${testId}-apply`, "data-graview-asks": owed.length > 0 ? owed.length : undefined, disabled: before !== undefined, "aria-label": `Do it: ${said}`, onClick: () => (owed.length > 0 ? setAnswering({ proposal, open: owed, key }) : void apply(proposal, key)), title: before ? `After “${describeProposal(store, before)}”` : owed.length > 0 ? `${said} — it asks for ${owed.length === 1 ? "one more thing" : `${owed.length} more things`}` : said, style: QUIET_BUTTON, children: "Do it" }), _jsx("button", { type: "button", "data-testid": `${testId}-decline`, "aria-label": `Not now: ${said}`, onClick: () => settle(key, { state: "declined", said }), style: { ...QUIET_BUTTON, color: "var(--graview-ink-muted)" }, children: "Not now" })] })] }));
234
239
  };
235
- return (_jsxs("div", { style: inside
236
- ? /*
237
- * ONE LAYER FEWER IN THE RAIL. The wrapper exists to anchor a
238
- * panel that hangs off a pill; in the rail there is no pill and
239
- * nothing hangs, and a second box between the column and the
240
- * conversation is a second chance for the two to disagree about
241
- * how tall it is. It passes its own row straight through.
242
- */
243
- { display: "grid", gridTemplateRows: "min-content", gridTemplateColumns: "minmax(0, 1fr)", minWidth: 0, minHeight: "min-content" }
244
- : { position: "relative" }, children: [inside ? null : (_jsxs("button", { type: "button", "data-testid": testId, ...popover.trigger, onClick: popover.toggle, title: "Talk to the seat: ask about anything here, or say a change in words", style: { display: "inline-flex", alignItems: "center", gap: 6, fontSize: "0.875rem" }, children: [_jsx("span", { "aria-hidden": "true", children: "\u25C6" }), "Ask"] })), open ? (_jsxs("div", { onFocus: (event) => {
245
- kept.current = event.target;
246
- }, "data-testid": `${testId}-panel`, ...(inside ? {} : { ...popover.pane, "data-graview-offstage": "" }), ref: (element) => {
247
- panel.current = element;
248
- if (!inside)
249
- popover.pane.ref(element);
250
- }, "data-graview-anchor": inside ? "rail" : "bar", style: {
251
- ...(inside
252
- ? {
253
- position: "static",
254
- width: "auto",
255
- /*
256
- * SIZED BY WHAT IS IN IT, in the rail. The log carries its
257
- * own floor and ceiling, scrolling; everything else is as
258
- * tall as it needs to be, and the rail's own column
259
- * scrolls. A fixed box painted the field and the chips
260
- * over the relation key below.
261
- */
262
- gridTemplateRows: "auto auto auto auto",
263
- minHeight: "min-content",
264
- }
265
- : {
266
- ...POPOVER_STYLE,
267
- width: 320,
268
- borderRadius: 10,
269
- border: "1px solid var(--graview-edge)",
270
- background: "var(--graview-float)",
271
- boxShadow: "var(--graview-lift-high)",
272
- }),
273
- display: "grid",
274
- /*
275
- * ONE COLUMN THAT TAKES THE PANE'S WIDTH, no more. A grid column
276
- * sizes to its content by default, and an input's own idea of
277
- * its width is about 180px: in a pane the rail's share of a
278
- * 1000px scene made 220px wide, the conversation ran fifty
279
- * pixels past the edge and was clipped mid-word.
280
- */
281
- gridTemplateColumns: "minmax(0, 1fr)",
282
- minWidth: 0,
283
- ...(inside ? {} : { gridTemplateRows: "auto 1fr auto" }),
284
- /*
285
- * CLIPPED, EVEN IN THE RAIL: across engines, a squeezed box
286
- * painting its field over the section below is the ugly
287
- * failure; clipped, the worst case is a section that scrolls in
288
- * a rail that already scrolls.
289
- */
290
- overflow: "hidden",
291
- }, children: [inside ? null : (_jsx(SeatHeader, { label: "Seat", testId: testId, source: respond ? "app-provided" : describeSource(describeIntelligence(config), warmth), ...(warmth?.state === "failed" && warmth.detail ? { sourceTitle: warmth.detail } : {}) })), settings && !respond ? (_jsx(SeatSettings, { testId: testId, onDone: () => setSettings(false) })) : (_jsx(SeatThread, { turns: conversation.turns, outcomes: outcomes, busy: conversation.busy, testId: testId, minHeight: inside ? 0 : 120, empty: inside ? null : (_jsxs(_Fragment, { children: ["Ask what's wrong, ask about anything by name, or say a change in its own words.", selection.length > 0 ? " “This” means what you have selected." : ""] })), renderProposal: (proposal, { key, turn, at }) => offerOne(turn, at, proposal, key), ready: (proposal) => permitted(proposal), onApplyAll: (turn, proposals) => void applyAll(turn, proposals), ...(respond || config.source !== "graph" ? {} : { onChooseModel: () => setSettings(true) }), renderAfter: (turn, index) => [
292
- /*
293
- * WHAT THE WORDS FOUND, each a press that goes there — the
294
- * Find box's strip, answered in the thread.
295
- */
296
- ...(turn.picks?.length
297
- ? [
298
- _jsx("div", { "data-testid": `${testId}-picks`, style: { display: "flex", flexWrap: "wrap", gap: 4, justifySelf: "start" }, children: turn.picks.map((hit) => (_jsx("button", { type: "button", "data-testid": `${testId}-pick`, "data-chat-pick": hit.id, title: hit.why.field === "label" ? `Go to ${hit.label}` : `${hit.why.reading}: ${hit.why.fragment}`, onClick: () => onPick ? onPick(hit.id) : setView((stop) => withSelection(withFocus(withOverview(stop, false), hit.id), [hit.id])), style: { fontSize: "0.8125rem", minHeight: 28 }, children: hit.label }, hit.id))) }, `${index}:picks`),
299
- ]
300
- : []),
301
- ...(turn.questions ?? []).map((asked) => {
302
- const key = `${index}:q:${asked.id}`;
303
- const outcome = outcomes.get(key);
304
- /*
305
- * A QUESTION STANDS AT ITS NODE. The seat was not sure
306
- * enough to propose — a split, or a shrug — so it asks,
307
- * naming the node, with each option as a press that lands
308
- * through the same path a proposal does.
309
- */
310
- return (_jsxs("div", { "data-testid": `${testId}-question`, "data-chat-question-node": asked.nodeId, style: { display: "grid", gap: 4, justifySelf: "start", maxWidth: 260 }, children: [_jsxs("span", { style: { fontSize: "0.8125rem", color: "var(--graview-ink-muted)" }, children: [asked.nodeLabel ? _jsxs("strong", { children: [asked.nodeLabel, ": "] }) : null, asked.asks, asked.because === "split" ? " (it could be either)" : " (it was not sure)"] }), _jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 4 }, children: asked.options.map((option) => (_jsxs("button", { type: "button", "data-testid": `${testId}-option`, disabled: !option.call, title: option.call ? option.call.why ?? "Take this answer" : "Nothing to do for this answer", onClick: () => (option.call ? void apply(option.call, key) : undefined), style: { fontSize: "0.8125rem" }, children: [option.value, " ", Math.round(option.probability * 100), "%"] }, option.value))) }), outcome ? _jsx(Settled, { outcome: outcome, testId: testId }) : null] }, asked.id));
311
- }),
312
- ] })), answering ? (_jsx("div", { "data-testid": `${testId}-asking`, style: { padding: "0 8px 6px" }, children: _jsx(AnswerArgs, { affordance: {
313
- id: `chat:${answering.proposal.mutation}`,
314
- mutation: answering.proposal.mutation,
315
- label: describeProposal(store, answering.proposal),
316
- // What it is, honestly: a responder's suggestion.
317
- provider: "llm",
318
- why: answering.proposal.why ?? "The seat suggested this.",
319
- nodeIds: [],
320
- args: answering.proposal.args,
321
- open: answering.open,
322
- score: 0,
323
- }, onApply: (args) => {
324
- const proposal = { ...answering.proposal, args: { ...answering.proposal.args, ...args } };
325
- setAnswering(null);
326
- void apply(proposal, answering.key);
327
- }, onCancel: () => setAnswering(null) }) })) : null, (offer ?? []).length > 0 && conversation.turns.length === 0 ? (
328
- /* Suggestions are a quiet way in, not choices the reader must weigh: words to press, not capsules (FR-117). */
329
- _jsx("div", { "data-testid": `${testId}-offers`, style: { display: "flex", flexWrap: "wrap", gap: "0 12px", padding: "0 8px 6px" }, children: (offer ?? []).slice(0, 3).map((question) => (_jsx("button", { type: "button", "data-testid": `${testId}-offer`, disabled: conversation.busy, onClick: () => void conversation.send(question), style: { font: "inherit", fontSize: "0.8125rem", minHeight: 24, padding: "0 2px", border: 0, borderRadius: 4, background: "transparent", boxShadow: "none", color: "var(--graview-accent)", textDecoration: "underline", textUnderlineOffset: 3, cursor: "pointer" }, children: question }, question))) })) : null, _jsx(SeatComposer, { busy: conversation.busy, placeholder: inside && selection.length > 0 ? "Ask about this…" : "Ask, or say a change…", ariaLabel: "Message the seat", testId: testId, onSend: (text) => void conversation.send(text) }), inside ? (_jsx(SeatHeader, { foot: true, label: "Seat", testId: testId, source: respond ? "app-provided" : describeSource(describeIntelligence(config), warmth), ...(warmth?.state === "failed" && warmth.detail ? { sourceTitle: warmth.detail } : {}), ...(!respond ? { settings, onSettings: () => setSettings((was) => !was) } : {}) })) : null] })) : null] }));
240
+ return (_jsxs("div", { "data-testid": `${testId}-panel`, ref: panel, onFocus: (event) => {
241
+ kept.current = event.target;
242
+ }, style: { display: "grid", gridTemplateColumns: "minmax(0, 1fr)", alignContent: "start", gap: 8, minWidth: 0, minHeight: 0 }, children: [conversation.turns.length === 0 ? empty ?? null : null, _jsx(SeatThread, { turns: conversation.turns, outcomes: outcomes, busy: conversation.busy, testId: testId, minHeight: 0, maxHeight: "none", empty: empty !== undefined ? null : (_jsxs(_Fragment, { children: ["Ask what's wrong, ask about anything by name, or say a change in its own words.", selection.length > 0 ? " “This” means what you have selected." : ""] })), renderProposal: (proposal, { key, turn, at }) => offerOne(turn, at, proposal, key), ready: (proposal) => permitted(proposal), onApplyAll: (turn, proposals) => void applyAll(turn, proposals), applyAllLabel: "Do all", renderSaid: (turn, said) => turn.moves?.length
243
+ ? linked(said, turn.moves, (move, words) => (_jsx("button", { type: "button", "data-testid": `${testId}-went`, title: `Go to ${words}`, onClick: () => go(move), style: { ...LINK, fontSize: "inherit" }, children: words }, `${move.address}:${words}`)))
244
+ : said, renderAfter: (turn, index) => [
245
+ /* A PICTURE THE MOVES COULD NOT SHOW, offered: drawn when pressed. */
246
+ ...(turn.offer
247
+ ? [
248
+ _jsx("button", { type: "button", "data-testid": `${testId}-offer`, onClick: () => seatTalk.ask(`a list of ${turn.offer.draft}`), style: { ...QUIET_BUTTON, justifySelf: "start" }, children: turn.offer.label }, `${index}:offer`),
249
+ ]
250
+ : []),
251
+ /* A LENS KEPT, with the way to take it back: the notice goes, the conversation keeps it. */
252
+ ...(turn.kept && !turn.kept.taken
253
+ ? [
254
+ _jsx("button", { type: "button", "data-testid": `${testId}-take-back`, onClick: () => void takeBack(turn.kept), style: { ...QUIET_BUTTON, justifySelf: "start" }, children: "Take back" }, `${index}:take-back`),
255
+ ]
256
+ : []),
257
+ /* THE NAMES THE WORDS FOUND, each a link that goes there. */
258
+ ...(turn.picks?.length
259
+ ? [
260
+ _jsx("p", { "data-testid": `${testId}-picks`, style: { margin: 0, display: "flex", flexWrap: "wrap", gap: "2px 12px" }, children: turn.picks.map((hit) => (_jsx("button", { type: "button", "data-testid": `${testId}-pick`, "data-chat-pick": hit.id, title: hit.why.field === "label" ? `Go to ${hit.label}` : `${hit.why.reading}: ${hit.why.fragment}`, onClick: () => onPick ? onPick(hit.id) : setView((stop) => withSelection(withFocus(withOverview(stop, false), hit.id), [hit.id])), style: LINK, children: hit.label }, hit.id))) }, `${index}:picks`),
261
+ ]
262
+ : []),
263
+ ...(turn.questions ?? []).map((asked) => {
264
+ const key = `${index}:q:${asked.id}`;
265
+ const outcome = outcomes.get(key);
266
+ /* A QUESTION STANDS AT ITS NODE, each option a press that lands through the path a proposal does. */
267
+ return (_jsxs("div", { "data-testid": `${testId}-question`, "data-chat-question-node": asked.nodeId, style: { display: "grid", gap: 4, justifySelf: "start" }, children: [_jsxs("span", { style: { fontSize: "0.8125rem", color: "var(--graview-ink-muted)" }, children: [asked.nodeLabel ? _jsxs("strong", { children: [asked.nodeLabel, ": "] }) : null, asked.asks, asked.because === "split" ? " (it could be either)" : " (it was not sure)"] }), _jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 4 }, children: asked.options.map((option) => (_jsxs("button", { type: "button", "data-testid": `${testId}-option`, disabled: !option.call, title: option.call ? option.call.why ?? "Take this answer" : "Nothing to do for this answer", onClick: () => (option.call ? void apply(option.call, key) : undefined), style: QUIET_BUTTON, children: [option.value, " ", Math.round(option.probability * 100), "%"] }, option.value))) }), outcome ? _jsx(Settled, { outcome: outcome, testId: testId }) : null] }, asked.id));
268
+ }),
269
+ ] }), answering ? (_jsx("div", { "data-testid": `${testId}-asking`, children: _jsx(AnswerArgs, { affordance: {
270
+ id: `chat:${answering.proposal.mutation}`,
271
+ mutation: answering.proposal.mutation,
272
+ label: describeProposal(store, answering.proposal),
273
+ provider: "llm",
274
+ why: answering.proposal.why ?? "Suggested in the conversation.",
275
+ nodeIds: [],
276
+ args: answering.proposal.args,
277
+ open: answering.open,
278
+ score: 0,
279
+ }, onApply: (args) => {
280
+ const proposal = { ...answering.proposal, args: { ...answering.proposal.args, ...args } };
281
+ setAnswering(null);
282
+ void apply(proposal, answering.key);
283
+ }, onCancel: () => setAnswering(null) }) })) : null, composer ? (_jsx(SeatComposer, { busy: conversation.busy, placeholder: selection.length > 0 ? "Ask about this…" : "Ask, or say a change…", ariaLabel: "Ask", testId: testId, onSend: (text) => (shared ? seatTalk.ask(text) : void conversation.send(text)) })) : null] }));
330
284
  }
285
+ /** A press that reads as a word, not a capsule: hairline, square-ish, small. */
286
+ export const QUIET_BUTTON = {
287
+ font: "inherit",
288
+ fontSize: "0.8125rem",
289
+ minHeight: 26,
290
+ padding: "0 9px",
291
+ borderRadius: 6,
292
+ border: "1px solid var(--graview-edge)",
293
+ background: "var(--graview-panel)",
294
+ boxShadow: "none",
295
+ color: "var(--graview-ink)",
296
+ cursor: "pointer",
297
+ };
298
+ /** A name in an answer, or a suggestion: a link that does something, in the accent. */
299
+ export const LINK = {
300
+ font: "inherit",
301
+ fontSize: "0.875rem",
302
+ minHeight: 24,
303
+ padding: 0,
304
+ border: 0,
305
+ borderRadius: 2,
306
+ background: "transparent",
307
+ boxShadow: "none",
308
+ color: "var(--graview-accent)",
309
+ textDecoration: "underline",
310
+ textUnderlineOffset: 3,
311
+ textAlign: "start",
312
+ cursor: "pointer",
313
+ };
331
314
  //# sourceMappingURL=chat.js.map
package/dist/chat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.tsx"],"names":[],"mappings":"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"}