@graview/primitives 0.1.65 → 0.1.67

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 (136) hide show
  1. package/dist/app-bar.d.ts +114 -15
  2. package/dist/app-bar.d.ts.map +1 -1
  3. package/dist/app-bar.js +192 -130
  4. package/dist/app-bar.js.map +1 -1
  5. package/dist/app-menu.d.ts +9 -0
  6. package/dist/app-menu.d.ts.map +1 -0
  7. package/dist/app-menu.js +60 -0
  8. package/dist/app-menu.js.map +1 -0
  9. package/dist/bar-activity.d.ts +5 -9
  10. package/dist/bar-activity.d.ts.map +1 -1
  11. package/dist/bar-activity.js +24 -7
  12. package/dist/bar-activity.js.map +1 -1
  13. package/dist/bar-panes.d.ts +5 -5
  14. package/dist/bar-panes.d.ts.map +1 -1
  15. package/dist/bar-panes.js +9 -5
  16. package/dist/bar-panes.js.map +1 -1
  17. package/dist/bar-suggested.d.ts +9 -1
  18. package/dist/bar-suggested.d.ts.map +1 -1
  19. package/dist/bar-suggested.js +11 -17
  20. package/dist/bar-suggested.js.map +1 -1
  21. package/dist/better-bar.d.ts +77 -0
  22. package/dist/better-bar.d.ts.map +1 -0
  23. package/dist/better-bar.js +312 -0
  24. package/dist/better-bar.js.map +1 -0
  25. package/dist/better-panel.d.ts +55 -0
  26. package/dist/better-panel.d.ts.map +1 -0
  27. package/dist/better-panel.js +151 -0
  28. package/dist/better-panel.js.map +1 -0
  29. package/dist/editable.d.ts +8 -1
  30. package/dist/editable.d.ts.map +1 -1
  31. package/dist/editable.js +140 -16
  32. package/dist/editable.js.map +1 -1
  33. package/dist/first-look-door.d.ts +2 -2
  34. package/dist/first-look-door.js +2 -2
  35. package/dist/first-look.d.ts.map +1 -1
  36. package/dist/first-look.js +9 -7
  37. package/dist/first-look.js.map +1 -1
  38. package/dist/frame.d.ts +2 -2
  39. package/dist/frame.d.ts.map +1 -1
  40. package/dist/frame.js +1 -1
  41. package/dist/frame.js.map +1 -1
  42. package/dist/inbox-pane.d.ts +31 -0
  43. package/dist/inbox-pane.d.ts.map +1 -0
  44. package/dist/inbox-pane.js +89 -0
  45. package/dist/inbox-pane.js.map +1 -0
  46. package/dist/inbox.d.ts +17 -0
  47. package/dist/inbox.d.ts.map +1 -0
  48. package/dist/inbox.js +84 -0
  49. package/dist/inbox.js.map +1 -0
  50. package/dist/index.d.ts +4 -3
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +3 -2
  53. package/dist/index.js.map +1 -1
  54. package/dist/lens/calendar-drawing.js +7 -3
  55. package/dist/lens/calendar-drawing.js.map +1 -1
  56. package/dist/menu-suggested.d.ts +54 -0
  57. package/dist/menu-suggested.d.ts.map +1 -0
  58. package/dist/menu-suggested.js +140 -0
  59. package/dist/menu-suggested.js.map +1 -0
  60. package/dist/menu-told-door.js +1 -1
  61. package/dist/menu-told-door.js.map +1 -1
  62. package/dist/menu-told.d.ts +7 -0
  63. package/dist/menu-told.d.ts.map +1 -1
  64. package/dist/menu-told.js +24 -0
  65. package/dist/menu-told.js.map +1 -1
  66. package/dist/notify-sheet.js +2 -2
  67. package/dist/notify-sheet.js.map +1 -1
  68. package/dist/page-better.d.ts +27 -0
  69. package/dist/page-better.d.ts.map +1 -0
  70. package/dist/page-better.js +747 -0
  71. package/dist/page-better.js.map +1 -0
  72. package/dist/page-parts.d.ts +41 -0
  73. package/dist/page-parts.d.ts.map +1 -0
  74. package/dist/page-parts.js +101 -0
  75. package/dist/page-parts.js.map +1 -0
  76. package/dist/pages.d.ts +2 -3
  77. package/dist/pages.d.ts.map +1 -1
  78. package/dist/pages.js +2 -3
  79. package/dist/pages.js.map +1 -1
  80. package/dist/profile.d.ts +1 -10
  81. package/dist/profile.d.ts.map +1 -1
  82. package/dist/profile.js +2 -3
  83. package/dist/profile.js.map +1 -1
  84. package/dist/scene-bar.d.ts +1 -1
  85. package/dist/scene-bar.d.ts.map +1 -1
  86. package/dist/scene-bar.js +4 -7
  87. package/dist/scene-bar.js.map +1 -1
  88. package/dist/section-better.d.ts +66 -9
  89. package/dist/section-better.d.ts.map +1 -1
  90. package/dist/section-better.js +285 -136
  91. package/dist/section-better.js.map +1 -1
  92. package/dist/section-door.d.ts +7 -0
  93. package/dist/section-door.d.ts.map +1 -1
  94. package/dist/section-door.js +39 -5
  95. package/dist/section-door.js.map +1 -1
  96. package/dist/section-menu.d.ts +23 -9
  97. package/dist/section-menu.d.ts.map +1 -1
  98. package/dist/section-menu.js +176 -23
  99. package/dist/section-menu.js.map +1 -1
  100. package/dist/section-words.d.ts +8 -0
  101. package/dist/section-words.d.ts.map +1 -1
  102. package/dist/section-words.js +25 -0
  103. package/dist/section-words.js.map +1 -1
  104. package/dist/shell.d.ts +7 -1
  105. package/dist/shell.d.ts.map +1 -1
  106. package/dist/shell.js +4 -2
  107. package/dist/shell.js.map +1 -1
  108. package/dist/suggested.d.ts +21 -10
  109. package/dist/suggested.d.ts.map +1 -1
  110. package/dist/suggested.js +80 -66
  111. package/dist/suggested.js.map +1 -1
  112. package/dist/suggestion-sentence.d.ts +50 -0
  113. package/dist/suggestion-sentence.d.ts.map +1 -0
  114. package/dist/suggestion-sentence.js +119 -0
  115. package/dist/suggestion-sentence.js.map +1 -0
  116. package/dist/told-card.js +1 -1
  117. package/dist/told-card.js.map +1 -1
  118. package/dist/told-ui.d.ts +1 -1
  119. package/dist/told-ui.d.ts.map +1 -1
  120. package/dist/told-ui.js +1 -1
  121. package/dist/told-ui.js.map +1 -1
  122. package/dist/when-words.d.ts +21 -0
  123. package/dist/when-words.d.ts.map +1 -0
  124. package/dist/when-words.js +43 -0
  125. package/dist/when-words.js.map +1 -0
  126. package/dist/workbench/activity.d.ts +44 -0
  127. package/dist/workbench/activity.d.ts.map +1 -1
  128. package/dist/workbench/activity.js +74 -59
  129. package/dist/workbench/activity.js.map +1 -1
  130. package/dist/workbench/inspector.d.ts.map +1 -1
  131. package/dist/workbench/inspector.js +170 -31
  132. package/dist/workbench/inspector.js.map +1 -1
  133. package/dist/workbench/standing.d.ts.map +1 -1
  134. package/dist/workbench/standing.js +1 -1
  135. package/dist/workbench/standing.js.map +1 -1
  136. package/package.json +6 -6
@@ -0,0 +1,119 @@
1
+ import { counted, fieldInPassing, humanizeValue, labelOf, nodeRefArgs, pluralOf } from "@graview/core";
2
+ /*
3
+ * A SUGGESTION SAID AS ONE QUESTION (Roadmap f-suggestion-card-one-line).
4
+ * A book app's inbox said one placement three times — "Graview, tidying
5
+ * suggests Place in chapter: What I steer by", then "Jev: 0.95 that the in
6
+ * chapter of … is …", then two chips naming both records — with its
7
+ * confidence twice and a model's id. Here it is one sentence a person reads
8
+ * at a glance, its records named in it so a page can make each a link:
9
+ * "Put “What I steer by” in 09 · Without a Map?". Read off the call and the
10
+ * declaration — the act that links, the relation's own words — never off
11
+ * what the maker said, which is for "Why?". Here, beside the tray that
12
+ * alone draws it, so a page carries none of it before the inbox opens.
13
+ */
14
+ /**
15
+ * WHY, IN WORDS ALONE: the maker's reason, without how sure it was or which
16
+ * model — what a suggestion's "Why?" says. A basis written before 0.1.66
17
+ * said the model and its probability first ("Jev: 0.95 that the chapter of
18
+ * … is … (both name the lease)"); its reason is what was in the brackets.
19
+ */
20
+ export function whyWords(lineage) {
21
+ const basis = lineage.basis.trim();
22
+ const old = /^[^:]{1,40}: (?:\d(?:\.\d+)?|none|no)\b/i.test(basis);
23
+ const reason = old ? (/\(([^()]+)\)\s*$/.exec(basis)?.[1] ?? "") : basis;
24
+ // A reason that is a figure ("(0.62)") is no reason a person reads.
25
+ if (!reason || /^[\d.\s%]+$/.test(reason))
26
+ return "No reason was kept.";
27
+ const said = reason.charAt(0).toUpperCase() + reason.slice(1);
28
+ return /[.!?]$/.test(said) ? said : `${said}.`;
29
+ }
30
+ /** Where a thing is put: "in", "under", "on". A relation that starts with one is said "Put A in B?". */
31
+ const PUT = new Set(["in", "into", "on", "onto", "under", "at", "within", "inside", "near", "beside", "behind", "over", "after", "before"]);
32
+ /** What follows a verb of a relation said as a verb: "waits for", "belongs to", "depends on". */
33
+ const AFTER_VERB = new Set(["for", "to", "on", "in", "with", "by", "from", "of", "after", "before", "into", "about", "under"]);
34
+ /** A relation's verb said after "Should": "waits" → "wait", "carries" → "carry", "goes" → "go". */
35
+ const base = (verb) => (/ies$/.test(verb) ? verb.replace(/ies$/, "y") : /(ch|sh|x|ss|o)es$/.test(verb) ? verb.replace(/es$/, "") : verb.replace(/s$/, ""));
36
+ const lower = (words) => (/^[A-Z][a-z]/.test(words) ? words.charAt(0).toLowerCase() + words.slice(1) : words);
37
+ /**
38
+ * The suggestion as one question, with the records it names in it. A
39
+ * suggestion of several calls, or of an act this cannot read, is its own
40
+ * words — the act's sentence — as it was.
41
+ */
42
+ export function suggestionSentence(store, suggestion) {
43
+ const schema = store.schema;
44
+ const node = (id) => (typeof id === "string" ? store.graph.getNode(id) : undefined);
45
+ const record = (one, quoted = false) => ({ record: one.id, label: labelOf(schema.tryDefinition(one.kind), one), ...(quoted ? { quoted: true } : {}) });
46
+ const said = (parts, group, many) => ({
47
+ parts,
48
+ text: parts.map((part) => (typeof part === "string" ? part : part.quoted ? `“${part.label}”` : part.label)).join(""),
49
+ group,
50
+ many,
51
+ });
52
+ const asItWas = said([suggestion.intent], `intent:${suggestion.intent}`, (count) => `${count} suggestions`);
53
+ if (suggestion.calls.length !== 1)
54
+ return asItWas;
55
+ const call = suggestion.calls[0];
56
+ const args = call.args;
57
+ const act = store.allMutations().find((one) => one.name === call.name);
58
+ const subjectArg = act?.subject?.arg;
59
+ const subject = subjectArg ? node(args[subjectArg]) : undefined;
60
+ if (!act || !subject)
61
+ return asItWas;
62
+ const kinds = (count) => counted(schema, subject.kind, count);
63
+ const group = (way) => `${call.name}:${way}`;
64
+ const farOf = () => {
65
+ const refs = nodeRefArgs(act.input).filter((ref) => ref.name !== subjectArg && args[ref.name] !== undefined);
66
+ return refs.length === 1 ? node(args[refs[0].name]) : undefined;
67
+ };
68
+ // A merge: "Merge “Acme” into Acme Supply?"
69
+ const into = node(args["into"]);
70
+ if (call.name === `merge-${subject.kind}` && into)
71
+ return said(["Merge ", record(subject, true), " into ", record(into), "?"], group("merge"), (count) => `${kinds(count)} to merge`);
72
+ // Set aside: "Set “Q3 offsite” aside?"
73
+ if (call.name === `archive-${subject.kind}`)
74
+ return said(["Set ", record(subject, true), " aside?"], group("archive"), (count) => `${kinds(count)} to set aside`);
75
+ // A link, through the relation the act connects.
76
+ const far = farOf();
77
+ const relation = act.connects?.find((one) => schema.tryDefinition(subject.kind)?.edges?.[one] !== undefined);
78
+ if (far && relation) {
79
+ const edge = schema.tryDefinition(subject.kind).edges[relation];
80
+ const words = fieldInPassing(schema.tryDefinition(subject.kind), relation).split(" ");
81
+ const [first, second] = words;
82
+ const farMany = lower(pluralOf(schema, far.kind));
83
+ // "in chapter": put it there.
84
+ if (first && PUT.has(first))
85
+ return said(["Put ", record(subject, true), ` ${first} `, record(far), "?"], group(`put:${first}`), (count) => `${kinds(count)} to put ${first} ${farMany}`);
86
+ // "waits for": a verb.
87
+ if (first && second && AFTER_VERB.has(second) && /[^s]s$/.test(first))
88
+ return said(["Should ", record(subject, true), ` ${[base(first), ...words.slice(1)].join(" ")} `, record(far), "?"], group("verb"), (count) => `${kinds(count)} to link`);
89
+ // "venue", one: "Make Harbor Hall the venue of “Dinner”?"
90
+ const noun = words.join(" ");
91
+ if (edge.cardinality === "one")
92
+ return said(["Make ", record(far), ` the ${noun} of `, record(subject, true), "?"], group("one"), (count) => `${kinds(count)} to give ${/^[aeiou]/i.test(noun) ? "an" : "a"} ${noun}`);
93
+ return said(["Add ", record(far), ` to the ${noun} of `, record(subject, true), "?"], group("many"), (count) => `${kinds(count)} to link`);
94
+ }
95
+ // A choice filled in: "Mark “Fix the roof” as Urgent?"
96
+ const values = Object.entries(args).filter(([name, value]) => name !== subjectArg && typeof value === "string" && !node(value));
97
+ if (suggestion.lineage?.actor === "categorize" && values.length === 1)
98
+ return said(["Mark ", record(subject, true), ` as ${humanizeValue(String(values[0][1]))}?`], group("mark"), (count) => `${kinds(count)} to mark`);
99
+ return asItWas;
100
+ }
101
+ /**
102
+ * Several suggestions of the same act, said the same way, together under
103
+ * one line — "3 notes to put in chapters" — in the order the first of each
104
+ * came; one alone is a group of one, with no line of its own.
105
+ */
106
+ export function suggestionGroups(store, suggestions) {
107
+ const groups = new Map();
108
+ for (const one of suggestions) {
109
+ const sentence = suggestionSentence(store, one);
110
+ const key = one.calls.length === 1 ? sentence.group : `one:${groups.size}`;
111
+ const was = groups.get(key);
112
+ if (was)
113
+ was.suggestions.push(one);
114
+ else
115
+ groups.set(key, { sentence, suggestions: [one] });
116
+ }
117
+ return [...groups.values()].map(({ sentence, suggestions: some }) => (some.length > 1 ? { words: sentence.many(some.length), suggestions: some } : { suggestions: some }));
118
+ }
119
+ //# sourceMappingURL=suggestion-sentence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestion-sentence.js","sourceRoot":"","sources":["../src/suggestion-sentence.ts"],"names":[],"mappings":"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"}
package/dist/told-card.js CHANGED
@@ -189,7 +189,7 @@ export function RateTelling({ told, telling }) {
189
189
  return;
190
190
  event.preventDefault();
191
191
  keepShould();
192
- }, onBlur: keepShould, style: SHOULD }), kept ? (_jsx("span", { role: "status", "data-testid": "quick-ask-should-kept", style: { fontSize: "0.75rem", color: "var(--graview-ink-muted)" }, children: "Kept, to learn from." })) : null] })) : null] }));
192
+ }, onBlur: keepShould, style: SHOULD }), kept ? (_jsx("span", { role: "status", "data-testid": "quick-ask-should-kept", style: { fontSize: "0.75rem", color: "var(--graview-ink-muted)" }, children: told.keptSays?.trim() || "Kept, to learn from." })) : null] })) : null] }));
193
193
  }
194
194
  const THUMB = { display: "inline-grid", placeItems: "center", width: 30, height: 28, padding: 0, font: "inherit", fontSize: "0.875rem", lineHeight: 1, background: "transparent", border: "1px solid transparent", borderRadius: 6, boxShadow: "none", cursor: "pointer", opacity: 0.7 };
195
195
  const THUMB_ON = { ...THUMB, opacity: 1, borderColor: "var(--graview-accent)", background: "var(--graview-panel)" };
@@ -1 +1 @@
1
- {"version":3,"file":"told-card.js","sourceRoot":"","sources":["../src/told-card.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"told-card.js","sourceRoot":"","sources":["../src/told-card.tsx"],"names":[],"mappings":"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"}
package/dist/told-ui.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import "./frame.js";
2
2
  export { changeTelling, examplesHere, keepTelling, RateTelling, seenOnThisPage, tellingDraftOf, toldListed, watchTelling } from "./told-card.js";
3
- export { readToldHere, toldSuggestionsFrom } from "./menu-told.js";
3
+ export { readToldHere, toldForHere, toldSuggestionsFrom } from "./menu-told.js";
4
4
  export { ToldPanel } from "./told-panel.js";
5
5
  //# sourceMappingURL=told-ui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"told-ui.d.ts","sourceRoot":"","sources":["../src/told-ui.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAC;AAQpB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACjJ,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"told-ui.d.ts","sourceRoot":"","sources":["../src/told-ui.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAC;AAQpB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACjJ,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/told-ui.js CHANGED
@@ -7,6 +7,6 @@ import "./frame.js"; // A door: tied to what the page drew first (TIED DOORS, pa
7
7
  * request, and no piece of it on a page that never tells Graview anything.
8
8
  */
9
9
  export { changeTelling, examplesHere, keepTelling, RateTelling, seenOnThisPage, tellingDraftOf, toldListed, watchTelling } from "./told-card.js";
10
- export { readToldHere, toldSuggestionsFrom } from "./menu-told.js";
10
+ export { readToldHere, toldForHere, toldSuggestionsFrom } from "./menu-told.js";
11
11
  export { ToldPanel } from "./told-panel.js";
12
12
  //# sourceMappingURL=told-ui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"told-ui.js","sourceRoot":"","sources":["../src/told-ui.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAC,CAAC,2FAA2F;AAChH;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACjJ,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"told-ui.js","sourceRoot":"","sources":["../src/told-ui.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAC,CAAC,2FAA2F;AAChH;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACjJ,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** How far a day is from today, as a person says it: "today", "tomorrow", "in 3 days", "2 weeks ago", "9 years ago". */
2
+ export declare function fromToday(day: string, today: string): string;
3
+ /**
4
+ * A stored day or moment said with its weekday and how far it is from
5
+ * today: "Fri, Sep 4 · in 3 days", "Mon, Sep 25, 2017, 11:30 AM · 9 years
6
+ * ago" — its year only when it is not this one. Undefined for anything that
7
+ * names no whole day (a month alone, a year alone, words).
8
+ */
9
+ export declare function whenSaid(stored: string, today: string, options?: {
10
+ readonly locale?: string;
11
+ readonly timeZone?: string;
12
+ }): {
13
+ readonly words: string;
14
+ readonly day: string;
15
+ readonly past: boolean;
16
+ } | undefined;
17
+ /** The day a store judges "late" against: its own (`?today=`, a pinned demo), else today on the app's clock. */
18
+ export declare function todayOf(store: {
19
+ today?(): string | undefined;
20
+ }): string;
21
+ //# sourceMappingURL=when-words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when-words.d.ts","sourceRoot":"","sources":["../src/when-words.ts"],"names":[],"mappings":"AAWA,wHAAwH;AACxH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAMpN;AAED,gHAAgH;AAChH,wBAAgB,OAAO,CAAC,KAAK,EAAE;IAAE,KAAK,CAAC,IAAI,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,MAAM,CAEvE"}
@@ -0,0 +1,43 @@
1
+ import { dayOfMoment, isoToday, timeAsRead, weekdayAsRead, zoneFor } from "@graview/core";
2
+ /*
3
+ * A DAY SAID BOTH WAYS (Roadmap f-facts-by-type): what it is and how far it
4
+ * is — "Fri, Sep 4 · in 3 days". A record's page said a due date as "Sep 4,
5
+ * 2026" and left the reader to work out that it was Friday and three days
6
+ * off; a person deciding what to do next asks the second question first.
7
+ */
8
+ const DAY_MS = 86_400_000;
9
+ /** How far a day is from today, as a person says it: "today", "tomorrow", "in 3 days", "2 weeks ago", "9 years ago". */
10
+ export function fromToday(day, today) {
11
+ const days = Math.round((Date.parse(`${day}T00:00:00Z`) - Date.parse(`${today}T00:00:00Z`)) / DAY_MS);
12
+ if (!Number.isFinite(days))
13
+ return "";
14
+ if (days === 0)
15
+ return "today";
16
+ if (days === 1)
17
+ return "tomorrow";
18
+ if (days === -1)
19
+ return "yesterday";
20
+ const far = Math.abs(days);
21
+ const [count, unit] = far < 14 ? [far, "day"] : far < 60 ? [Math.round(far / 7), "week"] : far < 730 ? [Math.round(far / 30.44), "month"] : [Math.round(far / 365.25), "year"];
22
+ const said = `${count} ${unit}${count === 1 ? "" : "s"}`;
23
+ return days > 0 ? `in ${said}` : `${said} ago`;
24
+ }
25
+ /**
26
+ * A stored day or moment said with its weekday and how far it is from
27
+ * today: "Fri, Sep 4 · in 3 days", "Mon, Sep 25, 2017, 11:30 AM · 9 years
28
+ * ago" — its year only when it is not this one. Undefined for anything that
29
+ * names no whole day (a month alone, a year alone, words).
30
+ */
31
+ export function whenSaid(stored, today, options = {}) {
32
+ const day = dayOfMoment(stored, options.timeZone);
33
+ if (day === undefined)
34
+ return undefined;
35
+ const date = weekdayAsRead(day, { weekday: "short", year: day.slice(0, 4) !== today.slice(0, 4) }, options.locale);
36
+ const time = stored.length > 10 ? `, ${timeAsRead(stored, options.locale, options.timeZone)}` : "";
37
+ return { words: `${date}${time} · ${fromToday(day, today)}`, day, past: day < today };
38
+ }
39
+ /** The day a store judges "late" against: its own (`?today=`, a pinned demo), else today on the app's clock. */
40
+ export function todayOf(store) {
41
+ return store.today?.() ?? isoToday(zoneFor());
42
+ }
43
+ //# sourceMappingURL=when-words.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when-words.js","sourceRoot":"","sources":["../src/when-words.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
1
  import { type Author, type Batch } from "@graview/core";
2
2
  import type { ToolCall } from "@graview/tools";
3
3
  import { type ReactNode } from "react";
4
+ import type { AiInteraction } from "@graview/core/catalog";
5
+ export declare const InteractionRow: import("react").ComponentType<{
6
+ readonly entry: AiInteraction;
7
+ readonly undo: (batch: string) => ReactNode;
8
+ }>;
4
9
  export interface Change {
5
10
  readonly intent: string;
6
11
  readonly author: string;
@@ -112,6 +117,45 @@ export declare function ShowAsItWas({ seq, intent }: {
112
117
  * the address, and what you do next is remembered again.
113
118
  */
114
119
  export declare function StartFresh(): import("react").JSX.Element;
120
+ export declare function ActivityFeed({ calls, seat, remembers, close, headed, }: {
121
+ readonly calls: readonly ToolCall[];
122
+ /**
123
+ * Whether this browser is remembering the edits. When it is, the popover
124
+ * says so and carries the way back to the example — history is where you
125
+ * would look for the way out of it.
126
+ */
127
+ readonly remembers?: boolean;
128
+ /**
129
+ * The agent seat, if the app gives one. It lives HERE, not in the bar:
130
+ * Activity is "what has happened, and what is happening", which is the
131
+ * agent's own surface and where you would be looking to watch a turn —
132
+ * and a run-a-turn control that is disabled most of the time was a
133
+ * permanently-visible ghost in prime bar space. See the recorded
134
+ * decision on the PRD task "Decide where the agent seat lives".
135
+ */
136
+ readonly seat?: ReactNode;
137
+ /** Puts away what the feed is drawn in, as the reader goes to a record it names. */
138
+ readonly close: () => void;
139
+ /** Whether it says its own heading: the inbox's tab says it there. */
140
+ readonly headed?: boolean;
141
+ }): import("react").JSX.Element;
142
+ /**
143
+ * WHETHER ACTIVITY HAS ANYTHING TO SAY: a seat, a call, a change, an AI
144
+ * entry, a browser that remembers, or somebody told of changes.
145
+ */
146
+ export declare function useActivityHas({ calls, seat, remembers }: {
147
+ readonly calls: readonly ToolCall[];
148
+ readonly seat?: ReactNode;
149
+ readonly remembers?: boolean;
150
+ }): {
151
+ readonly has: boolean;
152
+ readonly recent: number;
153
+ readonly running: boolean;
154
+ };
155
+ /**
156
+ * ACTIVITY ON A BAR OF ITS OWN: the studio's. The app bar holds the same
157
+ * feed in its inbox (`Inbox`, Roadmap f-app-bar-calm).
158
+ */
115
159
  export declare function ActivityRail({ calls, seat, remembers, }: {
116
160
  readonly calls: readonly ToolCall[];
117
161
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/workbench/activity.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4F,KAAK,MAAM,EAAE,KAAK,KAAK,EAAkB,MAAM,eAAe,CAAC;AAMlK,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAgBzF,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,oHAAoH;IACpH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAQD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,GAAG,MAAM,CAGvE;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,SAAI,GAAG,SAAS,MAAM,EAAE,CAyC7D;AA+FD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;CAAE,sCA2FjF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,sCAuB7F;AAED;;;;;;;GAOG;AACH;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,gCA+BzB;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,IAAI,EACJ,SAAiB,GAClB,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;CAC3B,sCAkTA"}
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/workbench/activity.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { ARCHIVED, freshAddress, humanizeField, isWithheld, labelOf, nameOfAuthor } from "@graview/core";
3
3
  import { viaSaid } from "@graview/core/words";
4
4
  import { lineageWords } from "@graview/core/provenance";
@@ -15,7 +15,7 @@ import { useInteractions } from "./ai-feed.js";
15
15
  import { retryingImport } from "@graview/core/retry";
16
16
  /* The AI's rows and its filter, fetched with the first entry there is to draw (Roadmap f-activity-ai-entries). */
17
17
  const aiRows = /* @__PURE__ */ lazyModule(retryingImport(() => import("./ai-entries.js")));
18
- const InteractionRow = /* @__PURE__ */ aiRows.part((module, props) => _jsx(module.InteractionRow, { ...props }), { quiet: true, as: "li" });
18
+ export const InteractionRow = /* @__PURE__ */ aiRows.part((module, props) => _jsx(module.InteractionRow, { ...props }), { quiet: true, as: "li" });
19
19
  const ActivityFilter = /* @__PURE__ */ aiRows.part((module, props) => _jsx(module.ActivityFilter, { ...props }), { quiet: true, as: "div" });
20
20
  /** Whether an op takes a record out of the counts: removes it, or sets it aside (an archive, or the one a merge folds away). */
21
21
  const takesOut = (op) =>
@@ -286,7 +286,7 @@ export function StartFresh() {
286
286
  textUnderlineOffset: 3,
287
287
  }, children: "Start fresh" }));
288
288
  }
289
- export function ActivityRail({ calls, seat, remembers = false, }) {
289
+ export function ActivityFeed({ calls, seat, remembers = false, close, headed = true, }) {
290
290
  const recent = useRecentChanges();
291
291
  const { store: shown, principal, seats, people } = useGraview();
292
292
  /*
@@ -308,9 +308,6 @@ export function ActivityRail({ calls, seat, remembers = false, }) {
308
308
  ].sort((a, b) => (a.at < b.at ? 1 : a.at > b.at ? -1 : 0));
309
309
  /* Named from now's records, whichever moment the face draws (Roadmap f-playback). */
310
310
  const store = useLiveStore(shown, principal);
311
- const running = calls.some((call) => call.phase === "running");
312
- // Somebody told of changes has Activity to open, though nothing has changed yet.
313
- const notified = useNotifiedCount();
314
311
  /*
315
312
  * A POPOVER FROM THE BAR, not a rail pinned over the scene.
316
313
  *
@@ -321,14 +318,78 @@ export function ActivityRail({ calls, seat, remembers = false, }) {
321
318
  * visible without opening anything is that an agent is mid-turn, and that
322
319
  * is a dot on the button.
323
320
  */
324
- const popover = usePopover("activity");
325
- const open = popover.open;
326
321
  const goTo = useGoTo();
327
322
  const playback = usePlayback();
328
323
  /* Only a record still in the graph goes anywhere; the popover closes behind the reader as they go, and going there is going to it now, not as it was. */
329
- const goes = (id) => (store.graph.has(id) ? (to) => { popover.setOpen(false); if (playback?.past)
324
+ const goes = (id) => (store.graph.has(id) ? (to) => { close(); if (playback?.past)
330
325
  playback.show(null); goTo.record(to); } : null);
331
- if (seat === undefined && calls.length === 0 && recent.length === 0 && interactions.length === 0 && !remembers && notified === 0)
326
+ return (_jsxs(_Fragment, { children: [headed ? _jsx("h2", { style: { ...VISUALLY_HIDDEN, margin: 0 }, children: "Activity" }) : null, seat !== undefined ? (_jsxs("div", { "data-testid": "agent-seat-row", style: {
327
+ display: "grid",
328
+ gap: 5,
329
+ paddingBottom: calls.length > 0 || feed.length > 0 ? 9 : 0,
330
+ ...(calls.length > 0 || feed.length > 0
331
+ ? { borderBottom: "1px solid var(--graview-edge)" }
332
+ : {}),
333
+ }, children: [_jsx("span", { style: {
334
+ fontSize: "0.75rem",
335
+ letterSpacing: "0.14em",
336
+ textTransform: "uppercase",
337
+ color: "var(--graview-ink-faint)",
338
+ }, children: "The agent's seat" }), seat] })) : null, calls.length > 0 ? (_jsx("ol", { style: { margin: 0, padding: 0, listStyle: "none", display: "grid", gap: 7 }, children: calls.slice(0, 6).map((call, index) => (_jsxs("li", { style: { ...ACTIVITY_ROW, gap: 2, fontSize: "0.8125rem" }, children: [_jsxs("div", { "data-graview-activity-head": "", style: ACTIVITY_HEAD, children: [_jsx("span", { "aria-hidden": "true", style: {
339
+ width: 6,
340
+ height: 6,
341
+ borderRadius: 999,
342
+ flex: "0 0 auto",
343
+ background: call.phase === "running"
344
+ ? "var(--graview-accent)"
345
+ : call.phase === "failed"
346
+ ? "var(--graview-warn)"
347
+ : "var(--graview-edge-bright)",
348
+ } }), _jsxs("span", { "data-graview-activity-words": "", style: { ...ACTIVITY_WORDS, color: "var(--graview-ink)" }, children: [call.mutating ? "changed" : "read", " \u00B7", " ", store.allMutations().find((mutation) => mutation.name === call.name)?.title ??
349
+ humanizeField(call.name)] })] }), !call.mutating && call.reads && call.reads.length > 0 ? (_jsxs("div", { "data-testid": "activity-reads", style: { display: "flex", flexWrap: "wrap", gap: 4, paddingLeft: 12 }, children: [[...new Set(call.reads)].slice(0, 3).map((id) => (_jsx(NamedRecord, { id: id, label: nameOf(store, id), go: goes(id), testId: "activity-record" }, id))), new Set(call.reads).size > 3 ? _jsxs("span", { style: { color: "var(--graview-ink-muted)" }, children: ["+", new Set(call.reads).size - 3] }) : null] })) : Object.values(call.args).some((value) => typeof value === "string") ? (_jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 4, paddingLeft: 12 }, children: Object.entries(call.args)
350
+ .filter((entry) => typeof entry[1] === "string")
351
+ .slice(0, 3)
352
+ .map(([name, value]) => (_jsx(NamedRecord, { id: value, label: nameOf(store, value), go: goes(value), testId: "activity-record" }, name))) })) : null, call.error ? (_jsx("div", { style: { paddingLeft: 12, color: "var(--graview-warn)" }, children: call.error })) : null] }, `${call.at}:${index}`))) })) : null, interactions.length > 0 ? (_jsx(Suspense, { fallback: null, children: _jsx(ActivityFilter, { shows: shows, onShows: setShows, mine: mine, onMine: setMine }) })) : null, feed.length > 0 ? (_jsx("ol", { "data-testid": "diff-log", style: {
353
+ margin: 0,
354
+ padding: 0,
355
+ listStyle: "none",
356
+ display: "grid",
357
+ gap: 6,
358
+ fontSize: "0.8125rem",
359
+ }, children: feed.map(({ change, entry }, index) => entry !== undefined ? (_jsx(Suspense, { fallback: null, children: _jsx(InteractionRow, { entry: entry, undo: (batch) => _jsx(UndoTurn, { batch: batch }) }) }, `ai:${entry.id}`)) : change.digest ? (_jsx(DigestRow, { change: change, goes: goes }, `digest:${change.digest[0]?.batch ?? index}`)) : change.withheld ? (
360
+ /* SOMETHING YOU CANNOT SEE HAPPENED: said, and nothing more — not who, not what, no undo (FR-16). */
361
+ _jsx("li", { "data-testid": "withheld-change", style: ACTIVITY_ROW, children: _jsx("span", { "data-touched": "", style: { ...ACTIVITY_WORDS, color: "var(--graview-ink-muted)", fontStyle: "italic" }, children: change.intent }) }, `change:${index}`)) : (_jsxs("li", { "data-batch": change.batch, style: ACTIVITY_ROW, children: [_jsxs("div", { "data-graview-activity-head": "", style: ACTIVITY_HEAD, children: [_jsxs("span", { "data-graview-activity-words": "", style: ACTIVITY_WORDS, children: [_jsxs("strong", { style: { fontWeight: 600 }, children: [change.author === "human" && change.by?.onBehalfOf === undefined && (change.authorId === undefined || principal.id === undefined || change.authorId === principal.id)
362
+ ? "you"
363
+ : nameOfAuthor(change.by ?? { kind: change.author, id: change.authorId }, { graph: store.graph, schema: store.schema, seats, people }), viaSaid(change.via) ? _jsxs("span", { style: { fontWeight: 400, color: "var(--graview-ink-muted)" }, children: [", ", viaSaid(change.via)] }) : null] }), " ", _jsx("span", { style: { color: "var(--graview-ink-muted)" }, children: change.intent }), change.basis ? _jsxs("span", { "data-graview-lineage": "", style: { color: "var(--graview-ink-faint)" }, children: [" \u00B7 ", change.basis] }) : null] }), change.batch ? _jsx(ShowAsItWas, { seq: change.seq, intent: change.intent }) : null, change.batch ? _jsx(UndoTurn, { batch: change.batches && change.batches.length > 0 ? (change.batches.length === 1 ? change.batches[0] : change.batches) : change.batch }) : null] }), _jsx("div", { "data-touched": change.touched.join(" "), style: ACTIVITY_CHIPS, children: change.touched.slice(0, 4).map((id) => (_jsx(NamedRecord, { id: id, label: store.graph.has(id) ? nameOf(store, id) : (change.named?.[id] ?? nameOf(store, id)), go: goes(id), testId: "activity-record" }, id))) })] }, `change:${index}`))) })) : null, _jsx(NotifiedDoor, { style: { paddingTop: 8, borderTop: "1px solid var(--graview-edge)" } }), remembers ? (_jsxs("div", { "data-testid": "remembered", style: {
364
+ display: "flex",
365
+ alignItems: "baseline",
366
+ justifyContent: "space-between",
367
+ gap: 10,
368
+ paddingTop: 8,
369
+ borderTop: "1px solid var(--graview-edge)",
370
+ fontSize: "0.8125rem",
371
+ color: "var(--graview-ink-faint)",
372
+ }, children: [_jsx("span", { children: "Remembered in this browser" }), _jsx(StartFresh, {})] })) : null] }));
373
+ }
374
+ /**
375
+ * WHETHER ACTIVITY HAS ANYTHING TO SAY: a seat, a call, a change, an AI
376
+ * entry, a browser that remembers, or somebody told of changes.
377
+ */
378
+ export function useActivityHas({ calls, seat, remembers = false }) {
379
+ const recent = useRecentChanges();
380
+ const interactions = useInteractions();
381
+ const notified = useNotifiedCount();
382
+ return { has: !(seat === undefined && calls.length === 0 && recent.length === 0 && interactions.length === 0 && !remembers && notified === 0), recent: recent.length, running: calls.some((call) => call.phase === "running") };
383
+ }
384
+ /**
385
+ * ACTIVITY ON A BAR OF ITS OWN: the studio's. The app bar holds the same
386
+ * feed in its inbox (`Inbox`, Roadmap f-app-bar-calm).
387
+ */
388
+ export function ActivityRail({ calls, seat, remembers = false, }) {
389
+ const { has, recent, running } = useActivityHas({ calls, seat, remembers });
390
+ const popover = usePopover("activity");
391
+ const open = popover.open;
392
+ if (!has)
332
393
  return null;
333
394
  return (_jsxs("div", { style: { position: "relative" }, children: [_jsxs("button", { type: "button", "data-testid": "activity-button", ...popover.trigger, onClick: popover.toggle, title: running ? "An agent is working" : "What has happened", style: {
334
395
  display: "inline-flex",
@@ -344,9 +405,9 @@ export function ActivityRail({ calls, seat, remembers = false, }) {
344
405
  fontSize: "0.875rem",
345
406
  whiteSpace: "nowrap",
346
407
  color: running ? "var(--graview-accent)" : "var(--graview-ink-muted)",
347
- }, children: [running ? _jsx("span", { "aria-hidden": "true", style: { width: 6, height: 6, borderRadius: 999, background: "var(--graview-accent)" } }) : null, recent.length > 0 ? recent.length : "", _jsxs("svg", { className: "graview-activity-mark", width: "15", height: "15", viewBox: "0 0 16 16", "aria-hidden": "true", focusable: "false", style: { display: "var(--graview-activity-mark, none)" }, children: [_jsx("circle", { cx: "8", cy: "8", r: "5.75", fill: "none", stroke: "currentColor", strokeWidth: "1.4" }), _jsx("path", { d: "M8 4.75 V8 L10.25 9.5", fill: "none", stroke: "currentColor", strokeWidth: "1.4", strokeLinecap: "round", strokeLinejoin: "round" })] }), _jsx("span", { className: "graview-activity-word", children: " Activity" })] }), !open && seat !== undefined ? (_jsx("div", { hidden: true, "data-testid": "agent-seat-seated", children: seat })) : null, open ? (
408
+ }, children: [running ? _jsx("span", { "aria-hidden": "true", style: { width: 6, height: 6, borderRadius: 999, background: "var(--graview-accent)" } }) : null, recent > 0 ? recent : "", _jsxs("svg", { className: "graview-activity-mark", width: "15", height: "15", viewBox: "0 0 16 16", "aria-hidden": "true", focusable: "false", style: { display: "var(--graview-activity-mark, none)" }, children: [_jsx("circle", { cx: "8", cy: "8", r: "5.75", fill: "none", stroke: "currentColor", strokeWidth: "1.4" }), _jsx("path", { d: "M8 4.75 V8 L10.25 9.5", fill: "none", stroke: "currentColor", strokeWidth: "1.4", strokeLinecap: "round", strokeLinejoin: "round" })] }), _jsx("span", { className: "graview-activity-word", children: " Activity" })] }), !open && seat !== undefined ? (_jsx("div", { hidden: true, "data-testid": "agent-seat-seated", children: seat })) : null, open ? (
348
409
  // A labeled region, not an aside: it opens from the bar, inside the banner (FR-40).
349
- _jsxs("section", { ...popover.pane, "aria-label": "Activity", "data-testid": "activity", "data-graview-offstage": "", style: {
410
+ _jsx("section", { ...popover.pane, "aria-label": "Activity", "data-testid": "activity", "data-graview-offstage": "", style: {
350
411
  ...POPOVER_STYLE,
351
412
  // Never wider than the page, and what it holds wraps rather than widening it (FR-226).
352
413
  width: "min(300px, calc(100vw - 16px))",
@@ -361,52 +422,6 @@ export function ActivityRail({ calls, seat, remembers = false, }) {
361
422
  border: "1px solid var(--graview-edge)",
362
423
  background: "var(--graview-float)",
363
424
  boxShadow: "var(--graview-lift-high)",
364
- }, children: [_jsx("h2", { style: { ...VISUALLY_HIDDEN, margin: 0 }, children: "Activity" }), seat !== undefined ? (_jsxs("div", { "data-testid": "agent-seat-row", style: {
365
- display: "grid",
366
- gap: 5,
367
- paddingBottom: calls.length > 0 || feed.length > 0 ? 9 : 0,
368
- ...(calls.length > 0 || feed.length > 0
369
- ? { borderBottom: "1px solid var(--graview-edge)" }
370
- : {}),
371
- }, children: [_jsx("span", { style: {
372
- fontSize: "0.75rem",
373
- letterSpacing: "0.14em",
374
- textTransform: "uppercase",
375
- color: "var(--graview-ink-faint)",
376
- }, children: "The agent's seat" }), seat] })) : null, calls.length > 0 ? (_jsx("ol", { style: { margin: 0, padding: 0, listStyle: "none", display: "grid", gap: 7 }, children: calls.slice(0, 6).map((call, index) => (_jsxs("li", { style: { ...ACTIVITY_ROW, gap: 2, fontSize: "0.8125rem" }, children: [_jsxs("div", { "data-graview-activity-head": "", style: ACTIVITY_HEAD, children: [_jsx("span", { "aria-hidden": "true", style: {
377
- width: 6,
378
- height: 6,
379
- borderRadius: 999,
380
- flex: "0 0 auto",
381
- background: call.phase === "running"
382
- ? "var(--graview-accent)"
383
- : call.phase === "failed"
384
- ? "var(--graview-warn)"
385
- : "var(--graview-edge-bright)",
386
- } }), _jsxs("span", { "data-graview-activity-words": "", style: { ...ACTIVITY_WORDS, color: "var(--graview-ink)" }, children: [call.mutating ? "changed" : "read", " \u00B7", " ", store.allMutations().find((mutation) => mutation.name === call.name)?.title ??
387
- humanizeField(call.name)] })] }), !call.mutating && call.reads && call.reads.length > 0 ? (_jsxs("div", { "data-testid": "activity-reads", style: { display: "flex", flexWrap: "wrap", gap: 4, paddingLeft: 12 }, children: [[...new Set(call.reads)].slice(0, 3).map((id) => (_jsx(NamedRecord, { id: id, label: nameOf(store, id), go: goes(id), testId: "activity-record" }, id))), new Set(call.reads).size > 3 ? _jsxs("span", { style: { color: "var(--graview-ink-muted)" }, children: ["+", new Set(call.reads).size - 3] }) : null] })) : Object.values(call.args).some((value) => typeof value === "string") ? (_jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 4, paddingLeft: 12 }, children: Object.entries(call.args)
388
- .filter((entry) => typeof entry[1] === "string")
389
- .slice(0, 3)
390
- .map(([name, value]) => (_jsx(NamedRecord, { id: value, label: nameOf(store, value), go: goes(value), testId: "activity-record" }, name))) })) : null, call.error ? (_jsx("div", { style: { paddingLeft: 12, color: "var(--graview-warn)" }, children: call.error })) : null] }, `${call.at}:${index}`))) })) : null, interactions.length > 0 ? (_jsx(Suspense, { fallback: null, children: _jsx(ActivityFilter, { shows: shows, onShows: setShows, mine: mine, onMine: setMine }) })) : null, feed.length > 0 ? (_jsx("ol", { "data-testid": "diff-log", style: {
391
- margin: 0,
392
- padding: 0,
393
- listStyle: "none",
394
- display: "grid",
395
- gap: 6,
396
- fontSize: "0.8125rem",
397
- }, children: feed.map(({ change, entry }, index) => entry !== undefined ? (_jsx(Suspense, { fallback: null, children: _jsx(InteractionRow, { entry: entry, undo: (batch) => _jsx(UndoTurn, { batch: batch }) }) }, `ai:${entry.id}`)) : change.digest ? (_jsx(DigestRow, { change: change, goes: goes }, `digest:${change.digest[0]?.batch ?? index}`)) : change.withheld ? (
398
- /* SOMETHING YOU CANNOT SEE HAPPENED: said, and nothing more — not who, not what, no undo (FR-16). */
399
- _jsx("li", { "data-testid": "withheld-change", style: ACTIVITY_ROW, children: _jsx("span", { "data-touched": "", style: { ...ACTIVITY_WORDS, color: "var(--graview-ink-muted)", fontStyle: "italic" }, children: change.intent }) }, `change:${index}`)) : (_jsxs("li", { "data-batch": change.batch, style: ACTIVITY_ROW, children: [_jsxs("div", { "data-graview-activity-head": "", style: ACTIVITY_HEAD, children: [_jsxs("span", { "data-graview-activity-words": "", style: ACTIVITY_WORDS, children: [_jsxs("strong", { style: { fontWeight: 600 }, children: [change.author === "human" && change.by?.onBehalfOf === undefined && (change.authorId === undefined || principal.id === undefined || change.authorId === principal.id)
400
- ? "you"
401
- : nameOfAuthor(change.by ?? { kind: change.author, id: change.authorId }, { graph: store.graph, schema: store.schema, seats, people }), viaSaid(change.via) ? _jsxs("span", { style: { fontWeight: 400, color: "var(--graview-ink-muted)" }, children: [", ", viaSaid(change.via)] }) : null] }), " ", _jsx("span", { style: { color: "var(--graview-ink-muted)" }, children: change.intent }), change.basis ? _jsxs("span", { "data-graview-lineage": "", style: { color: "var(--graview-ink-faint)" }, children: [" \u00B7 ", change.basis] }) : null] }), change.batch ? _jsx(ShowAsItWas, { seq: change.seq, intent: change.intent }) : null, change.batch ? _jsx(UndoTurn, { batch: change.batches && change.batches.length > 0 ? (change.batches.length === 1 ? change.batches[0] : change.batches) : change.batch }) : null] }), _jsx("div", { "data-touched": change.touched.join(" "), style: ACTIVITY_CHIPS, children: change.touched.slice(0, 4).map((id) => (_jsx(NamedRecord, { id: id, label: store.graph.has(id) ? nameOf(store, id) : (change.named?.[id] ?? nameOf(store, id)), go: goes(id), testId: "activity-record" }, id))) })] }, `change:${index}`))) })) : null, _jsx(NotifiedDoor, { style: { paddingTop: 8, borderTop: "1px solid var(--graview-edge)" } }), remembers ? (_jsxs("div", { "data-testid": "remembered", style: {
402
- display: "flex",
403
- alignItems: "baseline",
404
- justifyContent: "space-between",
405
- gap: 10,
406
- paddingTop: 8,
407
- borderTop: "1px solid var(--graview-edge)",
408
- fontSize: "0.8125rem",
409
- color: "var(--graview-ink-faint)",
410
- }, children: [_jsx("span", { children: "Remembered in this browser" }), _jsx(StartFresh, {})] })) : null] })) : null] }));
425
+ }, children: _jsx(ActivityFeed, { calls: calls, remembers: remembers, close: () => popover.setOpen(false), ...(seat !== undefined ? { seat } : {}) }) })) : null] }));
411
426
  }
412
427
  //# sourceMappingURL=activity.js.map