@opengeni/react-native 1.4.5-canary.37615713321001

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 (132) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +74 -0
  3. package/dist/adapters.d.ts +53 -0
  4. package/dist/adapters.js +3 -0
  5. package/dist/adapters.js.map +1 -0
  6. package/dist/attachments.d.ts +75 -0
  7. package/dist/chunk-3VSZAQ7G.js +391 -0
  8. package/dist/chunk-3VSZAQ7G.js.map +1 -0
  9. package/dist/chunk-5ZVK7WKA.js +88 -0
  10. package/dist/chunk-5ZVK7WKA.js.map +1 -0
  11. package/dist/chunk-EEDIMY3L.js +240 -0
  12. package/dist/chunk-EEDIMY3L.js.map +1 -0
  13. package/dist/chunk-M23SDI4R.js +83 -0
  14. package/dist/chunk-M23SDI4R.js.map +1 -0
  15. package/dist/chunk-PHJBSAR3.js +2006 -0
  16. package/dist/chunk-PHJBSAR3.js.map +1 -0
  17. package/dist/environment.d.ts +19 -0
  18. package/dist/expo.d.ts +25 -0
  19. package/dist/expo.js +267 -0
  20. package/dist/expo.js.map +1 -0
  21. package/dist/index.d.ts +13 -0
  22. package/dist/index.js +3345 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/presentation.d.ts +262 -0
  25. package/dist/read-acknowledgement.d.ts +39 -0
  26. package/dist/realtime/call-events.d.ts +11 -0
  27. package/dist/realtime/call-view.d.ts +26 -0
  28. package/dist/realtime/expo-call.d.ts +11 -0
  29. package/dist/realtime/native-call.d.ts +104 -0
  30. package/dist/realtime/native-realtime.d.ts +35 -0
  31. package/dist/realtime/use-native-session-realtime.d.ts +25 -0
  32. package/dist/session-view.d.ts +87 -0
  33. package/dist/timeline/activity.d.ts +34 -0
  34. package/dist/timeline/composer.d.ts +86 -0
  35. package/dist/timeline/controls.d.ts +27 -0
  36. package/dist/timeline/decisions.d.ts +29 -0
  37. package/dist/timeline/feedback.d.ts +26 -0
  38. package/dist/timeline/icon-nodes.generated.d.ts +738 -0
  39. package/dist/timeline/icon.d.ts +11 -0
  40. package/dist/timeline/index.d.ts +32 -0
  41. package/dist/timeline/index.js +5419 -0
  42. package/dist/timeline/index.js.map +1 -0
  43. package/dist/timeline/markdown.d.ts +11 -0
  44. package/dist/timeline/markdown.js +415 -0
  45. package/dist/timeline/markdown.js.map +1 -0
  46. package/dist/timeline/message-attachments.d.ts +13 -0
  47. package/dist/timeline/message-timeline.d.ts +36 -0
  48. package/dist/timeline/model-picker.d.ts +17 -0
  49. package/dist/timeline/primitives.d.ts +85 -0
  50. package/dist/timeline/queue-dock.d.ts +19 -0
  51. package/dist/timeline/session-actions.d.ts +34 -0
  52. package/dist/timeline/session-list.d.ts +50 -0
  53. package/dist/timeline/session-screen.d.ts +35 -0
  54. package/dist/timeline/session-signals.d.ts +37 -0
  55. package/dist/timeline/sheet.d.ts +14 -0
  56. package/dist/timeline/theme.d.ts +58 -0
  57. package/dist/timeline/thinking-orb.d.ts +13 -0
  58. package/dist/timeline/turn.d.ts +80 -0
  59. package/dist/ui/attention.d.ts +14 -0
  60. package/dist/ui/cards.d.ts +21 -0
  61. package/dist/ui/composer.d.ts +21 -0
  62. package/dist/ui/format.d.ts +13 -0
  63. package/dist/ui/icons.d.ts +9 -0
  64. package/dist/ui/index.d.ts +12 -0
  65. package/dist/ui/index.js +1757 -0
  66. package/dist/ui/index.js.map +1 -0
  67. package/dist/ui/steps-sheet.d.ts +10 -0
  68. package/dist/ui/theme.d.ts +63 -0
  69. package/dist/ui/timeline.d.ts +48 -0
  70. package/dist/ui/web-tokens.gen.d.ts +90 -0
  71. package/dist/use-native-session.d.ts +40 -0
  72. package/dist/view-model.d.ts +52 -0
  73. package/dist/voice-input.d.ts +102 -0
  74. package/dist/webrtc.d.ts +9 -0
  75. package/dist/webrtc.js +19 -0
  76. package/dist/webrtc.js.map +1 -0
  77. package/expo-module.config.json +7 -0
  78. package/ios/OpenGeniCall.podspec +22 -0
  79. package/ios/OpenGeniCallAppDelegateSubscriber.swift +29 -0
  80. package/ios/OpenGeniCallCenter.swift +189 -0
  81. package/ios/OpenGeniCallModule.swift +64 -0
  82. package/package.json +93 -0
  83. package/src/adapters.ts +150 -0
  84. package/src/attachments.ts +396 -0
  85. package/src/environment.tsx +214 -0
  86. package/src/expo.ts +295 -0
  87. package/src/index.ts +98 -0
  88. package/src/presentation.ts +285 -0
  89. package/src/read-acknowledgement.ts +72 -0
  90. package/src/realtime/call-events.ts +41 -0
  91. package/src/realtime/call-view.tsx +220 -0
  92. package/src/realtime/expo-call.ts +49 -0
  93. package/src/realtime/native-call.ts +266 -0
  94. package/src/realtime/native-realtime.ts +115 -0
  95. package/src/realtime/use-native-session-realtime.ts +29 -0
  96. package/src/session-view.tsx +2251 -0
  97. package/src/timeline/activity.tsx +736 -0
  98. package/src/timeline/composer.tsx +686 -0
  99. package/src/timeline/controls.tsx +151 -0
  100. package/src/timeline/decisions.tsx +651 -0
  101. package/src/timeline/feedback.tsx +251 -0
  102. package/src/timeline/icon-nodes.generated.ts +1830 -0
  103. package/src/timeline/icon.tsx +44 -0
  104. package/src/timeline/index.ts +67 -0
  105. package/src/timeline/markdown.tsx +510 -0
  106. package/src/timeline/message-attachments.tsx +155 -0
  107. package/src/timeline/message-timeline.tsx +1042 -0
  108. package/src/timeline/model-picker.tsx +450 -0
  109. package/src/timeline/primitives.tsx +561 -0
  110. package/src/timeline/queue-dock.tsx +331 -0
  111. package/src/timeline/session-actions.tsx +379 -0
  112. package/src/timeline/session-list.tsx +338 -0
  113. package/src/timeline/session-screen.tsx +488 -0
  114. package/src/timeline/session-signals.tsx +312 -0
  115. package/src/timeline/sheet.tsx +153 -0
  116. package/src/timeline/theme.tsx +128 -0
  117. package/src/timeline/thinking-orb.tsx +93 -0
  118. package/src/timeline/turn.tsx +569 -0
  119. package/src/ui/attention.tsx +220 -0
  120. package/src/ui/cards.tsx +267 -0
  121. package/src/ui/composer.tsx +296 -0
  122. package/src/ui/format.ts +86 -0
  123. package/src/ui/icons.tsx +131 -0
  124. package/src/ui/index.ts +18 -0
  125. package/src/ui/steps-sheet.tsx +71 -0
  126. package/src/ui/theme.ts +261 -0
  127. package/src/ui/timeline.tsx +837 -0
  128. package/src/ui/web-tokens.gen.ts +94 -0
  129. package/src/use-native-session.ts +219 -0
  130. package/src/view-model.ts +485 -0
  131. package/src/voice-input.ts +382 -0
  132. package/src/webrtc.ts +30 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/icons.tsx","../../src/ui/cards.tsx","../../src/ui/format.ts","../../src/ui/timeline.tsx","../../src/ui/steps-sheet.tsx","../../src/ui/attention.tsx","../../src/ui/composer.tsx","../../src/ui/theme.ts"],"names":["jsx","jsxs","toolDisplayName","Text","Fragment","View","useState","Pressable","StyleSheet","Animated","FadeInDown","LinearTransition","ScrollView","Platform"],"mappings":"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","file":"index.js","sourcesContent":["// Minimal stroke icon set (Lucide geometry, ISC) so the kit has no icon-font dependency.\nimport Svg, { Circle, Path, Polyline, Rect } from \"react-native-svg\";\n\nexport type AgentIconName =\n | \"terminal\"\n | \"search\"\n | \"edit\"\n | \"globe\"\n | \"check\"\n | \"x\"\n | \"chevron-right\"\n | \"chevron-down\"\n | \"sparkle\"\n | \"mic\"\n | \"plus\"\n | \"arrow-up\"\n | \"stop\"\n | \"tool\"\n | \"send\"\n | \"alert\"\n | \"question\"\n | \"rocket\";\n\nexport function AgentIcon({\n name,\n size = 18,\n color,\n strokeWidth = 2,\n}: {\n name: AgentIconName;\n size?: number;\n color: string;\n strokeWidth?: number;\n}) {\n const common = {\n stroke: color,\n strokeWidth,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n fill: \"none\",\n };\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\">\n {name === \"terminal\" ? (\n <>\n <Polyline points=\"4 17 10 11 4 5\" {...common} />\n <Path d=\"M 12 19h8\" {...common} />\n </>\n ) : null}\n {name === \"search\" ? (\n <>\n <Circle cx=\"11\" cy=\"11\" r=\"7\" {...common} />\n <Path d=\"m20 20-3.5-3.5\" {...common} />\n </>\n ) : null}\n {name === \"edit\" ? (\n <>\n <Path d=\"M 12 20h9\" {...common} />\n <Path d=\"M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4Z\" {...common} />\n </>\n ) : null}\n {name === \"globe\" ? (\n <>\n <Circle cx=\"12\" cy=\"12\" r=\"9\" {...common} />\n <Path d=\"M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18\" {...common} />\n </>\n ) : null}\n {name === \"check\" ? <Polyline points=\"20 6 9 17 4 12\" {...common} /> : null}\n {name === \"x\" ? <Path d=\"M18 6 6 18M6 6l12 12\" {...common} /> : null}\n {name === \"chevron-right\" ? <Polyline points=\"9 18 15 12 9 6\" {...common} /> : null}\n {name === \"chevron-down\" ? <Polyline points=\"6 9 12 15 18 9\" {...common} /> : null}\n {name === \"sparkle\" ? (\n <Path d=\"M 12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9Z\" {...common} />\n ) : null}\n {name === \"mic\" ? (\n <>\n <Rect x=\"9\" y=\"2\" width=\"6\" height=\"12\" rx=\"3\" {...common} />\n <Path d=\"M5 10a7 7 0 0 0 14 0M12 17v5\" {...common} />\n </>\n ) : null}\n {name === \"plus\" ? <Path d=\"M 12 5v14M5 12h14\" {...common} /> : null}\n {name === \"arrow-up\" ? <Path d=\"M 12 19V5M5 12l7-7 7 7\" {...common} /> : null}\n {name === \"stop\" ? <Rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\" fill={color} /> : null}\n {name === \"tool\" ? (\n <Path\n d=\"M14.7 6.3a4 4 0 0 0-5.4 5.4L3 18l3 3 6.3-6.3a4 4 0 0 0 5.4-5.4l-2.6 2.6-2.4-.6-.6-2.4Z\"\n {...common}\n />\n ) : null}\n {name === \"send\" ? <Path d=\"m22 2-7 20-4-9-9-4Z M22 2 11 13\" {...common} /> : null}\n {name === \"alert\" ? (\n <>\n <Path\n d=\"M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z\"\n {...common}\n />\n <Path d=\"M 12 9v4M12 17h.01\" {...common} />\n </>\n ) : null}\n {name === \"question\" ? (\n <>\n <Circle cx=\"12\" cy=\"12\" r=\"9\" {...common} />\n <Path d=\"M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3M12 17h.01\" {...common} />\n </>\n ) : null}\n {name === \"rocket\" ? (\n <>\n <Path\n d=\"M4.5 16.5c-1.5 1.3-2 5-2 5s3.7-.5 5-2c.7-.8.7-2.1-.1-2.9a2.2 2.2 0 0 0-2.9-.1Z\"\n {...common}\n />\n <Path\n d=\"m 12 15-3-3a22 22 0 0 1 2-4A13 13 0 0 1 22 2c0 2.7-.8 7.5-6 11a22 22 0 0 1-4 2Z\"\n {...common}\n />\n </>\n ) : null}\n </Svg>\n );\n}\n\n/** Category icon for a tool name (best effort, purely presentational). */\nexport function toolIconName(name: string): AgentIconName {\n const leaf = name.toLowerCase();\n if (/exec|command|shell|bash|terminal|run/.test(leaf)) return \"terminal\";\n if (/search|find|grep|list|query|read/.test(leaf)) return \"search\";\n if (/patch|edit|write|create|update|save/.test(leaf)) return \"edit\";\n if (/web|browse|fetch|http|url/.test(leaf)) return \"globe\";\n if (/deploy|release|ship/.test(leaf)) return \"rocket\";\n return \"tool\";\n}\n","import type { PendingApproval, PendingHumanInputRequest } from \"@opengeni/react/session\";\nimport { toolDisplayName } from \"@opengeni/react/session\";\nimport type { HumanInputAnswer } from \"@opengeni/sdk\";\nimport { useState } from \"react\";\nimport { Pressable, StyleSheet, Text, View } from \"react-native\";\nimport { AgentIcon } from \"./icons\";\nimport type { AgentTheme } from \"./theme\";\n\nfunction argumentRows(args: unknown): [string, string][] {\n if (!args || typeof args !== \"object\") return [];\n return Object.entries(args as Record<string, unknown>)\n .slice(0, 4)\n .map(([key, value]) => [key, typeof value === \"string\" ? value : JSON.stringify(value)]);\n}\n\nexport function ActionButton(props: {\n label: string;\n onPress(): void;\n theme: AgentTheme;\n variant: \"primary\" | \"secondary\" | \"danger\";\n disabled?: boolean;\n flex?: boolean;\n}) {\n const { theme, variant } = props;\n const primary = variant === \"primary\";\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: !!props.disabled }}\n disabled={props.disabled}\n onPress={props.onPress}\n style={({ pressed }) => ({\n flex: props.flex ? 1 : undefined,\n minHeight: theme.layout.target,\n paddingHorizontal: 18,\n borderRadius: theme.radius.control,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: primary ? theme.colors.accent : \"transparent\",\n borderWidth: primary ? 0 : StyleSheet.hairlineWidth * 2,\n borderColor: variant === \"danger\" ? theme.colors.danger : theme.colors.border,\n opacity: props.disabled ? 0.4 : pressed ? 0.75 : 1,\n })}\n >\n <Text\n style={{\n color: primary\n ? theme.colors.onAccent\n : variant === \"danger\"\n ? theme.colors.danger\n : theme.colors.text,\n fontSize: theme.type.body - 1,\n fontWeight: theme.type.weightStrong,\n }}\n >\n {props.label}\n </Text>\n </Pressable>\n );\n}\n\nfunction CardShell(props: {\n theme: AgentTheme;\n icon: \"alert\" | \"question\";\n eyebrow: string;\n title: string;\n children: React.ReactNode;\n}) {\n const { theme } = props;\n return (\n <View\n style={{\n marginVertical: theme.space.row,\n borderRadius: theme.radius.card,\n backgroundColor: theme.colors.surfaceRaised,\n borderWidth: StyleSheet.hairlineWidth * 2,\n borderColor: theme.colors.attention,\n padding: 16,\n gap: 12,\n shadowColor: \"#000\",\n shadowOpacity: theme.scheme === \"light\" ? 0.06 : 0,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 4 },\n }}\n >\n <View style={{ flexDirection: \"row\", alignItems: \"center\", gap: 8 }}>\n <AgentIcon color={theme.colors.attention} name={props.icon} size={16} />\n <Text\n style={{\n color: theme.colors.attention,\n fontSize: theme.type.small,\n fontWeight: \"600\",\n letterSpacing: 0.2,\n }}\n >\n {props.eyebrow}\n </Text>\n </View>\n <Text\n style={{\n color: theme.colors.text,\n fontSize: theme.type.body + 1,\n lineHeight: theme.type.bodyLine + 1,\n fontWeight: theme.type.weightStrong,\n }}\n >\n {props.title}\n </Text>\n {props.children}\n </View>\n );\n}\n\nexport function ApprovalCard(props: {\n approval: PendingApproval;\n theme: AgentTheme;\n onDecision(decision: \"approve\" | \"reject\"): void;\n}) {\n const { approval, theme } = props;\n const rows = argumentRows(approval.arguments);\n return (\n <CardShell\n eyebrow=\"Needs your approval\"\n icon=\"alert\"\n theme={theme}\n title={toolDisplayName(approval.name, approval.display)}\n >\n {rows.length ? (\n <View\n style={{\n borderRadius: theme.radius.control,\n backgroundColor: theme.colors.codeBackground,\n padding: 10,\n gap: 4,\n }}\n >\n {rows.map(([key, value]) => (\n <View key={key} style={{ flexDirection: \"row\", gap: 8 }}>\n <Text\n style={{\n color: theme.colors.textFaint,\n fontSize: theme.type.small,\n fontFamily: theme.type.mono,\n }}\n >\n {key}\n </Text>\n <Text\n numberOfLines={2}\n style={{\n flex: 1,\n color: theme.colors.text,\n fontSize: theme.type.small,\n fontFamily: theme.type.mono,\n }}\n >\n {value}\n </Text>\n </View>\n ))}\n </View>\n ) : null}\n <View style={{ flexDirection: \"row\", gap: 10 }}>\n <ActionButton\n flex\n label=\"Deny\"\n onPress={() => props.onDecision(\"reject\")}\n theme={theme}\n variant=\"secondary\"\n />\n <ActionButton\n flex\n label=\"Approve\"\n onPress={() => props.onDecision(\"approve\")}\n theme={theme}\n variant=\"primary\"\n />\n </View>\n </CardShell>\n );\n}\n\nexport function QuestionCard(props: {\n request: PendingHumanInputRequest;\n theme: AgentTheme;\n onAnswer(answers: HumanInputAnswer[] | null): void;\n}) {\n const { request, theme } = props;\n const question = request.questions[0];\n const [selected, setSelected] = useState<string[]>([]);\n if (!question) return null;\n const multi = question.kind === \"multi_select\";\n const toggle = (id: string) =>\n setSelected((current) =>\n multi\n ? current.includes(id)\n ? current.filter((value) => value !== id)\n : [...current, id]\n : [id],\n );\n return (\n <CardShell eyebrow=\"Question for you\" icon=\"question\" theme={theme} title={question.prompt}>\n <View style={{ gap: 8 }}>\n {question.options.map((option) => {\n const active = selected.includes(option.id);\n return (\n <Pressable\n accessibilityRole={multi ? \"checkbox\" : \"radio\"}\n accessibilityState={{ checked: active }}\n key={option.id}\n onPress={() => toggle(option.id)}\n style={{\n minHeight: theme.layout.target,\n borderRadius: theme.radius.control,\n borderWidth: active ? 2 : StyleSheet.hairlineWidth * 2,\n borderColor: active ? theme.colors.accent : theme.colors.border,\n paddingHorizontal: 14,\n paddingVertical: 10,\n justifyContent: \"center\",\n }}\n >\n <Text\n style={{\n color: theme.colors.text,\n fontSize: theme.type.body - 1,\n fontWeight: \"500\",\n }}\n >\n {option.label}\n </Text>\n {option.description ? (\n <Text\n style={{\n color: theme.colors.textMuted,\n fontSize: theme.type.small,\n marginTop: 2,\n }}\n >\n {option.description}\n </Text>\n ) : null}\n </Pressable>\n );\n })}\n </View>\n <View style={{ flexDirection: \"row\", gap: 10 }}>\n {request.allowSkip ? (\n <ActionButton\n flex\n label=\"Skip\"\n onPress={() => props.onAnswer(null)}\n theme={theme}\n variant=\"secondary\"\n />\n ) : null}\n <ActionButton\n disabled={selected.length === 0}\n flex\n label=\"Send answer\"\n onPress={() => props.onAnswer([{ questionId: question.id, values: selected }])}\n theme={theme}\n variant=\"primary\"\n />\n </View>\n </CardShell>\n );\n}\n","import type { ActivityItem, TimelineGroup, ToolCallItem } from \"@opengeni/react/session\";\nimport { toolDisplayName } from \"@opengeni/react/session\";\n\nexport function toolTitle(item: ToolCallItem): string {\n return toolDisplayName(item.name, item.display);\n}\n\nfunction firstString(record: Record<string, unknown>, keys: string[]): string | null {\n for (const key of keys) {\n const value = record[key];\n if (typeof value === \"string\" && value.trim()) return value.trim();\n }\n return null;\n}\n\n/** One-line human summary of a tool call's input. */\nexport function toolDetail(item: ToolCallItem): string | null {\n const args = item.arguments;\n if (typeof args === \"string\") return args.split(\"\\n\")[0] ?? null;\n if (!args || typeof args !== \"object\") return null;\n const record = args as Record<string, unknown>;\n const known = firstString(record, [\n \"cmd\",\n \"command\",\n \"query\",\n \"q\",\n \"path\",\n \"url\",\n \"title\",\n \"id\",\n \"name\",\n ]);\n if (known) return known;\n const pairs = Object.entries(record)\n .filter(([, value]) => value !== null && value !== undefined && value !== \"\")\n .slice(0, 3)\n .map(\n ([key, value]) =>\n `${key.replace(/[_-]+/g, \" \")}: ${typeof value === \"string\" ? value : JSON.stringify(value)}`,\n );\n if (pairs.length === 0) return null;\n const text = pairs.join(\" · \");\n return text.length > 110 ? `${text.slice(0, 109)}…` : text;\n}\n\n/** Short preview of a settled tool output. */\nexport function toolOutputPreview(item: ToolCallItem, lines = 2): string | null {\n const output = item.output;\n const text =\n typeof output === \"string\"\n ? output\n : output &&\n typeof output === \"object\" &&\n typeof (output as { text?: unknown }).text === \"string\"\n ? String((output as { text: string }).text)\n : output == null\n ? null\n : JSON.stringify(output);\n if (!text) return null;\n return text.split(\"\\n\").slice(0, lines).join(\"\\n\");\n}\n\nexport function formatDuration(ms: number): string {\n if (!Number.isFinite(ms) || ms < 1000) return \"\";\n const seconds = Math.round(ms / 1000);\n if (seconds < 60) return `${seconds}s`;\n const minutes = Math.floor(seconds / 60);\n const rest = seconds % 60;\n return rest ? `${minutes}m ${rest}s` : `${minutes}m`;\n}\n\nexport function itemTime(item: { occurredAt?: string }): number {\n return item.occurredAt ? Date.parse(item.occurredAt) : Number.NaN;\n}\n\n/** Flatten nested work details of a group into its activity items, in order. */\nexport function activityItemsOf(group: TimelineGroup): ActivityItem[] {\n if (group.kind === \"item\") return [];\n if (group.kind === \"turn\") return group.groups.flatMap(activityItemsOf);\n const nested = group.work?.details.flatMap(activityItemsOf) ?? [];\n return nested.length > 0 ? nested : group.items;\n}\n\nexport function toolCallsOf(items: readonly ActivityItem[]): ToolCallItem[] {\n return items.filter((item): item is ToolCallItem => item.kind === \"tool-call\");\n}\n","import type {\n ActivityItem,\n AgentMessageItem,\n PendingApproval,\n PendingHumanInputRequest,\n TimelineGroup,\n TimelineItem,\n ToolCallItem,\n} from \"@opengeni/react/session\";\nimport type { HumanInputAnswer } from \"@opengeni/sdk\";\nimport { type ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { FlatList, Pressable, StyleSheet, Text, View } from \"react-native\";\nimport Animated, {\n FadeIn,\n FadeInDown,\n LinearTransition,\n useAnimatedStyle,\n useSharedValue,\n withRepeat,\n withTiming,\n} from \"react-native-reanimated\";\nimport { ApprovalCard, QuestionCard } from \"./cards\";\nimport {\n activityItemsOf,\n formatDuration,\n itemTime,\n toolCallsOf,\n toolDetail,\n toolOutputPreview,\n toolTitle,\n} from \"./format\";\nimport { AgentIcon, toolIconName } from \"./icons\";\nimport type { AgentTheme } from \"./theme\";\n\nexport type MarkdownRenderer = (text: string, theme: AgentTheme) => ReactNode;\n\nexport interface AgentTimelineProps {\n groups: readonly TimelineGroup[];\n theme: AgentTheme;\n running: boolean;\n approvals?: readonly PendingApproval[] | undefined;\n humanInput?: readonly PendingHumanInputRequest[] | undefined;\n onApproval?: ((approvalId: string, decision: \"approve\" | \"reject\") => void) | undefined;\n onAnswer?: ((requestId: string, answers: HumanInputAnswer[] | null) => void) | undefined;\n /**\n * Where pending approvals and questions render. `tray`: the host renders\n * `AgentAttentionTray` above its composer and the timeline only marks the wait.\n */\n attentionPlacement?: \"inline\" | \"tray\";\n /** Open a full step view (e.g. `AgentStepsSheet`) instead of expanding work in place. */\n onOpenSteps?: ((steps: ActivityItem[], title: string) => void) | undefined;\n renderMarkdown?: MarkdownRenderer | undefined;\n /** Host display name for the agent. */\n agentName?: string | undefined;\n agentMark?: ReactNode | undefined;\n contentInsetTop?: number | undefined;\n contentInsetBottom?: number | undefined;\n emptyState?: ReactNode | undefined;\n}\n\ntype Row =\n | { key: string; kind: \"group\"; group: TimelineGroup; live: boolean; failed: boolean }\n | { key: string; kind: \"working\" }\n | { key: string; kind: \"approval\"; approval: PendingApproval }\n | { key: string; kind: \"question\"; request: PendingHumanInputRequest };\n\nconst plainMarkdown: MarkdownRenderer = (text, theme) => (\n <Text\n style={{ color: theme.colors.text, fontSize: theme.type.body, lineHeight: theme.type.bodyLine }}\n >\n {text}\n </Text>\n);\n\nfunction groupTurnId(group: TimelineGroup): string | null {\n if (group.kind === \"item\")\n return \"turnId\" in group.item\n ? ((group.item as { turnId?: string | null }).turnId ?? null)\n : null;\n const first = activityItemsOf(group)[0] as { turnId?: string | null } | undefined;\n return first?.turnId ?? null;\n}\n\n/**\n * Within one turn, show the work summary before that turn's assistant prose: work happens\n * first and the answer reads as its conclusion (the projection lists prose first).\n */\nexport function orderWorkBeforeProse(groups: readonly TimelineGroup[]): TimelineGroup[] {\n const out = [...groups];\n for (let index = 1; index < out.length; index += 1) {\n const group = out[index]!;\n if (group.kind === \"item\") continue;\n const turnId = groupTurnId(group);\n if (!turnId) continue;\n let start = index;\n while (start > 0) {\n const previous = out[start - 1]!;\n if (\n previous.kind !== \"item\" ||\n previous.item.kind !== \"agent-message\" ||\n groupTurnId(previous) !== turnId\n )\n break;\n start -= 1;\n }\n if (start < index) {\n out.splice(index, 1);\n out.splice(start, 0, group);\n }\n }\n return out;\n}\n\nexport function AgentTimeline(props: AgentTimelineProps) {\n const { theme, running } = props;\n const groups = useMemo(() => orderWorkBeforeProse(props.groups), [props.groups]);\n const rows = useMemo<Row[]>(() => {\n // The live turn is the newest turn in the log; its work block stays live while running.\n let liveTurnId: string | null = null;\n for (let index = groups.length - 1; index >= 0 && !liveTurnId; index -= 1)\n liveTurnId = groupTurnId(groups[index]!);\n const isLive = (group: TimelineGroup) =>\n running && group.kind !== \"item\" && groupTurnId(group) === liveTurnId;\n const failedTurns = new Set(\n groups.flatMap((group) =>\n group.kind === \"item\" &&\n group.item.kind === \"turn-end\" &&\n group.item.outcome === \"failed\" &&\n group.item.turnId\n ? [group.item.turnId]\n : [],\n ),\n );\n const out: Row[] = groups.map((group, index) => ({\n key: groupKey(group, index),\n kind: \"group\",\n group,\n live: isLive(group),\n failed:\n group.kind !== \"item\" &&\n (group.outcome === \"failed\" || failedTurns.has(groupTurnId(group) ?? \"\")),\n }));\n const needsYou = (props.approvals?.length ?? 0) > 0 || (props.humanInput?.length ?? 0) > 0;\n if (running && !needsYou && !groups.some(isLive)) out.push({ key: \"working\", kind: \"working\" });\n if (props.attentionPlacement !== \"tray\") {\n for (const approval of props.approvals ?? [])\n out.push({ key: `approval:${approval.id}`, kind: \"approval\", approval });\n for (const request of props.humanInput ?? [])\n out.push({ key: `question:${request.id}`, kind: \"question\", request });\n }\n return out;\n }, [groups, running, props.approvals, props.humanInput, props.attentionPlacement]);\n\n return (\n <FlatList\n contentContainerStyle={{\n paddingTop: props.contentInsetTop ?? 12,\n paddingBottom: props.contentInsetBottom ?? 24,\n paddingHorizontal: theme.space.gutter,\n flexGrow: 1,\n }}\n data={rows}\n keyboardDismissMode=\"interactive\"\n keyboardShouldPersistTaps=\"handled\"\n keyExtractor={(row) => row.key}\n ListEmptyComponent={props.emptyState ? <>{props.emptyState}</> : undefined}\n renderItem={({ item: row }) => (\n <Animated.View entering={FadeInDown.duration(220)} layout={LinearTransition.duration(180)}>\n <TimelineRow {...props} groups={groups} row={row} />\n </Animated.View>\n )}\n style={{ backgroundColor: theme.colors.background }}\n />\n );\n}\n\nfunction groupKey(group: TimelineGroup, index: number): string {\n if (group.kind === \"item\") {\n const item = group.item as TimelineItem & { reconciliationKey?: string };\n return item.reconciliationKey ?? item.id ?? `item:${index}`;\n }\n return `${group.kind}:${group.id}`;\n}\n\nfunction TimelineRow(props: AgentTimelineProps & { row: Row }) {\n const { row, theme } = props;\n if (row.kind === \"working\") return <WorkingLine theme={theme} label=\"Thinking\" />;\n if (row.kind === \"approval\") {\n return (\n <ApprovalCard\n approval={row.approval}\n theme={theme}\n onDecision={(decision) => props.onApproval?.(row.approval.id, decision)}\n />\n );\n }\n if (row.kind === \"question\") {\n return (\n <QuestionCard\n request={row.request}\n theme={theme}\n onAnswer={(answers) => props.onAnswer?.(row.request.id, answers)}\n />\n );\n }\n const group = row.group;\n if (group.kind === \"item\") return <ItemRow item={group.item} {...props} />;\n const waiting = (props.approvals?.length ?? 0) > 0 || (props.humanInput?.length ?? 0) > 0;\n return (\n <WorkBlock\n failed={row.failed}\n group={group}\n live={row.live}\n waiting={row.live && waiting}\n {...props}\n />\n );\n}\n\nfunction ItemRow(props: AgentTimelineProps & { item: TimelineItem }) {\n const { item, theme } = props;\n const render = props.renderMarkdown ?? plainMarkdown;\n switch (item.kind) {\n case \"user-message\":\n return <UserMessage text={item.text} theme={theme} />;\n case \"agent-message\":\n return <AssistantMessage item={item} render={render} theme={theme} />;\n case \"turn-end\":\n return item.outcome === \"failed\" && item.failureText ? (\n <Notice theme={theme} tone=\"danger\" text={item.failureText} />\n ) : null;\n default:\n return null;\n }\n}\n\nexport function UserMessage({ text, theme }: { text: string; theme: AgentTheme }) {\n return (\n <View\n style={{ alignItems: \"flex-end\", marginTop: theme.space.turn, marginBottom: theme.space.row }}\n >\n <View\n style={{\n maxWidth: \"86%\",\n backgroundColor: theme.colors.userBubble,\n borderRadius: theme.radius.bubble,\n paddingHorizontal: theme.type.body,\n paddingVertical: theme.type.body * 0.6,\n }}\n >\n <Text\n selectable\n style={{\n color: theme.colors.onUserBubble,\n fontSize: theme.type.body,\n lineHeight: theme.type.bodyLine,\n }}\n >\n {text}\n </Text>\n </View>\n </View>\n );\n}\n\nfunction AssistantMessage({\n item,\n render,\n theme,\n}: {\n item: AgentMessageItem;\n render: MarkdownRenderer;\n theme: AgentTheme;\n}) {\n if (!item.text.trim()) return null;\n const commentary = item.phase === \"commentary\";\n return (\n <View style={{ marginVertical: theme.space.row, opacity: commentary ? 0.82 : 1 }}>\n {render(item.text, theme)}\n </View>\n );\n}\n\nfunction Notice({\n theme,\n tone,\n text,\n}: {\n theme: AgentTheme;\n tone: \"danger\" | \"muted\";\n text: string;\n}) {\n const danger = tone === \"danger\";\n return (\n <View\n style={{\n flexDirection: \"row\",\n gap: 10,\n alignItems: \"flex-start\",\n marginVertical: theme.space.row,\n padding: 12,\n borderRadius: theme.radius.card,\n backgroundColor: danger ? theme.colors.dangerSurface : theme.colors.surface,\n }}\n >\n <AgentIcon\n color={danger ? theme.colors.danger : theme.colors.textMuted}\n name=\"alert\"\n size={18}\n />\n <Text\n style={{\n flex: 1,\n color: danger ? theme.colors.danger : theme.colors.textMuted,\n fontSize: theme.type.small,\n lineHeight: theme.type.smallLine,\n }}\n >\n {text}\n </Text>\n </View>\n );\n}\n\n/* ------------------------------------------------------------------------------------------ */\n/* Agent work */\n/* ------------------------------------------------------------------------------------------ */\n\nfunction WorkBlock(\n props: AgentTimelineProps & {\n group: Exclude<TimelineGroup, { kind: \"item\" }>;\n live: boolean;\n waiting: boolean;\n failed: boolean;\n },\n) {\n const { group, theme, live, waiting, failed } = props;\n const items = activityItemsOf(group);\n const prose =\n group.kind === \"activity\"\n ? group.items.filter((item): item is AgentMessageItem => item.kind === \"agent-message\")\n : [];\n const steps = items.filter(\n (item) => item.kind === \"tool-call\" || item.kind === \"reasoning\" || item.kind === \"worker\",\n );\n const tools = toolCallsOf(items);\n const outcome = group.outcome;\n const failureText = group.failureText;\n const started = group.kind === \"turn\" ? Date.parse(group.startedAt) : itemTime(items[0] ?? {});\n const ended =\n group.kind === \"turn\" ? Date.parse(group.endedAt) : itemTime(items[items.length - 1] ?? {});\n const duration = formatDuration(ended - started);\n const running = live && !outcome;\n const current =\n running && !waiting\n ? [...tools].reverse().find((tool) => tool.status === \"running\")\n : undefined;\n const render = props.renderMarkdown ?? plainMarkdown;\n\n const work =\n steps.length === 0 ? null : theme.layout.activity === \"rail\" ? (\n <RailSteps items={steps} theme={theme} waiting={waiting} />\n ) : theme.layout.activity === \"cards\" ? (\n <CardSteps\n current={current}\n duration={duration}\n failed={failed}\n items={steps}\n onOpen={props.onOpenSteps}\n running={running}\n theme={theme}\n toolCount={tools.length}\n waiting={waiting}\n />\n ) : (\n <FoldSteps\n current={current}\n duration={duration}\n failed={failed}\n items={steps}\n onOpen={props.onOpenSteps}\n running={running}\n theme={theme}\n toolCount={tools.length}\n waiting={waiting}\n />\n );\n\n return (\n <View style={{ marginVertical: theme.space.row }}>\n {work}\n {prose.map((item) => (\n <View key={item.id} style={{ marginTop: theme.space.row }}>\n {render(item.text, theme)}\n </View>\n ))}\n {outcome === \"failed\" && failureText ? (\n <Notice text={failureText} theme={theme} tone=\"danger\" />\n ) : null}\n </View>\n );\n}\n\nfunction stepLabel(item: ActivityItem): string {\n if (item.kind === \"tool-call\") return toolTitle(item);\n if (item.kind === \"reasoning\") return \"Thought\";\n if (item.kind === \"worker\") return \"Worker\";\n return \"Step\";\n}\n\nconst LIVE_VERBS: Partial<Record<ReturnType<typeof toolIconName>, string>> = {\n terminal: \"Running\",\n search: \"Searching\",\n edit: \"Editing\",\n globe: \"Browsing\",\n rocket: \"Deploying\",\n};\n\n/** Present-tense description of a running tool (\"Running bun test\"). */\nfunction liveLabel(tool: ToolCallItem): string {\n const verb = LIVE_VERBS[toolIconName(tool.name)];\n const detail = toolDetail(tool);\n if (!verb) return detail ? `${toolTitle(tool)} · ${detail}` : toolTitle(tool);\n return detail ? `${verb} ${detail}` : verb;\n}\n\nfunction StatusDot({\n item,\n theme,\n size = 8,\n waiting,\n}: {\n item: ActivityItem;\n theme: AgentTheme;\n size?: number;\n waiting?: boolean;\n}) {\n const status = item.kind === \"tool-call\" ? item.status : \"complete\";\n const color =\n status === \"failed\"\n ? theme.colors.danger\n : status === \"running\"\n ? waiting\n ? theme.colors.attention\n : theme.colors.accent\n : theme.colors.textFaint;\n return (\n <View style={{ width: size, height: size, borderRadius: size / 2, backgroundColor: color }} />\n );\n}\n\n/** Calm: one quiet line; tap to reveal the steps. */\ntype StepSummaryProps = {\n items: ActivityItem[];\n theme: AgentTheme;\n running: boolean;\n waiting: boolean;\n failed: boolean;\n duration: string;\n toolCount: number;\n current?: ToolCallItem | undefined;\n onOpen?: ((steps: ActivityItem[], title: string) => void) | undefined;\n};\n\nfunction FoldSteps(props: StepSummaryProps) {\n const { theme, running } = props;\n const [open, setOpen] = useState(false);\n const steps = props.toolCount\n ? `${props.toolCount} ${props.toolCount === 1 ? \"step\" : \"steps\"}`\n : \"\";\n const label = props.waiting\n ? \"Waiting for you\"\n : running\n ? props.current\n ? liveLabel(props.current)\n : \"Working\"\n : props.failed\n ? `Stopped${steps ? ` after ${steps}` : \"\"}`\n : [props.duration ? `Worked for ${props.duration}` : \"Worked\", steps]\n .filter(Boolean)\n .join(\" · \");\n return (\n <View>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ expanded: open }}\n hitSlop={8}\n onPress={() =>\n props.onOpen ? props.onOpen(props.items, label) : setOpen((value) => !value)\n }\n style={{ flexDirection: \"row\", alignItems: \"center\", gap: 6, minHeight: 32 }}\n >\n {props.waiting ? (\n <View\n style={{\n width: 8,\n height: 8,\n borderRadius: 4,\n backgroundColor: theme.colors.attention,\n }}\n />\n ) : running ? (\n <Pulse theme={theme} />\n ) : null}\n <Text\n numberOfLines={1}\n style={{\n flexShrink: 1,\n color: props.waiting ? theme.colors.attention : theme.colors.textMuted,\n fontSize: theme.type.small + 1,\n }}\n >\n {label}\n </Text>\n <AgentIcon\n color={theme.colors.textFaint}\n name={open ? \"chevron-down\" : \"chevron-right\"}\n size={14}\n />\n </Pressable>\n {open ? (\n <Animated.View\n entering={FadeIn.duration(160)}\n style={{ marginTop: 4, marginLeft: 2, gap: 10, paddingVertical: 4 }}\n >\n {props.items.map((item) => (\n <CompactStep item={item} key={item.id} theme={theme} />\n ))}\n </Animated.View>\n ) : null}\n </View>\n );\n}\n\nfunction CompactStep({ item, theme }: { item: ActivityItem; theme: AgentTheme }) {\n const detail =\n item.kind === \"tool-call\" ? toolDetail(item) : item.kind === \"reasoning\" ? item.text : null;\n return (\n <View style={{ flexDirection: \"row\", gap: 10 }}>\n <View style={{ paddingTop: 2 }}>\n <AgentIcon\n color={theme.colors.textFaint}\n name={item.kind === \"tool-call\" ? toolIconName(item.name) : \"sparkle\"}\n size={15}\n />\n </View>\n <View style={{ flex: 1 }}>\n <Text\n style={{\n color: theme.colors.text,\n fontSize: theme.type.small,\n lineHeight: theme.type.smallLine,\n }}\n >\n {stepLabel(item)}\n </Text>\n {detail ? (\n <Text\n numberOfLines={2}\n style={{\n color: theme.colors.textMuted,\n fontSize: theme.type.small,\n lineHeight: theme.type.smallLine,\n }}\n >\n {detail}\n </Text>\n ) : null}\n </View>\n </View>\n );\n}\n\n/** Workbench: always-visible rail with status dots, monospace input and output preview. */\nexport function AgentStepList(props: {\n items: readonly ActivityItem[];\n theme: AgentTheme;\n waiting?: boolean;\n}) {\n return <RailSteps items={props.items} theme={props.theme} waiting={props.waiting ?? false} />;\n}\n\nfunction RailSteps({\n items,\n theme,\n waiting,\n}: {\n items: readonly ActivityItem[];\n theme: AgentTheme;\n waiting: boolean;\n}) {\n return (\n <View style={{ paddingLeft: 4 }}>\n {items.map((item, index) => {\n const detail = item.kind === \"tool-call\" ? toolDetail(item) : null;\n const output =\n item.kind === \"tool-call\" && item.status !== \"running\" ? toolOutputPreview(item) : null;\n const reasoning = item.kind === \"reasoning\" ? item.text : null;\n const last = index === items.length - 1;\n return (\n <View key={item.id} style={{ flexDirection: \"row\", gap: 12 }}>\n <View style={{ alignItems: \"center\", width: 10 }}>\n <View style={{ height: 6 }} />\n <StatusDot item={item} theme={theme} waiting={waiting} />\n {last ? null : (\n <View\n style={{\n flex: 1,\n width: StyleSheet.hairlineWidth * 2,\n backgroundColor: theme.colors.rail,\n marginTop: 4,\n }}\n />\n )}\n </View>\n <View style={{ flex: 1, paddingBottom: last ? 0 : 14 }}>\n <View style={{ flexDirection: \"row\", alignItems: \"center\", gap: 6 }}>\n <AgentIcon\n color={theme.colors.textMuted}\n name={item.kind === \"tool-call\" ? toolIconName(item.name) : \"sparkle\"}\n size={14}\n />\n <Text\n style={{\n color: theme.colors.text,\n fontSize: theme.type.small + 1,\n fontWeight: \"500\",\n }}\n >\n {stepLabel(item)}\n </Text>\n {item.kind === \"tool-call\" && item.status === \"running\" ? (\n waiting ? (\n <Text\n style={{\n color: theme.colors.attention,\n fontSize: theme.type.small,\n fontWeight: \"600\",\n }}\n >\n Waiting for you\n </Text>\n ) : (\n <Pulse theme={theme} />\n )\n ) : null}\n </View>\n {detail ? (\n <Text\n numberOfLines={1}\n style={{\n marginTop: 3,\n color: theme.colors.textMuted,\n fontFamily: theme.type.mono,\n fontSize: theme.type.small - 0.5,\n }}\n >\n {detail}\n </Text>\n ) : null}\n {reasoning ? (\n <Text\n numberOfLines={3}\n style={{\n marginTop: 3,\n color: theme.colors.textMuted,\n fontSize: theme.type.small,\n lineHeight: theme.type.smallLine,\n fontStyle: \"italic\",\n }}\n >\n {reasoning}\n </Text>\n ) : null}\n {output ? (\n <View\n style={{\n marginTop: 6,\n padding: 8,\n borderRadius: theme.radius.control,\n backgroundColor: theme.colors.codeBackground,\n }}\n >\n <Text\n numberOfLines={3}\n style={{\n color: theme.colors.textMuted,\n fontFamily: theme.type.mono,\n fontSize: theme.type.small - 1,\n lineHeight: theme.type.smallLine - 1,\n }}\n >\n {output}\n </Text>\n </View>\n ) : null}\n </View>\n </View>\n );\n })}\n </View>\n );\n}\n\n/** Field: one bold card stating what is happening now, steps on demand. */\nfunction CardSteps(props: StepSummaryProps) {\n const { theme, running } = props;\n const [open, setOpen] = useState(false);\n const headline = props.waiting\n ? \"Waiting for you\"\n : running\n ? props.current\n ? (LIVE_VERBS[toolIconName(props.current.name)] ?? toolTitle(props.current))\n : \"Working on it\"\n : props.failed\n ? \"Couldn't finish\"\n : `Done · ${props.toolCount} ${props.toolCount === 1 ? \"step\" : \"steps\"}`;\n const sub = props.waiting\n ? \"Answer below to continue\"\n : running\n ? props.current\n ? toolDetail(props.current)\n : null\n : props.duration\n ? `Took ${props.duration}`\n : null;\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ expanded: open }}\n onPress={() =>\n props.onOpen ? props.onOpen(props.items, headline) : setOpen((value) => !value)\n }\n style={{\n borderRadius: theme.radius.card,\n backgroundColor: theme.colors.surface,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.colors.border,\n padding: 16,\n minHeight: theme.layout.target,\n }}\n >\n <View style={{ flexDirection: \"row\", alignItems: \"center\", gap: 12 }}>\n <View\n style={{\n width: 36,\n height: 36,\n borderRadius: 18,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: props.waiting\n ? theme.colors.attention\n : running\n ? theme.colors.accent\n : props.failed\n ? theme.colors.dangerSurface\n : theme.colors.background,\n }}\n >\n {props.waiting ? (\n <AgentIcon color={theme.colors.onAccent} name=\"alert\" size={18} />\n ) : running ? (\n <Pulse color={theme.colors.onAccent} theme={theme} />\n ) : props.failed ? (\n <AgentIcon color={theme.colors.danger} name=\"x\" size={18} strokeWidth={2.5} />\n ) : (\n <AgentIcon color={theme.colors.success} name=\"check\" size={18} strokeWidth={2.5} />\n )}\n </View>\n <View style={{ flex: 1 }}>\n <Text\n style={{\n color: theme.colors.text,\n fontSize: theme.type.body,\n fontWeight: theme.type.weightStrong,\n }}\n >\n {headline}\n </Text>\n {sub ? (\n <Text\n numberOfLines={1}\n style={{ color: theme.colors.textMuted, fontSize: theme.type.small, marginTop: 2 }}\n >\n {sub}\n </Text>\n ) : null}\n </View>\n <AgentIcon\n color={theme.colors.textFaint}\n name={open ? \"chevron-down\" : \"chevron-right\"}\n size={20}\n />\n </View>\n {open ? (\n <Animated.View entering={FadeIn.duration(160)} style={{ marginTop: 14, gap: 12 }}>\n {props.items.map((item) => (\n <CompactStep item={item} key={item.id} theme={theme} />\n ))}\n </Animated.View>\n ) : null}\n </Pressable>\n );\n}\n\nexport function WorkingLine({ theme, label }: { theme: AgentTheme; label: string }) {\n return (\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n marginVertical: theme.space.row,\n minHeight: 32,\n }}\n >\n <Pulse theme={theme} />\n <Text style={{ color: theme.colors.textMuted, fontSize: theme.type.small + 1 }}>{label}</Text>\n </View>\n );\n}\n\nfunction Pulse({ theme, color }: { theme: AgentTheme; color?: string }) {\n const opacity = useSharedValue(0.35);\n useEffect(() => {\n opacity.value = withRepeat(withTiming(1, { duration: 700 }), -1, true);\n }, [opacity]);\n const style = useAnimatedStyle(() => ({ opacity: opacity.value }));\n return (\n <Animated.View\n style={[\n { width: 8, height: 8, borderRadius: 4, backgroundColor: color ?? theme.colors.accent },\n style,\n ]}\n />\n );\n}\n","import type { ActivityItem } from \"@opengeni/react/session\";\nimport { Modal, Platform, Pressable, ScrollView, Text, View } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { AgentStepList } from \"./timeline\";\nimport type { AgentTheme } from \"./theme\";\n\n/** Native sheet with the full step-by-step view of one piece of agent work. */\nexport function AgentStepsSheet(props: {\n visible: boolean;\n onClose(): void;\n title: string;\n steps: readonly ActivityItem[];\n theme: AgentTheme;\n}) {\n const { theme } = props;\n const insets = useSafeAreaInsets();\n return (\n <Modal\n animationType=\"slide\"\n onRequestClose={props.onClose}\n presentationStyle={Platform.OS === \"ios\" ? \"pageSheet\" : \"fullScreen\"}\n visible={props.visible}\n >\n <View\n style={{\n flex: 1,\n backgroundColor: theme.colors.background,\n paddingTop: Platform.OS === \"ios\" ? 0 : insets.top,\n }}\n >\n <View\n style={{\n height: 56,\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: theme.space.gutter,\n }}\n >\n <Text\n numberOfLines={1}\n style={{\n flex: 1,\n color: theme.colors.text,\n fontSize: theme.type.body + 1,\n fontWeight: theme.type.weightStrong,\n }}\n >\n {props.title}\n </Text>\n <Pressable\n accessibilityRole=\"button\"\n hitSlop={12}\n onPress={props.onClose}\n style={{ minHeight: 44, justifyContent: \"center\" }}\n >\n <Text\n style={{ color: theme.colors.accent, fontSize: theme.type.body, fontWeight: \"600\" }}\n >\n Done\n </Text>\n </Pressable>\n </View>\n <ScrollView\n contentContainerStyle={{ padding: theme.space.gutter, paddingBottom: insets.bottom + 24 }}\n >\n <AgentStepList items={props.steps} theme={theme} />\n </ScrollView>\n </View>\n </Modal>\n );\n}\n","import type { PendingApproval, PendingHumanInputRequest } from \"@opengeni/react/session\";\nimport { toolDisplayName } from \"@opengeni/react/session\";\nimport type { HumanInputAnswer } from \"@opengeni/sdk\";\nimport { useState } from \"react\";\nimport { Pressable, ScrollView, StyleSheet, Text, View } from \"react-native\";\nimport Animated, { FadeInDown, FadeOutDown, LinearTransition } from \"react-native-reanimated\";\nimport { ActionButton } from \"./cards\";\nimport { toolDetail } from \"./format\";\nimport { AgentIcon } from \"./icons\";\nimport type { AgentTheme } from \"./theme\";\n\ntype Attention =\n | { kind: \"approval\"; approval: PendingApproval }\n | { kind: \"question\"; request: PendingHumanInputRequest };\n\nfunction approvalSummary(approval: PendingApproval): string | null {\n return toolDetail({\n kind: \"tool-call\",\n id: approval.id,\n turnId: null,\n callId: null,\n name: approval.name,\n arguments: approval.arguments,\n output: null,\n raw: null,\n status: \"running\",\n occurredAt: \"\",\n });\n}\n\n/**\n * Everything the agent is waiting on, docked directly above the composer. One item at a\n * time with a counter; decisions never scroll away with the conversation.\n */\nexport function AgentAttentionTray(props: {\n approvals: readonly PendingApproval[];\n humanInput: readonly PendingHumanInputRequest[];\n theme: AgentTheme;\n onApproval(approvalId: string, decision: \"approve\" | \"reject\"): void;\n onAnswer(requestId: string, answers: HumanInputAnswer[] | null): void;\n}) {\n const { theme } = props;\n const items: Attention[] = [\n ...props.approvals.map((approval) => ({ kind: \"approval\" as const, approval })),\n ...props.humanInput.map((request) => ({ kind: \"question\" as const, request })),\n ];\n const [selected, setSelected] = useState<string[]>([]);\n const current = items[0];\n if (!current) return null;\n const key = current.kind === \"approval\" ? `a:${current.approval.id}` : `q:${current.request.id}`;\n const question = current.kind === \"question\" ? current.request.questions[0] : undefined;\n const multi = question?.kind === \"multi_select\";\n\n return (\n <Animated.View\n entering={FadeInDown.duration(220)}\n exiting={FadeOutDown.duration(160)}\n key={key}\n layout={LinearTransition.duration(180)}\n style={{\n marginHorizontal: 12,\n marginBottom: 6,\n borderRadius: theme.radius.card,\n backgroundColor: theme.colors.surfaceRaised,\n borderWidth: StyleSheet.hairlineWidth * 2,\n borderColor: theme.colors.attention,\n padding: 14,\n gap: 10,\n shadowColor: \"#000\",\n shadowOpacity: theme.scheme === \"light\" ? 0.1 : 0,\n shadowRadius: 18,\n shadowOffset: { width: 0, height: 6 },\n }}\n >\n <View style={{ flexDirection: \"row\", alignItems: \"center\", gap: 8 }}>\n <AgentIcon\n color={theme.colors.attention}\n name={current.kind === \"approval\" ? \"alert\" : \"question\"}\n size={15}\n />\n <Text\n style={{\n flex: 1,\n color: theme.colors.attention,\n fontSize: theme.type.small,\n fontWeight: \"600\",\n }}\n >\n {current.kind === \"approval\" ? \"Approve to continue\" : \"Answer to continue\"}\n </Text>\n {items.length > 1 ? (\n <Text style={{ color: theme.colors.textFaint, fontSize: theme.type.small }}>\n 1 of {items.length}\n </Text>\n ) : null}\n </View>\n {current.kind === \"approval\" ? (\n <>\n <View>\n <Text\n style={{\n color: theme.colors.text,\n fontSize: theme.type.body,\n fontWeight: theme.type.weightStrong,\n }}\n >\n {toolDisplayName(current.approval.name, current.approval.display)}\n </Text>\n {approvalSummary(current.approval) ? (\n <Text\n numberOfLines={2}\n style={{\n marginTop: 2,\n color: theme.colors.textMuted,\n fontSize: theme.type.small,\n lineHeight: theme.type.smallLine,\n }}\n >\n {approvalSummary(current.approval)}\n </Text>\n ) : null}\n </View>\n <View style={{ flexDirection: \"row\", gap: 10 }}>\n <ActionButton\n flex\n label=\"Deny\"\n onPress={() => props.onApproval(current.approval.id, \"reject\")}\n theme={theme}\n variant=\"secondary\"\n />\n <ActionButton\n flex\n label=\"Approve\"\n onPress={() => props.onApproval(current.approval.id, \"approve\")}\n theme={theme}\n variant=\"primary\"\n />\n </View>\n </>\n ) : question ? (\n <>\n <Text\n style={{\n color: theme.colors.text,\n fontSize: theme.type.body,\n fontWeight: theme.type.weightStrong,\n }}\n >\n {question.prompt}\n </Text>\n <ScrollView\n contentContainerStyle={{ gap: 8 }}\n horizontal\n keyboardShouldPersistTaps=\"handled\"\n showsHorizontalScrollIndicator={false}\n >\n {question.options.map((option) => {\n const active = selected.includes(option.id);\n return (\n <Pressable\n accessibilityRole={multi ? \"checkbox\" : \"radio\"}\n accessibilityState={{ checked: active }}\n key={option.id}\n onPress={() =>\n setSelected((values) =>\n multi\n ? values.includes(option.id)\n ? values.filter((value) => value !== option.id)\n : [...values, option.id]\n : [option.id],\n )\n }\n style={{\n minHeight: theme.layout.target - 4,\n paddingHorizontal: 14,\n borderRadius: theme.radius.control,\n justifyContent: \"center\",\n backgroundColor: active ? theme.colors.accent : theme.colors.surface,\n }}\n >\n <Text\n style={{\n color: active ? theme.colors.onAccent : theme.colors.text,\n fontSize: theme.type.body - 1,\n fontWeight: \"600\",\n }}\n >\n {option.label}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n <View style={{ flexDirection: \"row\", gap: 10 }}>\n {current.request.allowSkip ? (\n <ActionButton\n flex\n label=\"Skip\"\n onPress={() => props.onAnswer(current.request.id, null)}\n theme={theme}\n variant=\"secondary\"\n />\n ) : null}\n <ActionButton\n disabled={selected.length === 0}\n flex\n label=\"Send\"\n onPress={() => {\n props.onAnswer(current.request.id, [{ questionId: question.id, values: selected }]);\n setSelected([]);\n }}\n theme={theme}\n variant=\"primary\"\n />\n </View>\n </>\n ) : null}\n </Animated.View>\n );\n}\n","import { GlassView, isLiquidGlassAvailable } from \"expo-glass-effect\";\nimport type { ReactNode } from \"react\";\nimport { Platform, Pressable, StyleSheet, Text, TextInput, View } from \"react-native\";\nimport { AgentIcon } from \"./icons\";\nimport type { AgentTheme } from \"./theme\";\n\nexport interface AgentComposerProps {\n theme: AgentTheme;\n value: string;\n onChangeText(text: string): void;\n onSend(): void;\n onStop?: (() => void) | undefined;\n onAttach?: (() => void) | undefined;\n onVoice?: (() => void) | undefined;\n running: boolean;\n placeholder: string;\n /** Chips shown in the bar composer (model, permissions…). */\n accessories?: ReactNode | undefined;\n bottomInset: number;\n}\n\nfunction RoundButton(props: {\n label: string;\n onPress?: (() => void) | undefined;\n size: number;\n background: string;\n children: ReactNode;\n disabled?: boolean | undefined;\n}) {\n return (\n <Pressable\n accessibilityLabel={props.label}\n accessibilityRole=\"button\"\n disabled={props.disabled}\n hitSlop={6}\n onPress={props.onPress}\n style={({ pressed }) => ({\n width: props.size,\n height: props.size,\n borderRadius: props.size / 2,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: props.background,\n opacity: props.disabled ? 0.35 : pressed ? 0.7 : 1,\n })}\n >\n {props.children}\n </Pressable>\n );\n}\n\nexport function AgentComposer(props: AgentComposerProps) {\n const { theme } = props;\n if (theme.layout.composer === \"bar\") return <BarComposer {...props} />;\n if (theme.layout.composer === \"voice\") return <VoiceComposer {...props} />;\n return <PillComposer {...props} />;\n}\n\nfunction SendOrStop(props: AgentComposerProps & { size: number }) {\n const { theme, running, value } = props;\n if (running && !value.trim()) {\n return (\n <RoundButton\n background={theme.colors.accent}\n label=\"Stop\"\n onPress={props.onStop}\n size={props.size}\n >\n <AgentIcon color={theme.colors.onAccent} name=\"stop\" size={props.size * 0.4} />\n </RoundButton>\n );\n }\n return (\n <RoundButton\n background={theme.colors.accent}\n disabled={!value.trim()}\n label=\"Send\"\n onPress={props.onSend}\n size={props.size}\n >\n <AgentIcon\n color={theme.colors.onAccent}\n name=\"arrow-up\"\n size={props.size * 0.5}\n strokeWidth={2.4}\n />\n </RoundButton>\n );\n}\n\nfunction Input(props: AgentComposerProps & { fontSize: number }) {\n return (\n <TextInput\n accessibilityLabel={props.placeholder}\n multiline\n onChangeText={props.onChangeText}\n placeholder={props.placeholder}\n placeholderTextColor={props.theme.colors.textFaint}\n style={{\n flex: 1,\n color: props.theme.colors.text,\n fontSize: props.fontSize,\n minHeight: 40,\n maxHeight: 160,\n paddingTop: Platform.OS === \"ios\" ? 10 : 8,\n paddingBottom: Platform.OS === \"ios\" ? 10 : 8,\n }}\n value={props.value}\n />\n );\n}\n\n/** Calm: floating pill; Liquid Glass on iOS 26. */\nfunction PillComposer(props: AgentComposerProps) {\n const { theme } = props;\n const glass = Platform.OS === \"ios\" && isLiquidGlassAvailable();\n const inner = (\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n gap: 6,\n paddingHorizontal: 6,\n paddingVertical: 6,\n }}\n >\n <RoundButton\n background=\"transparent\"\n label=\"Add attachment\"\n onPress={props.onAttach}\n size={36}\n >\n <AgentIcon color={theme.colors.text} name=\"plus\" size={20} />\n </RoundButton>\n <Input {...props} fontSize={theme.type.body} />\n {props.value.trim() || props.running ? (\n <SendOrStop {...props} size={36} />\n ) : (\n <RoundButton background=\"transparent\" label=\"Dictate\" onPress={props.onVoice} size={36}>\n <AgentIcon color={theme.colors.text} name=\"mic\" size={19} />\n </RoundButton>\n )}\n </View>\n );\n const shell = {\n borderRadius: theme.radius.composer,\n overflow: \"hidden\" as const,\n borderWidth: glass ? 0 : StyleSheet.hairlineWidth * 2,\n borderColor: theme.colors.border,\n backgroundColor: glass ? undefined : theme.colors.surfaceRaised,\n shadowColor: \"#000\",\n shadowOpacity: theme.scheme === \"light\" ? 0.08 : 0,\n shadowRadius: 16,\n shadowOffset: { width: 0, height: 6 },\n };\n return (\n <View\n style={{\n paddingHorizontal: 12,\n paddingTop: 6,\n paddingBottom: Math.max(props.bottomInset, 10),\n }}\n >\n {glass ? (\n <GlassView glassEffectStyle=\"regular\" isInteractive style={shell}>\n {inner}\n </GlassView>\n ) : (\n <View style={shell}>{inner}</View>\n )}\n </View>\n );\n}\n\n/** Workbench: docked bar with a toolbar row for context chips. */\nfunction BarComposer(props: AgentComposerProps) {\n const { theme } = props;\n return (\n <View\n style={{\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: theme.colors.border,\n backgroundColor: theme.colors.surfaceRaised,\n paddingHorizontal: 12,\n paddingTop: 8,\n paddingBottom: Math.max(props.bottomInset, 8),\n gap: 6,\n }}\n >\n <View\n style={{\n borderRadius: theme.radius.composer,\n borderWidth: StyleSheet.hairlineWidth * 2,\n borderColor: theme.colors.border,\n backgroundColor: theme.colors.background,\n paddingHorizontal: 12,\n }}\n >\n <Input {...props} fontSize={theme.type.body} />\n </View>\n <View style={{ flexDirection: \"row\", alignItems: \"center\", gap: 8 }}>\n <RoundButton\n background={theme.colors.surface}\n label=\"Add attachment\"\n onPress={props.onAttach}\n size={34}\n >\n <AgentIcon color={theme.colors.text} name=\"plus\" size={18} />\n </RoundButton>\n <RoundButton\n background={theme.colors.surface}\n label=\"Dictate\"\n onPress={props.onVoice}\n size={34}\n >\n <AgentIcon color={theme.colors.text} name=\"mic\" size={17} />\n </RoundButton>\n <View style={{ flex: 1, flexDirection: \"row\", gap: 6 }}>{props.accessories}</View>\n <SendOrStop {...props} size={34} />\n </View>\n </View>\n );\n}\n\n/** Field: large field with a dominant voice button. */\nfunction VoiceComposer(props: AgentComposerProps) {\n const { theme } = props;\n const hasText = props.value.trim().length > 0;\n return (\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n gap: 10,\n paddingHorizontal: 14,\n paddingTop: 8,\n paddingBottom: Math.max(props.bottomInset, 12),\n }}\n >\n <View\n style={{\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n minHeight: 56,\n borderRadius: theme.radius.composer,\n backgroundColor: theme.colors.surface,\n borderWidth: StyleSheet.hairlineWidth * 2,\n borderColor: theme.colors.border,\n paddingLeft: 6,\n paddingRight: 14,\n }}\n >\n <RoundButton\n background=\"transparent\"\n label=\"Add photo or file\"\n onPress={props.onAttach}\n size={44}\n >\n <AgentIcon color={theme.colors.text} name=\"plus\" size={24} />\n </RoundButton>\n <Input {...props} fontSize={theme.type.body} />\n </View>\n {hasText || props.running ? (\n <SendOrStop {...props} size={56} />\n ) : (\n <RoundButton\n background={theme.colors.accent}\n label=\"Talk\"\n onPress={props.onVoice}\n size={56}\n >\n <AgentIcon color={theme.colors.onAccent} name=\"mic\" size={26} />\n </RoundButton>\n )}\n </View>\n );\n}\n\nexport function ComposerChip({ theme, label }: { theme: AgentTheme; label: string }) {\n return (\n <View\n style={{\n height: 28,\n paddingHorizontal: 10,\n borderRadius: 14,\n backgroundColor: theme.colors.surface,\n justifyContent: \"center\",\n }}\n >\n <Text style={{ color: theme.colors.textMuted, fontSize: 12, fontWeight: \"500\" }}>\n {label}\n </Text>\n </View>\n );\n}\n","// Design tokens for the native agent surfaces. A host picks a direction and a color scheme,\n// and may override any token (brand accent, typography) without forking components.\n\nexport type ActivityStyle = \"fold\" | \"rail\" | \"cards\";\nexport type ComposerStyle = \"pill\" | \"bar\" | \"voice\";\nexport type UserMessageStyle = \"bubble\" | \"plain\";\n\nexport interface AgentTheme {\n id: string;\n scheme: \"light\" | \"dark\";\n colors: {\n background: string;\n surface: string;\n surfaceRaised: string;\n border: string;\n text: string;\n textMuted: string;\n textFaint: string;\n accent: string;\n onAccent: string;\n userBubble: string;\n onUserBubble: string;\n attention: string;\n attentionSurface: string;\n success: string;\n danger: string;\n dangerSurface: string;\n codeBackground: string;\n rail: string;\n };\n type: {\n body: number;\n bodyLine: number;\n small: number;\n smallLine: number;\n title: number;\n mono: string;\n weightStrong: \"600\" | \"700\";\n };\n radius: { bubble: number; card: number; composer: number; control: number };\n space: { gutter: number; row: number; turn: number };\n layout: {\n activity: ActivityStyle;\n composer: ComposerStyle;\n userMessage: UserMessageStyle;\n /** Minimum interactive size in points. */\n target: number;\n };\n}\n\nexport type AgentDirectionId = \"calm\" | \"workbench\" | \"field\";\n\nexport interface AgentDirection {\n id: AgentDirectionId;\n name: string;\n summary: string;\n theme(scheme: \"light\" | \"dark\"): AgentTheme;\n}\n\nconst mono = \"Menlo\";\n\n/** Quiet conversation: prose answers, soft user bubbles, work folded to one line. */\nconst calm: AgentDirection = {\n id: \"calm\",\n name: \"Calm\",\n summary: \"Prose-first conversation; agent work folds into one quiet line.\",\n theme: (scheme) => ({\n id: \"calm\",\n scheme,\n colors:\n scheme === \"light\"\n ? {\n background: \"#FFFFFF\",\n surface: \"#F6F6F4\",\n surfaceRaised: \"#FFFFFF\",\n border: \"#E7E6E2\",\n text: \"#1A1A19\",\n textMuted: \"#6B6A66\",\n textFaint: \"#A3A19C\",\n accent: \"#1A1A19\",\n onAccent: \"#FFFFFF\",\n userBubble: \"#F0EFEC\",\n onUserBubble: \"#1A1A19\",\n attention: \"#C2410C\",\n attentionSurface: \"#FFF4ED\",\n success: \"#15803D\",\n danger: \"#B42318\",\n dangerSurface: \"#FEF3F2\",\n codeBackground: \"#F6F6F4\",\n rail: \"#E7E6E2\",\n }\n : {\n background: \"#161615\",\n surface: \"#21211F\",\n surfaceRaised: \"#2A2A28\",\n border: \"#33332F\",\n text: \"#F2F1EE\",\n textMuted: \"#A3A19C\",\n textFaint: \"#6B6A66\",\n accent: \"#F2F1EE\",\n onAccent: \"#161615\",\n userBubble: \"#2A2A28\",\n onUserBubble: \"#F2F1EE\",\n attention: \"#FB923C\",\n attentionSurface: \"#2B1D14\",\n success: \"#4ADE80\",\n danger: \"#F97066\",\n dangerSurface: \"#2D1715\",\n codeBackground: \"#21211F\",\n rail: \"#33332F\",\n },\n type: {\n body: 16,\n bodyLine: 24,\n small: 13,\n smallLine: 18,\n title: 20,\n mono,\n weightStrong: \"600\",\n },\n radius: { bubble: 20, card: 16, composer: 26, control: 18 },\n space: { gutter: 20, row: 10, turn: 28 },\n layout: { activity: \"fold\", composer: \"pill\", userMessage: \"bubble\", target: 44 },\n }),\n};\n\n/** Technical: visible step rail, monospace detail, dense and inspectable. */\nconst workbench: AgentDirection = {\n id: \"workbench\",\n name: \"Workbench\",\n summary: \"Every step on a visible rail; dense, inspectable, built for long agent runs.\",\n theme: (scheme) => ({\n id: \"workbench\",\n scheme,\n colors:\n scheme === \"light\"\n ? {\n background: \"#FBFBFC\",\n surface: \"#F1F2F5\",\n surfaceRaised: \"#FFFFFF\",\n border: \"#E2E4EA\",\n text: \"#0F1115\",\n textMuted: \"#5B6170\",\n textFaint: \"#9AA0AD\",\n accent: \"#3B5BDB\",\n onAccent: \"#FFFFFF\",\n userBubble: \"#3B5BDB\",\n onUserBubble: \"#FFFFFF\",\n attention: \"#D97706\",\n attentionSurface: \"#FFF8EB\",\n success: \"#12B76A\",\n danger: \"#E5484D\",\n dangerSurface: \"#FFF0F0\",\n codeBackground: \"#F1F2F5\",\n rail: \"#D5D8E0\",\n }\n : {\n background: \"#0D0F13\",\n surface: \"#161920\",\n surfaceRaised: \"#1C2029\",\n border: \"#262A35\",\n text: \"#E8EAF0\",\n textMuted: \"#9AA0AD\",\n textFaint: \"#5B6170\",\n accent: \"#7C93FF\",\n onAccent: \"#0D0F13\",\n userBubble: \"#2A3566\",\n onUserBubble: \"#E8EAF0\",\n attention: \"#FBBF24\",\n attentionSurface: \"#2A2110\",\n success: \"#3DD68C\",\n danger: \"#FF6369\",\n dangerSurface: \"#2A1416\",\n codeBackground: \"#161920\",\n rail: \"#2E3340\",\n },\n type: {\n body: 15,\n bodyLine: 22,\n small: 12,\n smallLine: 16,\n title: 18,\n mono,\n weightStrong: \"600\",\n },\n radius: { bubble: 14, card: 12, composer: 14, control: 10 },\n space: { gutter: 16, row: 8, turn: 22 },\n layout: { activity: \"rail\", composer: \"bar\", userMessage: \"bubble\", target: 44 },\n }),\n};\n\n/** Field: big type and targets, decisions as bold cards, voice-first composer. */\nconst field: AgentDirection = {\n id: \"field\",\n name: \"Field\",\n summary: \"Large type and targets, decisions as bold cards, voice-first. Usable with gloves.\",\n theme: (scheme) => ({\n id: \"field\",\n scheme,\n colors:\n scheme === \"light\"\n ? {\n background: \"#F4F3EF\",\n surface: \"#FFFFFF\",\n surfaceRaised: \"#FFFFFF\",\n border: \"#E3E1DA\",\n text: \"#121212\",\n textMuted: \"#5C5A55\",\n textFaint: \"#97948C\",\n accent: \"#1F5FD6\",\n onAccent: \"#FFFFFF\",\n userBubble: \"#121212\",\n onUserBubble: \"#FFFFFF\",\n attention: \"#E8590C\",\n attentionSurface: \"#FFF1E6\",\n success: \"#2F9E44\",\n danger: \"#C92A2A\",\n dangerSurface: \"#FFF0F0\",\n codeBackground: \"#EFEDE7\",\n rail: \"#E3E1DA\",\n }\n : {\n background: \"#111110\",\n surface: \"#1D1C1A\",\n surfaceRaised: \"#252421\",\n border: \"#302E2A\",\n text: \"#F5F4F0\",\n textMuted: \"#B1AEA6\",\n textFaint: \"#77746D\",\n accent: \"#5C8DF6\",\n onAccent: \"#0B0B0A\",\n userBubble: \"#F5F4F0\",\n onUserBubble: \"#111110\",\n attention: \"#FF8A3D\",\n attentionSurface: \"#2E1F13\",\n success: \"#51CF66\",\n danger: \"#FF6B6B\",\n dangerSurface: \"#2E1616\",\n codeBackground: \"#1D1C1A\",\n rail: \"#302E2A\",\n },\n type: {\n body: 18,\n bodyLine: 27,\n small: 15,\n smallLine: 20,\n title: 23,\n mono,\n weightStrong: \"700\",\n },\n radius: { bubble: 22, card: 20, composer: 30, control: 22 },\n space: { gutter: 18, row: 12, turn: 30 },\n layout: { activity: \"cards\", composer: \"voice\", userMessage: \"bubble\", target: 56 },\n }),\n};\n\nexport const agentDirections: readonly AgentDirection[] = [calm, workbench, field];\n\nexport function agentTheme(direction: AgentDirectionId, scheme: \"light\" | \"dark\"): AgentTheme {\n return (agentDirections.find((entry) => entry.id === direction) ?? calm).theme(scheme);\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { ActivityItem } from "@opengeni/react/session";
2
+ import type { AgentTheme } from "./theme.js";
3
+ /** Native sheet with the full step-by-step view of one piece of agent work. */
4
+ export declare function AgentStepsSheet(props: {
5
+ visible: boolean;
6
+ onClose(): void;
7
+ title: string;
8
+ steps: readonly ActivityItem[];
9
+ theme: AgentTheme;
10
+ }): import("react").JSX.Element;
@@ -0,0 +1,63 @@
1
+ export type ActivityStyle = "fold" | "rail" | "cards";
2
+ export type ComposerStyle = "pill" | "bar" | "voice";
3
+ export type UserMessageStyle = "bubble" | "plain";
4
+ export interface AgentTheme {
5
+ id: string;
6
+ scheme: "light" | "dark";
7
+ colors: {
8
+ background: string;
9
+ surface: string;
10
+ surfaceRaised: string;
11
+ border: string;
12
+ text: string;
13
+ textMuted: string;
14
+ textFaint: string;
15
+ accent: string;
16
+ onAccent: string;
17
+ userBubble: string;
18
+ onUserBubble: string;
19
+ attention: string;
20
+ attentionSurface: string;
21
+ success: string;
22
+ danger: string;
23
+ dangerSurface: string;
24
+ codeBackground: string;
25
+ rail: string;
26
+ };
27
+ type: {
28
+ body: number;
29
+ bodyLine: number;
30
+ small: number;
31
+ smallLine: number;
32
+ title: number;
33
+ mono: string;
34
+ weightStrong: "600" | "700";
35
+ };
36
+ radius: {
37
+ bubble: number;
38
+ card: number;
39
+ composer: number;
40
+ control: number;
41
+ };
42
+ space: {
43
+ gutter: number;
44
+ row: number;
45
+ turn: number;
46
+ };
47
+ layout: {
48
+ activity: ActivityStyle;
49
+ composer: ComposerStyle;
50
+ userMessage: UserMessageStyle;
51
+ /** Minimum interactive size in points. */
52
+ target: number;
53
+ };
54
+ }
55
+ export type AgentDirectionId = "calm" | "workbench" | "field";
56
+ export interface AgentDirection {
57
+ id: AgentDirectionId;
58
+ name: string;
59
+ summary: string;
60
+ theme(scheme: "light" | "dark"): AgentTheme;
61
+ }
62
+ export declare const agentDirections: readonly AgentDirection[];
63
+ export declare function agentTheme(direction: AgentDirectionId, scheme: "light" | "dark"): AgentTheme;
@@ -0,0 +1,48 @@
1
+ import type { ActivityItem, PendingApproval, PendingHumanInputRequest, TimelineGroup } from "@opengeni/react/session";
2
+ import type { HumanInputAnswer } from "@opengeni/sdk";
3
+ import { type ReactNode } from "react";
4
+ import type { AgentTheme } from "./theme.js";
5
+ export type MarkdownRenderer = (text: string, theme: AgentTheme) => ReactNode;
6
+ export interface AgentTimelineProps {
7
+ groups: readonly TimelineGroup[];
8
+ theme: AgentTheme;
9
+ running: boolean;
10
+ approvals?: readonly PendingApproval[] | undefined;
11
+ humanInput?: readonly PendingHumanInputRequest[] | undefined;
12
+ onApproval?: ((approvalId: string, decision: "approve" | "reject") => void) | undefined;
13
+ onAnswer?: ((requestId: string, answers: HumanInputAnswer[] | null) => void) | undefined;
14
+ /**
15
+ * Where pending approvals and questions render. `tray`: the host renders
16
+ * `AgentAttentionTray` above its composer and the timeline only marks the wait.
17
+ */
18
+ attentionPlacement?: "inline" | "tray";
19
+ /** Open a full step view (e.g. `AgentStepsSheet`) instead of expanding work in place. */
20
+ onOpenSteps?: ((steps: ActivityItem[], title: string) => void) | undefined;
21
+ renderMarkdown?: MarkdownRenderer | undefined;
22
+ /** Host display name for the agent. */
23
+ agentName?: string | undefined;
24
+ agentMark?: ReactNode | undefined;
25
+ contentInsetTop?: number | undefined;
26
+ contentInsetBottom?: number | undefined;
27
+ emptyState?: ReactNode | undefined;
28
+ }
29
+ /**
30
+ * Within one turn, show the work summary before that turn's assistant prose: work happens
31
+ * first and the answer reads as its conclusion (the projection lists prose first).
32
+ */
33
+ export declare function orderWorkBeforeProse(groups: readonly TimelineGroup[]): TimelineGroup[];
34
+ export declare function AgentTimeline(props: AgentTimelineProps): import("react").JSX.Element;
35
+ export declare function UserMessage({ text, theme }: {
36
+ text: string;
37
+ theme: AgentTheme;
38
+ }): import("react").JSX.Element;
39
+ /** Workbench: always-visible rail with status dots, monospace input and output preview. */
40
+ export declare function AgentStepList(props: {
41
+ items: readonly ActivityItem[];
42
+ theme: AgentTheme;
43
+ waiting?: boolean;
44
+ }): import("react").JSX.Element;
45
+ export declare function WorkingLine({ theme, label }: {
46
+ theme: AgentTheme;
47
+ label: string;
48
+ }): import("react").JSX.Element;
@@ -0,0 +1,90 @@
1
+ export declare const webColorsLight: {
2
+ readonly accent: "rgb(84, 84, 84)";
3
+ readonly "accent-deep": "rgb(56, 56, 56)";
4
+ readonly "accent-fg": "rgb(255, 255, 255)";
5
+ readonly "accent-soft": "rgba(82, 82, 82, 0.110)";
6
+ readonly "accent-strong": "rgb(56, 56, 56)";
7
+ readonly bg: "rgb(246, 246, 246)";
8
+ readonly border: "rgb(222, 222, 222)";
9
+ readonly "border-strong": "rgb(189, 189, 189)";
10
+ readonly canvas: "rgb(255, 255, 255)";
11
+ readonly danger: "rgb(194, 21, 47)";
12
+ readonly "danger-fg": "rgb(255, 255, 255)";
13
+ readonly "danger-fill": "rgb(183, 22, 45)";
14
+ readonly "diff-add-bg": "rgba(33, 115, 90, 0.122)";
15
+ readonly "diff-del-bg": "rgba(181, 25, 41, 0.122)";
16
+ readonly fg: "rgb(36, 36, 36)";
17
+ readonly "fg-label": "rgb(58, 58, 58)";
18
+ readonly "fg-muted": "rgb(95, 95, 95)";
19
+ readonly "fg-subtle": "rgb(105, 105, 105)";
20
+ readonly hover: "rgba(34, 34, 34, 0.059)";
21
+ readonly primary: "rgb(235, 242, 240)";
22
+ readonly "primary-border": "rgb(196, 213, 208)";
23
+ readonly "primary-fg": "rgb(41, 41, 41)";
24
+ readonly "primary-hover": "rgb(206, 212, 210)";
25
+ readonly selection: "rgb(226, 226, 226)";
26
+ readonly "status-cancelled": "rgb(105, 105, 105)";
27
+ readonly "status-failed": "rgb(183, 22, 45)";
28
+ readonly "status-idle": "rgb(35, 112, 88)";
29
+ readonly "status-queued": "rgb(105, 105, 105)";
30
+ readonly "status-running": "rgb(113, 97, 34)";
31
+ readonly "status-waiting": "rgb(140, 85, 36)";
32
+ readonly "surface-1": "rgb(255, 255, 255)";
33
+ readonly "surface-2": "rgb(238, 238, 238)";
34
+ readonly "surface-3": "rgb(229, 229, 229)";
35
+ readonly "switch-thumb": "rgb(255, 255, 255)";
36
+ readonly "switch-track": "rgb(189, 189, 189)";
37
+ };
38
+ export declare const webColorsDark: {
39
+ readonly accent: "rgb(196, 196, 196)";
40
+ readonly "accent-deep": "rgb(213, 213, 213)";
41
+ readonly "accent-fg": "rgb(36, 36, 36)";
42
+ readonly "accent-soft": "rgba(199, 199, 199, 0.161)";
43
+ readonly "accent-strong": "rgb(220, 220, 220)";
44
+ readonly bg: "rgb(48, 48, 48)";
45
+ readonly border: "rgb(69, 69, 69)";
46
+ readonly "border-strong": "rgb(85, 85, 85)";
47
+ readonly canvas: "rgb(32, 32, 32)";
48
+ readonly danger: "rgb(249, 142, 139)";
49
+ readonly "danger-fg": "rgb(255, 255, 255)";
50
+ readonly "danger-fill": "rgb(179, 54, 61)";
51
+ readonly "diff-add-bg": "rgba(128, 205, 177, 0.141)";
52
+ readonly "diff-del-bg": "rgba(248, 149, 142, 0.141)";
53
+ readonly fg: "rgb(230, 230, 230)";
54
+ readonly "fg-label": "rgb(212, 212, 212)";
55
+ readonly "fg-muted": "rgb(184, 184, 184)";
56
+ readonly "fg-subtle": "rgb(163, 163, 163)";
57
+ readonly hover: "rgba(230, 230, 230, 0.078)";
58
+ readonly primary: "rgb(43, 52, 50)";
59
+ readonly "primary-border": "rgb(78, 94, 89)";
60
+ readonly "primary-fg": "rgb(238, 238, 238)";
61
+ readonly "primary-hover": "rgb(72, 80, 78)";
62
+ readonly selection: "rgb(72, 72, 72)";
63
+ readonly "status-cancelled": "rgb(163, 163, 163)";
64
+ readonly "status-failed": "rgb(247, 148, 145)";
65
+ readonly "status-idle": "rgb(131, 203, 176)";
66
+ readonly "status-queued": "rgb(163, 163, 163)";
67
+ readonly "status-running": "rgb(213, 189, 114)";
68
+ readonly "status-waiting": "rgb(233, 171, 119)";
69
+ readonly "surface-1": "rgb(51, 51, 51)";
70
+ readonly "surface-2": "rgb(56, 56, 56)";
71
+ readonly "surface-3": "rgb(64, 64, 64)";
72
+ readonly "switch-thumb": "rgb(163, 163, 163)";
73
+ readonly "switch-track": "rgb(69, 69, 69)";
74
+ };
75
+ export declare const webLengths: {
76
+ readonly "font-size-base": 13;
77
+ readonly "font-size-composer": 16;
78
+ readonly "font-size-composer-wide": 15;
79
+ readonly "font-size-control": 12;
80
+ readonly "font-size-md": 15;
81
+ readonly "font-size-menu": 14;
82
+ readonly "font-size-sm": 12;
83
+ readonly "font-size-xs": 11;
84
+ readonly "radius-full": 9999;
85
+ readonly "radius-lg": 14;
86
+ readonly "radius-md": 10;
87
+ readonly "radius-sm": 6;
88
+ readonly "radius-xl": 20;
89
+ readonly "radius-xs": 4;
90
+ };
@@ -0,0 +1,40 @@
1
+ import type { SessionEvent, SessionStatus } from "@opengeni/sdk";
2
+ import { useComposer, useGoal, useHumanInputRequests, useSession, useSessionControl, useSessionEvents, useSessionLineage, useSessionMcpApprovalPolicy, useTurnQueue, type FileAttachmentClientLike, type GoalClientLike, type HumanInputSessionClientLike, type PendingApproval, type SessionClientLike, type SessionMcpApprovalPolicyClientLike, type SessionLineageClientLike, type SessionReadClientLike, type TimelineGroup, type TimelineItem } from "@opengeni/react/session";
3
+ import { type NativeFileAttachmentsResult } from "./attachments.js";
4
+ import { type SessionAttentionClientLike } from "./read-acknowledgement.js";
5
+ export type OpenGeniNativeSessionClient = SessionClientLike & SessionReadClientLike & HumanInputSessionClientLike & SessionMcpApprovalPolicyClientLike & FileAttachmentClientLike & SessionAttentionClientLike & GoalClientLike & SessionLineageClientLike;
6
+ export interface OpenGeniNativeSessionController {
7
+ sessionId: string;
8
+ workspaceId: string;
9
+ session: ReturnType<typeof useSession>;
10
+ events: SessionEvent[];
11
+ timeline: TimelineItem[];
12
+ timelineGroups: TimelineGroup[];
13
+ connectionState: ReturnType<typeof useSessionEvents>["connectionState"];
14
+ sessionStatus: SessionStatus | null;
15
+ initialLoading: boolean;
16
+ hasOlder: boolean;
17
+ loadingOlder: boolean;
18
+ loadOlder(): Promise<boolean>;
19
+ queue: ReturnType<typeof useTurnQueue>;
20
+ composer: ReturnType<typeof useComposer>;
21
+ attachments: NativeFileAttachmentsResult;
22
+ approvals: PendingApproval[];
23
+ control: ReturnType<typeof useSessionControl>;
24
+ humanInput: ReturnType<typeof useHumanInputRequests>;
25
+ mcpApprovalPolicy: ReturnType<typeof useSessionMcpApprovalPolicy>;
26
+ /** The session goal and its pause/resume control (web session chrome). */
27
+ goal: ReturnType<typeof useGoal>;
28
+ /** Spawned sub-agent sessions, refreshed by spawn and completion events. */
29
+ lineage: ReturnType<typeof useSessionLineage>;
30
+ active: boolean;
31
+ runActive: boolean;
32
+ error: Error | null;
33
+ refresh(): Promise<void>;
34
+ }
35
+ export declare function useOpenGeniNativeSession(input: {
36
+ client: OpenGeniNativeSessionClient;
37
+ workspaceId: string;
38
+ sessionId: string;
39
+ mcpApprovalPolicyServerId?: string;
40
+ }): OpenGeniNativeSessionController;