@stigmer/react 3.5.3 → 3.6.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 (192) hide show
  1. package/agent/AgentPicker.d.ts +10 -1
  2. package/agent/AgentPicker.d.ts.map +1 -1
  3. package/agent/AgentPicker.js +2 -2
  4. package/agent/AgentPicker.js.map +1 -1
  5. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  6. package/channel/AgentChannelsPanel.js +22 -5
  7. package/channel/AgentChannelsPanel.js.map +1 -1
  8. package/channel/ChannelTemplatesDialog.d.ts +53 -0
  9. package/channel/ChannelTemplatesDialog.d.ts.map +1 -0
  10. package/channel/ChannelTemplatesDialog.js +150 -0
  11. package/channel/ChannelTemplatesDialog.js.map +1 -0
  12. package/channel/index.d.ts +8 -0
  13. package/channel/index.d.ts.map +1 -1
  14. package/channel/index.js +4 -0
  15. package/channel/index.js.map +1 -1
  16. package/channel/providers.d.ts +12 -0
  17. package/channel/providers.d.ts.map +1 -1
  18. package/channel/providers.js +14 -2
  19. package/channel/providers.js.map +1 -1
  20. package/channel/templatePresentation.d.ts +37 -0
  21. package/channel/templatePresentation.d.ts.map +1 -0
  22. package/channel/templatePresentation.js +69 -0
  23. package/channel/templatePresentation.js.map +1 -0
  24. package/channel/useChannelTemplateList.d.ts +64 -0
  25. package/channel/useChannelTemplateList.d.ts.map +1 -0
  26. package/channel/useChannelTemplateList.js +69 -0
  27. package/channel/useChannelTemplateList.js.map +1 -0
  28. package/channel/useChannelTemplateReadiness.d.ts +53 -0
  29. package/channel/useChannelTemplateReadiness.d.ts.map +1 -0
  30. package/channel/useChannelTemplateReadiness.js +42 -0
  31. package/channel/useChannelTemplateReadiness.js.map +1 -0
  32. package/dashboard/useDashboardFailedRuns.d.ts.map +1 -1
  33. package/dashboard/useDashboardFailedRuns.js +2 -0
  34. package/dashboard/useDashboardFailedRuns.js.map +1 -1
  35. package/index.d.ts +4 -2
  36. package/index.d.ts.map +1 -1
  37. package/index.js +9 -1
  38. package/index.js.map +1 -1
  39. package/library/useExportResource.d.ts +4 -3
  40. package/library/useExportResource.d.ts.map +1 -1
  41. package/library/useExportResource.js +1 -1
  42. package/library/useExportResource.js.map +1 -1
  43. package/organization/OrgProvider.d.ts +11 -4
  44. package/organization/OrgProvider.d.ts.map +1 -1
  45. package/organization/OrgProvider.js +28 -4
  46. package/organization/OrgProvider.js.map +1 -1
  47. package/package.json +4 -4
  48. package/resource-detail/useDeleteResource.d.ts +1 -1
  49. package/resource-detail/useDeleteResource.d.ts.map +1 -1
  50. package/resource-detail/useDeleteResource.js +5 -0
  51. package/resource-detail/useDeleteResource.js.map +1 -1
  52. package/resource-workbench/components/ResourceWorkbench.d.ts +10 -1
  53. package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -1
  54. package/resource-workbench/components/ResourceWorkbench.js +6 -2
  55. package/resource-workbench/components/ResourceWorkbench.js.map +1 -1
  56. package/resource-workbench/hooks/useResourceCollection.d.ts +8 -0
  57. package/resource-workbench/hooks/useResourceCollection.d.ts.map +1 -1
  58. package/resource-workbench/hooks/useResourceCollection.js +2 -2
  59. package/resource-workbench/hooks/useResourceCollection.js.map +1 -1
  60. package/schedule/CadenceField.d.ts +31 -0
  61. package/schedule/CadenceField.d.ts.map +1 -0
  62. package/schedule/CadenceField.js +116 -0
  63. package/schedule/CadenceField.js.map +1 -0
  64. package/schedule/ScheduleDetailView.d.ts +58 -0
  65. package/schedule/ScheduleDetailView.d.ts.map +1 -0
  66. package/schedule/ScheduleDetailView.js +236 -0
  67. package/schedule/ScheduleDetailView.js.map +1 -0
  68. package/schedule/ScheduleForm.d.ts +43 -0
  69. package/schedule/ScheduleForm.d.ts.map +1 -0
  70. package/schedule/ScheduleForm.js +129 -0
  71. package/schedule/ScheduleForm.js.map +1 -0
  72. package/schedule/ScheduleRowActions.d.ts +20 -0
  73. package/schedule/ScheduleRowActions.d.ts.map +1 -0
  74. package/schedule/ScheduleRowActions.js +54 -0
  75. package/schedule/ScheduleRowActions.js.map +1 -0
  76. package/schedule/TimeZoneField.d.ts +32 -0
  77. package/schedule/TimeZoneField.d.ts.map +1 -0
  78. package/schedule/TimeZoneField.js +104 -0
  79. package/schedule/TimeZoneField.js.map +1 -0
  80. package/schedule/cadence.d.ts +95 -0
  81. package/schedule/cadence.d.ts.map +1 -0
  82. package/schedule/cadence.js +242 -0
  83. package/schedule/cadence.js.map +1 -0
  84. package/schedule/index.d.ts +31 -0
  85. package/schedule/index.d.ts.map +1 -0
  86. package/schedule/index.js +16 -0
  87. package/schedule/index.js.map +1 -0
  88. package/schedule/scheduleColumns.d.ts +26 -0
  89. package/schedule/scheduleColumns.d.ts.map +1 -0
  90. package/schedule/scheduleColumns.js +77 -0
  91. package/schedule/scheduleColumns.js.map +1 -0
  92. package/schedule/scheduleListFn.d.ts +50 -0
  93. package/schedule/scheduleListFn.d.ts.map +1 -0
  94. package/schedule/scheduleListFn.js +65 -0
  95. package/schedule/scheduleListFn.js.map +1 -0
  96. package/schedule/scheduleState.d.ts +43 -0
  97. package/schedule/scheduleState.d.ts.map +1 -0
  98. package/schedule/scheduleState.js +67 -0
  99. package/schedule/scheduleState.js.map +1 -0
  100. package/schedule/useCreateSchedule.d.ts +57 -0
  101. package/schedule/useCreateSchedule.d.ts.map +1 -0
  102. package/schedule/useCreateSchedule.js +61 -0
  103. package/schedule/useCreateSchedule.js.map +1 -0
  104. package/schedule/useResumeSchedule.d.ts +30 -0
  105. package/schedule/useResumeSchedule.d.ts.map +1 -0
  106. package/schedule/useResumeSchedule.js +45 -0
  107. package/schedule/useResumeSchedule.js.map +1 -0
  108. package/schedule/useSchedule.d.ts +39 -0
  109. package/schedule/useSchedule.d.ts.map +1 -0
  110. package/schedule/useSchedule.js +44 -0
  111. package/schedule/useSchedule.js.map +1 -0
  112. package/schedule/useScheduleCount.d.ts +38 -0
  113. package/schedule/useScheduleCount.d.ts.map +1 -0
  114. package/schedule/useScheduleCount.js +30 -0
  115. package/schedule/useScheduleCount.js.map +1 -0
  116. package/schedule/useScheduleList.d.ts +48 -0
  117. package/schedule/useScheduleList.d.ts.map +1 -0
  118. package/schedule/useScheduleList.js +43 -0
  119. package/schedule/useScheduleList.js.map +1 -0
  120. package/schedule/useSetScheduleEnabled.d.ts +31 -0
  121. package/schedule/useSetScheduleEnabled.d.ts.map +1 -0
  122. package/schedule/useSetScheduleEnabled.js +53 -0
  123. package/schedule/useSetScheduleEnabled.js.map +1 -0
  124. package/schedule/useTriggerSchedule.d.ts +28 -0
  125. package/schedule/useTriggerSchedule.d.ts.map +1 -0
  126. package/schedule/useTriggerSchedule.js +43 -0
  127. package/schedule/useTriggerSchedule.js.map +1 -0
  128. package/search/useResourceCount.d.ts +2 -1
  129. package/search/useResourceCount.d.ts.map +1 -1
  130. package/search/useResourceCount.js +6 -1
  131. package/search/useResourceCount.js.map +1 -1
  132. package/src/agent/AgentPicker.tsx +13 -1
  133. package/src/channel/AgentChannelsPanel.tsx +43 -1
  134. package/src/channel/ChannelTemplatesDialog.tsx +433 -0
  135. package/src/channel/__tests__/AgentChannelsPanel.test.tsx +73 -0
  136. package/src/channel/__tests__/ChannelTemplatesDialog.test.tsx +292 -0
  137. package/src/channel/__tests__/providers.test.ts +9 -0
  138. package/src/channel/__tests__/templatePresentation.test.ts +96 -0
  139. package/src/channel/__tests__/useChannelTemplateList.test.tsx +216 -0
  140. package/src/channel/__tests__/useChannelTemplateReadiness.test.tsx +124 -0
  141. package/src/channel/index.ts +15 -0
  142. package/src/channel/providers.ts +26 -2
  143. package/src/channel/templatePresentation.ts +82 -0
  144. package/src/channel/useChannelTemplateList.ts +123 -0
  145. package/src/channel/useChannelTemplateReadiness.ts +69 -0
  146. package/src/dashboard/__tests__/useDashboardFailedRuns.test.tsx +106 -0
  147. package/src/dashboard/useDashboardFailedRuns.ts +2 -0
  148. package/src/index.ts +65 -0
  149. package/src/library/useExportResource.ts +4 -3
  150. package/src/organization/OrgProvider.tsx +29 -4
  151. package/src/organization/__tests__/OrgProvider.orgSwitch.test.tsx +89 -0
  152. package/src/resource-detail/useDeleteResource.ts +11 -1
  153. package/src/resource-workbench/__tests__/ResourceWorkbench.test.tsx +112 -0
  154. package/src/resource-workbench/components/ResourceWorkbench.tsx +32 -15
  155. package/src/resource-workbench/hooks/useResourceCollection.ts +11 -1
  156. package/src/schedule/CadenceField.tsx +365 -0
  157. package/src/schedule/ScheduleDetailView.tsx +583 -0
  158. package/src/schedule/ScheduleForm.tsx +405 -0
  159. package/src/schedule/ScheduleRowActions.tsx +124 -0
  160. package/src/schedule/TimeZoneField.tsx +199 -0
  161. package/src/schedule/__tests__/ScheduleDetailView.test.tsx +260 -0
  162. package/src/schedule/__tests__/cadence.test.ts +278 -0
  163. package/src/schedule/__tests__/scheduleColumnsRowActions.test.tsx +176 -0
  164. package/src/schedule/__tests__/scheduleCreation.test.tsx +340 -0
  165. package/src/schedule/__tests__/scheduleHooks.test.tsx +312 -0
  166. package/src/schedule/__tests__/scheduleListFn.test.ts +128 -0
  167. package/src/schedule/__tests__/scheduleState.test.ts +133 -0
  168. package/src/schedule/cadence.ts +298 -0
  169. package/src/schedule/index.ts +57 -0
  170. package/src/schedule/scheduleColumns.tsx +118 -0
  171. package/src/schedule/scheduleListFn.ts +108 -0
  172. package/src/schedule/scheduleState.ts +96 -0
  173. package/src/schedule/useCreateSchedule.ts +88 -0
  174. package/src/schedule/useResumeSchedule.ts +67 -0
  175. package/src/schedule/useSchedule.ts +67 -0
  176. package/src/schedule/useScheduleCount.ts +57 -0
  177. package/src/schedule/useScheduleList.ts +83 -0
  178. package/src/schedule/useSetScheduleEnabled.ts +84 -0
  179. package/src/schedule/useTriggerSchedule.ts +65 -0
  180. package/src/search/__tests__/useResourceCount.test.tsx +89 -0
  181. package/src/search/useResourceCount.ts +8 -2
  182. package/src/workflow/WorkflowDashboard.tsx +1 -0
  183. package/src/workflow/useWorkflowExecutionList.ts +13 -2
  184. package/styles.css +1 -1
  185. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  186. package/workflow/WorkflowDashboard.d.ts.map +1 -1
  187. package/workflow/WorkflowDashboard.js +1 -0
  188. package/workflow/WorkflowDashboard.js.map +1 -1
  189. package/workflow/useWorkflowExecutionList.d.ts +10 -0
  190. package/workflow/useWorkflowExecutionList.d.ts.map +1 -1
  191. package/workflow/useWorkflowExecutionList.js +3 -2
  192. package/workflow/useWorkflowExecutionList.js.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSetScheduleEnabled.js","sourceRoot":"","sources":["../../src/schedule/useSetScheduleEnabled.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,cAAc,GAEf,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAiBjD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EAAE,QAAkB,EAAE,OAAgB,EAAqB,EAAE;QAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,+DAA+D;gBAC7D,iDAAiD,CACpD,CAAC;QACJ,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAChD,OAAO,CAAC,IAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAEhC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAC1C,2BAA2B,CAAC,OAAO,CAAC,CACrC,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;YAClE,OAAO,OAAO,CAAC,OAAmB,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,OAAO,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EACxC,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { Schedule } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
2
+ /** Return value of {@link useTriggerSchedule}. */
3
+ export interface UseTriggerScheduleReturn {
4
+ /**
5
+ * Fire the schedule once, now — a real agent execution, outside the
6
+ * cron cadence. Resolves with the post-trigger schedule; refetch to
7
+ * pick up the new `status.last_execution_id`.
8
+ */
9
+ readonly triggerSchedule: (scheduleId: string) => Promise<Schedule>;
10
+ /** `true` while the trigger request is in flight. */
11
+ readonly isTriggering: boolean;
12
+ /** Error from the last failed or refused trigger, or `null` when healthy. */
13
+ readonly error: Error | null;
14
+ }
15
+ /**
16
+ * Behavior hook that fires a schedule once, immediately.
17
+ *
18
+ * The server enforces a refusal matrix — a disabled schedule refuses
19
+ * first, then a paused one — both as `FAILED_PRECONDITION` with copy
20
+ * that names the remedy ("enable it before triggering" / "resume it
21
+ * before triggering"). Error toasts relay that copy verbatim; the copy
22
+ * is byte-identical across editions.
23
+ *
24
+ * Triggering starts a real, billable execution — gate the call behind a
25
+ * confirmation (the detail view uses `ConfirmDialog`).
26
+ */
27
+ export declare function useTriggerSchedule(): UseTriggerScheduleReturn;
28
+ //# sourceMappingURL=useTriggerSchedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTriggerSchedule.d.ts","sourceRoot":"","sources":["../../src/schedule/useTriggerSchedule.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uDAAuD,CAAC;AAMtF,kDAAkD;AAClD,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpE,qDAAqD;IACrD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,IAAI,wBAAwB,CA6B7D"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { useCallback, useMemo, useState } from "react";
3
+ import { getUserMessage } from "@stigmer/sdk";
4
+ import { useStigmer } from "../hooks.js";
5
+ import { toast } from "../feedback/toast.js";
6
+ import { toError } from "../internal/toError.js";
7
+ /**
8
+ * Behavior hook that fires a schedule once, immediately.
9
+ *
10
+ * The server enforces a refusal matrix — a disabled schedule refuses
11
+ * first, then a paused one — both as `FAILED_PRECONDITION` with copy
12
+ * that names the remedy ("enable it before triggering" / "resume it
13
+ * before triggering"). Error toasts relay that copy verbatim; the copy
14
+ * is byte-identical across editions.
15
+ *
16
+ * Triggering starts a real, billable execution — gate the call behind a
17
+ * confirmation (the detail view uses `ConfirmDialog`).
18
+ */
19
+ export function useTriggerSchedule() {
20
+ const stigmer = useStigmer();
21
+ const [isTriggering, setIsTriggering] = useState(false);
22
+ const [error, setError] = useState(null);
23
+ const triggerSchedule = useCallback(async (scheduleId) => {
24
+ setIsTriggering(true);
25
+ setError(null);
26
+ try {
27
+ const triggered = await stigmer.schedule.trigger(scheduleId);
28
+ toast.success("Run started");
29
+ return triggered;
30
+ }
31
+ catch (err) {
32
+ const wrapped = toError(err);
33
+ setError(wrapped);
34
+ toast.error(getUserMessage(err));
35
+ throw wrapped;
36
+ }
37
+ finally {
38
+ setIsTriggering(false);
39
+ }
40
+ }, [stigmer]);
41
+ return useMemo(() => ({ triggerSchedule, isTriggering, error }), [triggerSchedule, isTriggering, error]);
42
+ }
43
+ //# sourceMappingURL=useTriggerSchedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTriggerSchedule.js","sourceRoot":"","sources":["../../src/schedule/useTriggerSchedule.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAgBjD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,UAAkB,EAAqB,EAAE;QAC9C,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7D,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,OAAO,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAChD,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,CAAC,CACvC,CAAC;AACJ,CAAC"}
@@ -7,7 +7,8 @@ export interface UseResourceCountOptions {
7
7
  * Controls resource visibility scope.
8
8
  *
9
9
  * - `"org"` — all resources owned by the given organization, regardless of visibility.
10
- * - `"all"` — all resources the caller is authorized to access, across all organizations.
10
+ * - `"all"` — all resources owned by the given organization plus public resources
11
+ * from other organizations.
11
12
  *
12
13
  * @default "org"
13
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"useResourceCount.d.ts","sourceRoot":"","sources":["../../src/search/useResourceCount.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,EACnD,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,CAAC,EAAE,uBAAuB,GAChC,sBAAsB,CAuBxB"}
1
+ {"version":3,"file":"useResourceCount.d.ts","sourceRoot":"","sources":["../../src/search/useResourceCount.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,EACnD,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,CAAC,EAAE,uBAAuB,GAChC,sBAAsB,CA4BxB"}
@@ -20,10 +20,15 @@ export function useResourceCount(listFn, org, options) {
20
20
  const refetchToken = options?.refetchToken;
21
21
  const { data: count, isLoading, isRefetching, error, refetch } = useFetch(org
22
22
  ? async () => {
23
+ // Identical params to useResourceList so a card's count always matches
24
+ // the list page it links to. `org` is ALWAYS sent: an empty org means
25
+ // "every org the caller can access" to the search backend (a global FGA
26
+ // dump), and `crossOrgPublic` with an empty org matches zero rows.
23
27
  const params = {
24
- org: scope === "all" ? "" : org,
28
+ org,
25
29
  query: query || undefined,
26
30
  excludePublic: false,
31
+ crossOrgPublic: scope === "all",
27
32
  page: { num: 1, size: 1 },
28
33
  };
29
34
  const result = await listFn(params);
@@ -1 +1 @@
1
- {"version":3,"file":"useResourceCount.js","sourceRoot":"","sources":["../../src/search/useResourceCount.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAIb,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAoCnD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAmD,EACnD,GAAkB,EAClB,OAAiC;IAEjC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;IACtC,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,CAAC;IAE3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CACvE,GAAG;QACD,CAAC,CAAC,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAe;gBACzB,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;gBAC/B,KAAK,EAAE,KAAK,IAAI,SAAS;gBACzB,aAAa,EAAE,KAAK;gBACpB,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;aAC1B,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,CAAC;QACH,CAAC,CAAC,IAAI,EACR,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,EACzC,SAAS,CACV,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"useResourceCount.js","sourceRoot":"","sources":["../../src/search/useResourceCount.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAIb,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAqCnD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAmD,EACnD,GAAkB,EAClB,OAAiC;IAEjC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;IACtC,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,CAAC;IAE3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CACvE,GAAG;QACD,CAAC,CAAC,KAAK,IAAI,EAAE;YACT,uEAAuE;YACvE,sEAAsE;YACtE,wEAAwE;YACxE,mEAAmE;YACnE,MAAM,MAAM,GAAe;gBACzB,GAAG;gBACH,KAAK,EAAE,KAAK,IAAI,SAAS;gBACzB,aAAa,EAAE,KAAK;gBACpB,cAAc,EAAE,KAAK,KAAK,KAAK;gBAC/B,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;aAC1B,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,CAAC;QACH,CAAC,CAAC,IAAI,EACR,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,EACzC,SAAS,CACV,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5D,CAAC"}
@@ -38,6 +38,15 @@ export interface AgentPickerProps {
38
38
  * @default "org"
39
39
  */
40
40
  readonly scope?: "org" | "all";
41
+ /**
42
+ * Renders the Org/All scope toggle. Pass `false` to lock the picker
43
+ * to the `scope` prop — for flows where only one scope can produce a
44
+ * valid selection (e.g. schedule creation, where the server requires
45
+ * the target agent to live in the schedule's own org).
46
+ *
47
+ * @default true
48
+ */
49
+ readonly showScopeToggle?: boolean;
41
50
  /** Prevents interaction with the picker when `true`. */
42
51
  readonly disabled?: boolean;
43
52
  /** Additional CSS class names for the root container. */
@@ -85,6 +94,7 @@ export function AgentPicker({
85
94
  onChange,
86
95
  onDisplayNameResolved,
87
96
  scope,
97
+ showScopeToggle = true,
88
98
  disabled,
89
99
  className,
90
100
  }: AgentPickerProps) {
@@ -206,7 +216,9 @@ export function AgentPicker({
206
216
  autoFocus
207
217
  />
208
218
 
209
- <ScopeToggle value={activeScope} onChange={setActiveScope} disabled={disabled} />
219
+ {showScopeToggle && (
220
+ <ScopeToggle value={activeScope} onChange={setActiveScope} disabled={disabled} />
221
+ )}
210
222
 
211
223
  {error && <p className="text-xs text-destructive">{error.message}</p>}
212
224
 
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { useCallback, useState } from "react";
4
- import { FileCode2, KeyRound, MessageSquare, MoreHorizontal, Trash2 } from "lucide-react";
4
+ import { FileCode2, KeyRound, LayoutTemplate, MessageSquare, MoreHorizontal, Trash2 } from "lucide-react";
5
5
  import { cn } from "@stigmer/theme";
6
6
  import { getUserMessage } from "@stigmer/sdk";
7
7
  import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
@@ -22,6 +22,7 @@ import { useDeploymentMode } from "../deployment-mode.js";
22
22
  import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
23
23
  import { ChannelConversationsDialog } from "./ChannelConversationsDialog.js";
24
24
  import { ChannelCredentialsDialog } from "./ChannelCredentialsDialog.js";
25
+ import { ChannelTemplatesDialog } from "./ChannelTemplatesDialog.js";
25
26
  import { ConnectSlackDialog } from "./ConnectSlackDialog.js";
26
27
  import { ConnectWhatsAppDialog } from "./ConnectWhatsAppDialog.js";
27
28
  import {
@@ -148,6 +149,12 @@ export function AgentChannelsPanel({
148
149
  const [viewingConversations, setViewingConversations] =
149
150
  useState<AgentChannel | null>(null);
150
151
 
152
+ // The channel whose provider message templates are being viewed
153
+ // (proactive-messaging DD-007: the business-messaging diagnosis
154
+ // surface).
155
+ const [viewingTemplates, setViewingTemplates] =
156
+ useState<AgentChannel | null>(null);
157
+
151
158
  // The channel being edited as YAML (the kind-agnostic manifest flow).
152
159
  const [editingYaml, setEditingYaml] = useState<AgentChannel | null>(null);
153
160
 
@@ -293,6 +300,7 @@ export function AgentChannelsPanel({
293
300
  onDeleteClick={() => void handleDelete(channel)}
294
301
  onEditCredentials={() => setEditingCredentials(channel)}
295
302
  onViewConversations={() => setViewingConversations(channel)}
303
+ onViewTemplates={() => setViewingTemplates(channel)}
296
304
  onEditYaml={() => setEditingYaml(channel)}
297
305
  refetch={refetch}
298
306
  />
@@ -349,6 +357,25 @@ export function AgentChannelsPanel({
349
357
  />
350
358
  )}
351
359
 
360
+ {viewingTemplates && (
361
+ <ChannelTemplatesDialog
362
+ open
363
+ onOpenChange={(open) => {
364
+ if (!open) setViewingTemplates(null);
365
+ }}
366
+ channel={viewingTemplates}
367
+ // The dialog's not-proactive teaching state routes to the
368
+ // panel's own YAML editor — the one place the grant can be
369
+ // set today (proactive-messaging DD-007's named follow-up is
370
+ // a first-class card affordance).
371
+ onEditYaml={() => {
372
+ const channel = viewingTemplates;
373
+ setViewingTemplates(null);
374
+ setEditingYaml(channel);
375
+ }}
376
+ />
377
+ )}
378
+
352
379
  {editingYaml && (
353
380
  <EditResourceYamlDialog
354
381
  open
@@ -383,6 +410,7 @@ interface ChannelCardProps {
383
410
  readonly onDeleteClick: () => void;
384
411
  readonly onEditCredentials: () => void;
385
412
  readonly onViewConversations: () => void;
413
+ readonly onViewTemplates: () => void;
386
414
  readonly onEditYaml: () => void;
387
415
  readonly refetch: () => void;
388
416
  }
@@ -396,6 +424,7 @@ function ChannelCard({
396
424
  onDeleteClick,
397
425
  onEditCredentials,
398
426
  onViewConversations,
427
+ onViewTemplates,
399
428
  onEditYaml,
400
429
  refetch,
401
430
  }: ChannelCardProps) {
@@ -513,6 +542,19 @@ function ChannelCard({
513
542
  >
514
543
  Conversations
515
544
  </ActionMenu.Item>
545
+ {/* Gated on the bar the server enforces for listTemplates
546
+ (ChannelMessagingReach: can_edit), and on the provider
547
+ declaring a template registry at all — hidden, not
548
+ disabled, for providers with no template concept. */}
549
+ {canEdit && provider.supportsMessageTemplates && (
550
+ <ActionMenu.Item
551
+ icon={<LayoutTemplate />}
552
+ onSelect={onViewTemplates}
553
+ data-cursor-target="channel-templates"
554
+ >
555
+ Templates
556
+ </ActionMenu.Item>
557
+ )}
516
558
  {canEdit && (
517
559
  <ActionMenu.Item
518
560
  icon={<KeyRound />}