@graview/primitives 0.1.17 → 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 (235) hide show
  1. package/README.md +5 -2
  2. package/dist/app-bar.d.ts +54 -1
  3. package/dist/app-bar.d.ts.map +1 -1
  4. package/dist/app-bar.js +277 -62
  5. package/dist/app-bar.js.map +1 -1
  6. package/dist/arrange-bar.d.ts +1 -1
  7. package/dist/arrange-bar.d.ts.map +1 -1
  8. package/dist/arrange-bar.js +48 -16
  9. package/dist/arrange-bar.js.map +1 -1
  10. package/dist/bar-panes-door.d.ts +8 -0
  11. package/dist/bar-panes-door.d.ts.map +1 -0
  12. package/dist/bar-panes-door.js +10 -0
  13. package/dist/bar-panes-door.js.map +1 -0
  14. package/dist/bar-panes.d.ts +3 -1
  15. package/dist/bar-panes.d.ts.map +1 -1
  16. package/dist/bar-panes.js +12 -5
  17. package/dist/bar-panes.js.map +1 -1
  18. package/dist/chat.d.ts +68 -30
  19. package/dist/chat.d.ts.map +1 -1
  20. package/dist/chat.js +206 -223
  21. package/dist/chat.js.map +1 -1
  22. package/dist/connections.d.ts +7 -1
  23. package/dist/connections.d.ts.map +1 -1
  24. package/dist/connections.js +13 -13
  25. package/dist/connections.js.map +1 -1
  26. package/dist/declared-lens-doors.d.ts +21 -3
  27. package/dist/declared-lens-doors.d.ts.map +1 -1
  28. package/dist/declared-lens-doors.js +62 -27
  29. package/dist/declared-lens-doors.js.map +1 -1
  30. package/dist/declared-lenses.d.ts.map +1 -1
  31. package/dist/declared-lenses.js +4 -7
  32. package/dist/declared-lenses.js.map +1 -1
  33. package/dist/default-view.d.ts +2 -0
  34. package/dist/default-view.d.ts.map +1 -1
  35. package/dist/default-view.js +10 -4
  36. package/dist/default-view.js.map +1 -1
  37. package/dist/default-views.d.ts.map +1 -1
  38. package/dist/default-views.js +195 -42
  39. package/dist/default-views.js.map +1 -1
  40. package/dist/draft-door.d.ts +3 -0
  41. package/dist/draft-door.d.ts.map +1 -0
  42. package/dist/draft-door.js +22 -0
  43. package/dist/draft-door.js.map +1 -0
  44. package/dist/draft-frame.d.ts +25 -0
  45. package/dist/draft-frame.d.ts.map +1 -0
  46. package/dist/draft-frame.js +69 -0
  47. package/dist/draft-frame.js.map +1 -0
  48. package/dist/editable.d.ts +35 -1
  49. package/dist/editable.d.ts.map +1 -1
  50. package/dist/editable.js +93 -23
  51. package/dist/editable.js.map +1 -1
  52. package/dist/figure.js +1 -1
  53. package/dist/figure.js.map +1 -1
  54. package/dist/find.d.ts.map +1 -1
  55. package/dist/find.js +46 -11
  56. package/dist/find.js.map +1 -1
  57. package/dist/frame.d.ts +8 -6
  58. package/dist/frame.d.ts.map +1 -1
  59. package/dist/frame.js +7 -5
  60. package/dist/frame.js.map +1 -1
  61. package/dist/index.d.ts +23 -11
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +20 -9
  64. package/dist/index.js.map +1 -1
  65. package/dist/lens/board.d.ts.map +1 -1
  66. package/dist/lens/board.js +7 -3
  67. package/dist/lens/board.js.map +1 -1
  68. package/dist/lens/calendar-dates.d.ts +2 -0
  69. package/dist/lens/calendar-dates.d.ts.map +1 -1
  70. package/dist/lens/calendar-dates.js +2 -0
  71. package/dist/lens/calendar-dates.js.map +1 -1
  72. package/dist/lens/calendar-drawing.d.ts +2 -2
  73. package/dist/lens/calendar-drawing.d.ts.map +1 -1
  74. package/dist/lens/calendar-drawing.js +1 -2
  75. package/dist/lens/calendar-drawing.js.map +1 -1
  76. package/dist/lens/calendar-options.d.ts +8 -1
  77. package/dist/lens/calendar-options.d.ts.map +1 -1
  78. package/dist/lens/calendar-options.js +5 -0
  79. package/dist/lens/calendar-options.js.map +1 -1
  80. package/dist/lens/calendar-spans.d.ts.map +1 -1
  81. package/dist/lens/calendar-spans.js +1 -2
  82. package/dist/lens/calendar-spans.js.map +1 -1
  83. package/dist/lens/calendar-view.d.ts +2 -1
  84. package/dist/lens/calendar-view.d.ts.map +1 -1
  85. package/dist/lens/calendar-view.js +4 -3
  86. package/dist/lens/calendar-view.js.map +1 -1
  87. package/dist/lens/columns.d.ts.map +1 -1
  88. package/dist/lens/columns.js +2 -2
  89. package/dist/lens/columns.js.map +1 -1
  90. package/dist/lens/coverage.d.ts.map +1 -1
  91. package/dist/lens/coverage.js +14 -10
  92. package/dist/lens/coverage.js.map +1 -1
  93. package/dist/lens/more.d.ts.map +1 -1
  94. package/dist/lens/more.js +2 -1
  95. package/dist/lens/more.js.map +1 -1
  96. package/dist/lens-keeping.d.ts +17 -0
  97. package/dist/lens-keeping.d.ts.map +1 -0
  98. package/dist/lens-keeping.js +127 -0
  99. package/dist/lens-keeping.js.map +1 -0
  100. package/dist/lines-key.d.ts +12 -0
  101. package/dist/lines-key.d.ts.map +1 -0
  102. package/dist/lines-key.js +74 -0
  103. package/dist/lines-key.js.map +1 -0
  104. package/dist/notice-place.d.ts +3 -3
  105. package/dist/notice-place.d.ts.map +1 -1
  106. package/dist/notice-place.js +6 -4
  107. package/dist/notice-place.js.map +1 -1
  108. package/dist/notices.d.ts +6 -0
  109. package/dist/notices.d.ts.map +1 -1
  110. package/dist/notices.js +7 -1
  111. package/dist/notices.js.map +1 -1
  112. package/dist/pages.d.ts +14 -8
  113. package/dist/pages.d.ts.map +1 -1
  114. package/dist/pages.js +14 -7
  115. package/dist/pages.js.map +1 -1
  116. package/dist/places.d.ts +0 -24
  117. package/dist/places.d.ts.map +1 -1
  118. package/dist/places.js +7 -3
  119. package/dist/places.js.map +1 -1
  120. package/dist/profile.d.ts +7 -1
  121. package/dist/profile.d.ts.map +1 -1
  122. package/dist/profile.js +35 -10
  123. package/dist/profile.js.map +1 -1
  124. package/dist/prose-editor.d.ts +9 -0
  125. package/dist/prose-editor.d.ts.map +1 -0
  126. package/dist/prose-editor.js +64 -0
  127. package/dist/prose-editor.js.map +1 -0
  128. package/dist/quick-relations.d.ts.map +1 -1
  129. package/dist/quick-relations.js +2 -2
  130. package/dist/quick-relations.js.map +1 -1
  131. package/dist/reader-lenses.d.ts +21 -0
  132. package/dist/reader-lenses.d.ts.map +1 -0
  133. package/dist/reader-lenses.js +27 -0
  134. package/dist/reader-lenses.js.map +1 -0
  135. package/dist/record-head.d.ts +28 -0
  136. package/dist/record-head.d.ts.map +1 -0
  137. package/dist/record-head.js +3 -0
  138. package/dist/record-head.js.map +1 -0
  139. package/dist/relation-key.d.ts +2 -0
  140. package/dist/relation-key.d.ts.map +1 -1
  141. package/dist/relation-key.js +14 -24
  142. package/dist/relation-key.js.map +1 -1
  143. package/dist/scene-bar.d.ts +29 -0
  144. package/dist/scene-bar.d.ts.map +1 -0
  145. package/dist/scene-bar.js +72 -0
  146. package/dist/scene-bar.js.map +1 -0
  147. package/dist/scene-css.d.ts.map +1 -1
  148. package/dist/scene-css.js +538 -0
  149. package/dist/scene-css.js.map +1 -1
  150. package/dist/scene-places.d.ts +37 -0
  151. package/dist/scene-places.d.ts.map +1 -0
  152. package/dist/scene-places.js +77 -0
  153. package/dist/scene-places.js.map +1 -0
  154. package/dist/scene.d.ts +5 -2
  155. package/dist/scene.d.ts.map +1 -1
  156. package/dist/scene.js +5 -1
  157. package/dist/scene.js.map +1 -1
  158. package/dist/seat-field.d.ts +58 -0
  159. package/dist/seat-field.d.ts.map +1 -0
  160. package/dist/seat-field.js +144 -0
  161. package/dist/seat-field.js.map +1 -0
  162. package/dist/seat-move.d.ts +32 -0
  163. package/dist/seat-move.d.ts.map +1 -0
  164. package/dist/seat-move.js +56 -0
  165. package/dist/seat-move.js.map +1 -0
  166. package/dist/seat-panel.d.ts +37 -0
  167. package/dist/seat-panel.d.ts.map +1 -0
  168. package/dist/seat-panel.js +131 -0
  169. package/dist/seat-panel.js.map +1 -0
  170. package/dist/seat.d.ts +20 -58
  171. package/dist/seat.d.ts.map +1 -1
  172. package/dist/seat.js +28 -45
  173. package/dist/seat.js.map +1 -1
  174. package/dist/seeding.d.ts.map +1 -1
  175. package/dist/seeding.js +4 -4
  176. package/dist/seeding.js.map +1 -1
  177. package/dist/shell.d.ts +25 -21
  178. package/dist/shell.d.ts.map +1 -1
  179. package/dist/shell.js +46 -116
  180. package/dist/shell.js.map +1 -1
  181. package/dist/spec-views.d.ts +9 -2
  182. package/dist/spec-views.d.ts.map +1 -1
  183. package/dist/spec-views.js +55 -6
  184. package/dist/spec-views.js.map +1 -1
  185. package/dist/subject.d.ts +19 -0
  186. package/dist/subject.d.ts.map +1 -0
  187. package/dist/subject.js +159 -0
  188. package/dist/subject.js.map +1 -0
  189. package/dist/text-body.d.ts +28 -0
  190. package/dist/text-body.d.ts.map +1 -0
  191. package/dist/text-body.js +64 -0
  192. package/dist/text-body.js.map +1 -0
  193. package/dist/theme.d.ts.map +1 -1
  194. package/dist/theme.js +6 -523
  195. package/dist/theme.js.map +1 -1
  196. package/dist/view-doors.d.ts +5 -1
  197. package/dist/view-doors.d.ts.map +1 -1
  198. package/dist/view-doors.js +28 -14
  199. package/dist/view-doors.js.map +1 -1
  200. package/dist/workbench/activity.d.ts.map +1 -1
  201. package/dist/workbench/activity.js +9 -9
  202. package/dist/workbench/activity.js.map +1 -1
  203. package/dist/workbench/answer-args.d.ts.map +1 -1
  204. package/dist/workbench/answer-args.js +26 -2
  205. package/dist/workbench/answer-args.js.map +1 -1
  206. package/dist/workbench/back-out.js +3 -3
  207. package/dist/workbench/back-out.js.map +1 -1
  208. package/dist/workbench/inspector.d.ts +11 -6
  209. package/dist/workbench/inspector.d.ts.map +1 -1
  210. package/dist/workbench/inspector.js +42 -56
  211. package/dist/workbench/inspector.js.map +1 -1
  212. package/dist/workbench/standing.d.ts.map +1 -1
  213. package/dist/workbench/standing.js +4 -3
  214. package/dist/workbench/standing.js.map +1 -1
  215. package/dist/workbench/trail.d.ts +10 -17
  216. package/dist/workbench/trail.d.ts.map +1 -1
  217. package/dist/workbench/trail.js +29 -41
  218. package/dist/workbench/trail.js.map +1 -1
  219. package/package.json +7 -7
  220. package/dist/companion.d.ts +0 -73
  221. package/dist/companion.d.ts.map +0 -1
  222. package/dist/companion.js +0 -594
  223. package/dist/companion.js.map +0 -1
  224. package/dist/ladder.d.ts +0 -2
  225. package/dist/ladder.d.ts.map +0 -1
  226. package/dist/ladder.js +0 -48
  227. package/dist/ladder.js.map +0 -1
  228. package/dist/popover.d.ts +0 -21
  229. package/dist/popover.d.ts.map +0 -1
  230. package/dist/popover.js +0 -28
  231. package/dist/popover.js.map +0 -1
  232. package/dist/wordmark.d.ts +0 -15
  233. package/dist/wordmark.d.ts.map +0 -1
  234. package/dist/wordmark.js +0 -50
  235. package/dist/wordmark.js.map +0 -1
@@ -0,0 +1,131 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { failureWords } from "@graview/core";
3
+ import { withFocus, withOverview, withSelection } from "@graview/layout/view";
4
+ import { useAffordances, useApplyAffordance, useGraview, useSeatTalkState, useViolations } from "@graview/react";
5
+ import { loadPins } from "@graview/tools";
6
+ // Its own entry: a bundler places a file in every chunk that can reach it, and only the open seat uses this.
7
+ import { offeredActs, suggestionsFor, whereLine } from "@graview/tools/suggest";
8
+ import { useCallback, useLayoutEffect, useMemo, useRef, useState } from "react";
9
+ import { ChatPanel, LINK, QUIET_BUTTON } from "./chat.js";
10
+ import { useSubject } from "./subject.js";
11
+ import { VISUALLY_HIDDEN } from "./primitives/index.js";
12
+ import { AnswerArgs } from "./workbench/index.js";
13
+ export function SeatPanel({ phone, side, name, onClose, respond, onCall, onPick, onMove, place, onDraft }) {
14
+ const { seatTalk } = useGraview();
15
+ const talk = useSeatTalkState(seatTalk);
16
+ const go = useSeatGo(onPick);
17
+ const latest = [...talk.turns].reverse().find((turn) => turn.role === "seat");
18
+ /*
19
+ * A PHONE'S SHEET YIELDS TO A DRAWN VIEW. Asked for a board, the sheet
20
+ * stood over most of it until it was put away: with a draft in place it
21
+ * keeps only the latest answer's lines above the field (the rest of the
22
+ * talk scrolls behind them), so the view is what the reader looks at.
23
+ */
24
+ const yielding = phone && talk.draft !== null;
25
+ /* THE LATEST ANSWER IN SIGHT: the panel scrolls to its foot as a turn arrives. */
26
+ const body = useRef(null);
27
+ useLayoutEffect(() => {
28
+ const at = body.current;
29
+ if (!at)
30
+ return;
31
+ // Yielding, the sheet is exactly as tall as the latest answer (up to its cap): no half a line of the turn before it.
32
+ const last = yielding ? [...at.querySelectorAll("ol > li")].pop() : undefined;
33
+ if (last) {
34
+ // From the answer's top to the end of the talk (what follows it is the list's own foot).
35
+ const from = last.getBoundingClientRect().top - at.getBoundingClientRect().top + at.scrollTop;
36
+ at.style.maxHeight = `min(${Math.ceil(at.scrollHeight - from)}px, ${YIELDED})`;
37
+ }
38
+ at.scrollTop = at.scrollHeight;
39
+ }, [talk.turns.length, talk.busy, yielding]);
40
+ return (_jsxs("div", { "data-testid": "seat-panel", ...(yielding ? { "data-graview-seat-yields": "" } : {}), style: { display: "grid", gridTemplateRows: "auto minmax(0, 1fr)", gap: 4, minHeight: 0 }, children: [_jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: phone ? "center" : "flex-end", gap: 2, position: "relative", minHeight: 28 }, children: [phone ? (
41
+ /* A GRAB LINE, the sheet's own way away: a real button the width of a thumb. */
42
+ _jsx("button", { type: "button", "data-testid": "seat-grab", "aria-label": `Close Ask ${name}`, title: "Close", onClick: onClose, style: { ...ICON, width: 64 }, children: _jsx("span", { "aria-hidden": "true", style: { display: "block", width: 36, height: 4, margin: "0 auto", borderRadius: 2, background: "var(--graview-edge-strong, var(--graview-ink-faint))" } }) })) : (_jsx("button", { type: "button", "data-testid": "seat-side", "aria-label": side === "left" ? "Move to the right" : "Move to the left", title: side === "left" ? "Move to the right" : "Move to the left", onClick: () => seatTalk.setSide(side === "left" ? "right" : "left"), style: ICON, children: _jsx("span", { "aria-hidden": "true", children: "\u21C4" }) })), phone ? null : (_jsx("button", { type: "button", "data-testid": "seat-close", "aria-label": `Close Ask ${name}`, title: "Close", onClick: onClose, style: ICON, children: _jsx("span", { "aria-hidden": "true", children: "\u2715" }) }))] }), _jsx("div", { ref: body, "data-testid": "seat-body", style: {
43
+ minHeight: 0,
44
+ // A drawn view on a phone: the sheet yields to it, keeping the latest answer's lines over the field.
45
+ maxHeight: yielding ? YIELDED : phone ? "calc(70cqh - 96px)" : "min(520px, calc(100cqh - 112px))",
46
+ overflowY: "auto",
47
+ overflowX: "hidden",
48
+ padding: "0 4px",
49
+ }, children: _jsx(ChatPanel, { shared: true, composer: false, testId: "seat", onPick: go, ...(onMove ? { onMove } : {}), ...(place ? { place } : {}), ...(onDraft ? { onDraft } : {}), empty: _jsx(SeatHere, { ...(place ? { here: place } : {}) }), ...(respond ? { respond } : {}), ...(onCall ? { onCall } : {}) }) }), _jsx("p", { "aria-live": "polite", "data-testid": "seat-said", style: VISUALLY_HIDDEN, children: talk.busy ? "" : (latest?.text ?? "") })] }));
50
+ }
51
+ /**
52
+ * WHERE A NAME IN AN ANSWER TAKES THE READER — the one place the seat moves
53
+ * the app. A face that knows its own way (Pages: the record's page) says so
54
+ * with `onPick`; on the scene the thing is chosen and flown to. When the
55
+ * seat's answers carry moves of their own (a place, a list narrowed by a
56
+ * date), they are applied here too, so both faces move the same way.
57
+ */
58
+ export function useSeatGo(onPick) {
59
+ const { setView } = useGraview();
60
+ return useCallback((id) => (onPick ? onPick(id) : setView((stop) => withSelection(withFocus(withOverview(stop, false), id), [id]))), [onPick, setView]);
61
+ }
62
+ /**
63
+ * WITH NOTHING ASKED: one line about where the reader is, a few things to
64
+ * ask, and at most three acts — the repairs a broken rule names for this
65
+ * thing, and the ones the reader pinned.
66
+ */
67
+ function SeatHere({ here }) {
68
+ const { store, views, view, seatTalk } = useGraview();
69
+ const subject = useSubject({ hover: false });
70
+ const violations = useViolations();
71
+ const record = subject.id ? store.graph.getNode(subject.id) : undefined;
72
+ const standing = here ?? view.within?.["view"];
73
+ const place = subject.because === "place" && subject.id === null
74
+ ? views.places().find((one) => one.title === subject.name)
75
+ : standing
76
+ ? views.places().find((one) => one.as === standing)
77
+ : undefined;
78
+ const today = store.today();
79
+ const input = {
80
+ store,
81
+ subject: { id: subject.id, name: subject.name },
82
+ violations,
83
+ place: place ? { title: place.title, kind: place.kind } : null,
84
+ places: views.places().map((one) => ({ title: one.title, kind: one.kind, picture: true })),
85
+ ...(today ? { today } : {}),
86
+ };
87
+ const line = whereLine(input);
88
+ const suggestions = suggestionsFor(input);
89
+ const options = useMemo(() => ({ pins: loadPins(), ...(record ? { focus: record.id, about: [record.id] } : {}) }), [record?.id]);
90
+ const { affordances } = useAffordances(options);
91
+ const acts = record ? offeredActs(affordances, { store, subject: { id: subject.id, name: subject.name } }) : [];
92
+ const { apply, preview } = useApplyAffordance();
93
+ const [asking, setAsking] = useState(null);
94
+ const [said, setSaid] = useState(null);
95
+ const act = (affordance, args) => {
96
+ try {
97
+ preview(affordance, args);
98
+ apply(affordance, args);
99
+ setSaid(null);
100
+ return true;
101
+ }
102
+ catch (error) {
103
+ setSaid(failureWords(store.schema, store.allMutations(), error));
104
+ return false;
105
+ }
106
+ };
107
+ return (_jsxs("div", { "data-testid": "seat-here", style: { display: "grid", gap: 10, padding: "2px 2px 6px" }, children: [_jsx("p", { "data-testid": "seat-where", style: { margin: 0, fontSize: "0.9375rem", lineHeight: 1.45, color: "var(--graview-ink)" }, children: line }), acts.length > 0 ? (_jsx("ul", { "aria-label": "What you can do", style: { margin: 0, padding: 0, listStyle: "none", display: "flex", flexWrap: "wrap", gap: 6 }, children: acts.map(({ affordance, label }) => (_jsx("li", { children: _jsx("button", { type: "button", "data-testid": "seat-act", "data-affordance": affordance.id, "aria-pressed": asking?.id === affordance.id, title: affordance.why, onClick: () => (affordance.open.length > 0 ? setAsking((was) => (was?.id === affordance.id ? null : affordance)) : void act(affordance)), style: { ...QUIET_BUTTON, minHeight: 30, textAlign: "start", ...(affordance.destructive ? { color: "var(--graview-warn)" } : {}) }, children: label }) }, affordance.id))) })) : null, asking ? (_jsx(AnswerArgs, { affordance: asking, onApply: (args) => {
108
+ if (act(asking, args))
109
+ setAsking(null);
110
+ }, onCancel: () => setAsking(null) })) : null, said ? (_jsx("p", { "data-testid": "seat-refused", style: { margin: 0, fontSize: "0.8125rem", color: "var(--graview-warn)" }, children: said })) : null, suggestions.length > 0 ? (_jsx("ul", { "aria-label": "Things to ask", style: { margin: 0, padding: 0, listStyle: "none", display: "grid", gap: 2, justifyItems: "start" }, children: suggestions.map((suggestion) => (_jsx("li", { children: _jsx("button", { type: "button", "data-testid": "seat-suggestion", "data-graview-why": suggestion.why, onClick: () => seatTalk.ask(suggestion.ask), style: LINK, children: suggestion.ask }) }, suggestion.ask))) })) : null] }));
111
+ }
112
+ /** A small square control in the panel's top row: a glyph, its name said to the screen reader. */
113
+ /** How much of the talk a phone's sheet keeps over a drawn view: the latest answer's lines. */
114
+ const YIELDED = "min(5.5em, 22cqh)";
115
+ const ICON = {
116
+ display: "inline-grid",
117
+ placeItems: "center",
118
+ width: 28,
119
+ height: 28,
120
+ padding: 0,
121
+ font: "inherit",
122
+ fontSize: "0.875rem",
123
+ lineHeight: 1,
124
+ color: "var(--graview-ink-muted)",
125
+ background: "transparent",
126
+ border: "1px solid transparent",
127
+ borderRadius: 6,
128
+ boxShadow: "none",
129
+ cursor: "pointer",
130
+ };
131
+ //# sourceMappingURL=seat-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seat-panel.js","sourceRoot":"","sources":["../src/seat-panel.tsx"],"names":[],"mappings":"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"}
package/dist/seat.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { ChatContext, ChatReply, LocalStatus, OfferedQuestion, ProposedCall } from "@graview/tools";
1
+ import { type SeatOutcome, type SeatTalk, type SeatTurn } from "@graview/react/provider";
2
+ import type { ChatContext, ChatReply, ProposedCall } from "@graview/tools";
2
3
  import { type ReactNode } from "react";
3
4
  /**
4
5
  * ONE CONVERSATION WITH A SEAT, WHEREVER IT IS HELD.
@@ -11,38 +12,13 @@ import { type ReactNode } from "react";
11
12
  * person moving from the app into its studio met a second assistant.
12
13
  *
13
14
  * What is shared is everything a conversation IS: the turns, what became of
14
- * each proposal, what the model is told happened, the header that says
15
- * which rung is answering, the thread and the field. What differs is only
15
+ * each proposal, what the model is told happened, the thread and the
16
+ * field. What differs is only
16
17
  * what a proposal is FOR — a change to the graph, applied; a change to the
17
18
  * declaration, checked and kept — so a surface supplies how one proposal is
18
19
  * drawn and nothing else.
19
20
  */
20
- export interface SeatTurn {
21
- readonly role: "person" | "seat";
22
- readonly text: string;
23
- readonly proposals?: readonly ProposedCall[];
24
- /** Questions the seat is asking back, each at the node it is about. */
25
- readonly questions?: readonly OfferedQuestion[];
26
- /** The rung could not read the sentence: a model would, one press away. */
27
- readonly unsure?: boolean;
28
- /** What the words found, when that was the answer: each a way to go there. */
29
- readonly picks?: ChatReply["picks"];
30
- }
31
- /**
32
- * WHAT BECAME OF A PROPOSAL, said where it was offered. Each settling used
33
- * to post a message of its own, so one request read as five; the press
34
- * becomes its own outcome instead, in place.
35
- */
36
- export type SeatOutcome = {
37
- readonly state: "applied";
38
- readonly said: string;
39
- } | {
40
- readonly state: "declined";
41
- readonly said: string;
42
- } | {
43
- readonly state: "refused";
44
- readonly error: string;
45
- };
21
+ export type { SeatOutcome, SeatTurn };
46
22
  /** The key of a proposal in the thread: which turn, which of its proposals. */
47
23
  export declare const proposalKey: (turn: number, at: number) => string;
48
24
  export type SeatAnswer = (text: string, context: Pick<ChatContext, "history">) => Promise<ChatReply>;
@@ -53,10 +29,16 @@ export type SeatAnswer = (text: string, context: Pick<ChatContext, "history">) =
53
29
  * plot the last turn made, and the model only knows which if the history
54
30
  * carries what landed, by name — so every surface sends it, not just one.
55
31
  */
56
- export declare function useSeatConversation({ answer, onReply, }: {
32
+ export declare function useSeatConversation({ answer, onReply, talk, }: {
57
33
  readonly answer: SeatAnswer;
58
34
  /** Said from the body too, or refused at a gate: whatever the surface does with a reply besides showing it. */
59
35
  readonly onReply?: (reply: ChatReply) => void;
36
+ /**
37
+ * Where the conversation is kept: the app's (`useGraview().seatTalk`), so
38
+ * it outlives this surface and a face switch, or this surface's own when
39
+ * not given — the studio's declaration seat keeps its own.
40
+ */
41
+ readonly talk?: SeatTalk;
60
42
  }): {
61
43
  turns: readonly SeatTurn[];
62
44
  outcomes: ReadonlyMap<string, SeatOutcome>;
@@ -64,30 +46,20 @@ export declare function useSeatConversation({ answer, onReply, }: {
64
46
  send: (text: string) => Promise<void>;
65
47
  settle: (key: string, outcome: SeatOutcome) => void;
66
48
  };
67
- /** Where answers are coming from right now, for the header — the same words on every surface. */
68
- export declare function describeSource(described: string, warmth: LocalStatus | null, floor?: string): string;
69
- export declare function SeatHeader({ label, source, sourceTitle, testId, settings, onSettings, foot, }: {
70
- /** What the seat talks about: "Seat" in the app, "Declaration" in the studio. */
49
+ export declare function SeatHeader({ label, testId, }: {
50
+ /** What the seat talks about: "Declaration" in the studio. */
71
51
  readonly label: string;
72
- readonly source: string;
73
- readonly sourceTitle?: string;
74
52
  readonly testId: string;
75
- readonly settings?: boolean;
76
- /** Under the composer rather than over the thread: a status line, not a title. */
77
- readonly foot?: boolean;
78
- /** Absent when the ladder is not the reader's to set — a host answers for them. */
79
- readonly onSettings?: () => void;
80
53
  }): import("react").JSX.Element;
81
54
  /**
82
- * The seat's trailing aside — "(from the graph)", "(the local model is
83
- * warming …)" — is which rung answered, not the answer: kept, and set
84
- * quieter than what was said.
55
+ * The seat's trailing aside — "(AI didn't answer just now, …)" — is about
56
+ * the answer, not the answer: kept, and set quieter than what was said.
85
57
  */
86
58
  export declare const splitAside: (text: string) => {
87
59
  said: string;
88
60
  aside?: string;
89
61
  };
90
- export declare function SeatThread({ turns, outcomes, busy, testId, empty, minHeight, maxHeight, renderProposal, renderAfter, ready, onApplyAll, applyAllLabel, onChooseModel, }: {
62
+ export declare function SeatThread({ turns, outcomes, busy, testId, empty, minHeight, maxHeight, renderProposal, renderAfter, renderSaid, ready, onApplyAll, applyAllLabel, }: {
91
63
  readonly turns: readonly SeatTurn[];
92
64
  readonly outcomes: ReadonlyMap<string, SeatOutcome>;
93
65
  readonly busy: boolean;
@@ -104,14 +76,14 @@ export declare function SeatThread({ turns, outcomes, busy, testId, empty, minHe
104
76
  }) => ReactNode;
105
77
  /** Whatever else a seat turn carries on this surface — questions at nodes, in the app. */
106
78
  readonly renderAfter?: (turn: SeatTurn, index: number) => ReactNode;
79
+ /** The seat's own words, drawn: in the app, the names its moves went to are links. */
80
+ readonly renderSaid?: (turn: SeatTurn, said: string) => ReactNode;
107
81
  /** Whether a proposal could be taken at all here; one that could not is not counted for "all". */
108
82
  readonly ready?: (proposal: ProposedCall, key: string) => boolean;
109
83
  /** One request, one press: take this turn's open proposals in order. */
110
84
  readonly onApplyAll?: (turn: number, proposals: readonly ProposedCall[]) => void;
111
85
  readonly applyAllLabel?: string;
112
- /** Offered under a turn the rung could not read, when a model is one press away. */
113
- readonly onChooseModel?: () => void;
114
- }): import("react").JSX.Element;
86
+ }): import("react").JSX.Element | null;
115
87
  /** A proposal that landed, was set aside, or was refused — in the place it was offered. */
116
88
  export declare function Settled({ outcome, testId }: {
117
89
  readonly outcome: SeatOutcome;
@@ -124,14 +96,4 @@ export declare function SeatComposer({ busy, placeholder, ariaLabel, testId, onS
124
96
  readonly testId: string;
125
97
  readonly onSend: (text: string) => void;
126
98
  }): import("react").JSX.Element;
127
- /**
128
- * WHAT ANSWERS, chosen where the seat is. The same one setting the profile
129
- * holds — pills, and a key field only when a rung needs one — so a person
130
- * pressing "Let a model read it" is shown the choice they would find in
131
- * the profile, not a second form that could disagree with it.
132
- */
133
- export declare function SeatSettings({ testId, onDone }: {
134
- readonly testId: string;
135
- readonly onDone: () => void;
136
- }): import("react").JSX.Element;
137
99
  //# sourceMappingURL=seat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seat.d.ts","sourceRoot":"","sources":["../src/seat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seat.d.ts","sourceRoot":"","sources":["../src/seat.tsx"],"names":[],"mappings":"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"}
package/dist/seat.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createSeatTalk, useSeatTalkState } from "@graview/react/provider";
3
+ import { ANSWERED_WITH_AI } from "@graview/tools/frame";
2
4
  import { useCallback, useEffect, useRef, useState } from "react";
3
- import { LadderSetting } from "./ladder.js";
4
5
  /** The key of a proposal in the thread: which turn, which of its proposals. */
5
6
  export const proposalKey = (turn, at) => `${turn}:${at}`;
6
7
  /**
@@ -10,20 +11,21 @@ export const proposalKey = (turn, at) => `${turn}:${at}`;
10
11
  * plot the last turn made, and the model only knows which if the history
11
12
  * carries what landed, by name — so every surface sends it, not just one.
12
13
  */
13
- export function useSeatConversation({ answer, onReply, }) {
14
- const [turns, setTurns] = useState([]);
15
- const [outcomes, setOutcomes] = useState(new Map());
16
- const [busy, setBusy] = useState(false);
17
- const settle = useCallback((key, outcome) => setOutcomes((current) => new Map(current).set(key, outcome)), []);
14
+ export function useSeatConversation({ answer, onReply, talk, }) {
15
+ const [own] = useState(() => createSeatTalk(null));
16
+ const kept = talk ?? own;
17
+ const { turns, outcomes, busy } = useSeatTalkState(kept);
18
+ const settle = useCallback((key, outcome) => kept.settle(key, outcome), [kept]);
18
19
  const send = async (text) => {
19
20
  const asked = text.trim();
20
- if (!asked || busy)
21
+ if (!asked || kept.get().busy)
21
22
  return;
22
- setBusy(true);
23
- setTurns((current) => [...current, { role: "person", text: asked }]);
24
- const history = turns.map((turn, index) => {
23
+ kept.setBusy(true);
24
+ const before = kept.get();
25
+ kept.setTurns((current) => [...current, { role: "person", text: asked }]);
26
+ const history = before.turns.map((turn, index) => {
25
27
  const landed = (turn.proposals ?? []).flatMap((_, at) => {
26
- const outcome = outcomes.get(proposalKey(index, at));
28
+ const outcome = before.outcomes.get(proposalKey(index, at));
27
29
  return outcome?.state === "applied" ? [outcome.said] : [];
28
30
  });
29
31
  return { role: turn.role, text: landed.length > 0 ? `${turn.text} [applied: ${landed.join("; ")}]` : turn.text };
@@ -33,9 +35,9 @@ export function useSeatConversation({ answer, onReply, }) {
33
35
  reply = await answer(asked, { history });
34
36
  }
35
37
  catch (error) {
36
- reply = { say: `The seat could not answer: ${error instanceof Error ? error.message : String(error)}`, proposals: [] };
38
+ reply = { say: `That couldn't be answered: ${error instanceof Error ? error.message : String(error)}`, proposals: [] };
37
39
  }
38
- setTurns((current) => [
40
+ kept.setTurns((current) => [
39
41
  ...current,
40
42
  {
41
43
  role: "seat",
@@ -43,47 +45,37 @@ export function useSeatConversation({ answer, onReply, }) {
43
45
  proposals: reply.proposals,
44
46
  ...(reply.questions ? { questions: reply.questions } : {}),
45
47
  ...(reply.picks?.length ? { picks: reply.picks } : {}),
48
+ ...(reply.moves?.length ? { moves: reply.moves } : {}),
49
+ ...(reply.offer ? { offer: reply.offer } : {}),
46
50
  ...(reply.unsure ? { unsure: true } : {}),
51
+ ...(reply.via ? { via: reply.via } : {}),
47
52
  },
48
53
  ]);
49
54
  onReply?.(reply);
50
- setBusy(false);
55
+ kept.setBusy(false);
51
56
  };
52
57
  return { turns, outcomes, busy, send, settle };
53
58
  }
54
- /** Where answers are coming from right now, for the header — the same words on every surface. */
55
- export function describeSource(described, warmth, floor = "graph") {
56
- if (warmth?.state === "warming") {
57
- return `warming${warmth.progress !== undefined ? ` ${Math.round(warmth.progress * 100)}%` : "…"}`;
58
- }
59
- if (warmth?.state === "failed")
60
- return `${floor} answering — ${warmth.detail ?? "the local model failed"}`;
61
- return described;
62
- }
63
- export function SeatHeader({ label, source, sourceTitle, testId, settings, onSettings, foot = false, }) {
64
- return (_jsxs("div", { style: {
65
- display: "flex",
66
- alignItems: "center",
67
- gap: 8,
68
- padding: foot ? "4px 4px 0 6px" : "6px 8px 6px 12px",
69
- ...(foot ? {} : { borderBottom: "1px solid var(--graview-edge)" }),
70
- }, children: [foot ? null : (_jsx("span", { style: { fontSize: "0.75rem", letterSpacing: "0.12em", textTransform: "uppercase", color: "var(--graview-ink-faint)" }, children: label })), _jsx("span", { "data-testid": `${testId}-source`, title: sourceTitle, style: { fontSize: "0.75rem", color: "var(--graview-ink-muted)" }, children: source }), _jsx("span", { style: { flex: "1 1 auto" } }), onSettings ? (_jsx("button", { type: "button", "data-testid": `${testId}-settings`, "aria-expanded": settings ?? false, onClick: onSettings, title: "Choose what answers: the graph itself, a model in this browser, a decision provider, or your own key", style: { fontSize: "0.8125rem", padding: "2px 8px", minHeight: 24 }, children: "\u2699" })) : null] }));
59
+ export function SeatHeader({ label, testId, }) {
60
+ return (_jsx("div", { "data-testid": `${testId}-header`, style: { display: "flex", alignItems: "center", gap: 8, padding: "6px 8px 6px 12px", borderBottom: "1px solid var(--graview-edge)" }, children: _jsx("span", { style: { fontSize: "0.75rem", letterSpacing: "0.12em", textTransform: "uppercase", color: "var(--graview-ink-faint)" }, children: label }) }));
71
61
  }
72
62
  /**
73
- * The seat's trailing aside — "(from the graph)", "(the local model is
74
- * warming …)" — is which rung answered, not the answer: kept, and set
75
- * quieter than what was said.
63
+ * The seat's trailing aside — "(AI didn't answer just now, …)" — is about
64
+ * the answer, not the answer: kept, and set quieter than what was said.
76
65
  */
77
66
  export const splitAside = (text) => {
78
67
  const match = /^([\s\S]*?)\s*(\((?:[^()]|\([^()]*\))*\))\s*$/.exec(text);
79
68
  return match && match[1] ? { said: match[1], aside: match[2] } : { said: text };
80
69
  };
81
- export function SeatThread({ turns, outcomes, busy, testId, empty, minHeight = 64, maxHeight = "min(46cqh, 400px)", renderProposal, renderAfter, ready = () => true, onApplyAll, applyAllLabel = "Apply all", onChooseModel, }) {
70
+ export function SeatThread({ turns, outcomes, busy, testId, empty, minHeight = 64, maxHeight = "min(46cqh, 400px)", renderProposal, renderAfter, renderSaid, ready = () => true, onApplyAll, applyAllLabel = "Apply all", }) {
82
71
  const log = useRef(null);
83
72
  useEffect(() => {
84
73
  // A log that cannot be scrolled — jsdom, a print stylesheet — is not a reason to throw.
85
74
  log.current?.scrollTo?.({ top: log.current.scrollHeight });
86
75
  }, [turns]);
76
+ // Nothing said, nothing to say before it, nothing coming: no empty list standing in the panel.
77
+ if (turns.length === 0 && empty === null && !busy)
78
+ return null;
87
79
  return (_jsxs("ol", { ref: log, style: {
88
80
  margin: 0,
89
81
  padding: 10,
@@ -111,7 +103,7 @@ export function SeatThread({ turns, outcomes, busy, testId, empty, minHeight = 6
111
103
  lineHeight: 1.45,
112
104
  background: "var(--graview-panel-muted)",
113
105
  color: "var(--graview-ink)",
114
- }, children: turn.text })) : (_jsxs("p", { style: { margin: 0, fontSize: "0.875rem", lineHeight: 1.5, color: "var(--graview-ink)" }, children: [aside.said, aside.aside ? (_jsx("span", { style: { display: "block", marginTop: 2, fontSize: "0.75rem", color: "var(--graview-ink-faint)" }, children: aside.aside })) : null] })), turn.unsure && onChooseModel ? (_jsx("button", { type: "button", "data-testid": `${testId}-offer-model`, onClick: onChooseModel, title: "A model reads a sentence however it is phrased, and proposes the acts it describes", style: { fontSize: "0.8125rem", justifySelf: "start" }, children: "Let a model read it \u2192" })) : null, renderAfter?.(turn, index), proposals.map((proposal, at) => {
106
+ }, children: turn.text })) : (_jsxs("p", { style: { margin: 0, fontSize: "0.875rem", lineHeight: 1.5, color: "var(--graview-ink)" }, children: [renderSaid ? renderSaid(turn, aside.said) : aside.said, aside.aside ? (_jsx("span", { style: { display: "block", marginTop: 2, fontSize: "0.75rem", color: "var(--graview-ink-faint)" }, children: aside.aside })) : null, turn.via ? (_jsx("span", { "data-testid": `${testId}-answered-with-ai`, style: { display: "block", marginTop: 2, fontSize: "0.75rem", color: "var(--graview-ink-faint)" }, children: ANSWERED_WITH_AI })) : null] })), renderAfter?.(turn, index), proposals.map((proposal, at) => {
115
107
  const key = proposalKey(index, at);
116
108
  const outcome = outcomes.get(key);
117
109
  if (outcome?.state === "applied" || outcome?.state === "declined") {
@@ -150,13 +142,4 @@ export function SeatComposer({ busy, placeholder, ariaLabel, testId, onSend, })
150
142
  color: "var(--graview-ink)",
151
143
  } }), _jsx("button", { type: "submit", "data-testid": `${testId}-send`, disabled: busy || draft.trim().length === 0, style: { fontSize: "0.875rem" }, children: "Send" })] }));
152
144
  }
153
- /**
154
- * WHAT ANSWERS, chosen where the seat is. The same one setting the profile
155
- * holds — pills, and a key field only when a rung needs one — so a person
156
- * pressing "Let a model read it" is shown the choice they would find in
157
- * the profile, not a second form that could disagree with it.
158
- */
159
- export function SeatSettings({ testId, onDone }) {
160
- return (_jsxs("div", { "data-testid": `${testId}-ladder`, style: { display: "grid", gap: 10, padding: 12 }, children: [_jsx(LadderSetting, {}), _jsx("button", { type: "button", onClick: onDone, style: { justifySelf: "start", fontSize: "0.875rem" }, children: "Back to the conversation" })] }));
161
- }
162
145
  //# sourceMappingURL=seat.js.map
package/dist/seat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"seat.js","sourceRoot":"","sources":["../src/seat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seat.js","sourceRoot":"","sources":["../src/seat.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"seeding.d.ts","sourceRoot":"","sources":["../src/seeding.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seeding.d.ts","sourceRoot":"","sources":["../src/seeding.tsx"],"names":[],"mappings":"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"}
package/dist/seeding.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { beginning, nounOf, providerCan } from "@graview/core";
2
+ import { pluralLabel, pluralOf, beginning, counted, providerCan } from "@graview/core";
3
3
  import { kindCardId } from "@graview/layout/view";
4
4
  import { createViews, GraviewProvider, useApplyAffordance, useGraph, useGraview, useGraviewIfAny, useLocalIntelligence, } from "@graview/react";
5
5
  import { applyPlan, dependentsOf, deriveAffordances, firstJsonObject, resolveProposal, validateProposals, without, } from "@graview/tools";
@@ -159,9 +159,9 @@ function BeginInside({ whenFull, frame, title = "Begin", heading = frame ? 1 : u
159
159
  return whenFull === undefined ? null : held(whenFull);
160
160
  const door = (_jsx(Panel, { title: title, subtitle: "What has to exist before the rest of it can.", fit: true, ...(heading ? { heading } : {}), children: _jsx("ol", { "data-testid": "begin", style: { margin: 0, paddingLeft: markerRoom(chain.order.length), display: "grid", gap: 10 }, children: chain.order.map((entry) => {
161
161
  const has = counts[entry.kind] ?? 0;
162
- const plural = store.schema.tryDefinition(entry.kind)?.plural ?? entry.kind;
162
+ const plural = pluralLabel(store.schema, entry.kind);
163
163
  const ready = entry.needs.every((needed) => (counts[needed] ?? 0) > 0);
164
- return (_jsxs("li", { "data-begin-kind": entry.kind, "data-begin-ready": ready || undefined, children: [_jsx("strong", { children: plural }), " ", _jsx("span", { style: { fontVariantNumeric: "tabular-nums", ...MUTED_TEXT }, children: has === 0 ? "none yet" : has }), entry.depth === null ? (_jsxs("div", { style: { fontSize: "0.875rem", ...MUTED_TEXT }, children: ["Nothing here makes ", plural.toLowerCase(), " \u2014 they arrive with the data."] })) : has > 0 ? null : ready ? (_jsx(BeginHere, { kind: entry.kind, derived: ways[entry.kind] })) : (_jsxs("div", { style: { fontSize: "0.875rem", ...MUTED_TEXT }, children: ["Waiting for ", entry.needs.filter((kind) => (counts[kind] ?? 0) === 0).map((kind) => store.schema.tryDefinition(kind)?.plural ?? kind).join(" and "), "."] }))] }, entry.kind));
164
+ return (_jsxs("li", { "data-begin-kind": entry.kind, "data-begin-ready": ready || undefined, children: [_jsx("strong", { children: plural }), " ", _jsx("span", { style: { fontVariantNumeric: "tabular-nums", ...MUTED_TEXT }, children: has === 0 ? "none yet" : has }), entry.depth === null ? (_jsxs("div", { style: { fontSize: "0.875rem", ...MUTED_TEXT }, children: ["Nothing here makes ", plural.toLowerCase(), " \u2014 they arrive with the data."] })) : has > 0 ? null : ready ? (_jsx(BeginHere, { kind: entry.kind, derived: ways[entry.kind] })) : (_jsxs("div", { style: { fontSize: "0.875rem", ...MUTED_TEXT }, children: ["Waiting for ", entry.needs.filter((kind) => (counts[kind] ?? 0) === 0).map((kind) => pluralOf(store.schema, kind)).join(" and "), "."] }))] }, entry.kind));
165
165
  }) }) }));
166
166
  return held(frame ? frame(door) : door);
167
167
  }
@@ -334,7 +334,7 @@ function PlanReviewInside({ plan, onApplied, onDiscard, title = "What this would
334
334
  const names = new Map(rows.flatMap((row) => (row.name === undefined ? [] : [[row.name, shown.get(row.key).text]])));
335
335
  /* "1 zone, 2 features" — the kind's own word when there is one of it. */
336
336
  const makes = Object.entries(kept.makes)
337
- .map(([kind, count]) => `${count} ${count === 1 ? nounOf(store.schema.tryDefinition(kind), kind) : (store.schema.tryDefinition(kind)?.plural ?? `${kind}s`).toLowerCase()}`)
337
+ .map(([kind, count]) => counted(store.schema, kind, count))
338
338
  .join(", ");
339
339
  /*
340
340
  * WHAT CARRIED IT OUT. A row struck through because something it points