@fayz-ai/admin 0.14.0 → 0.15.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 (292) hide show
  1. package/dist/{ScheduleEditor-S3QI5MHO.js → ScheduleEditor-57AYL7B6.js} +4 -4
  2. package/dist/{ScheduleEditor-S3QI5MHO.js.map → ScheduleEditor-57AYL7B6.js.map} +1 -1
  3. package/dist/SubscriptionPage-FE2B5ZXF.js +7 -0
  4. package/dist/{SubscriptionPage-4KP7DKA2.js.map → SubscriptionPage-FE2B5ZXF.js.map} +1 -1
  5. package/dist/app/AdminShell.d.ts +11 -1
  6. package/dist/app/AdminShell.d.ts.map +1 -1
  7. package/dist/app/admin-app.d.ts.map +1 -1
  8. package/dist/app/config.d.ts +34 -3
  9. package/dist/app/config.d.ts.map +1 -1
  10. package/dist/app/core-entities.d.ts.map +1 -1
  11. package/dist/app/derive-contract.d.ts.map +1 -1
  12. package/dist/app/scaffold.d.ts.map +1 -1
  13. package/dist/{chunk-OI7RYSTM.js → chunk-45EZQW4M.js} +22 -7
  14. package/dist/chunk-45EZQW4M.js.map +1 -0
  15. package/dist/{chunk-B6NVEKAJ.js → chunk-IPWXA46H.js} +3 -3
  16. package/dist/{chunk-B6NVEKAJ.js.map → chunk-IPWXA46H.js.map} +1 -1
  17. package/dist/{chunk-PNAJODZM.js → chunk-OB7ZSTQD.js} +13 -3
  18. package/dist/chunk-OB7ZSTQD.js.map +1 -0
  19. package/dist/components/AskAI.d.ts +71 -0
  20. package/dist/components/AskAI.d.ts.map +1 -0
  21. package/dist/components/RightRail.d.ts +10 -2
  22. package/dist/components/RightRail.d.ts.map +1 -1
  23. package/dist/components/RightRailPage.d.ts +30 -0
  24. package/dist/components/RightRailPage.d.ts.map +1 -0
  25. package/dist/components/chat/AgentAvatar.d.ts +43 -0
  26. package/dist/components/chat/AgentAvatar.d.ts.map +1 -0
  27. package/dist/components/chat/AgentIntro.d.ts +25 -0
  28. package/dist/components/chat/AgentIntro.d.ts.map +1 -0
  29. package/dist/components/chat/AssistantActivityBar.d.ts +7 -2
  30. package/dist/components/chat/AssistantActivityBar.d.ts.map +1 -1
  31. package/dist/components/chat/AssistantRecordingView.d.ts +16 -0
  32. package/dist/components/chat/AssistantRecordingView.d.ts.map +1 -0
  33. package/dist/components/chat/ChatAttachments.d.ts +12 -1
  34. package/dist/components/chat/ChatAttachments.d.ts.map +1 -1
  35. package/dist/components/chat/ChatComposer.d.ts +1 -4
  36. package/dist/components/chat/ChatComposer.d.ts.map +1 -1
  37. package/dist/components/chat/ChatConversation.d.ts +1 -1
  38. package/dist/components/chat/ChatConversation.d.ts.map +1 -1
  39. package/dist/components/chat/ChatFab.d.ts.map +1 -1
  40. package/dist/components/chat/ChatHistory.d.ts.map +1 -1
  41. package/dist/components/chat/ChatMessages.d.ts +1 -1
  42. package/dist/components/chat/ChatMessages.d.ts.map +1 -1
  43. package/dist/components/chat/ChatSuggestions.d.ts.map +1 -1
  44. package/dist/components/chat/ConnectorSuggestionCard.d.ts +3 -0
  45. package/dist/components/chat/ConnectorSuggestionCard.d.ts.map +1 -1
  46. package/dist/components/chat/StaffHireView.d.ts +21 -0
  47. package/dist/components/chat/StaffHireView.d.ts.map +1 -0
  48. package/dist/components/chat/StaffPitchCard.d.ts +15 -0
  49. package/dist/components/chat/StaffPitchCard.d.ts.map +1 -0
  50. package/dist/components/chat/StaffSwitcher.d.ts +23 -0
  51. package/dist/components/chat/StaffSwitcher.d.ts.map +1 -0
  52. package/dist/components/chat/activity-icons.d.ts +16 -0
  53. package/dist/components/chat/activity-icons.d.ts.map +1 -0
  54. package/dist/components/chat/index.d.ts +2 -0
  55. package/dist/components/chat/index.d.ts.map +1 -1
  56. package/dist/components/connect/ConnectConsentPage.d.ts.map +1 -1
  57. package/dist/components/connect/ConnectorDetail.d.ts.map +1 -1
  58. package/dist/components/connect/ConnectorRuns.d.ts.map +1 -1
  59. package/dist/components/connect/ConnectorsPanel.d.ts.map +1 -1
  60. package/dist/components/connect/ConnectorsTab.d.ts.map +1 -1
  61. package/dist/components/connect/connector-map.generated.d.ts.map +1 -1
  62. package/dist/components/connect/index.d.ts +3 -0
  63. package/dist/components/connect/index.d.ts.map +1 -1
  64. package/dist/components/connect/model.d.ts +55 -0
  65. package/dist/components/connect/model.d.ts.map +1 -1
  66. package/dist/components/organization/PermissionMatrixEditor.d.ts.map +1 -1
  67. package/dist/components/organization/PermissionProfilesTab.d.ts.map +1 -1
  68. package/dist/components/organization/TeamTab.d.ts.map +1 -1
  69. package/dist/components/organization/index.d.ts +0 -2
  70. package/dist/components/organization/index.d.ts.map +1 -1
  71. package/dist/components/plugins/PluginSettingsPanel.d.ts +1 -2
  72. package/dist/components/plugins/PluginSettingsPanel.d.ts.map +1 -1
  73. package/dist/components/plugins/SettingsTabs.d.ts +33 -0
  74. package/dist/components/plugins/SettingsTabs.d.ts.map +1 -0
  75. package/dist/components/rail-pages.d.ts +17 -0
  76. package/dist/components/rail-pages.d.ts.map +1 -0
  77. package/dist/components/right-rail.d.ts +95 -1
  78. package/dist/components/right-rail.d.ts.map +1 -1
  79. package/dist/components/settings/ConnectedCompanySettings.d.ts.map +1 -1
  80. package/dist/components/settings/ConnectedUserProfile.d.ts.map +1 -1
  81. package/dist/components/settings/LocationsCrudPage.d.ts.map +1 -1
  82. package/dist/components/settings/MyRecordPanel.d.ts +3 -0
  83. package/dist/components/settings/MyRecordPanel.d.ts.map +1 -0
  84. package/dist/components/settings/MyWorkspaceCard.d.ts +3 -0
  85. package/dist/components/settings/MyWorkspaceCard.d.ts.map +1 -0
  86. package/dist/components/shared/ContactPicker.d.ts +26 -12
  87. package/dist/components/shared/ContactPicker.d.ts.map +1 -1
  88. package/dist/crud/CrudAgentSurface.d.ts +12 -0
  89. package/dist/crud/CrudAgentSurface.d.ts.map +1 -0
  90. package/dist/crud/CrudDetailPage.d.ts +19 -1
  91. package/dist/crud/CrudDetailPage.d.ts.map +1 -1
  92. package/dist/crud/CrudFormPage.d.ts +23 -1
  93. package/dist/crud/CrudFormPage.d.ts.map +1 -1
  94. package/dist/crud/CrudListView.d.ts +19 -14
  95. package/dist/crud/CrudListView.d.ts.map +1 -1
  96. package/dist/crud/CrudPage.d.ts +17 -1
  97. package/dist/crud/CrudPage.d.ts.map +1 -1
  98. package/dist/crud/CrudRecordModal.d.ts +9 -3
  99. package/dist/crud/CrudRecordModal.d.ts.map +1 -1
  100. package/dist/crud/LookupCreateInline.d.ts +15 -0
  101. package/dist/crud/LookupCreateInline.d.ts.map +1 -0
  102. package/dist/crud/archetype-lookup.d.ts +19 -6
  103. package/dist/crud/archetype-lookup.d.ts.map +1 -1
  104. package/dist/crud/archetypes/AddressesTab.d.ts.map +1 -1
  105. package/dist/crud/archetypes/LocationDetailTabs.d.ts +3 -2
  106. package/dist/crud/archetypes/LocationDetailTabs.d.ts.map +1 -1
  107. package/dist/crud/archetypes/OrderDetailView.d.ts +4 -1
  108. package/dist/crud/archetypes/OrderDetailView.d.ts.map +1 -1
  109. package/dist/crud/archetypes/OrderFormView.d.ts +13 -2
  110. package/dist/crud/archetypes/OrderFormView.d.ts.map +1 -1
  111. package/dist/crud/archetypes/PersonDetailTabs.d.ts +2 -1
  112. package/dist/crud/archetypes/PersonDetailTabs.d.ts.map +1 -1
  113. package/dist/crud/archetypes/PersonPicker.d.ts.map +1 -1
  114. package/dist/crud/createCrudPage.d.ts +8 -0
  115. package/dist/crud/createCrudPage.d.ts.map +1 -1
  116. package/dist/crud/useLookupCreate.d.ts +30 -0
  117. package/dist/crud/useLookupCreate.d.ts.map +1 -0
  118. package/dist/data/client.d.ts.map +1 -1
  119. package/dist/hooks/useAITools.d.ts +1 -0
  120. package/dist/hooks/useAITools.d.ts.map +1 -1
  121. package/dist/hooks/useChat.d.ts.map +1 -1
  122. package/dist/index.d.ts +21 -6
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +15362 -8467
  125. package/dist/index.js.map +1 -1
  126. package/dist/lib/agent-staff.d.ts +117 -0
  127. package/dist/lib/agent-staff.d.ts.map +1 -0
  128. package/dist/lib/agent-surface.d.ts +4 -0
  129. package/dist/lib/agent-surface.d.ts.map +1 -1
  130. package/dist/lib/agent-threads.d.ts +15 -0
  131. package/dist/lib/agent-threads.d.ts.map +1 -0
  132. package/dist/lib/ai-tool-handlers.d.ts.map +1 -1
  133. package/dist/lib/assistant-activity.d.ts +47 -4
  134. package/dist/lib/assistant-activity.d.ts.map +1 -1
  135. package/dist/lib/assistant-invite.d.ts +20 -1
  136. package/dist/lib/assistant-invite.d.ts.map +1 -1
  137. package/dist/lib/assistant-text.d.ts +9 -0
  138. package/dist/lib/assistant-text.d.ts.map +1 -0
  139. package/dist/lib/chat-upload.d.ts +12 -0
  140. package/dist/lib/chat-upload.d.ts.map +1 -0
  141. package/dist/lib/core-ai-tools.d.ts +17 -0
  142. package/dist/lib/core-ai-tools.d.ts.map +1 -1
  143. package/dist/lib/fayz-agent.d.ts +9 -0
  144. package/dist/lib/fayz-agent.d.ts.map +1 -1
  145. package/dist/lib/staff-cards.d.ts +11 -0
  146. package/dist/lib/staff-cards.d.ts.map +1 -0
  147. package/dist/lib/unit-ai-handlers.d.ts +2 -0
  148. package/dist/lib/unit-ai-handlers.d.ts.map +1 -0
  149. package/dist/lib/unit-ai-tools.d.ts +3 -0
  150. package/dist/lib/unit-ai-tools.d.ts.map +1 -0
  151. package/dist/onboarding/GettingStartedWidget.d.ts +13 -0
  152. package/dist/onboarding/GettingStartedWidget.d.ts.map +1 -0
  153. package/dist/onboarding/WorkspaceSetupFlow.d.ts +24 -0
  154. package/dist/onboarding/WorkspaceSetupFlow.d.ts.map +1 -0
  155. package/dist/onboarding/WorkspaceSetupGate.d.ts +25 -0
  156. package/dist/onboarding/WorkspaceSetupGate.d.ts.map +1 -0
  157. package/dist/onboarding/analyze-site.d.ts +23 -0
  158. package/dist/onboarding/analyze-site.d.ts.map +1 -0
  159. package/dist/onboarding/backend.d.ts +44 -0
  160. package/dist/onboarding/backend.d.ts.map +1 -0
  161. package/dist/onboarding/checklist.d.ts +55 -0
  162. package/dist/onboarding/checklist.d.ts.map +1 -0
  163. package/dist/onboarding/connector-options.d.ts +52 -0
  164. package/dist/onboarding/connector-options.d.ts.map +1 -0
  165. package/dist/onboarding/decide.d.ts +36 -0
  166. package/dist/onboarding/decide.d.ts.map +1 -0
  167. package/dist/onboarding/index.d.ts +19 -0
  168. package/dist/onboarding/index.d.ts.map +1 -0
  169. package/dist/onboarding/infer-vertical.d.ts +2 -0
  170. package/dist/onboarding/infer-vertical.d.ts.map +1 -0
  171. package/dist/onboarding/packs/beauty.d.ts +4 -0
  172. package/dist/onboarding/packs/beauty.d.ts.map +1 -0
  173. package/dist/onboarding/packs/food.d.ts +4 -0
  174. package/dist/onboarding/packs/food.d.ts.map +1 -0
  175. package/dist/onboarding/packs/index.d.ts +17 -0
  176. package/dist/onboarding/packs/index.d.ts.map +1 -0
  177. package/dist/onboarding/packs/retail.d.ts +8 -0
  178. package/dist/onboarding/packs/retail.d.ts.map +1 -0
  179. package/dist/onboarding/questions.d.ts +41 -0
  180. package/dist/onboarding/questions.d.ts.map +1 -0
  181. package/dist/onboarding/resolve.d.ts +12 -0
  182. package/dist/onboarding/resolve.d.ts.map +1 -0
  183. package/dist/onboarding/steps.d.ts +31 -0
  184. package/dist/onboarding/steps.d.ts.map +1 -0
  185. package/dist/onboarding/store.d.ts +17 -0
  186. package/dist/onboarding/store.d.ts.map +1 -0
  187. package/dist/onboarding/submit.d.ts +25 -0
  188. package/dist/onboarding/submit.d.ts.map +1 -0
  189. package/dist/onboarding/tasks.d.ts +28 -0
  190. package/dist/onboarding/tasks.d.ts.map +1 -0
  191. package/dist/onboarding/types.d.ts +39 -0
  192. package/dist/onboarding/types.d.ts.map +1 -0
  193. package/dist/onboarding/useWorkspaceSetupGate.d.ts +36 -0
  194. package/dist/onboarding/useWorkspaceSetupGate.d.ts.map +1 -0
  195. package/dist/org/context.d.ts +10 -0
  196. package/dist/org/context.d.ts.map +1 -1
  197. package/dist/org/index.js +2 -2
  198. package/dist/org/self.d.ts +50 -0
  199. package/dist/org/self.d.ts.map +1 -0
  200. package/dist/plugins/QuickActionsButton.d.ts.map +1 -1
  201. package/dist/stores/chat.store.d.ts +150 -2
  202. package/dist/stores/chat.store.d.ts.map +1 -1
  203. package/dist/tasks/TasksRailPanel.d.ts +4 -0
  204. package/dist/tasks/TasksRailPanel.d.ts.map +1 -0
  205. package/dist/tasks/components/TaskCard.d.ts +11 -0
  206. package/dist/tasks/components/TaskCard.d.ts.map +1 -0
  207. package/dist/tasks/components/TaskDetail.d.ts +5 -0
  208. package/dist/tasks/components/TaskDetail.d.ts.map +1 -0
  209. package/dist/tasks/components/TaskLabelBadge.d.ts +9 -0
  210. package/dist/tasks/components/TaskLabelBadge.d.ts.map +1 -0
  211. package/dist/tasks/components/TaskPriorityBadge.d.ts +7 -0
  212. package/dist/tasks/components/TaskPriorityBadge.d.ts.map +1 -0
  213. package/dist/tasks/components/TaskQuickAdd.d.ts +5 -0
  214. package/dist/tasks/components/TaskQuickAdd.d.ts.map +1 -0
  215. package/dist/tasks/components/TaskSourceBadge.d.ts +5 -0
  216. package/dist/tasks/components/TaskSourceBadge.d.ts.map +1 -0
  217. package/dist/tasks/components/TaskStatusGroup.d.ts +17 -0
  218. package/dist/tasks/components/TaskStatusGroup.d.ts.map +1 -0
  219. package/dist/tasks/components/TasksFilterBar.d.ts +3 -0
  220. package/dist/tasks/components/TasksFilterBar.d.ts.map +1 -0
  221. package/dist/tasks/components/TasksPanel.d.ts +14 -0
  222. package/dist/tasks/components/TasksPanel.d.ts.map +1 -0
  223. package/dist/tasks/data/mock.d.ts +3 -0
  224. package/dist/tasks/data/mock.d.ts.map +1 -0
  225. package/dist/tasks/data/supabase.d.ts +3 -0
  226. package/dist/tasks/data/supabase.d.ts.map +1 -0
  227. package/dist/tasks/entity.d.ts +11 -0
  228. package/dist/tasks/entity.d.ts.map +1 -0
  229. package/dist/tasks/index.d.ts +17 -0
  230. package/dist/tasks/index.d.ts.map +1 -0
  231. package/dist/tasks/registry.d.ts +3 -0
  232. package/dist/tasks/registry.d.ts.map +1 -0
  233. package/dist/tasks/store.d.ts +34 -0
  234. package/dist/tasks/store.d.ts.map +1 -0
  235. package/dist/tasks/types.d.ts +89 -0
  236. package/dist/tasks/types.d.ts.map +1 -0
  237. package/dist/theme/index.d.ts +1 -1
  238. package/dist/theme/index.d.ts.map +1 -1
  239. package/dist/theme/utils.d.ts +14 -0
  240. package/dist/theme/utils.d.ts.map +1 -1
  241. package/dist/types/index.d.ts +0 -1
  242. package/dist/types/index.d.ts.map +1 -1
  243. package/dist/types/plugins.d.ts +3 -0
  244. package/dist/types/plugins.d.ts.map +1 -1
  245. package/dist/units/MemberAccessRailPage.d.ts +19 -0
  246. package/dist/units/MemberAccessRailPage.d.ts.map +1 -0
  247. package/dist/units/MemberUnitsCell.d.ts +11 -0
  248. package/dist/units/MemberUnitsCell.d.ts.map +1 -0
  249. package/dist/units/PersonUnitsTab.d.ts +5 -0
  250. package/dist/units/PersonUnitsTab.d.ts.map +1 -0
  251. package/dist/units/UnitMembersTab.d.ts +5 -0
  252. package/dist/units/UnitMembersTab.d.ts.map +1 -0
  253. package/dist/units/UnitMenuSection.d.ts +15 -0
  254. package/dist/units/UnitMenuSection.d.ts.map +1 -0
  255. package/dist/units/UnitModeCard.d.ts +3 -0
  256. package/dist/units/UnitModeCard.d.ts.map +1 -0
  257. package/dist/units/UnitRailPage.d.ts +10 -0
  258. package/dist/units/UnitRailPage.d.ts.map +1 -0
  259. package/dist/units/UnitSwitcher.d.ts +5 -0
  260. package/dist/units/UnitSwitcher.d.ts.map +1 -0
  261. package/dist/units/UnitsSettingsPage.d.ts +3 -0
  262. package/dist/units/UnitsSettingsPage.d.ts.map +1 -0
  263. package/dist/units/cache.d.ts +26 -0
  264. package/dist/units/cache.d.ts.map +1 -0
  265. package/dist/units/data.d.ts +111 -0
  266. package/dist/units/data.d.ts.map +1 -0
  267. package/dist/units/device.d.ts +26 -0
  268. package/dist/units/device.d.ts.map +1 -0
  269. package/dist/units/entry.d.ts +52 -0
  270. package/dist/units/entry.d.ts.map +1 -0
  271. package/dist/units/geo.d.ts +18 -0
  272. package/dist/units/geo.d.ts.map +1 -0
  273. package/dist/units/index.d.ts +18 -0
  274. package/dist/units/index.d.ts.map +1 -0
  275. package/dist/units/store.d.ts +32 -0
  276. package/dist/units/store.d.ts.map +1 -0
  277. package/dist/units/useUnitBootstrap.d.ts +10 -0
  278. package/dist/units/useUnitBootstrap.d.ts.map +1 -0
  279. package/package.json +7 -7
  280. package/dist/SubscriptionPage-4KP7DKA2.js +0 -7
  281. package/dist/chunk-OI7RYSTM.js.map +0 -1
  282. package/dist/chunk-PNAJODZM.js.map +0 -1
  283. package/dist/components/organization/OrgInitializer.d.ts +0 -7
  284. package/dist/components/organization/OrgInitializer.d.ts.map +0 -1
  285. package/dist/components/organization/OrgSwitcher.d.ts +0 -7
  286. package/dist/components/organization/OrgSwitcher.d.ts.map +0 -1
  287. package/dist/components/organization/TenantOnboarding.d.ts +0 -9
  288. package/dist/components/organization/TenantOnboarding.d.ts.map +0 -1
  289. package/dist/components/shared/create-person.d.ts +0 -20
  290. package/dist/components/shared/create-person.d.ts.map +0 -1
  291. package/dist/types/entity-lookup.d.ts +0 -27
  292. package/dist/types/entity-lookup.d.ts.map +0 -1
@@ -44,6 +44,33 @@ export interface ChatConnectorCard {
44
44
  /** The screen a human finishes it on. Only ever set for a state that has one. */
45
45
  route?: string;
46
46
  }
47
+ /**
48
+ * A colleague the tenant has not hired, offered under the reply.
49
+ *
50
+ * The third sibling of {@link ChatRecordLink} and {@link ChatConnectorCard}, and
51
+ * the honest answer to a request whose tools are absent: the agent cannot do
52
+ * growth work without the growth toolset, so instead of improvising it names
53
+ * who does that job and what hiring them would buy.
54
+ */
55
+ export interface ChatStaffCard {
56
+ kind: 'staff';
57
+ /** AgentRole of the colleague. Kept as a plain string — the store is shape,
58
+ * not vocabulary, and a resumed thread may carry a role since retired. */
59
+ role: string;
60
+ name: string;
61
+ title: string;
62
+ avatar?: string;
63
+ /** From the cast's `pitch`. Absent ⇒ the card shows the goal alone. */
64
+ headline?: string;
65
+ bullets?: string[];
66
+ goal?: string;
67
+ /** Entitlement to unlock — what the "Contratar" button asks the plan for. */
68
+ feature: string;
69
+ }
70
+ export type ChatCard = ChatConnectorCard | ChatStaffCard;
71
+ /** Identity for dedupe: a connector is its slug, a colleague their role. The
72
+ * kind prefix keeps the two id spaces from ever colliding. */
73
+ export declare function chatCardKey(card: ChatCard): string;
47
74
  export interface ChatToolCall {
48
75
  name: string;
49
76
  /** Pretty-printed arguments (may be empty). */
@@ -67,13 +94,24 @@ export interface ChatMessage {
67
94
  /** Records to offer as navigation buttons under the reply. */
68
95
  links?: ChatRecordLink[];
69
96
  /** Integrations the reply found, rendered as cards under it. */
70
- cards?: ChatConnectorCard[];
97
+ cards?: ChatCard[];
71
98
  /** Files sent with this turn. Name and shape only — the bytes stayed here. */
72
99
  attachments?: Array<{
73
100
  name: string;
74
101
  kind: AttachmentKind;
75
102
  rowCount?: number;
76
103
  }>;
104
+ /** Which colleague said it — the avatar and the name on the bubble. Absent on
105
+ * an app with no cast, and on every message written before it had one. */
106
+ agentKey?: string;
107
+ /** Renders as a divider instead of a bubble: the baton passing, in the open.
108
+ * A hand-off the user cannot see is a personality change out of nowhere. */
109
+ notice?: {
110
+ kind: 'handoff';
111
+ from?: string;
112
+ to: string;
113
+ topic?: string;
114
+ };
77
115
  }
78
116
  /**
79
117
  * A write the agent wants to perform, parked until the human decides. The turn
@@ -148,9 +186,52 @@ export interface ChatAttachment {
148
186
  kind: AttachmentKind;
149
187
  status: 'parsing' | 'ready' | 'error';
150
188
  digest?: AttachmentDigest;
189
+ /** Object URL for an image, so the chip shows the picture instead of a
190
+ * paperclip. Revoked when the chip goes. */
191
+ previewUrl?: string;
151
192
  /** i18n suffix under `chat.attachments.error.*` — the chip says what failed. */
152
193
  error?: string;
153
194
  }
195
+ /** A stored file referenced by URL, not by bytes. */
196
+ export interface ComposerMedia {
197
+ url: string;
198
+ name: string;
199
+ mime?: string;
200
+ }
201
+ /**
202
+ * A file the assistant asked for, and what to do with it.
203
+ *
204
+ * `onFiles` belongs to the tool that asked — the chat is the doorway, not the
205
+ * destination. That is what lets a photo be READ (menu import, receipt capture)
206
+ * instead of merely mentioned: the bytes go to the screen that knows what they
207
+ * are, never into the turn.
208
+ */
209
+ export interface UploadRequest {
210
+ id: string;
211
+ /** The button's own words: "Subir foto do cardápio". */
212
+ label: string;
213
+ /** One line under it — what a good photo looks like. */
214
+ description?: string;
215
+ accept?: string;
216
+ multiple?: boolean;
217
+ /** 'environment' opens the rear camera on a phone; ignored on desktop. */
218
+ capture?: 'environment' | 'user';
219
+ onFiles: (files: File[]) => void | Promise<void>;
220
+ status?: 'waiting' | 'working';
221
+ /**
222
+ * What the user has handed over so far, held in the card.
223
+ *
224
+ * They accumulate instead of firing on the first pick: a menu is several
225
+ * pages, and reading page one while the user is still photographing page two
226
+ * would split one cardápio into two imports.
227
+ */
228
+ files: StagedUpload[];
229
+ }
230
+ export interface StagedUpload {
231
+ file: File;
232
+ /** Object URL for the thumbnail. Revoked when the file leaves the card. */
233
+ previewUrl?: string;
234
+ }
154
235
  /** What the card sends back: the decision, plus the values as edited. */
155
236
  export interface PendingActionResult {
156
237
  approved: boolean;
@@ -172,6 +253,21 @@ interface ChatState {
172
253
  * so subsequent turns only send the new message plus this id.
173
254
  */
174
255
  conversationId: string | null;
256
+ /**
257
+ * Whose thread is loaded right now, and the parked transcripts of everyone
258
+ * else. Each colleague keeps their own conversation — you don't ask the
259
+ * front desk something and find the growth specialist mid-sentence.
260
+ *
261
+ * Empty on an app with no cast: `threadRole` stays null and the store behaves
262
+ * exactly as it did with a single assistant.
263
+ */
264
+ threadRole: string | null;
265
+ threads: Record<string, {
266
+ messages: ChatMessage[];
267
+ conversationId: string | null;
268
+ }>;
269
+ /** Park the open thread and load `role`'s, appending `seed` to it. */
270
+ switchThread: (role: string, seed?: ChatMessage) => void;
175
271
  /** The write awaiting human confirmation (renders the ConfirmActionCard). */
176
272
  pendingAction: PendingAgentAction | null;
177
273
  /** Park an action + register its decision resolver. Resolves immediately
@@ -197,12 +293,64 @@ interface ChatState {
197
293
  clearAttachments: () => void;
198
294
  /** Hand the turn its digests and unstage everything (bytes included). */
199
295
  consumePendingAttachments: () => AttachmentDigest[];
296
+ /**
297
+ * A file the user is already looking at, attached by ADDRESS.
298
+ *
299
+ * Distinct from `attachments`, which stage bytes the browser has to read and
300
+ * digest. This one is a photo the app itself stored and can serve: sending
301
+ * the URL lets the model fetch the original, at full resolution, instead of
302
+ * us inlining megabytes of base64 into the turn — and a picture that came
303
+ * from our own storage never needed to be re-uploaded to be talked about.
304
+ */
305
+ composerMedia: ComposerMedia | null;
306
+ attachMedia: (media: ComposerMedia) => void;
307
+ clearComposerMedia: () => void;
308
+ /**
309
+ * The assistant asked for a file, and the composer offers it as one big
310
+ * button ("Subir foto do cardápio").
311
+ *
312
+ * This is not an attachment: the bytes never enter the conversation. The tool
313
+ * that asked hands in `onFiles`, and the files go straight there — which is
314
+ * the only way a photo reaches anything today, since a turn carries a digest
315
+ * of a file, never its pixels.
316
+ */
317
+ uploadRequest: UploadRequest | null;
318
+ requestUpload: (request: Omit<UploadRequest, 'id' | 'status' | 'files'>) => string;
319
+ /** Stage files in the card — the user can still add more or drop one. */
320
+ addUploadFiles: (files: File[]) => void;
321
+ removeUploadFile: (index: number) => void;
322
+ /** Hands everything staged to whoever asked. */
323
+ submitUpload: () => Promise<void>;
324
+ clearUploadRequest: () => void;
325
+ /**
326
+ * The one door for files arriving from anywhere — the composer's `+`, a
327
+ * paste, a drop on the transcript.
328
+ *
329
+ * While a request is up, a matching file belongs to IT: staging a menu photo
330
+ * as a chat attachment would send the assistant a digest with no pixels in
331
+ * it, which is the one thing that cannot answer "manda a foto".
332
+ */
333
+ receiveFiles: (files: File[]) => void;
200
334
  /** Explicit delegation ("resolver com IA"): the user already said go, so the
201
335
  * conversation sends this as soon as it can. Distinct from `draft`, which
202
336
  * never sends on the user's behalf. */
203
337
  queuedPrompt: string | null;
204
338
  queuePrompt: (text: string) => void;
205
339
  consumeQueuedPrompt: () => string | null;
340
+ /**
341
+ * O que o campo sugere quando uma tela delega um assunto ao assistente
342
+ * ("Ex.: receita por mesa no jantar"). Dica, não rascunho: a tela sabe do que
343
+ * se trata, o usuário ainda escreve o pedido. Some no primeiro envio — a
344
+ * partir daí a conversa tem assunto próprio.
345
+ */
346
+ composerHint: string | null;
347
+ setComposerHint: (hint: string | null) => void;
348
+ /** O painel foi aberto por um handoff — o campo assume o cursor assim que
349
+ * existir. Quem clicou "Criar com IA" já está escrevendo o pedido; obrigar
350
+ * um segundo clique no campo é cobrar duas vezes pela mesma decisão. */
351
+ composerFocusRequested: boolean;
352
+ requestComposerFocus: () => void;
353
+ consumeComposerFocus: () => void;
206
354
  /** Suggestions panel is pinned open by the user (works mid-conversation). */
207
355
  suggestionsOpen: boolean;
208
356
  setSuggestionsOpen: (open: boolean) => void;
@@ -219,7 +367,7 @@ interface ChatState {
219
367
  /** Attach goto-record buttons to the reply (deduped by id, capped). */
220
368
  appendLinksToLastAssistant: (links: ChatRecordLink[]) => void;
221
369
  /** Attach connector cards to the reply (deduped by slug, capped). */
222
- appendCardsToLastAssistant: (cards: ChatConnectorCard[]) => void;
370
+ appendCardsToLastAssistant: (cards: ChatCard[]) => void;
223
371
  /** The signed-in user's threads (history drawer). */
224
372
  conversations: Array<{
225
373
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"chat.store.d.ts","sourceRoot":"","sources":["../../src/stores/chat.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.store.d.ts","sourceRoot":"","sources":["../../src/stores/chat.store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Tasks as the rail's second tab. Registered by the shell, so every app has it
2
+ * — plugin-tasks adds the sidebar row, the sheet fallback and labels on top. */
3
+ export declare function TasksRailPanel(): null;
4
+ //# sourceMappingURL=TasksRailPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TasksRailPanel.d.ts","sourceRoot":"","sources":["../../src/tasks/TasksRailPanel.tsx"],"names":[],"mappings":"AASA;iFACiF;AACjF,wBAAgB,cAAc,SAkC7B"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { Task } from '../types';
3
+ export declare function TaskCard({ task, subtaskCount, showSource, }: {
4
+ task: Task;
5
+ subtaskCount?: {
6
+ done: number;
7
+ total: number;
8
+ };
9
+ showSource?: boolean;
10
+ }): React.JSX.Element;
11
+ //# sourceMappingURL=TaskCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../src/tasks/components/TaskCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAiBpC,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,YAAY,EAGZ,UAAiB,GAClB,EAAE;IACD,IAAI,EAAE,IAAI,CAAA;IACV,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,qBA8EA"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function TaskDetail({ taskId }: {
3
+ taskId: string;
4
+ }): React.JSX.Element;
5
+ //# sourceMappingURL=TaskDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskDetail.d.ts","sourceRoot":"","sources":["../../../src/tasks/components/TaskDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA2B/D,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,qBAoLxD"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export declare function TaskLabelBadge({ labelId }: {
3
+ labelId: string;
4
+ }): React.JSX.Element | null;
5
+ export declare function TaskLabelBadges({ labelIds, max }: {
6
+ labelIds: string[];
7
+ max?: number;
8
+ }): React.JSX.Element | null;
9
+ //# sourceMappingURL=TaskLabelBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskLabelBadge.d.ts","sourceRoot":"","sources":["../../../src/tasks/components/TaskLabelBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,4BAe9D;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,GAAO,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,4BAiB1F"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { TaskPriority } from '../types';
3
+ export declare function TaskPriorityBadge({ priority, showLabel }: {
4
+ priority: TaskPriority;
5
+ showLabel?: boolean;
6
+ }): React.JSX.Element;
7
+ //# sourceMappingURL=TaskPriorityBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskPriorityBadge.d.ts","sourceRoot":"","sources":["../../../src/tasks/components/TaskPriorityBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAS5C,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,qBASzG"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function TaskQuickAdd({ parentId }: {
3
+ parentId?: string | null;
4
+ }): React.JSX.Element;
5
+ //# sourceMappingURL=TaskQuickAdd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskQuickAdd.d.ts","sourceRoot":"","sources":["../../../src/tasks/components/TaskQuickAdd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAKpD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,qBAmCtE"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function TaskSourceBadge({ source }: {
3
+ source: string | null;
4
+ }): React.JSX.Element | null;
5
+ //# sourceMappingURL=TaskSourceBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskSourceBadge.d.ts","sourceRoot":"","sources":["../../../src/tasks/components/TaskSourceBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiBzB,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,4BAmBpE"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { Task, TaskStatus } from '../types';
3
+ /** One collapsible section of the list. `dotClass`/`title` let the getting-started
4
+ * group reuse the exact shape without being a status. */
5
+ export declare function TaskGroup({ title, dotClass, tasks, defaultCollapsed, showSource, }: {
6
+ title: string;
7
+ dotClass: string;
8
+ tasks: Task[];
9
+ defaultCollapsed?: boolean;
10
+ /** Off when the header already names what the tag would say. */
11
+ showSource?: boolean;
12
+ }): React.JSX.Element | null;
13
+ export declare function TaskStatusGroup({ status, tasks }: {
14
+ status: TaskStatus;
15
+ tasks: Task[];
16
+ }): React.JSX.Element;
17
+ //# sourceMappingURL=TaskStatusGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskStatusGroup.d.ts","sourceRoot":"","sources":["../../../src/tasks/components/TaskStatusGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAShD;0DAC0D;AAC1D,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,gBAAwB,EACxB,UAAiB,GAClB,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,4BA8BA;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,qBAUvF"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function TasksFilterBar(): React.JSX.Element;
3
+ //# sourceMappingURL=TasksFilterBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TasksFilterBar.d.ts","sourceRoot":"","sources":["../../../src/tasks/components/TasksFilterBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiBzB,wBAAgB,cAAc,sBAwD7B"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { type Task } from '../types';
3
+ /** The setup checklist reads as one thing, not as five tasks scattered through
4
+ * the board — so it is lifted out before the status grouping runs. */
5
+ export declare function splitOnboardingTasks(tasks: Task[]): {
6
+ onboarding: Task[];
7
+ rest: Task[];
8
+ };
9
+ /** The task list with no box around it — shared by the sheet and the shell's
10
+ * right-rail tab. */
11
+ export declare function TasksPanel(): React.JSX.Element;
12
+ /** One-line summary of what needs attention ("3 atrasadas · 2 para hoje"). */
13
+ export declare function useTasksSummaryLine(): string;
14
+ //# sourceMappingURL=TasksPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TasksPanel.d.ts","sourceRoot":"","sources":["../../../src/tasks/components/TasksPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,OAAO,EAA0B,KAAK,IAAI,EAAmB,MAAM,UAAU,CAAA;AAI7E;uEACuE;AACvE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG;IAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAAC,IAAI,EAAE,IAAI,EAAE,CAAA;CAAE,CAQxF;AAED;sBACsB;AACtB,wBAAgB,UAAU,sBAqEzB;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,IAAI,MAAM,CAU5C"}
@@ -0,0 +1,3 @@
1
+ import type { TasksDataProvider } from '../types';
2
+ export declare function createMockTasksProvider(): TasksDataProvider;
3
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/tasks/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEC,iBAAiB,EAC7B,MAAM,UAAU,CAAA;AA+DjB,wBAAgB,uBAAuB,IAAI,iBAAiB,CAqF3D"}
@@ -0,0 +1,3 @@
1
+ import type { TasksDataProvider } from '../types';
2
+ export declare function createSupabaseTasksProvider(): TasksDataProvider;
3
+ //# sourceMappingURL=supabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../../src/tasks/data/supabase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,iBAAiB,EAAE,MAAM,UAAU,CAAA;AA4BlE,wBAAgB,2BAA2B,IAAI,iBAAiB,CAyK/D"}
@@ -0,0 +1,11 @@
1
+ import type { EntityDef } from '@fayz-ai/core';
2
+ /**
3
+ * public.tasks — @fayz-ai/db spine migration 047_tasks.
4
+ *
5
+ * Declared as an EntityDef so the agent can read and close tasks in every app,
6
+ * even though the surface is a rail tab rather than a CRUD page. Unit narrowing
7
+ * is not declared here on purpose: resolveDataProvider turns it on from the
8
+ * `scoped_resources` registry the shell loads at boot.
9
+ */
10
+ export declare const taskEntityDef: EntityDef;
11
+ //# sourceMappingURL=entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/tasks/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,SA2C3B,CAAA"}
@@ -0,0 +1,17 @@
1
+ export { TASK_STATUSES, TASK_PRIORITIES, ONBOARDING_TASK_SOURCE, type Task, type TaskLabel, type TaskStatus, type TaskPriority, type TasksSummary, type CreateTaskInput, type UpdateTaskInput, type TaskQuery, type TasksDataProvider, } from './types';
2
+ export { useTasksStore, getTasksProvider, setTasksProvider, type TasksUIState } from './store';
3
+ export { createSupabaseTasksProvider } from './data/supabase';
4
+ export { createMockTasksProvider } from './data/mock';
5
+ export { TasksPanel, useTasksSummaryLine, splitOnboardingTasks } from './components/TasksPanel';
6
+ export { TaskCard } from './components/TaskCard';
7
+ export { TaskDetail } from './components/TaskDetail';
8
+ export { TaskGroup, TaskStatusGroup } from './components/TaskStatusGroup';
9
+ export { TaskQuickAdd } from './components/TaskQuickAdd';
10
+ export { TasksFilterBar } from './components/TasksFilterBar';
11
+ export { TaskLabelBadge, TaskLabelBadges } from './components/TaskLabelBadge';
12
+ export { TaskPriorityBadge } from './components/TaskPriorityBadge';
13
+ export { TaskSourceBadge } from './components/TaskSourceBadge';
14
+ export { TasksRailPanel } from './TasksRailPanel';
15
+ export { claimTasksSurface, tasksSurfaceOwner } from './registry';
16
+ export { taskEntityDef } from './entity';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAAE,eAAe,EAAE,sBAAsB,EACtD,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAC7D,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAC7D,KAAK,SAAS,EAAE,KAAK,iBAAiB,GACvC,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9F,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare function claimTasksSurface(next: 'shell' | 'plugin'): void;
2
+ export declare function tasksSurfaceOwner(): 'shell' | 'plugin';
3
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tasks/registry.ts"],"names":[],"mappings":"AASA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAEhE;AAED,wBAAgB,iBAAiB,IAAI,OAAO,GAAG,QAAQ,CAEtD"}
@@ -0,0 +1,34 @@
1
+ import type { Task, TaskLabel, TasksSummary, TaskQuery, TasksDataProvider, CreateTaskInput, UpdateTaskInput, TaskStatus } from './types';
2
+ /** Escape hatch for tests and for an app that brings its own backend. */
3
+ export declare function setTasksProvider(next: TasksDataProvider | null): void;
4
+ export interface TasksUIState {
5
+ tasks: Task[];
6
+ tasksLoading: boolean;
7
+ labels: TaskLabel[];
8
+ summary: TasksSummary | null;
9
+ summaryLoading: boolean;
10
+ drawerOpen: boolean;
11
+ selectedTaskId: string | null;
12
+ activeFilter: TaskStatus | 'all';
13
+ /** Opt-in "assigned to me". Off by default — the tab is the workspace's. */
14
+ mine: boolean;
15
+ currentUserId: string | null;
16
+ fetchTasks(query?: TaskQuery): Promise<void>;
17
+ fetchLabels(): Promise<void>;
18
+ fetchSummary(): Promise<void>;
19
+ createTask(input: CreateTaskInput): Promise<Task>;
20
+ updateTask(id: string, input: UpdateTaskInput): Promise<Task>;
21
+ deleteTask(id: string): Promise<void>;
22
+ reorderTask(id: string, newPosition: number, status: TaskStatus): Promise<void>;
23
+ openDrawer(): void;
24
+ closeDrawer(): void;
25
+ toggleDrawer(): void;
26
+ selectTask(id: string | null): void;
27
+ setFilter(filter: TaskStatus | 'all'): void;
28
+ setMine(mine: boolean): void;
29
+ setCurrentUserId(id: string | null): void;
30
+ }
31
+ export declare const useTasksStore: import("zustand").UseBoundStore<import("zustand").StoreApi<TasksUIState>>;
32
+ /** Non-React readers (the plugin's adapters, the onboarding seam). */
33
+ export declare function getTasksProvider(): TasksDataProvider;
34
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tasks/store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAC3D,eAAe,EAAE,eAAe,EAAE,UAAU,EAC7C,MAAM,SAAS,CAAA;AAkBhB,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,YAAY,EAAE,OAAO,CAAA;IACrB,MAAM,EAAE,SAAS,EAAE,CAAA;IACnB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,OAAO,CAAA;IAEvB,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,EAAE,UAAU,GAAG,KAAK,CAAA;IAChC,4EAA4E;IAC5E,IAAI,EAAE,OAAO,CAAA;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAE5B,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/E,UAAU,IAAI,IAAI,CAAA;IAClB,WAAW,IAAI,IAAI,CAAA;IACnB,YAAY,IAAI,IAAI,CAAA;IACpB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IACnC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,GAAG,IAAI,CAAA;IAC3C,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;CAC1C;AAED,eAAO,MAAM,aAAa,2EAkHvB,CAAA;AAEH,sEAAsE;AACtE,wBAAgB,gBAAgB,IAAI,iBAAiB,CAEpD"}
@@ -0,0 +1,89 @@
1
+ export type TaskStatus = 'todo' | 'in_progress' | 'done' | 'cancelled';
2
+ export type TaskPriority = 'low' | 'medium' | 'high' | 'urgent';
3
+ export declare const TASK_STATUSES: TaskStatus[];
4
+ export declare const TASK_PRIORITIES: TaskPriority[];
5
+ /** Tasks the setup wizard seeded. Paired with a `sourceKey` from the catalog. */
6
+ export declare const ONBOARDING_TASK_SOURCE = "onboarding";
7
+ export interface Task {
8
+ id: string;
9
+ title: string;
10
+ description: string | null;
11
+ status: TaskStatus;
12
+ priority: TaskPriority;
13
+ dueDate: string | null;
14
+ completedAt: string | null;
15
+ assignedToId: string | null;
16
+ assignedToName: string | null;
17
+ parentId: string | null;
18
+ labels: string[];
19
+ position: number;
20
+ /** Which feature created this row ('onboarding', 'agent'), null when a person did. */
21
+ source: string | null;
22
+ /** Stable key within that source — what makes re-seeding idempotent. */
23
+ sourceKey: string | null;
24
+ createdBy: string | null;
25
+ createdByName: string | null;
26
+ tenantId: string;
27
+ createdAt: string;
28
+ updatedAt: string;
29
+ }
30
+ export interface TaskLabel {
31
+ id: string;
32
+ name: string;
33
+ color: string;
34
+ isActive: boolean;
35
+ tenantId: string;
36
+ createdAt: string;
37
+ }
38
+ export interface CreateTaskInput {
39
+ title: string;
40
+ description?: string;
41
+ status?: TaskStatus;
42
+ priority?: TaskPriority;
43
+ dueDate?: string | null;
44
+ assignedToId?: string | null;
45
+ assignedToName?: string | null;
46
+ parentId?: string | null;
47
+ labels?: string[];
48
+ source?: string | null;
49
+ sourceKey?: string | null;
50
+ }
51
+ export interface UpdateTaskInput {
52
+ title?: string;
53
+ description?: string | null;
54
+ status?: TaskStatus;
55
+ priority?: TaskPriority;
56
+ dueDate?: string | null;
57
+ assignedToId?: string | null;
58
+ labels?: string[];
59
+ position?: number;
60
+ }
61
+ export interface TaskQuery {
62
+ status?: TaskStatus | TaskStatus[];
63
+ priority?: TaskPriority | TaskPriority[];
64
+ assignedToId?: string;
65
+ parentId?: string | null;
66
+ search?: string;
67
+ overdue?: boolean;
68
+ }
69
+ export interface TasksSummary {
70
+ total: number;
71
+ todo: number;
72
+ inProgress: number;
73
+ done: number;
74
+ overdue: number;
75
+ dueToday: number;
76
+ highPriority: number;
77
+ }
78
+ export interface TasksDataProvider {
79
+ getTasks(query: TaskQuery): Promise<Task[]>;
80
+ getTaskById(id: string): Promise<Task | null>;
81
+ getSubtasks(parentId: string): Promise<Task[]>;
82
+ createTask(input: CreateTaskInput): Promise<Task>;
83
+ updateTask(id: string, input: UpdateTaskInput): Promise<Task>;
84
+ deleteTask(id: string): Promise<void>;
85
+ reorderTask(id: string, newPosition: number, status: TaskStatus): Promise<void>;
86
+ getLabels(): Promise<TaskLabel[]>;
87
+ getSummary(): Promise<TasksSummary>;
88
+ }
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tasks/types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export type { ThemeTokens, SemanticColors, UIPerceptionTokens, SaasTheme, ThemeRadius, ThemeDensity, ThemeShadow, ThemeFont } from './tokens';
2
2
  export { lightTheme } from './light';
3
3
  export { darkTheme } from './dark';
4
- export { createTheme, applyTheme, getSystemPreference, resolveTheme } from './utils';
4
+ export { createTheme, applyTheme, getSystemPreference, resolveTheme, hexToHslTriplet } from './utils';
5
5
  export type { CreateThemeOptions } from './utils';
6
6
  export { default as saasPreset } from './tailwind-preset';
7
7
  export { default as saasCoreTailwindPreset } from './tailwind-preset';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC7I,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC7I,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACrG,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -28,4 +28,18 @@ export declare function resolveTheme(theme: SaasTheme): CreateThemeOptions;
28
28
  export declare function createTheme(overrides: CreateThemeOptions): ThemeTokens;
29
29
  export declare function applyTheme(theme: ThemeTokens, element?: HTMLElement): void;
30
30
  export declare function getSystemPreference(): 'light' | 'dark';
31
+ /**
32
+ * `#1f7a3d` → `148 60% 30%`, the space-separated HSL triplet every token here
33
+ * is written in.
34
+ *
35
+ * The bridge between the two halves of "brand colour" in this codebase: a tenant
36
+ * stores hex, because that is what a colour input and a website both give you,
37
+ * while `CreateThemeOptions.brand` takes HSL so it can shift lightness to derive
38
+ * the ring and the sidebar. Without this the tenant's colour had nowhere to go,
39
+ * which is why `settings.branding.primaryColor` was written and never read.
40
+ *
41
+ * Returns null for anything that is not a 3- or 6-digit hex, so a bad value
42
+ * leaves the theme alone instead of painting the shell `NaN`.
43
+ */
44
+ export declare function hexToHslTriplet(hex: string): string | null;
31
45
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/theme/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EAIV,MAAM,UAAU,CAAA;AAqCjB,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAChC,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACxC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,GAAG,KAAK,IAAI,SAAS,CAGrF;AA+BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,CA8FjE;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,kBAAkB,GAAG,WAAW,CA2BtE;AAkGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAoB1E;AAED,wBAAgB,mBAAmB,IAAI,OAAO,GAAG,MAAM,CAGtD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/theme/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EAIV,MAAM,UAAU,CAAA;AAqCjB,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAChC,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACxC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,GAAG,KAAK,IAAI,SAAS,CAGrF;AA+BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,CA8FjE;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,kBAAkB,GAAG,WAAW,CA2BtE;AAkGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAoB1E;AAED,wBAAgB,mBAAmB,IAAI,OAAO,GAAG,MAAM,CAGtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4B1D"}