@agent-native/dispatch 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/README.md +37 -0
  2. package/dist/actions/apply-dream-proposal.d.ts +3 -0
  3. package/dist/actions/apply-dream-proposal.d.ts.map +1 -0
  4. package/dist/actions/apply-dream-proposal.js +11 -0
  5. package/dist/actions/apply-dream-proposal.js.map +1 -0
  6. package/dist/actions/create-dream-report.d.ts +3 -0
  7. package/dist/actions/create-dream-report.d.ts.map +1 -0
  8. package/dist/actions/create-dream-report.js +67 -0
  9. package/dist/actions/create-dream-report.js.map +1 -0
  10. package/dist/actions/create-workspace-resource.js +3 -3
  11. package/dist/actions/create-workspace-resource.js.map +1 -1
  12. package/dist/actions/delete-workspace-resource.js +1 -1
  13. package/dist/actions/delete-workspace-resource.js.map +1 -1
  14. package/dist/actions/ensure-dream-job.d.ts +3 -0
  15. package/dist/actions/ensure-dream-job.d.ts.map +1 -0
  16. package/dist/actions/ensure-dream-job.js +73 -0
  17. package/dist/actions/ensure-dream-job.js.map +1 -0
  18. package/dist/actions/get-dream-settings.d.ts +3 -0
  19. package/dist/actions/get-dream-settings.d.ts.map +1 -0
  20. package/dist/actions/get-dream-settings.js +11 -0
  21. package/dist/actions/get-dream-settings.js.map +1 -0
  22. package/dist/actions/get-dream.d.ts +3 -0
  23. package/dist/actions/get-dream.d.ts.map +1 -0
  24. package/dist/actions/get-dream.js +13 -0
  25. package/dist/actions/get-dream.js.map +1 -0
  26. package/dist/actions/get-workspace-resource-effective-context.d.ts +3 -0
  27. package/dist/actions/get-workspace-resource-effective-context.d.ts.map +1 -0
  28. package/dist/actions/get-workspace-resource-effective-context.js +27 -0
  29. package/dist/actions/get-workspace-resource-effective-context.js.map +1 -0
  30. package/dist/actions/index.d.ts.map +1 -1
  31. package/dist/actions/index.js +30 -4
  32. package/dist/actions/index.js.map +1 -1
  33. package/dist/actions/list-dream-candidates.d.ts +3 -0
  34. package/dist/actions/list-dream-candidates.d.ts.map +1 -0
  35. package/dist/actions/list-dream-candidates.js +68 -0
  36. package/dist/actions/list-dream-candidates.js.map +1 -0
  37. package/dist/actions/list-dreams.d.ts +3 -0
  38. package/dist/actions/list-dreams.d.ts.map +1 -0
  39. package/dist/actions/list-dreams.js +17 -0
  40. package/dist/actions/list-dreams.js.map +1 -0
  41. package/dist/actions/list-workspace-resources-for-app.d.ts +3 -0
  42. package/dist/actions/list-workspace-resources-for-app.d.ts.map +1 -0
  43. package/dist/actions/list-workspace-resources-for-app.js +12 -0
  44. package/dist/actions/list-workspace-resources-for-app.js.map +1 -0
  45. package/dist/actions/list-workspace-resources.js +1 -1
  46. package/dist/actions/list-workspace-resources.js.map +1 -1
  47. package/dist/actions/navigate.d.ts +1 -0
  48. package/dist/actions/navigate.d.ts.map +1 -1
  49. package/dist/actions/navigate.js +2 -1
  50. package/dist/actions/navigate.js.map +1 -1
  51. package/dist/actions/preview-dream-proposal.d.ts +3 -0
  52. package/dist/actions/preview-dream-proposal.d.ts.map +1 -0
  53. package/dist/actions/preview-dream-proposal.js +13 -0
  54. package/dist/actions/preview-dream-proposal.js.map +1 -0
  55. package/dist/actions/preview-workspace-resource-change.d.ts +3 -0
  56. package/dist/actions/preview-workspace-resource-change.d.ts.map +1 -0
  57. package/dist/actions/preview-workspace-resource-change.js +24 -0
  58. package/dist/actions/preview-workspace-resource-change.js.map +1 -0
  59. package/dist/actions/reject-dream-proposal.d.ts +3 -0
  60. package/dist/actions/reject-dream-proposal.d.ts.map +1 -0
  61. package/dist/actions/reject-dream-proposal.js +12 -0
  62. package/dist/actions/reject-dream-proposal.js.map +1 -0
  63. package/dist/actions/restore-starter-workspace-resources.d.ts +3 -0
  64. package/dist/actions/restore-starter-workspace-resources.d.ts.map +1 -0
  65. package/dist/actions/restore-starter-workspace-resources.js +14 -0
  66. package/dist/actions/restore-starter-workspace-resources.js.map +1 -0
  67. package/dist/actions/send-code-agent-remote-command.d.ts +3 -0
  68. package/dist/actions/send-code-agent-remote-command.d.ts.map +1 -0
  69. package/dist/actions/send-code-agent-remote-command.js +53 -0
  70. package/dist/actions/send-code-agent-remote-command.js.map +1 -0
  71. package/dist/actions/set-dream-settings.d.ts +3 -0
  72. package/dist/actions/set-dream-settings.d.ts.map +1 -0
  73. package/dist/actions/set-dream-settings.js +41 -0
  74. package/dist/actions/set-dream-settings.js.map +1 -0
  75. package/dist/actions/update-workspace-resource.js +1 -1
  76. package/dist/actions/update-workspace-resource.js.map +1 -1
  77. package/dist/actions/view-screen.d.ts.map +1 -1
  78. package/dist/actions/view-screen.js +73 -2
  79. package/dist/actions/view-screen.js.map +1 -1
  80. package/dist/components/approval-value-block.d.ts +7 -0
  81. package/dist/components/approval-value-block.d.ts.map +1 -0
  82. package/dist/components/approval-value-block.js +22 -0
  83. package/dist/components/approval-value-block.js.map +1 -0
  84. package/dist/components/create-app-popover.d.ts.map +1 -1
  85. package/dist/components/create-app-popover.js +3 -2
  86. package/dist/components/create-app-popover.js.map +1 -1
  87. package/dist/components/layout/Layout.d.ts.map +1 -1
  88. package/dist/components/layout/Layout.js +8 -1
  89. package/dist/components/layout/Layout.js.map +1 -1
  90. package/dist/components/ui/chart.d.ts +1 -1
  91. package/dist/components/workspace-app-card.d.ts.map +1 -1
  92. package/dist/components/workspace-app-card.js +25 -4
  93. package/dist/components/workspace-app-card.js.map +1 -1
  94. package/dist/components/workspace-resource-effective-stack.d.ts +11 -0
  95. package/dist/components/workspace-resource-effective-stack.d.ts.map +1 -0
  96. package/dist/components/workspace-resource-effective-stack.js +59 -0
  97. package/dist/components/workspace-resource-effective-stack.js.map +1 -0
  98. package/dist/components/workspace-resource-impact-preview.d.ts +9 -0
  99. package/dist/components/workspace-resource-impact-preview.d.ts.map +1 -0
  100. package/dist/components/workspace-resource-impact-preview.js +39 -0
  101. package/dist/components/workspace-resource-impact-preview.js.map +1 -0
  102. package/dist/db/migrations.d.ts.map +1 -1
  103. package/dist/db/migrations.js +59 -0
  104. package/dist/db/migrations.js.map +1 -1
  105. package/dist/db/schema.d.ts +714 -0
  106. package/dist/db/schema.d.ts.map +1 -1
  107. package/dist/db/schema.js +44 -2
  108. package/dist/db/schema.js.map +1 -1
  109. package/dist/hooks/use-navigation-state.d.ts +3 -0
  110. package/dist/hooks/use-navigation-state.d.ts.map +1 -1
  111. package/dist/hooks/use-navigation-state.js +23 -3
  112. package/dist/hooks/use-navigation-state.js.map +1 -1
  113. package/dist/lib/utils.d.ts +2 -1
  114. package/dist/lib/utils.d.ts.map +1 -1
  115. package/dist/lib/utils.js +5 -1
  116. package/dist/lib/utils.js.map +1 -1
  117. package/dist/routes/index.d.ts.map +1 -1
  118. package/dist/routes/index.js +1 -0
  119. package/dist/routes/index.js.map +1 -1
  120. package/dist/routes/pages/approval.d.ts.map +1 -1
  121. package/dist/routes/pages/approval.js +4 -1
  122. package/dist/routes/pages/approval.js.map +1 -1
  123. package/dist/routes/pages/approvals.js +1 -1
  124. package/dist/routes/pages/approvals.js.map +1 -1
  125. package/dist/routes/pages/dream-settings.d.ts +34 -0
  126. package/dist/routes/pages/dream-settings.d.ts.map +1 -0
  127. package/dist/routes/pages/dream-settings.js +68 -0
  128. package/dist/routes/pages/dream-settings.js.map +1 -0
  129. package/dist/routes/pages/dreams.d.ts +5 -0
  130. package/dist/routes/pages/dreams.d.ts.map +1 -0
  131. package/dist/routes/pages/dreams.js +435 -0
  132. package/dist/routes/pages/dreams.js.map +1 -0
  133. package/dist/routes/pages/workspace.d.ts.map +1 -1
  134. package/dist/routes/pages/workspace.js +187 -35
  135. package/dist/routes/pages/workspace.js.map +1 -1
  136. package/dist/server/lib/app-creation-store.d.ts.map +1 -1
  137. package/dist/server/lib/app-creation-store.js +3 -2
  138. package/dist/server/lib/app-creation-store.js.map +1 -1
  139. package/dist/server/lib/dispatch-integrations.d.ts +1 -1
  140. package/dist/server/lib/dispatch-integrations.d.ts.map +1 -1
  141. package/dist/server/lib/dispatch-integrations.js +9 -4
  142. package/dist/server/lib/dispatch-integrations.js.map +1 -1
  143. package/dist/server/lib/dispatch-remote-commands.d.ts +83 -0
  144. package/dist/server/lib/dispatch-remote-commands.d.ts.map +1 -0
  145. package/dist/server/lib/dispatch-remote-commands.js +256 -0
  146. package/dist/server/lib/dispatch-remote-commands.js.map +1 -0
  147. package/dist/server/lib/dispatch-store.d.ts +26 -0
  148. package/dist/server/lib/dispatch-store.d.ts.map +1 -1
  149. package/dist/server/lib/dispatch-store.js +17 -1
  150. package/dist/server/lib/dispatch-store.js.map +1 -1
  151. package/dist/server/lib/dreams-store.d.ts +398 -0
  152. package/dist/server/lib/dreams-store.d.ts.map +1 -0
  153. package/dist/server/lib/dreams-store.js +2330 -0
  154. package/dist/server/lib/dreams-store.js.map +1 -0
  155. package/dist/server/lib/thread-debug-store.d.ts +2 -2
  156. package/dist/server/lib/vault-store.d.ts +1 -1
  157. package/dist/server/lib/workspace-resources-store.d.ts +181 -17
  158. package/dist/server/lib/workspace-resources-store.d.ts.map +1 -1
  159. package/dist/server/lib/workspace-resources-store.js +737 -108
  160. package/dist/server/lib/workspace-resources-store.js.map +1 -1
  161. package/package.json +4 -2
  162. package/src/actions/apply-dream-proposal.ts +12 -0
  163. package/src/actions/create-dream-report.ts +76 -0
  164. package/src/actions/create-workspace-resource.ts +3 -3
  165. package/src/actions/delete-workspace-resource.ts +1 -1
  166. package/src/actions/ensure-dream-job.ts +76 -0
  167. package/src/actions/get-dream-settings.ts +12 -0
  168. package/src/actions/get-dream.ts +14 -0
  169. package/src/actions/get-workspace-resource-effective-context.ts +34 -0
  170. package/src/actions/index.spec.ts +26 -0
  171. package/src/actions/index.ts +31 -4
  172. package/src/actions/list-dream-candidates.ts +77 -0
  173. package/src/actions/list-dreams.ts +17 -0
  174. package/src/actions/list-workspace-resources-for-app.ts +13 -0
  175. package/src/actions/list-workspace-resources.ts +1 -1
  176. package/src/actions/navigate.ts +2 -1
  177. package/src/actions/preview-dream-proposal.ts +14 -0
  178. package/src/actions/preview-workspace-resource-change.ts +25 -0
  179. package/src/actions/reject-dream-proposal.ts +12 -0
  180. package/src/actions/restore-starter-workspace-resources.ts +17 -0
  181. package/src/actions/send-code-agent-remote-command.ts +59 -0
  182. package/src/actions/set-dream-settings.spec.ts +81 -0
  183. package/src/actions/set-dream-settings.ts +44 -0
  184. package/src/actions/update-workspace-resource.ts +1 -1
  185. package/src/actions/view-screen.ts +90 -2
  186. package/src/components/approval-value-block.spec.tsx +59 -0
  187. package/src/components/approval-value-block.tsx +33 -0
  188. package/src/components/create-app-popover.tsx +3 -2
  189. package/src/components/layout/Layout.tsx +8 -0
  190. package/src/components/workspace-app-card.tsx +166 -1
  191. package/src/components/workspace-resource-effective-stack.spec.tsx +125 -0
  192. package/src/components/workspace-resource-effective-stack.tsx +141 -0
  193. package/src/components/workspace-resource-impact-preview.spec.tsx +147 -0
  194. package/src/components/workspace-resource-impact-preview.tsx +116 -0
  195. package/src/db/migrations.ts +59 -0
  196. package/src/db/schema.ts +46 -2
  197. package/src/hooks/use-navigation-state.ts +24 -5
  198. package/src/lib/utils.ts +6 -1
  199. package/src/routes/index.ts +1 -0
  200. package/src/routes/pages/approval.tsx +14 -1
  201. package/src/routes/pages/approvals.tsx +1 -1
  202. package/src/routes/pages/dream-settings.spec.ts +130 -0
  203. package/src/routes/pages/dream-settings.ts +103 -0
  204. package/src/routes/pages/dreams.tsx +1828 -0
  205. package/src/routes/pages/workspace.tsx +577 -97
  206. package/src/server/lib/app-creation-store.ts +3 -2
  207. package/src/server/lib/dispatch-integrations.ts +10 -3
  208. package/src/server/lib/dispatch-remote-commands.spec.ts +167 -0
  209. package/src/server/lib/dispatch-remote-commands.ts +375 -0
  210. package/src/server/lib/dispatch-store.ts +37 -1
  211. package/src/server/lib/dreams-store.spec.ts +1492 -0
  212. package/src/server/lib/dreams-store.ts +3168 -0
  213. package/src/server/lib/workspace-resource-approval-lifecycle.spec.ts +236 -0
  214. package/src/server/lib/workspace-resources-store.spec.ts +1106 -0
  215. package/src/server/lib/workspace-resources-store.ts +1001 -134
  216. package/dist/actions/sync-workspace-resources-to-all.d.ts +0 -3
  217. package/dist/actions/sync-workspace-resources-to-all.d.ts.map +0 -1
  218. package/dist/actions/sync-workspace-resources-to-all.js +0 -9
  219. package/dist/actions/sync-workspace-resources-to-all.js.map +0 -1
  220. package/dist/actions/sync-workspace-resources-to-app.d.ts +0 -3
  221. package/dist/actions/sync-workspace-resources-to-app.d.ts.map +0 -1
  222. package/dist/actions/sync-workspace-resources-to-app.js +0 -11
  223. package/dist/actions/sync-workspace-resources-to-app.js.map +0 -1
  224. package/src/actions/sync-workspace-resources-to-all.ts +0 -10
  225. package/src/actions/sync-workspace-resources-to-app.ts +0 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dreams.js","sourceRoot":"","sources":["../../../src/routes/pages/dreams.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { useSearchParams } from \"react-router\";\nimport { useActionMutation, useActionQuery } from \"@agent-native/core/client\";\nimport { toast } from \"sonner\";\nimport {\n IconAlertTriangle,\n IconBrain,\n IconCalendarTime,\n IconCheck,\n IconCircleDashed,\n IconClock,\n IconDatabase,\n IconFileDiff,\n IconPlayerPlay,\n IconRefresh,\n IconSettings,\n IconX,\n} from \"@tabler/icons-react\";\nimport { DispatchShell } from \"@/components/dispatch-shell\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\";\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { Separator } from \"@/components/ui/separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Spinner } from \"@/components/ui/spinner\";\nimport { Switch } from \"@/components/ui/switch\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport {\n dreamSettingsToDraft,\n dreamSettingsUpdateFromDraft,\n splitSourceIds,\n type DreamSettings,\n type DreamSettingsDraft,\n} from \"./dream-settings\";\n\nexport function meta() {\n return [{ title: \"Dreams — Dispatch\" }];\n}\n\ntype DreamStatus =\n | \"running\"\n | \"completed\"\n | \"failed\"\n | \"pending\"\n | \"applied\"\n | \"rejected\"\n | \"stale\"\n | string;\n\ninterface DreamPass {\n id: string;\n title?: string | null;\n summary?: string | null;\n status?: DreamStatus | null;\n sourceId?: string | null;\n query?: string | null;\n error?: string | null;\n createdAt?: number | string | null;\n startedAt?: number | string | null;\n completedAt?: number | string | null;\n updatedAt?: number | string | null;\n candidateCount?: number | null;\n inspectedThreadCount?: number | null;\n inspectedRunCount?: number | null;\n proposalCount?: number | null;\n proposalCounts?: Record<string, number> | null;\n appliedCount?: number | null;\n rejectedCount?: number | null;\n sourceHealth?: DreamSourceHealth[] | null;\n}\n\ninterface DreamEvidence {\n id?: string | null;\n label?: string | null;\n title?: string | null;\n source?: string | null;\n sourceId?: string | null;\n threadId?: string | null;\n threadTitle?: string | null;\n runId?: string | null;\n kind?: string | null;\n quote?: string | null;\n snippet?: string | null;\n summary?: string | null;\n confidence?: number | null;\n createdAt?: number | string | null;\n [key: string]: unknown;\n}\n\ninterface DreamProposal {\n id: string;\n dreamId?: string | null;\n title?: string | null;\n summary?: string | null;\n status?: DreamStatus | null;\n targetType?: string | null;\n targetPath?: string | null;\n type?: string | null;\n target?: string | null;\n path?: string | null;\n risk?: string | null;\n confidence?: number | null;\n rationale?: string | null;\n content?: string | null;\n evidence?: DreamEvidence[] | null;\n sourceRunIds?: string[] | null;\n createdAt?: number | string | null;\n}\n\ninterface CandidateRun {\n id?: string;\n thread?: {\n id: string;\n ownerEmail: string;\n title: string;\n preview: string;\n messageCount: number;\n createdAt: number;\n updatedAt: number;\n };\n title?: string | null;\n summary?: string | null;\n preview?: string | null;\n ownerEmail?: string | null;\n sourceId?: string | null;\n sourceLabel?: string | null;\n threadId?: string | null;\n runId?: string | null;\n status?: string | null;\n score?: number | null;\n reasons?:\n | string[]\n | Array<{\n code: string;\n label: string;\n score: number;\n evidenceCount: number;\n }>\n | null;\n signals?: string[] | null;\n latestRunStatus?: string | null;\n updatedAt?: number | string | null;\n startedAt?: number | string | null;\n completedAt?: number | string | null;\n evidence?: DreamEvidence[] | null;\n}\n\ninterface DreamSourceHealth {\n sourceId: string;\n label?: string | null;\n status: \"ok\" | \"timed_out\" | \"error\" | string;\n startedAt?: number | string | null;\n completedAt?: number | string | null;\n durationMs: number;\n timeoutMs?: number | null;\n inspectedThreadCount: number;\n candidateCount: number;\n errorCount: number;\n threadErrorCount?: number | null;\n message?: string | null;\n}\n\ninterface DreamDetail {\n dream?: DreamPass | null;\n report?: string | null;\n summary?: string | null;\n proposals?: DreamProposal[] | null;\n candidates?: CandidateRun[] | null;\n inspectedRuns?: CandidateRun[] | null;\n evidence?: DreamEvidence[] | null;\n [key: string]: unknown;\n}\n\ntype ListDreamsResponse =\n | DreamPass[]\n | {\n dreams?: DreamPass[];\n items?: DreamPass[];\n results?: DreamPass[];\n };\n\ntype ListCandidatesResponse =\n | CandidateRun[]\n | {\n candidates?: CandidateRun[];\n items?: CandidateRun[];\n results?: CandidateRun[];\n sources?: DreamSourceHealth[];\n sourceHealth?: DreamSourceHealth[];\n };\n\ntype GetDreamResponse = DreamDetail | null;\n\ninterface CreateDreamReportParams {\n sourceId?: string;\n sourceIds?: string[];\n allSources?: boolean;\n query?: string;\n ownerEmail?: string;\n limit?: number;\n sourceTimeoutMs?: number;\n sourceConcurrency?: number;\n sourceStartStaggerMs?: number;\n threadConcurrency?: number;\n threadTimeoutMs?: number;\n title?: string;\n}\n\ninterface CreateDreamReportResult {\n id?: string;\n dreamId?: string;\n dream?: DreamPass;\n}\n\ninterface ProposalMutationParams {\n id: string;\n reason?: string;\n}\n\ninterface DreamProposalPreview {\n operation?: \"create\" | \"update\" | \"append\" | string;\n targetExists?: boolean;\n currentContent?: string | null;\n proposedContent?: string | null;\n target?: {\n type?: string | null;\n path?: string | null;\n kind?: string | null;\n resourceId?: string | null;\n };\n approval?: {\n required?: boolean;\n policyEnabled?: boolean;\n willRequestApproval?: boolean;\n };\n}\n\nfunction normalizeArray<T>(value: unknown, keys: readonly string[]): T[] {\n if (Array.isArray(value)) return value as T[];\n if (!value || typeof value !== \"object\") return [];\n const record = value as Record<string, unknown>;\n for (const key of keys) {\n if (Array.isArray(record[key])) return record[key] as T[];\n }\n return [];\n}\n\nfunction normalizeSourceHealth(value: unknown): DreamSourceHealth[] {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return [];\n const record = value as Record<string, unknown>;\n if (Array.isArray(record.sources)) {\n return record.sources as DreamSourceHealth[];\n }\n if (Array.isArray(record.sourceHealth)) {\n return record.sourceHealth as DreamSourceHealth[];\n }\n return [];\n}\n\nfunction formatDate(value: number | string | null | undefined): string {\n if (value == null || value === \"\") return \"n/a\";\n const numeric = Number(value);\n const date = Number.isFinite(numeric) ? new Date(numeric) : new Date(value);\n if (Number.isNaN(date.getTime())) return \"n/a\";\n return date.toLocaleString();\n}\n\nfunction compactDate(value: number | string | null | undefined): string {\n if (value == null || value === \"\") return \"n/a\";\n const numeric = Number(value);\n const date = Number.isFinite(numeric) ? new Date(numeric) : new Date(value);\n if (Number.isNaN(date.getTime())) return \"n/a\";\n return date.toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n}\n\nfunction json(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction plural(value: number, singular: string, pluralLabel = `${singular}s`) {\n return `${value} ${value === 1 ? singular : pluralLabel}`;\n}\n\nfunction dreamLabel(dream: DreamPass, index: number): string {\n return dream.title || `Dream pass ${index + 1}`;\n}\n\nfunction proposalTarget(proposal: DreamProposal): string {\n return (\n proposal.targetPath ||\n proposal.path ||\n proposal.target ||\n proposal.targetType ||\n proposal.type ||\n \"memory\"\n );\n}\n\nfunction evidenceLabel(evidence: DreamEvidence, index: number): string {\n return (\n evidence.label ||\n evidence.title ||\n evidence.threadTitle ||\n evidence.source ||\n evidence.threadId ||\n evidence.runId ||\n `Evidence ${index + 1}`\n );\n}\n\nfunction candidateLabel(candidate: CandidateRun): string {\n return (\n candidate.thread?.title ||\n candidate.title ||\n candidate.summary ||\n candidate.thread?.preview ||\n candidate.preview ||\n candidate.thread?.id ||\n candidate.threadId ||\n candidate.runId ||\n candidate.id ||\n \"candidate\"\n );\n}\n\nfunction candidateSignals(candidate: CandidateRun): string[] {\n const reasons = (candidate.reasons ?? []).map((reason) =>\n typeof reason === \"string\" ? reason : reason.label,\n );\n return [...reasons, ...(candidate.signals ?? [])].filter(Boolean);\n}\n\nfunction candidateId(candidate: CandidateRun): string {\n return (\n candidate.id ||\n candidate.thread?.id ||\n candidate.threadId ||\n candidate.runId ||\n candidateLabel(candidate)\n );\n}\n\nfunction candidateStatus(candidate: CandidateRun): string {\n return candidate.latestRunStatus || candidate.status || \"unknown\";\n}\n\nfunction candidateOwner(candidate: CandidateRun): string {\n return candidate.thread?.ownerEmail || candidate.ownerEmail || \"n/a\";\n}\n\nfunction candidateUpdatedAt(candidate: CandidateRun): number | string | null {\n return (\n candidate.updatedAt ||\n candidate.completedAt ||\n candidate.startedAt ||\n candidate.thread?.updatedAt ||\n null\n );\n}\n\nfunction dreamProposalCount(dream: DreamPass): number {\n return dream.proposalCount ?? dream.proposalCounts?.total ?? 0;\n}\n\nfunction dreamInspectedCount(dream: DreamPass): number {\n return dream.inspectedThreadCount ?? dream.inspectedRunCount ?? 0;\n}\n\nfunction resultDreamId(result: CreateDreamReportResult | null | undefined) {\n return result?.dream?.id || result?.dreamId || result?.id || null;\n}\n\nfunction statusVariant(status: DreamStatus | null | undefined) {\n const normalized = String(status || \"pending\").toLowerCase();\n if (normalized === \"failed\") return \"destructive\" as const;\n if (normalized === \"completed\" || normalized === \"applied\")\n return \"default\" as const;\n if (normalized === \"rejected\" || normalized === \"stale\")\n return \"outline\" as const;\n return \"secondary\" as const;\n}\n\nfunction sourceStatusVariant(status: string | null | undefined) {\n const normalized = String(status || \"ok\").toLowerCase();\n if (normalized === \"error\" || normalized === \"timed_out\") {\n return \"destructive\" as const;\n }\n return \"secondary\" as const;\n}\n\nfunction StatusBadge({ status }: { status?: DreamStatus | null }) {\n const normalized = String(status || \"pending\").toLowerCase();\n return (\n <Badge variant={statusVariant(status)} className=\"capitalize\">\n {normalized.replace(/_/g, \" \")}\n </Badge>\n );\n}\n\nfunction SourceHealthPanel({ sources }: { sources: DreamSourceHealth[] }) {\n if (sources.length === 0) return null;\n const unhealthyCount = sources.filter(\n (source) => String(source.status).toLowerCase() !== \"ok\",\n ).length;\n return (\n <Alert variant={unhealthyCount > 0 ? \"destructive\" : \"default\"}>\n <IconDatabase className=\"h-4 w-4\" />\n <AlertTitle>Source health</AlertTitle>\n <AlertDescription>\n <div className=\"mt-2 flex flex-wrap gap-1.5\">\n {sources.map((source) => (\n <Badge\n key={source.sourceId}\n variant={sourceStatusVariant(source.status)}\n className=\"gap-1\"\n title={\n source.message ||\n `${source.inspectedThreadCount} inspected, ${source.candidateCount} candidates, ${source.durationMs}ms of ${source.timeoutMs ?? \"n/a\"}ms`\n }\n >\n {source.label || source.sourceId}:{\" \"}\n {String(source.status).replace(/_/g, \" \")} · {source.durationMs}\n ms\n </Badge>\n ))}\n </div>\n </AlertDescription>\n </Alert>\n );\n}\n\nfunction isApprovalRequestResult(value: unknown): boolean {\n if (!value || typeof value !== \"object\") return false;\n const record = value as Record<string, unknown>;\n const result = record.result as Record<string, unknown> | undefined;\n return result?.approvalRequired === true;\n}\n\nfunction QueryState({ error, label }: { error: unknown; label: string }) {\n if (!error) return null;\n return (\n <Alert variant=\"destructive\">\n <IconAlertTriangle className=\"h-4 w-4\" />\n <AlertTitle>{label}</AlertTitle>\n <AlertDescription>\n {error instanceof Error ? error.message : String(error)}\n </AlertDescription>\n </Alert>\n );\n}\n\nfunction RawBlock({ value }: { value: unknown }) {\n return (\n <pre className=\"max-h-64 overflow-auto rounded-md border bg-muted/30 p-3 text-xs leading-relaxed text-foreground whitespace-pre-wrap break-words\">\n {typeof value === \"string\" ? value : json(value)}\n </pre>\n );\n}\n\nfunction EmptyPanel({\n title,\n description,\n}: {\n title: string;\n description: string;\n}) {\n return (\n <div className=\"rounded-lg border border-dashed bg-muted/20 px-4 py-8 text-center\">\n <div className=\"text-sm font-medium text-foreground\">{title}</div>\n <div className=\"mx-auto mt-1 max-w-md text-xs leading-relaxed text-muted-foreground\">\n {description}\n </div>\n </div>\n );\n}\n\nfunction DreamListSkeleton() {\n return (\n <div className=\"space-y-2\">\n {Array.from({ length: 5 }).map((_, index) => (\n <div key={index} className=\"rounded-lg border p-3\">\n <Skeleton className=\"h-4 w-2/3\" />\n <Skeleton className=\"mt-2 h-3 w-full\" />\n <Skeleton className=\"mt-2 h-3 w-1/2\" />\n </div>\n ))}\n </div>\n );\n}\n\nfunction ProposalSkeleton() {\n return (\n <div className=\"space-y-3\">\n {Array.from({ length: 3 }).map((_, index) => (\n <div key={index} className=\"rounded-lg border p-4\">\n <Skeleton className=\"h-4 w-1/2\" />\n <Skeleton className=\"mt-3 h-3 w-full\" />\n <Skeleton className=\"mt-2 h-3 w-3/4\" />\n </div>\n ))}\n </div>\n );\n}\n\nfunction StatTile({\n label,\n value,\n icon: Icon,\n}: {\n label: string;\n value: string | number;\n icon: typeof IconBrain;\n}) {\n return (\n <div className=\"rounded-lg border bg-card px-3 py-2.5\">\n <div className=\"flex items-center justify-between gap-3\">\n <div>\n <div className=\"text-[11px] font-medium uppercase tracking-wide text-muted-foreground\">\n {label}\n </div>\n <div className=\"mt-1 text-xl font-semibold tabular-nums text-foreground\">\n {value}\n </div>\n </div>\n <Icon size={18} className=\"text-muted-foreground\" />\n </div>\n </div>\n );\n}\n\nfunction DreamSettingsSheet({\n open,\n onOpenChange,\n draft,\n onDraftChange,\n onSave,\n saving,\n loading,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n draft: DreamSettingsDraft;\n onDraftChange: (draft: DreamSettingsDraft) => void;\n onSave: () => void;\n saving: boolean;\n loading: boolean;\n}) {\n const sourceIds = splitSourceIds(draft.sourceIdsText);\n const canSave = draft.schedule.trim().length > 0;\n\n function update<K extends keyof DreamSettingsDraft>(\n key: K,\n value: DreamSettingsDraft[K],\n ) {\n onDraftChange({ ...draft, [key]: value });\n }\n\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetTrigger asChild>\n <Button variant=\"outline\" disabled={loading}>\n <IconSettings size={15} className=\"mr-1.5\" />\n Settings\n </Button>\n </SheetTrigger>\n <SheetContent className=\"flex w-full flex-col p-0 sm:max-w-2xl\">\n <SheetHeader className=\"border-b px-5 py-4\">\n <div className=\"flex flex-wrap items-center gap-2 pr-8\">\n <Badge variant={draft.enabled ? \"default\" : \"secondary\"}>\n {draft.enabled ? \"Enabled\" : \"Paused\"}\n </Badge>\n <Badge variant=\"outline\" className=\"font-mono\">\n {draft.schedule || \"No schedule\"}\n </Badge>\n </div>\n <SheetTitle className=\"mt-2 text-base\">Dream settings</SheetTitle>\n <SheetDescription>\n Configure recurring dream scope, schedule, and scan limits.\n </SheetDescription>\n </SheetHeader>\n\n <ScrollArea className=\"min-h-0 flex-1\">\n <div className=\"space-y-6 p-5\">\n <section className=\"space-y-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Schedule\n </div>\n <div className=\"flex items-center justify-between gap-4 rounded-lg border bg-muted/20 px-3 py-3\">\n <div>\n <Label htmlFor=\"dream-enabled\">Recurring dreams</Label>\n <div className=\"mt-1 text-xs text-muted-foreground\">\n Saved setting used by dream jobs.\n </div>\n </div>\n <Switch\n id=\"dream-enabled\"\n checked={draft.enabled}\n onCheckedChange={(checked) => update(\"enabled\", checked)}\n />\n </div>\n <div className=\"grid gap-4 sm:grid-cols-[minmax(0,1fr)_180px]\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-schedule\">Cron schedule</Label>\n <Input\n id=\"dream-schedule\"\n value={draft.schedule}\n onChange={(event) => update(\"schedule\", event.target.value)}\n placeholder=\"0 9 * * 1\"\n className=\"font-mono\"\n />\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-min-candidates\">Min candidates</Label>\n <Input\n id=\"dream-min-candidates\"\n type=\"number\"\n min={0}\n max={50}\n value={draft.minCandidateCount}\n onChange={(event) =>\n update(\"minCandidateCount\", event.target.value)\n }\n />\n </div>\n </div>\n </section>\n\n <Separator />\n\n <section className=\"space-y-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Sources\n </div>\n <div className=\"flex items-center justify-between gap-4 rounded-lg border bg-muted/20 px-3 py-3\">\n <div>\n <Label htmlFor=\"dream-all-sources\">All sources</Label>\n <div className=\"mt-1 text-xs text-muted-foreground\">\n Scan every connected thread-debug source.\n </div>\n </div>\n <Switch\n id=\"dream-all-sources\"\n checked={draft.allSources}\n onCheckedChange={(checked) => update(\"allSources\", checked)}\n />\n </div>\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-source-id\">Source ID</Label>\n <Input\n id=\"dream-source-id\"\n value={draft.sourceId}\n onChange={(event) => update(\"sourceId\", event.target.value)}\n disabled={draft.allSources || sourceIds.length > 0}\n placeholder=\"current\"\n className=\"font-mono\"\n />\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-query\">Query</Label>\n <Input\n id=\"dream-query\"\n value={draft.query}\n onChange={(event) => update(\"query\", event.target.value)}\n placeholder=\"Optional search term\"\n />\n </div>\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-source-ids\">Explicit source IDs</Label>\n <Textarea\n id=\"dream-source-ids\"\n value={draft.sourceIdsText}\n onChange={(event) =>\n update(\"sourceIdsText\", event.target.value)\n }\n disabled={draft.allSources}\n rows={3}\n placeholder=\"One source ID per line\"\n className=\"font-mono\"\n />\n </div>\n </section>\n\n <Separator />\n\n <section className=\"space-y-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Scan Limits\n </div>\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-limit\">Candidate limit</Label>\n <Input\n id=\"dream-limit\"\n type=\"number\"\n min={1}\n max={50}\n value={draft.limit}\n onChange={(event) => update(\"limit\", event.target.value)}\n />\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-source-timeout\">\n Source timeout ms\n </Label>\n <Input\n id=\"dream-source-timeout\"\n type=\"number\"\n min={1000}\n max={60000}\n value={draft.sourceTimeoutMs}\n onChange={(event) =>\n update(\"sourceTimeoutMs\", event.target.value)\n }\n />\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-source-concurrency\">\n Source concurrency\n </Label>\n <Input\n id=\"dream-source-concurrency\"\n type=\"number\"\n min={1}\n max={8}\n value={draft.sourceConcurrency}\n onChange={(event) =>\n update(\"sourceConcurrency\", event.target.value)\n }\n />\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-start-stagger\">Start stagger ms</Label>\n <Input\n id=\"dream-start-stagger\"\n type=\"number\"\n min={0}\n max={5000}\n value={draft.sourceStartStaggerMs}\n onChange={(event) =>\n update(\"sourceStartStaggerMs\", event.target.value)\n }\n />\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-thread-concurrency\">\n Thread concurrency\n </Label>\n <Input\n id=\"dream-thread-concurrency\"\n type=\"number\"\n min={1}\n max={10}\n value={draft.threadConcurrency}\n onChange={(event) =>\n update(\"threadConcurrency\", event.target.value)\n }\n />\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"dream-thread-timeout\">\n Thread timeout ms\n </Label>\n <Input\n id=\"dream-thread-timeout\"\n type=\"number\"\n min={1000}\n max={30000}\n value={draft.threadTimeoutMs}\n onChange={(event) =>\n update(\"threadTimeoutMs\", event.target.value)\n }\n />\n </div>\n </div>\n </section>\n </div>\n </ScrollArea>\n\n <SheetFooter className=\"gap-2 border-t px-5 py-4\">\n <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n Close\n </Button>\n <Button disabled={!canSave || saving} onClick={onSave}>\n {saving ? <Spinner className=\"mr-1.5 size-3.5\" /> : null}\n Save settings\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n );\n}\n\nfunction ProposalCard({\n proposal,\n applying,\n rejecting,\n onApply,\n onReject,\n}: {\n proposal: DreamProposal;\n applying: boolean;\n rejecting: boolean;\n onApply: () => void;\n onReject: (reason?: string) => void;\n}) {\n const [open, setOpen] = useState(false);\n const [rejectReason, setRejectReason] = useState(\"\");\n const evidence = proposal.evidence ?? [];\n const sourceRunIds = proposal.sourceRunIds ?? [];\n const status = String(proposal.status || \"pending\").toLowerCase();\n const canAct = status === \"pending\";\n const needsApproval =\n proposal.targetType != null && proposal.targetType !== \"personal-memory\";\n const previewQuery = useActionQuery<DreamProposalPreview>(\n \"preview-dream-proposal\",\n { id: proposal.id },\n { enabled: open, staleTime: 0 },\n );\n const preview = previewQuery.data;\n\n return (\n <div className=\"rounded-lg border bg-card\">\n <div className=\"flex flex-col gap-3 border-b px-4 py-3 md:flex-row md:items-start md:justify-between\">\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <StatusBadge status={proposal.status} />\n <Badge variant=\"outline\" className=\"font-mono\">\n {proposalTarget(proposal)}\n </Badge>\n {proposal.risk ? (\n <Badge variant=\"secondary\" className=\"capitalize\">\n {proposal.risk} risk\n </Badge>\n ) : null}\n </div>\n <div className=\"mt-2 text-sm font-medium text-foreground\">\n {proposal.title || proposal.summary || proposal.id}\n </div>\n {proposal.summary && proposal.title ? (\n <div className=\"mt-1 text-xs leading-relaxed text-muted-foreground\">\n {proposal.summary}\n </div>\n ) : null}\n </div>\n <div className=\"flex shrink-0 gap-2\">\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button size=\"sm\" variant={canAct ? \"default\" : \"outline\"}>\n <IconFileDiff size={14} className=\"mr-1.5\" />\n Review\n </Button>\n </SheetTrigger>\n <SheetContent className=\"flex w-full flex-col p-0 sm:max-w-3xl\">\n <SheetHeader className=\"border-b px-5 py-4\">\n <div className=\"flex flex-wrap items-center gap-2 pr-8\">\n <StatusBadge status={proposal.status} />\n <Badge variant=\"outline\" className=\"font-mono\">\n {preview?.target?.path || proposalTarget(proposal)}\n </Badge>\n <Badge variant=\"secondary\" className=\"capitalize\">\n {preview?.operation || \"review\"}\n </Badge>\n {preview?.approval?.willRequestApproval ? (\n <Badge variant=\"secondary\">Approval request</Badge>\n ) : null}\n </div>\n <SheetTitle className=\"mt-2 text-base\">\n {proposal.title || proposal.summary || proposal.id}\n </SheetTitle>\n <SheetDescription>\n {proposal.summary ||\n \"Review the target, evidence, and proposed content before applying this dream proposal.\"}\n </SheetDescription>\n </SheetHeader>\n\n <ScrollArea className=\"min-h-0 flex-1\">\n <div className=\"space-y-5 p-5\">\n {previewQuery.error ? (\n <QueryState\n error={previewQuery.error}\n label=\"Could not preview proposal\"\n />\n ) : null}\n {previewQuery.isLoading ? <ProposalSkeleton /> : null}\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"rounded-lg border bg-muted/20 p-3\">\n <div className=\"text-[11px] font-medium uppercase tracking-wide text-muted-foreground\">\n Target\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-foreground\">\n {preview?.target?.path || proposalTarget(proposal)}\n </div>\n <div className=\"mt-2 flex flex-wrap gap-1.5\">\n <Badge variant=\"outline\">\n {preview?.target?.type ||\n proposal.targetType ||\n \"memory\"}\n </Badge>\n {preview?.targetExists ? (\n <Badge variant=\"secondary\">Existing target</Badge>\n ) : (\n <Badge variant=\"secondary\">New target</Badge>\n )}\n </div>\n </div>\n <div className=\"rounded-lg border bg-muted/20 p-3\">\n <div className=\"text-[11px] font-medium uppercase tracking-wide text-muted-foreground\">\n Review gate\n </div>\n <div className=\"mt-1 text-xs leading-relaxed text-foreground\">\n {preview?.approval?.willRequestApproval\n ? \"Applying will create a Dispatch approval request.\"\n : needsApproval\n ? \"Applying writes a shared/workspace resource because approvals are disabled.\"\n : \"Applying writes personal memory directly.\"}\n </div>\n <div className=\"mt-2 flex flex-wrap gap-1.5\">\n {proposal.risk ? (\n <Badge variant=\"outline\" className=\"capitalize\">\n {proposal.risk} risk\n </Badge>\n ) : null}\n {proposal.confidence != null ? (\n <Badge variant=\"outline\">\n {proposal.confidence}% confidence\n </Badge>\n ) : null}\n </div>\n </div>\n </div>\n\n {proposal.rationale ? (\n <div>\n <div className=\"text-xs font-medium text-foreground\">\n Rationale\n </div>\n <div className=\"mt-1 text-xs leading-relaxed text-muted-foreground\">\n {proposal.rationale}\n </div>\n </div>\n ) : null}\n\n <Separator />\n\n <div className=\"grid gap-4 lg:grid-cols-2\">\n <div>\n <div className=\"mb-2 text-xs font-medium text-foreground\">\n Current target\n </div>\n {preview?.currentContent ? (\n <RawBlock value={preview.currentContent} />\n ) : (\n <EmptyPanel\n title=\"No existing content\"\n description=\"This proposal would create a new target or append to an empty target.\"\n />\n )}\n </div>\n <div>\n <div className=\"mb-2 text-xs font-medium text-foreground\">\n Proposed content\n </div>\n <RawBlock\n value={preview?.proposedContent || proposal.content}\n />\n </div>\n </div>\n\n <Separator />\n\n <div>\n <div className=\"mb-2 text-xs font-medium text-foreground\">\n Evidence\n </div>\n {sourceRunIds.length > 0 ? (\n <div className=\"mb-2 flex flex-wrap gap-1.5\">\n {sourceRunIds.map((id) => (\n <Badge\n key={id}\n variant=\"outline\"\n className=\"font-mono\"\n >\n {id}\n </Badge>\n ))}\n </div>\n ) : null}\n {evidence.length > 0 ? (\n <div className=\"space-y-2\">\n {evidence.map((item, index) => (\n <div\n key={item.id || `${proposal.id}-review-${index}`}\n className=\"rounded-md border bg-muted/20 px-3 py-2\"\n >\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <div className=\"text-xs font-medium text-foreground\">\n {evidenceLabel(item, index)}\n </div>\n <div className=\"text-[11px] text-muted-foreground\">\n {formatDate(item.createdAt)}\n </div>\n </div>\n <div className=\"mt-1 text-xs leading-relaxed text-muted-foreground\">\n {item.quote ||\n item.snippet ||\n item.summary ||\n \"No text\"}\n </div>\n </div>\n ))}\n </div>\n ) : (\n <EmptyPanel\n title=\"No structured evidence\"\n description=\"The proposal did not include compact evidence records.\"\n />\n )}\n </div>\n\n {canAct ? (\n <div className=\"space-y-2\">\n <Label htmlFor={`reject-${proposal.id}`}>\n Rejection reason\n </Label>\n <Textarea\n id={`reject-${proposal.id}`}\n value={rejectReason}\n onChange={(event) =>\n setRejectReason(event.target.value)\n }\n placeholder=\"Optional note for the audit log\"\n />\n </div>\n ) : null}\n </div>\n </ScrollArea>\n\n <SheetFooter className=\"gap-2 border-t px-5 py-4\">\n <Button\n variant=\"outline\"\n disabled={!canAct || applying || rejecting}\n onClick={() => {\n onReject(rejectReason.trim() || undefined);\n setOpen(false);\n }}\n >\n {rejecting ? (\n <Spinner className=\"mr-1.5 size-3.5\" />\n ) : (\n <IconX size={14} className=\"mr-1.5\" />\n )}\n Reject\n </Button>\n <Button\n disabled={!canAct || applying || rejecting}\n onClick={() => {\n onApply();\n setOpen(false);\n }}\n >\n {applying ? (\n <Spinner className=\"mr-1.5 size-3.5\" />\n ) : (\n <IconCheck size={14} className=\"mr-1.5\" />\n )}\n {needsApproval ? \"Request approval\" : \"Apply\"}\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n\n <Accordion type=\"multiple\" className=\"px-4\">\n <AccordionItem value=\"evidence\" className=\"border-b-0\">\n <AccordionTrigger className=\"py-3 text-xs hover:no-underline\">\n Evidence and provenance\n </AccordionTrigger>\n <AccordionContent className=\"space-y-3 pb-4\">\n {sourceRunIds.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5\">\n {sourceRunIds.map((id) => (\n <Badge key={id} variant=\"outline\" className=\"font-mono\">\n {id}\n </Badge>\n ))}\n </div>\n ) : null}\n {evidence.length > 0 ? (\n <div className=\"space-y-2\">\n {evidence.map((item, index) => (\n <div\n key={item.id || `${proposal.id}-evidence-${index}`}\n className=\"rounded-md border bg-muted/20 px-3 py-2\"\n >\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <div className=\"text-xs font-medium text-foreground\">\n {evidenceLabel(item, index)}\n </div>\n <div className=\"text-[11px] text-muted-foreground\">\n {formatDate(item.createdAt)}\n </div>\n </div>\n <div className=\"mt-1 text-xs leading-relaxed text-muted-foreground\">\n {item.quote || item.snippet || item.summary || \"No text\"}\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"text-xs text-muted-foreground\">\n No structured evidence attached yet.\n </div>\n )}\n </AccordionContent>\n </AccordionItem>\n {proposal.content ? (\n <AccordionItem value=\"content\" className=\"border-b-0\">\n <AccordionTrigger className=\"py-3 text-xs hover:no-underline\">\n Proposed content\n </AccordionTrigger>\n <AccordionContent className=\"pb-4\">\n <RawBlock value={proposal.content} />\n </AccordionContent>\n </AccordionItem>\n ) : null}\n </Accordion>\n </div>\n );\n}\n\nexport default function DreamsRoute() {\n const [searchParams, setSearchParams] = useSearchParams();\n const [selectedDreamId, setSelectedDreamId] = useState<string | null>(\n searchParams.get(\"dreamId\"),\n );\n const [settingsOpen, setSettingsOpen] = useState(false);\n const [settingsDraft, setSettingsDraft] = useState<DreamSettingsDraft>(() =>\n dreamSettingsToDraft(null),\n );\n\n const dreamsQuery = useActionQuery<ListDreamsResponse>(\n \"list-dreams\",\n { limit: 25 },\n { staleTime: 15_000 },\n );\n const candidatesQuery = useActionQuery<ListCandidatesResponse>(\n \"list-dream-candidates\",\n {\n limit: 25,\n sourceTimeoutMs: 30_000,\n sourceConcurrency: 2,\n sourceStartStaggerMs: 250,\n threadConcurrency: 3,\n threadTimeoutMs: 8_000,\n },\n { staleTime: 15_000 },\n );\n const dreamSettingsQuery = useActionQuery<DreamSettings>(\n \"get-dream-settings\",\n {},\n { staleTime: 30_000 },\n );\n const dreamDetailQuery = useActionQuery<GetDreamResponse>(\n \"get-dream\",\n { id: selectedDreamId ?? \"\" },\n { enabled: !!selectedDreamId, staleTime: 10_000 },\n );\n\n const dreams = useMemo(\n () =>\n normalizeArray<DreamPass>(dreamsQuery.data, [\n \"dreams\",\n \"items\",\n \"results\",\n ]),\n [dreamsQuery.data],\n );\n const candidates = useMemo(\n () =>\n normalizeArray<CandidateRun>(candidatesQuery.data, [\n \"candidates\",\n \"items\",\n \"results\",\n ]),\n [candidatesQuery.data],\n );\n const candidateSourceHealth = useMemo(\n () => normalizeSourceHealth(candidatesQuery.data),\n [candidatesQuery.data],\n );\n\n useEffect(() => {\n const urlDreamId = searchParams.get(\"dreamId\");\n if (urlDreamId && urlDreamId !== selectedDreamId) {\n setSelectedDreamId(urlDreamId);\n return;\n }\n if (selectedDreamId && dreams.some((dream) => dream.id === selectedDreamId))\n return;\n const nextId = dreams[0]?.id ?? null;\n setSelectedDreamId(nextId);\n if (nextId && nextId !== urlDreamId) {\n const next = new URLSearchParams(searchParams);\n next.set(\"dreamId\", nextId);\n setSearchParams(next, { replace: true });\n }\n }, [dreams, searchParams, selectedDreamId, setSearchParams]);\n\n function selectDream(dreamId: string) {\n setSelectedDreamId(dreamId);\n const next = new URLSearchParams(searchParams);\n next.set(\"dreamId\", dreamId);\n setSearchParams(next, { replace: true });\n }\n\n const createDream = useActionMutation<\n CreateDreamReportResult,\n CreateDreamReportParams\n >(\"create-dream-report\", {\n onSuccess: (result) => {\n const nextId = resultDreamId(result);\n if (nextId) selectDream(nextId);\n toast.success(\"Dream report created\");\n },\n onError: (err) => toast.error(String(err)),\n });\n\n const applyProposal = useActionMutation<unknown, ProposalMutationParams>(\n \"apply-dream-proposal\",\n {\n onSuccess: (result) => {\n toast.success(\n isApprovalRequestResult(result)\n ? \"Approval requested\"\n : \"Proposal applied\",\n );\n dreamDetailQuery.refetch();\n dreamsQuery.refetch();\n },\n onError: (err) => toast.error(String(err)),\n },\n );\n\n const rejectProposal = useActionMutation<unknown, ProposalMutationParams>(\n \"reject-dream-proposal\",\n {\n onSuccess: () => {\n toast.success(\"Proposal rejected\");\n dreamDetailQuery.refetch();\n dreamsQuery.refetch();\n },\n onError: (err) => toast.error(String(err)),\n },\n );\n const ensureDreamSchedule = useActionMutation<\n unknown,\n Partial<DreamSettings>\n >(\"ensure-dream-job\", {\n onSuccess: () => {\n toast.success(\"Dream schedule updated\");\n dreamSettingsQuery.refetch();\n },\n onError: (err) => toast.error(String(err)),\n });\n const saveDreamSettings = useActionMutation<\n DreamSettings,\n Partial<DreamSettings>\n >(\"set-dream-settings\", {\n onSuccess: (settings) => {\n toast.success(\"Dream settings saved\");\n setSettingsDraft(dreamSettingsToDraft(settings));\n setSettingsOpen(false);\n dreamSettingsQuery.refetch();\n candidatesQuery.refetch();\n },\n onError: (err) => toast.error(String(err)),\n });\n\n const detail = dreamDetailQuery.data ?? null;\n const dreamSettings = dreamSettingsQuery.data ?? null;\n const selectedDream =\n detail?.dream ?? dreams.find((dream) => dream.id === selectedDreamId);\n const proposals = detail?.proposals ?? [];\n const inspectedRuns = detail?.inspectedRuns ?? detail?.candidates ?? [];\n const selectedSourceHealth = selectedDream?.sourceHealth ?? [];\n const pendingProposalCount = proposals.filter(\n (proposal) =>\n String(proposal.status || \"pending\").toLowerCase() === \"pending\",\n ).length;\n const appliedProposalCount = proposals.filter(\n (proposal) => String(proposal.status || \"\").toLowerCase() === \"applied\",\n ).length;\n\n useEffect(() => {\n if (dreamSettings && !settingsOpen) {\n setSettingsDraft(dreamSettingsToDraft(dreamSettings));\n }\n }, [dreamSettings, settingsOpen]);\n\n function handleSettingsOpenChange(open: boolean) {\n if (open) {\n setSettingsDraft(dreamSettingsToDraft(dreamSettings));\n }\n setSettingsOpen(open);\n }\n\n function saveSettings() {\n const update = dreamSettingsUpdateFromDraft(settingsDraft);\n if (!update.schedule) {\n toast.error(\"Add a cron schedule before saving\");\n return;\n }\n saveDreamSettings.mutate(update);\n }\n\n function runDream(scanAllSources = false) {\n createDream.mutate({\n sourceId: scanAllSources ? \"all\" : \"current\",\n allSources: scanAllSources,\n limit: scanAllSources\n ? 8\n : candidates.length > 0\n ? candidates.length\n : 20,\n sourceTimeoutMs: dreamSettings?.sourceTimeoutMs ?? 30_000,\n sourceConcurrency: dreamSettings?.sourceConcurrency ?? 2,\n sourceStartStaggerMs: dreamSettings?.sourceStartStaggerMs ?? 250,\n threadConcurrency: dreamSettings?.threadConcurrency ?? 3,\n threadTimeoutMs: dreamSettings?.threadTimeoutMs ?? 8_000,\n });\n }\n\n function ensureSchedule() {\n ensureDreamSchedule.mutate({\n schedule: dreamSettings?.schedule,\n sourceId: dreamSettings?.sourceId ?? \"all\",\n sourceIds: dreamSettings?.sourceIds,\n allSources: dreamSettings?.allSources ?? true,\n query: dreamSettings?.query ?? undefined,\n limit: dreamSettings?.limit ?? 8,\n sourceTimeoutMs: dreamSettings?.sourceTimeoutMs ?? 30_000,\n sourceConcurrency: dreamSettings?.sourceConcurrency ?? 2,\n sourceStartStaggerMs: dreamSettings?.sourceStartStaggerMs ?? 250,\n threadConcurrency: dreamSettings?.threadConcurrency ?? 3,\n threadTimeoutMs: dreamSettings?.threadTimeoutMs ?? 8_000,\n minCandidateCount: dreamSettings?.minCandidateCount ?? 1,\n });\n }\n\n return (\n <DispatchShell\n title=\"Dreams\"\n description=\"Review agent runs, propose memory improvements, and apply evidence-backed learning changes.\"\n >\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 md:flex-row md:items-center md:justify-between\">\n <div className=\"grid flex-1 gap-2 sm:grid-cols-2 xl:grid-cols-4\">\n <StatTile\n label=\"Dream passes\"\n value={dreams.length}\n icon={IconBrain}\n />\n <StatTile\n label=\"Pending proposals\"\n value={pendingProposalCount}\n icon={IconCircleDashed}\n />\n <StatTile\n label=\"Candidate runs\"\n value={candidates.length}\n icon={IconClock}\n />\n <StatTile\n label=\"Inspected threads\"\n value={selectedDream ? dreamInspectedCount(selectedDream) : 0}\n icon={IconCheck}\n />\n </div>\n <div className=\"flex shrink-0 flex-wrap gap-2\">\n {dreamSettings ? (\n <Badge variant=\"outline\" className=\"h-9 px-3\">\n {dreamSettings.enabled ? \"Enabled\" : \"Paused\"} ·{\" \"}\n {dreamSettings.allSources\n ? \"All sources\"\n : dreamSettings.sourceId}{\" \"}\n · {dreamSettings.schedule}\n </Badge>\n ) : null}\n <DreamSettingsSheet\n open={settingsOpen}\n onOpenChange={handleSettingsOpenChange}\n draft={settingsDraft}\n onDraftChange={setSettingsDraft}\n onSave={saveSettings}\n saving={saveDreamSettings.isPending}\n loading={dreamSettingsQuery.isLoading}\n />\n <Button\n variant=\"outline\"\n onClick={() => {\n dreamsQuery.refetch();\n candidatesQuery.refetch();\n if (selectedDreamId) dreamDetailQuery.refetch();\n }}\n >\n <IconRefresh size={15} className=\"mr-1.5\" />\n Refresh\n </Button>\n <Button\n variant=\"outline\"\n onClick={ensureSchedule}\n disabled={ensureDreamSchedule.isPending}\n >\n {ensureDreamSchedule.isPending ? (\n <Spinner className=\"mr-1.5 size-3.5\" />\n ) : (\n <IconCalendarTime size={15} className=\"mr-1.5\" />\n )}\n Ensure schedule\n </Button>\n <Button\n variant=\"outline\"\n onClick={() => runDream(true)}\n disabled={createDream.isPending}\n >\n {createDream.isPending ? (\n <Spinner className=\"mr-1.5 size-3.5\" />\n ) : (\n <IconDatabase size={15} className=\"mr-1.5\" />\n )}\n Run all sources\n </Button>\n <Button\n onClick={() => runDream(false)}\n disabled={createDream.isPending}\n >\n {createDream.isPending ? (\n <Spinner className=\"mr-1.5 size-3.5\" />\n ) : (\n <IconPlayerPlay size={15} className=\"mr-1.5\" />\n )}\n Run dream\n </Button>\n </div>\n </div>\n\n <div className=\"grid gap-4 xl:grid-cols-[280px_minmax(0,1fr)_380px]\">\n <section className=\"rounded-lg border bg-card\">\n <div className=\"border-b px-4 py-3\">\n <div className=\"text-sm font-semibold text-foreground\">\n Recent passes\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground\">\n Reports generated from prior agent activity.\n </div>\n </div>\n <div className=\"max-h-[720px] overflow-auto p-3\">\n <QueryState\n error={dreamsQuery.error}\n label=\"Could not load dream passes\"\n />\n {dreamsQuery.isLoading ? <DreamListSkeleton /> : null}\n {!dreamsQuery.isLoading && !dreamsQuery.error ? (\n dreams.length > 0 ? (\n <div className=\"space-y-2\">\n {dreams.map((dream, index) => {\n const selected = dream.id === selectedDreamId;\n return (\n <button\n key={dream.id}\n type=\"button\"\n onClick={() => selectDream(dream.id)}\n className={cn(\n \"w-full rounded-lg border px-3 py-3 text-left transition-colors\",\n selected\n ? \"border-foreground bg-muted\"\n : \"bg-background hover:border-foreground/30 hover:bg-muted/40\",\n )}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-medium text-foreground\">\n {dreamLabel(dream, index)}\n </div>\n <div className=\"mt-1 truncate font-mono text-[11px] text-muted-foreground\">\n {dream.id}\n </div>\n </div>\n <StatusBadge status={dream.status} />\n </div>\n <div className=\"mt-2 line-clamp-2 text-xs leading-relaxed text-muted-foreground\">\n {dream.summary || \"No summary yet.\"}\n </div>\n <div className=\"mt-3 flex flex-wrap gap-1.5\">\n <Badge variant=\"outline\">\n {plural(dreamProposalCount(dream), \"proposal\")}\n </Badge>\n <Badge variant=\"outline\">\n {plural(dreamInspectedCount(dream), \"run\")}\n </Badge>\n </div>\n <div className=\"mt-2 text-[11px] text-muted-foreground\">\n {compactDate(\n dream.completedAt ??\n dream.updatedAt ??\n dream.startedAt ??\n dream.createdAt,\n )}\n </div>\n </button>\n );\n })}\n </div>\n ) : (\n <EmptyPanel\n title=\"No dreams yet\"\n description=\"Run the first dream pass to review recent agent history and generate proposed memory changes.\"\n />\n )\n ) : null}\n </div>\n </section>\n\n <section className=\"min-w-0 rounded-lg border bg-card\">\n <div className=\"border-b px-4 py-3\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-foreground\">\n {selectedDream\n ? selectedDream.title || selectedDream.id\n : \"Dream detail\"}\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground\">\n {selectedDream\n ? `Completed ${formatDate(\n selectedDream.completedAt ??\n selectedDream.updatedAt ??\n selectedDream.createdAt,\n )}`\n : \"Select a pass or run a new dream.\"}\n </div>\n </div>\n {selectedDream ? (\n <div className=\"flex flex-wrap gap-1.5\">\n <StatusBadge status={selectedDream.status} />\n <Badge variant=\"outline\">\n {plural(appliedProposalCount, \"applied\", \"applied\")}\n </Badge>\n </div>\n ) : null}\n </div>\n </div>\n\n <div className=\"p-4\">\n <QueryState\n error={dreamDetailQuery.error}\n label=\"Could not load dream detail\"\n />\n {dreamDetailQuery.isLoading ? <ProposalSkeleton /> : null}\n {!selectedDreamId && !dreamDetailQuery.isLoading ? (\n <EmptyPanel\n title=\"Nothing selected\"\n description=\"Choose a recent dream pass or run one from candidate agent runs.\"\n />\n ) : null}\n {selectedDreamId &&\n !dreamDetailQuery.isLoading &&\n !dreamDetailQuery.error ? (\n <Tabs defaultValue=\"proposals\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"proposals\">Proposals</TabsTrigger>\n <TabsTrigger value=\"report\">Report</TabsTrigger>\n <TabsTrigger value=\"sources\">Sources</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"proposals\" className=\"mt-4\">\n {proposals.length > 0 ? (\n <div className=\"space-y-3\">\n {proposals.map((proposal) => (\n <ProposalCard\n key={proposal.id}\n proposal={proposal}\n applying={\n applyProposal.isPending &&\n applyProposal.variables?.id === proposal.id\n }\n rejecting={\n rejectProposal.isPending &&\n rejectProposal.variables?.id === proposal.id\n }\n onApply={() =>\n applyProposal.mutate({\n id: proposal.id,\n })\n }\n onReject={(reason) =>\n rejectProposal.mutate({\n id: proposal.id,\n reason,\n })\n }\n />\n ))}\n </div>\n ) : (\n <EmptyPanel\n title=\"No proposals\"\n description=\"This dream did not produce reviewable memory, skill, job, or instruction changes.\"\n />\n )}\n </TabsContent>\n\n <TabsContent value=\"report\" className=\"mt-4\">\n {detail?.report || detail?.summary ? (\n <RawBlock value={detail.report || detail.summary || \"\"} />\n ) : (\n <EmptyPanel\n title=\"No report text\"\n description=\"The dream detail action did not return a report body.\"\n />\n )}\n </TabsContent>\n\n <TabsContent value=\"sources\" className=\"mt-4\">\n {selectedSourceHealth.length > 0 ? (\n <div className=\"mb-4\">\n <SourceHealthPanel sources={selectedSourceHealth} />\n </div>\n ) : null}\n {inspectedRuns.length > 0 || detail?.evidence?.length ? (\n <Accordion type=\"multiple\" className=\"rounded-lg border\">\n {inspectedRuns.map((run, index) => (\n <AccordionItem\n key={candidateId(run)}\n value={candidateId(run) || `run-${index}`}\n className=\"px-4\"\n >\n <AccordionTrigger className=\"text-sm hover:no-underline\">\n <span className=\"min-w-0 truncate text-left\">\n {candidateLabel(run)}\n </span>\n </AccordionTrigger>\n <AccordionContent className=\"pb-4\">\n <div className=\"grid gap-2 text-xs text-muted-foreground sm:grid-cols-2\">\n <div>\n Thread:{\" \"}\n <span className=\"font-mono text-foreground\">\n {run.thread?.id ?? run.threadId ?? \"n/a\"}\n </span>\n </div>\n <div>\n Run:{\" \"}\n <span className=\"font-mono text-foreground\">\n {run.runId ?? run.id}\n </span>\n </div>\n <div>Owner: {candidateOwner(run)}</div>\n <div>Status: {candidateStatus(run)}</div>\n </div>\n {candidateSignals(run).length > 0 ? (\n <div className=\"mt-3 flex flex-wrap gap-1.5\">\n {candidateSignals(run).map((signal) => (\n <Badge key={signal} variant=\"outline\">\n {signal}\n </Badge>\n ))}\n </div>\n ) : null}\n </AccordionContent>\n </AccordionItem>\n ))}\n {(detail?.evidence ?? []).map((item, index) => (\n <AccordionItem\n key={item.id || `evidence-${index}`}\n value={item.id || `evidence-${index}`}\n className=\"px-4\"\n >\n <AccordionTrigger className=\"text-sm hover:no-underline\">\n {evidenceLabel(item, index)}\n </AccordionTrigger>\n <AccordionContent className=\"pb-4\">\n <RawBlock value={item} />\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n ) : (\n <EmptyPanel\n title=\"No source runs\"\n description=\"This dream has no structured source list yet.\"\n />\n )}\n </TabsContent>\n </Tabs>\n ) : null}\n </div>\n </section>\n\n <section className=\"rounded-lg border bg-card\">\n <div className=\"border-b px-4 py-3\">\n <div>\n <div className=\"text-sm font-semibold text-foreground\">\n Candidate runs\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground\">\n Grounded signals ready for review.\n </div>\n </div>\n </div>\n <div className=\"max-h-[720px] overflow-auto p-3\">\n <QueryState\n error={candidatesQuery.error}\n label=\"Could not load candidates\"\n />\n {candidatesQuery.isLoading ? <DreamListSkeleton /> : null}\n {!candidatesQuery.isLoading &&\n !candidatesQuery.error &&\n candidateSourceHealth.length > 0 ? (\n <div className=\"mb-3\">\n <SourceHealthPanel sources={candidateSourceHealth} />\n </div>\n ) : null}\n {!candidatesQuery.isLoading && !candidatesQuery.error ? (\n candidates.length > 0 ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Run</TableHead>\n <TableHead>Signals</TableHead>\n <TableHead className=\"w-20 text-right\">Score</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {candidates.map((candidate) => {\n const id = candidateId(candidate);\n const signals = candidateSignals(candidate);\n return (\n <TableRow key={id}>\n <TableCell className=\"min-w-0 py-3\">\n <div className=\"max-w-[230px] truncate text-sm font-medium text-foreground\">\n {candidateLabel(candidate)}\n </div>\n <div className=\"mt-1 truncate font-mono text-[11px] text-muted-foreground\">\n {candidate.thread?.id ??\n candidate.threadId ??\n candidate.runId ??\n id}\n </div>\n <div className=\"mt-1 text-[11px] text-muted-foreground\">\n {candidateOwner(candidate)} ·{\" \"}\n {compactDate(candidateUpdatedAt(candidate))}\n </div>\n </TableCell>\n <TableCell className=\"py-3\">\n <div className=\"mt-1 flex flex-wrap gap-1\">\n <Badge variant=\"outline\">\n {candidateStatus(candidate)}\n </Badge>\n {signals.slice(0, 2).map((signal) => (\n <Badge key={signal} variant=\"secondary\">\n {signal}\n </Badge>\n ))}\n </div>\n </TableCell>\n <TableCell className=\"py-3 text-right text-sm tabular-nums text-muted-foreground\">\n {candidate.score ?? \"n/a\"}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n ) : (\n <EmptyPanel\n title=\"No candidates\"\n description=\"No recent runs matched the dream candidate heuristics.\"\n />\n )\n ) : null}\n </div>\n </section>\n </div>\n </div>\n </DispatchShell>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/workspace.tsx"],"names":[],"mappings":"AAmDA,wBAAgB,IAAI;;IAEnB;AAibD,MAAM,CAAC,OAAO,UAAU,cAAc,4CA2JrC"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/workspace.tsx"],"names":[],"mappings":"AAyDA,wBAAgB,IAAI;;IAEnB;AAi6BD,MAAM,CAAC,OAAO,UAAU,cAAc,4CAqIrC"}