@burdenoff/microfe-subscriberbot 2026.706.2 → 2026.710.1

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 (140) hide show
  1. package/dist/generated/global-operations.d.ts +2 -0
  2. package/dist/generated/global-operations.d.ts.map +1 -0
  3. package/dist/generated/global-types.d.ts +23527 -0
  4. package/dist/generated/global-types.d.ts.map +1 -0
  5. package/dist/generated/wspace-operations.d.ts +2 -0
  6. package/dist/generated/wspace-operations.d.ts.map +1 -0
  7. package/dist/generated/wspace-types.d.ts +57851 -0
  8. package/dist/generated/wspace-types.d.ts.map +1 -0
  9. package/dist/index.d.ts +6 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +2 -1
  12. package/dist/subscriberbot/SubscriberBotRoot.d.ts +5 -0
  13. package/dist/subscriberbot/SubscriberBotRoot.d.ts.map +1 -0
  14. package/dist/subscriberbot/SubscriberBotRoot.js +56 -40
  15. package/dist/subscriberbot/SubscriberBotRoot.js.map +1 -1
  16. package/dist/subscriberbot/SubscriberBotRoutes.d.ts +4 -0
  17. package/dist/subscriberbot/SubscriberBotRoutes.d.ts.map +1 -0
  18. package/dist/subscriberbot/SubscriberBotRoutes.js +14 -6
  19. package/dist/subscriberbot/SubscriberBotRoutes.js.map +1 -1
  20. package/dist/subscriberbot/components/EmptyState.d.ts +18 -0
  21. package/dist/subscriberbot/components/EmptyState.d.ts.map +1 -0
  22. package/dist/subscriberbot/components/MetricsCard.d.ts +16 -0
  23. package/dist/subscriberbot/components/MetricsCard.d.ts.map +1 -0
  24. package/dist/subscriberbot/components/Modal.d.ts +13 -0
  25. package/dist/subscriberbot/components/Modal.d.ts.map +1 -0
  26. package/dist/subscriberbot/components/PageLayout.d.ts +23 -0
  27. package/dist/subscriberbot/components/PageLayout.d.ts.map +1 -0
  28. package/dist/subscriberbot/components/StateViews.d.ts +24 -0
  29. package/dist/subscriberbot/components/StateViews.d.ts.map +1 -0
  30. package/dist/subscriberbot/components/StatusBadge.d.ts +9 -0
  31. package/dist/subscriberbot/components/StatusBadge.d.ts.map +1 -0
  32. package/dist/subscriberbot/components/index.d.ts +13 -0
  33. package/dist/subscriberbot/components/index.d.ts.map +1 -0
  34. package/dist/subscriberbot/components/index.js +7 -0
  35. package/dist/subscriberbot/components/viz.d.ts +58 -0
  36. package/dist/subscriberbot/components/viz.d.ts.map +1 -0
  37. package/dist/subscriberbot/components/viz.js +196 -0
  38. package/dist/subscriberbot/components/viz.js.map +1 -0
  39. package/dist/subscriberbot/config/assistantUsecases.d.ts +13 -0
  40. package/dist/subscriberbot/config/assistantUsecases.d.ts.map +1 -0
  41. package/dist/subscriberbot/context/SubscriberBotContext.d.ts +16 -0
  42. package/dist/subscriberbot/context/SubscriberBotContext.d.ts.map +1 -0
  43. package/dist/subscriberbot/context/index.d.ts +6 -0
  44. package/dist/subscriberbot/context/index.d.ts.map +1 -0
  45. package/dist/subscriberbot/hooks/index.d.ts +7 -0
  46. package/dist/subscriberbot/hooks/index.d.ts.map +1 -0
  47. package/dist/subscriberbot/hooks/useSubscriberBotApi.d.ts +105 -0
  48. package/dist/subscriberbot/hooks/useSubscriberBotApi.d.ts.map +1 -0
  49. package/dist/subscriberbot/hooks/useSubscriberBotApi.js +38 -30
  50. package/dist/subscriberbot/hooks/useSubscriberBotApi.js.map +1 -1
  51. package/dist/subscriberbot/index.d.ts +12 -0
  52. package/dist/subscriberbot/index.d.ts.map +1 -0
  53. package/dist/subscriberbot/index.js +1 -0
  54. package/dist/subscriberbot/pages/AssetVaultPage.d.ts +4 -0
  55. package/dist/subscriberbot/pages/AssetVaultPage.d.ts.map +1 -0
  56. package/dist/subscriberbot/pages/AssetVaultPage.js +182 -0
  57. package/dist/subscriberbot/pages/AssetVaultPage.js.map +1 -0
  58. package/dist/subscriberbot/pages/DashboardPage.d.ts +12 -0
  59. package/dist/subscriberbot/pages/DashboardPage.d.ts.map +1 -0
  60. package/dist/subscriberbot/pages/DashboardPage.js +272 -199
  61. package/dist/subscriberbot/pages/DashboardPage.js.map +1 -1
  62. package/dist/subscriberbot/pages/InboxPage.d.ts +12 -0
  63. package/dist/subscriberbot/pages/InboxPage.d.ts.map +1 -0
  64. package/dist/subscriberbot/pages/InboxPage.js +517 -234
  65. package/dist/subscriberbot/pages/InboxPage.js.map +1 -1
  66. package/dist/subscriberbot/pages/InsightsPage.d.ts +4 -0
  67. package/dist/subscriberbot/pages/InsightsPage.d.ts.map +1 -0
  68. package/dist/subscriberbot/pages/InsightsPage.js +220 -0
  69. package/dist/subscriberbot/pages/InsightsPage.js.map +1 -0
  70. package/dist/subscriberbot/pages/InvoicesPage.d.ts +13 -0
  71. package/dist/subscriberbot/pages/InvoicesPage.d.ts.map +1 -0
  72. package/dist/subscriberbot/pages/InvoicesPage.js +325 -237
  73. package/dist/subscriberbot/pages/InvoicesPage.js.map +1 -1
  74. package/dist/subscriberbot/pages/WorkflowsPage.d.ts +15 -0
  75. package/dist/subscriberbot/pages/WorkflowsPage.d.ts.map +1 -0
  76. package/dist/subscriberbot/pages/WorkflowsPage.js +301 -112
  77. package/dist/subscriberbot/pages/WorkflowsPage.js.map +1 -1
  78. package/dist/subscriberbot/pages/agents/AgentDetailPage.d.ts +11 -0
  79. package/dist/subscriberbot/pages/agents/AgentDetailPage.d.ts.map +1 -0
  80. package/dist/subscriberbot/pages/agents/AgentDetailPage.js +311 -165
  81. package/dist/subscriberbot/pages/agents/AgentDetailPage.js.map +1 -1
  82. package/dist/subscriberbot/pages/agents/AgentNewPage.d.ts +8 -0
  83. package/dist/subscriberbot/pages/agents/AgentNewPage.d.ts.map +1 -0
  84. package/dist/subscriberbot/pages/agents/AgentsListPage.d.ts +11 -0
  85. package/dist/subscriberbot/pages/agents/AgentsListPage.d.ts.map +1 -0
  86. package/dist/subscriberbot/pages/agents/AgentsListPage.js +183 -93
  87. package/dist/subscriberbot/pages/agents/AgentsListPage.js.map +1 -1
  88. package/dist/subscriberbot/pages/providers/ProviderDetailPage.d.ts +10 -0
  89. package/dist/subscriberbot/pages/providers/ProviderDetailPage.d.ts.map +1 -0
  90. package/dist/subscriberbot/pages/providers/ProviderDetailPage.js +426 -293
  91. package/dist/subscriberbot/pages/providers/ProviderDetailPage.js.map +1 -1
  92. package/dist/subscriberbot/pages/providers/ProviderNewPage.d.ts +10 -0
  93. package/dist/subscriberbot/pages/providers/ProviderNewPage.d.ts.map +1 -0
  94. package/dist/subscriberbot/pages/providers/ProviderNewPage.js +217 -153
  95. package/dist/subscriberbot/pages/providers/ProviderNewPage.js.map +1 -1
  96. package/dist/subscriberbot/pages/providers/ProvidersListPage.d.ts +12 -0
  97. package/dist/subscriberbot/pages/providers/ProvidersListPage.d.ts.map +1 -0
  98. package/dist/subscriberbot/pages/providers/ProvidersListPage.js +215 -112
  99. package/dist/subscriberbot/pages/providers/ProvidersListPage.js.map +1 -1
  100. package/dist/subscriberbot/pages/relationships/RelationshipDetailPage.d.ts +13 -0
  101. package/dist/subscriberbot/pages/relationships/RelationshipDetailPage.d.ts.map +1 -0
  102. package/dist/subscriberbot/pages/relationships/RelationshipDetailPage.js +542 -428
  103. package/dist/subscriberbot/pages/relationships/RelationshipDetailPage.js.map +1 -1
  104. package/dist/subscriberbot/pages/relationships/RelationshipNewPage.d.ts +10 -0
  105. package/dist/subscriberbot/pages/relationships/RelationshipNewPage.d.ts.map +1 -0
  106. package/dist/subscriberbot/pages/relationships/RelationshipNewPage.js +242 -192
  107. package/dist/subscriberbot/pages/relationships/RelationshipNewPage.js.map +1 -1
  108. package/dist/subscriberbot/pages/relationships/RelationshipsListPage.d.ts +10 -0
  109. package/dist/subscriberbot/pages/relationships/RelationshipsListPage.d.ts.map +1 -0
  110. package/dist/subscriberbot/pages/relationships/RelationshipsListPage.js +174 -133
  111. package/dist/subscriberbot/pages/relationships/RelationshipsListPage.js.map +1 -1
  112. package/dist/subscriberbot/services/assistantApi.d.ts +66 -0
  113. package/dist/subscriberbot/services/assistantApi.d.ts.map +1 -0
  114. package/dist/subscriberbot/services/assistantApi.js +260 -0
  115. package/dist/subscriberbot/services/assistantApi.js.map +1 -0
  116. package/dist/subscriberbot/services/createSandboxAssistantTransport.d.ts +13 -0
  117. package/dist/subscriberbot/services/createSandboxAssistantTransport.d.ts.map +1 -0
  118. package/dist/subscriberbot/services/createSandboxAssistantTransport.js +120 -0
  119. package/dist/subscriberbot/services/createSandboxAssistantTransport.js.map +1 -0
  120. package/dist/subscriberbot/store/index.d.ts +6 -0
  121. package/dist/subscriberbot/store/index.d.ts.map +1 -0
  122. package/dist/subscriberbot/store/subscriberbotStore.d.ts +60 -0
  123. package/dist/subscriberbot/store/subscriberbotStore.d.ts.map +1 -0
  124. package/dist/subscriberbot/types/assistant.d.ts +57 -0
  125. package/dist/subscriberbot/types/assistant.d.ts.map +1 -0
  126. package/dist/subscriberbot/types/index.d.ts +465 -0
  127. package/dist/subscriberbot/types/index.d.ts.map +1 -0
  128. package/dist/subscriberbot/utils/cn.d.ts +4 -0
  129. package/dist/subscriberbot/utils/cn.d.ts.map +1 -0
  130. package/dist/subscriberbot/utils/formatters.d.ts +53 -0
  131. package/dist/subscriberbot/utils/formatters.d.ts.map +1 -0
  132. package/dist/subscriberbot/utils/index.d.ts +8 -0
  133. package/dist/subscriberbot/utils/index.d.ts.map +1 -0
  134. package/dist/subscriberbot/utils/navigation.d.ts +20 -0
  135. package/dist/subscriberbot/utils/navigation.d.ts.map +1 -0
  136. package/dist/subscriberbot/utils/pageContext.d.ts +21 -0
  137. package/dist/subscriberbot/utils/pageContext.d.ts.map +1 -0
  138. package/dist/subscriberbot/utils/pageContext.js +47 -0
  139. package/dist/subscriberbot/utils/pageContext.js.map +1 -0
  140. package/package.json +5 -1
@@ -0,0 +1,196 @@
1
+ import { cn as e } from "../utils/cn.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/subscriberbot/components/viz.tsx
4
+ var r = [
5
+ "var(--color-chart-1)",
6
+ "var(--color-chart-2)",
7
+ "var(--color-chart-3)",
8
+ "var(--color-chart-4)",
9
+ "var(--color-chart-5)",
10
+ "var(--color-chart-6)",
11
+ "var(--color-chart-7)",
12
+ "var(--color-chart-8)"
13
+ ], i = "var(--color-chart-negative)", a = "var(--color-chart-grid)", o = "var(--color-status-warning-text)", s = "var(--color-status-success-text)", c = (e, t) => t ?? r[e % r.length], l = ({ data: r, size: i = 160, thickness: o = 18, centerLabel: s, centerSub: l, className: u }) => {
14
+ let d = r.reduce((e, t) => e + Math.max(0, t.value), 0), f = (i - o) / 2, p = 2 * Math.PI * f, m = i / 2, h = 0, g = r.map((e) => `${e.label}: ${e.value}`).join(", ");
15
+ return /* @__PURE__ */ n("div", {
16
+ className: e("relative inline-flex items-center justify-center", u),
17
+ children: [/* @__PURE__ */ n("svg", {
18
+ width: i,
19
+ height: i,
20
+ viewBox: `0 0 ${i} ${i}`,
21
+ role: "img",
22
+ "aria-label": `Donut chart. ${g}`,
23
+ className: "max-w-full",
24
+ children: [/* @__PURE__ */ t("circle", {
25
+ cx: m,
26
+ cy: m,
27
+ r: f,
28
+ fill: "none",
29
+ stroke: a,
30
+ strokeWidth: o,
31
+ opacity: .4
32
+ }), d > 0 && r.map((e, n) => {
33
+ let r = Math.max(0, e.value) / d * p, i = /* @__PURE__ */ t("circle", {
34
+ cx: m,
35
+ cy: m,
36
+ r: f,
37
+ fill: "none",
38
+ stroke: c(n, e.color),
39
+ strokeWidth: o,
40
+ strokeDasharray: `${r} ${p - r}`,
41
+ strokeDashoffset: -h,
42
+ strokeLinecap: "butt",
43
+ transform: `rotate(-90 ${m} ${m})`
44
+ }, n);
45
+ return h += r, i;
46
+ })]
47
+ }), (s || l) && /* @__PURE__ */ n("div", {
48
+ className: "absolute inset-0 flex flex-col items-center justify-center text-center",
49
+ children: [s && /* @__PURE__ */ t("span", {
50
+ className: "text-xl font-bold text-text-primary tabular-nums leading-none",
51
+ children: s
52
+ }), l && /* @__PURE__ */ t("span", {
53
+ className: "mt-1 text-xs text-text-secondary",
54
+ children: l
55
+ })]
56
+ })]
57
+ });
58
+ }, u = ({ data: r, valueFormat: i, className: a }) => /* @__PURE__ */ t("ul", {
59
+ className: e("space-y-2", a),
60
+ children: r.map((e, r) => /* @__PURE__ */ n("li", {
61
+ className: "flex items-center gap-2 text-sm",
62
+ children: [
63
+ /* @__PURE__ */ t("span", {
64
+ className: "h-2.5 w-2.5 shrink-0 rounded-full",
65
+ style: { backgroundColor: c(r, e.color) },
66
+ "aria-hidden": !0
67
+ }),
68
+ /* @__PURE__ */ t("span", {
69
+ className: "flex-1 truncate text-text-secondary",
70
+ children: e.label
71
+ }),
72
+ /* @__PURE__ */ t("span", {
73
+ className: "font-medium text-text-primary tabular-nums",
74
+ children: i ? i(e.value) : e.value
75
+ })
76
+ ]
77
+ }, r))
78
+ }), d = ({ data: r, valueFormat: i, className: o }) => {
79
+ let s = Math.max(1, ...r.map((e) => e.value));
80
+ return /* @__PURE__ */ t("ul", {
81
+ className: e("space-y-3", o),
82
+ role: "img",
83
+ "aria-label": "Bar chart",
84
+ children: r.map((e, r) => /* @__PURE__ */ n("li", { children: [/* @__PURE__ */ n("div", {
85
+ className: "flex items-center justify-between text-sm",
86
+ children: [/* @__PURE__ */ t("span", {
87
+ className: "truncate text-text-secondary",
88
+ children: e.label
89
+ }), /* @__PURE__ */ t("span", {
90
+ className: "font-medium text-text-primary tabular-nums",
91
+ children: i ? i(e.value) : e.value
92
+ })]
93
+ }), /* @__PURE__ */ t("div", {
94
+ className: "mt-1.5 h-2 w-full overflow-hidden rounded-full",
95
+ style: { backgroundColor: a },
96
+ children: /* @__PURE__ */ t("div", {
97
+ className: "h-full rounded-full transition-all",
98
+ style: {
99
+ width: `${e.value / s * 100}%`,
100
+ backgroundColor: c(r, e.color)
101
+ }
102
+ })
103
+ })] }, r))
104
+ });
105
+ }, f = ({ value: r, max: c = 100, size: l = 120, label: u, className: d }) => {
106
+ let f = Math.max(0, Math.min(1, r / c)), p = l / 2 - 10, m = l / 2, h = Math.PI * p, g = f >= .66 ? s : f >= .33 ? o : i;
107
+ return /* @__PURE__ */ n("div", {
108
+ className: e("inline-flex flex-col items-center", d),
109
+ children: [/* @__PURE__ */ n("svg", {
110
+ width: l,
111
+ height: l / 2 + 8,
112
+ viewBox: `0 0 ${l} ${l / 2 + 8}`,
113
+ role: "img",
114
+ "aria-label": `Gauge: ${Math.round(f * 100)} percent`,
115
+ className: "max-w-full",
116
+ children: [/* @__PURE__ */ t("path", {
117
+ d: `M10 ${m} A ${p} ${p} 0 0 1 ${l - 10} ${m}`,
118
+ fill: "none",
119
+ stroke: a,
120
+ strokeWidth: 10,
121
+ strokeLinecap: "round"
122
+ }), /* @__PURE__ */ t("path", {
123
+ d: `M10 ${m} A ${p} ${p} 0 0 1 ${l - 10} ${m}`,
124
+ fill: "none",
125
+ stroke: g,
126
+ strokeWidth: 10,
127
+ strokeLinecap: "round",
128
+ strokeDasharray: `${f * h} ${h}`
129
+ })]
130
+ }), /* @__PURE__ */ n("div", {
131
+ className: "-mt-4 text-center",
132
+ children: [/* @__PURE__ */ t("span", {
133
+ className: "text-lg font-bold text-text-primary tabular-nums",
134
+ children: Math.round(r)
135
+ }), u && /* @__PURE__ */ t("p", {
136
+ className: "text-xs text-text-secondary",
137
+ children: u
138
+ })]
139
+ })]
140
+ });
141
+ }, p = {
142
+ default: "var(--color-accent-indigo)",
143
+ positive: s,
144
+ warning: o,
145
+ muted: "var(--color-text-secondary)"
146
+ }, m = ({ items: r, className: i }) => /* @__PURE__ */ n("ol", {
147
+ className: e("relative space-y-5 pl-6", i),
148
+ children: [/* @__PURE__ */ t("span", {
149
+ className: "absolute left-[7px] top-1 bottom-1 w-px bg-border-subtle",
150
+ "aria-hidden": !0
151
+ }), r.map((e, r) => /* @__PURE__ */ n("li", {
152
+ className: "relative",
153
+ children: [
154
+ /* @__PURE__ */ t("span", {
155
+ className: "absolute -left-[22px] top-1 h-3 w-3 rounded-full ring-4 ring-bg-surface",
156
+ style: { backgroundColor: p[e.tone ?? "default"] },
157
+ "aria-hidden": !0
158
+ }),
159
+ /* @__PURE__ */ n("div", {
160
+ className: "flex items-baseline justify-between gap-2",
161
+ children: [/* @__PURE__ */ t("p", {
162
+ className: "text-sm font-medium text-text-primary",
163
+ children: e.title
164
+ }), e.meta && /* @__PURE__ */ t("span", {
165
+ className: "text-sm tabular-nums text-text-primary",
166
+ children: e.meta
167
+ })]
168
+ }),
169
+ e.sub && /* @__PURE__ */ t("p", {
170
+ className: "text-xs text-text-secondary",
171
+ children: e.sub
172
+ })
173
+ ]
174
+ }, r))]
175
+ }), h = ({ value: n, max: r = 100, tone: c = "accent", className: l }) => {
176
+ let u = Math.max(0, Math.min(1, r ? n / r : 0)), d = c === "positive" ? s : c === "warning" ? o : c === "negative" ? i : "var(--color-accent-indigo)";
177
+ return /* @__PURE__ */ t("div", {
178
+ className: e("h-2 w-full overflow-hidden rounded-full", l),
179
+ style: { backgroundColor: a },
180
+ role: "progressbar",
181
+ "aria-valuenow": Math.round(u * 100),
182
+ "aria-valuemin": 0,
183
+ "aria-valuemax": 100,
184
+ children: /* @__PURE__ */ t("div", {
185
+ className: "h-full rounded-full transition-all",
186
+ style: {
187
+ width: `${u * 100}%`,
188
+ backgroundColor: d
189
+ }
190
+ })
191
+ });
192
+ };
193
+ //#endregion
194
+ export { d as BarList, r as CHART_COLORS, l as Donut, f as Gauge, u as Legend, h as MiniProgress, m as Timeline };
195
+
196
+ //# sourceMappingURL=viz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viz.js","names":[],"sources":["../../../src/subscriberbot/components/viz.tsx"],"sourcesContent":["/**\n * Tokenized, responsive SVG visualization primitives.\n * @module subscriberbot/components/viz\n *\n * Every color is a fe-libs semantic CSS variable (never a raw hex), so charts\n * theme automatically in light/dark and per-product themes. All charts scale to\n * their container (SVG viewBox) and carry an accessible role/label.\n */\nimport type { FC, ReactNode } from 'react';\nimport { cn } from '../utils/cn';\n\n/** Categorical palette — fe-libs chart tokens. */\nexport const CHART_COLORS = [\n 'var(--color-chart-1)',\n 'var(--color-chart-2)',\n 'var(--color-chart-3)',\n 'var(--color-chart-4)',\n 'var(--color-chart-5)',\n 'var(--color-chart-6)',\n 'var(--color-chart-7)',\n 'var(--color-chart-8)',\n] as const;\n\nconst POSITIVE = 'var(--color-chart-positive)';\nconst NEGATIVE = 'var(--color-chart-negative)';\nconst GRID = 'var(--color-chart-grid)';\nconst WARN = 'var(--color-status-warning-text)';\nconst SUCCESS = 'var(--color-status-success-text)';\n\nexport interface Segment {\n label: string;\n value: number;\n color?: string;\n}\n\nconst colorAt = (i: number, override?: string) => override ?? CHART_COLORS[i % CHART_COLORS.length];\n\n// ---------------------------------------------------------------------------\n// Donut — proportional ring with an optional center label.\n// ---------------------------------------------------------------------------\nexport const Donut: FC<{\n data: Segment[];\n size?: number;\n thickness?: number;\n centerLabel?: string;\n centerSub?: string;\n className?: string;\n}> = ({ data, size = 160, thickness = 18, centerLabel, centerSub, className }) => {\n const total = data.reduce((s, d) => s + Math.max(0, d.value), 0);\n const r = (size - thickness) / 2;\n const c = 2 * Math.PI * r;\n const cx = size / 2;\n let offset = 0;\n const label = data.map((d) => `${d.label}: ${d.value}`).join(', ');\n\n return (\n <div className={cn('relative inline-flex items-center justify-center', className)}>\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n role=\"img\"\n aria-label={`Donut chart. ${label}`}\n className=\"max-w-full\"\n >\n <circle\n cx={cx}\n cy={cx}\n r={r}\n fill=\"none\"\n stroke={GRID}\n strokeWidth={thickness}\n opacity={0.4}\n />\n {total > 0 &&\n data.map((d, i) => {\n const frac = Math.max(0, d.value) / total;\n const len = frac * c;\n const seg = (\n <circle\n key={i}\n cx={cx}\n cy={cx}\n r={r}\n fill=\"none\"\n stroke={colorAt(i, d.color)}\n strokeWidth={thickness}\n strokeDasharray={`${len} ${c - len}`}\n strokeDashoffset={-offset}\n strokeLinecap=\"butt\"\n transform={`rotate(-90 ${cx} ${cx})`}\n />\n );\n offset += len;\n return seg;\n })}\n </svg>\n {(centerLabel || centerSub) && (\n <div className=\"absolute inset-0 flex flex-col items-center justify-center text-center\">\n {centerLabel && (\n <span className=\"text-xl font-bold text-text-primary tabular-nums leading-none\">\n {centerLabel}\n </span>\n )}\n {centerSub && <span className=\"mt-1 text-xs text-text-secondary\">{centerSub}</span>}\n </div>\n )}\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Legend — pairs with Donut / charts.\n// ---------------------------------------------------------------------------\nexport const Legend: FC<{\n data: Segment[];\n valueFormat?: (n: number) => string;\n className?: string;\n}> = ({ data, valueFormat, className }) => (\n <ul className={cn('space-y-2', className)}>\n {data.map((d, i) => (\n <li key={i} className=\"flex items-center gap-2 text-sm\">\n <span\n className=\"h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: colorAt(i, d.color) }}\n aria-hidden\n />\n <span className=\"flex-1 truncate text-text-secondary\">{d.label}</span>\n <span className=\"font-medium text-text-primary tabular-nums\">\n {valueFormat ? valueFormat(d.value) : d.value}\n </span>\n </li>\n ))}\n </ul>\n);\n\n// ---------------------------------------------------------------------------\n// BarList — horizontal labelled bars (e.g. spend by category).\n// ---------------------------------------------------------------------------\nexport const BarList: FC<{\n data: Segment[];\n valueFormat?: (n: number) => string;\n className?: string;\n}> = ({ data, valueFormat, className }) => {\n const max = Math.max(1, ...data.map((d) => d.value));\n return (\n <ul className={cn('space-y-3', className)} role=\"img\" aria-label=\"Bar chart\">\n {data.map((d, i) => (\n <li key={i}>\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"truncate text-text-secondary\">{d.label}</span>\n <span className=\"font-medium text-text-primary tabular-nums\">\n {valueFormat ? valueFormat(d.value) : d.value}\n </span>\n </div>\n <div\n className=\"mt-1.5 h-2 w-full overflow-hidden rounded-full\"\n style={{ backgroundColor: GRID }}\n >\n <div\n className=\"h-full rounded-full transition-all\"\n style={{ width: `${(d.value / max) * 100}%`, backgroundColor: colorAt(i, d.color) }}\n />\n </div>\n </li>\n ))}\n </ul>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Sparkline / area — small trend line.\n// ---------------------------------------------------------------------------\nexport const Sparkline: FC<{\n points: number[];\n width?: number;\n height?: number;\n positive?: boolean;\n className?: string;\n}> = ({ points, width = 220, height = 56, positive = true, className }) => {\n if (points.length < 2) return null;\n const max = Math.max(...points);\n const min = Math.min(...points);\n const span = max - min || 1;\n const stroke = positive ? POSITIVE : NEGATIVE;\n const step = width / (points.length - 1);\n const coords = points.map((p, i) => [i * step, height - ((p - min) / span) * (height - 8) - 4]);\n const line = coords\n .map(([x, y], i) => `${i === 0 ? 'M' : 'L'}${x.toFixed(1)},${y.toFixed(1)}`)\n .join(' ');\n const area = `${line} L${width},${height} L0,${height} Z`;\n return (\n <svg\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n role=\"img\"\n aria-label=\"Trend sparkline\"\n className={cn('max-w-full', className)}\n preserveAspectRatio=\"none\"\n >\n <path d={area} fill={stroke} opacity={0.12} />\n <path\n d={line}\n fill=\"none\"\n stroke={stroke}\n strokeWidth={2}\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Gauge — 0..max semicircle (e.g. health score).\n// ---------------------------------------------------------------------------\nexport const Gauge: FC<{\n value: number;\n max?: number;\n size?: number;\n label?: string;\n className?: string;\n}> = ({ value, max = 100, size = 120, label, className }) => {\n const pct = Math.max(0, Math.min(1, value / max));\n const r = size / 2 - 10;\n const cy = size / 2;\n const circ = Math.PI * r; // half circle\n const tone = pct >= 0.66 ? SUCCESS : pct >= 0.33 ? WARN : NEGATIVE;\n return (\n <div className={cn('inline-flex flex-col items-center', className)}>\n <svg\n width={size}\n height={size / 2 + 8}\n viewBox={`0 0 ${size} ${size / 2 + 8}`}\n role=\"img\"\n aria-label={`Gauge: ${Math.round(pct * 100)} percent`}\n className=\"max-w-full\"\n >\n <path\n d={`M10 ${cy} A ${r} ${r} 0 0 1 ${size - 10} ${cy}`}\n fill=\"none\"\n stroke={GRID}\n strokeWidth={10}\n strokeLinecap=\"round\"\n />\n <path\n d={`M10 ${cy} A ${r} ${r} 0 0 1 ${size - 10} ${cy}`}\n fill=\"none\"\n stroke={tone}\n strokeWidth={10}\n strokeLinecap=\"round\"\n strokeDasharray={`${pct * circ} ${circ}`}\n />\n </svg>\n <div className=\"-mt-4 text-center\">\n <span className=\"text-lg font-bold text-text-primary tabular-nums\">\n {Math.round(value)}\n </span>\n {label && <p className=\"text-xs text-text-secondary\">{label}</p>}\n </div>\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Timeline — vertical events with a connector rail (e.g. renewals).\n// ---------------------------------------------------------------------------\nexport interface TimelineItem {\n title: string;\n sub?: string;\n meta?: ReactNode;\n tone?: 'default' | 'positive' | 'warning' | 'muted';\n}\nconst dotTone: Record<NonNullable<TimelineItem['tone']>, string> = {\n default: 'var(--color-accent-indigo)',\n positive: SUCCESS,\n warning: WARN,\n muted: 'var(--color-text-secondary)',\n};\nexport const Timeline: FC<{ items: TimelineItem[]; className?: string }> = ({\n items,\n className,\n}) => (\n <ol className={cn('relative space-y-5 pl-6', className)}>\n <span className=\"absolute left-[7px] top-1 bottom-1 w-px bg-border-subtle\" aria-hidden />\n {items.map((it, i) => (\n <li key={i} className=\"relative\">\n <span\n className=\"absolute -left-[22px] top-1 h-3 w-3 rounded-full ring-4 ring-bg-surface\"\n style={{ backgroundColor: dotTone[it.tone ?? 'default'] }}\n aria-hidden\n />\n <div className=\"flex items-baseline justify-between gap-2\">\n <p className=\"text-sm font-medium text-text-primary\">{it.title}</p>\n {it.meta && <span className=\"text-sm tabular-nums text-text-primary\">{it.meta}</span>}\n </div>\n {it.sub && <p className=\"text-xs text-text-secondary\">{it.sub}</p>}\n </li>\n ))}\n </ol>\n);\n\n// ---------------------------------------------------------------------------\n// MiniProgress — inline utilization bar (e.g. seats used).\n// ---------------------------------------------------------------------------\nexport const MiniProgress: FC<{\n value: number;\n max?: number;\n tone?: 'accent' | 'positive' | 'warning' | 'negative';\n className?: string;\n}> = ({ value, max = 100, tone = 'accent', className }) => {\n const pct = Math.max(0, Math.min(1, max ? value / max : 0));\n const color =\n tone === 'positive'\n ? SUCCESS\n : tone === 'warning'\n ? WARN\n : tone === 'negative'\n ? NEGATIVE\n : 'var(--color-accent-indigo)';\n return (\n <div\n className={cn('h-2 w-full overflow-hidden rounded-full', className)}\n style={{ backgroundColor: GRID }}\n role=\"progressbar\"\n aria-valuenow={Math.round(pct * 100)}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className=\"h-full rounded-full transition-all\"\n style={{ width: `${pct * 100}%`, backgroundColor: color }}\n />\n </div>\n );\n};\n"],"mappings":";;;AAYA,IAAa,IAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,EAGK,IAAW,+BACX,IAAO,2BACP,IAAO,oCACP,IAAU,oCAQV,KAAW,GAAW,MAAsB,KAAY,EAAa,IAAI,EAAa,SAK/E,KAOP,EAAE,SAAM,UAAO,KAAK,eAAY,IAAI,gBAAa,cAAW,mBAAgB;CAChF,IAAM,IAAQ,EAAK,QAAQ,GAAG,MAAM,IAAI,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,EAC1D,KAAK,IAAO,KAAa,GACzB,IAAI,IAAI,KAAK,KAAK,GAClB,IAAK,IAAO,GACd,IAAS,GACP,IAAQ,EAAK,KAAK,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,QAAQ,CAAC,KAAK,KAAK;AAElE,QACE,kBAAC,OAAD;EAAK,WAAW,EAAG,oDAAoD,EAAU;YAAjF,CACE,kBAAC,OAAD;GACE,OAAO;GACP,QAAQ;GACR,SAAS,OAAO,EAAK,GAAG;GACxB,MAAK;GACL,cAAY,gBAAgB;GAC5B,WAAU;aANZ,CAQE,kBAAC,UAAD;IACM;IACJ,IAAI;IACD;IACH,MAAK;IACL,QAAQ;IACR,aAAa;IACb,SAAS;IACT,CAAA,EACD,IAAQ,KACP,EAAK,KAAK,GAAG,MAAM;IAEjB,IAAM,IADO,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,IACjB,GACb,IACJ,kBAAC,UAAD;KAEM;KACJ,IAAI;KACD;KACH,MAAK;KACL,QAAQ,EAAQ,GAAG,EAAE,MAAM;KAC3B,aAAa;KACb,iBAAiB,GAAG,EAAI,GAAG,IAAI;KAC/B,kBAAkB,CAAC;KACnB,eAAc;KACd,WAAW,cAAc,EAAG,GAAG,EAAG;KAClC,EAXK,EAWL;AAGJ,WADA,KAAU,GACH;KACP,CACA;OACJ,KAAe,MACf,kBAAC,OAAD;GAAK,WAAU;aAAf,CACG,KACC,kBAAC,QAAD;IAAM,WAAU;cACb;IACI,CAAA,EAER,KAAa,kBAAC,QAAD;IAAM,WAAU;cAAoC;IAAiB,CAAA,CAC/E;KAEJ;;GAOG,KAIP,EAAE,SAAM,gBAAa,mBACzB,kBAAC,MAAD;CAAI,WAAW,EAAG,aAAa,EAAU;WACtC,EAAK,KAAK,GAAG,MACZ,kBAAC,MAAD;EAAY,WAAU;YAAtB;GACE,kBAAC,QAAD;IACE,WAAU;IACV,OAAO,EAAE,iBAAiB,EAAQ,GAAG,EAAE,MAAM,EAAE;IAC/C,eAAA;IACA,CAAA;GACF,kBAAC,QAAD;IAAM,WAAU;cAAuC,EAAE;IAAa,CAAA;GACtE,kBAAC,QAAD;IAAM,WAAU;cACb,IAAc,EAAY,EAAE,MAAM,GAAG,EAAE;IACnC,CAAA;GACJ;IAVI,EAUJ,CACL;CACC,CAAA,EAMM,KAIP,EAAE,SAAM,gBAAa,mBAAgB;CACzC,IAAM,IAAM,KAAK,IAAI,GAAG,GAAG,EAAK,KAAK,MAAM,EAAE,MAAM,CAAC;AACpD,QACE,kBAAC,MAAD;EAAI,WAAW,EAAG,aAAa,EAAU;EAAE,MAAK;EAAM,cAAW;YAC9D,EAAK,KAAK,GAAG,MACZ,kBAAC,MAAD,EAAA,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cAAgC,EAAE;IAAa,CAAA,EAC/D,kBAAC,QAAD;IAAM,WAAU;cACb,IAAc,EAAY,EAAE,MAAM,GAAG,EAAE;IACnC,CAAA,CACH;MACN,kBAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAE,iBAAiB,GAAM;aAEhC,kBAAC,OAAD;IACE,WAAU;IACV,OAAO;KAAE,OAAO,GAAI,EAAE,QAAQ,IAAO,IAAI;KAAI,iBAAiB,EAAQ,GAAG,EAAE,MAAM;KAAE;IACnF,CAAA;GACE,CAAA,CACH,EAAA,EAhBI,EAgBJ,CACL;EACC,CAAA;GAmDI,KAMP,EAAE,UAAO,SAAM,KAAK,UAAO,KAAK,UAAO,mBAAgB;CAC3D,IAAM,IAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAQ,EAAI,CAAC,EAC3C,IAAI,IAAO,IAAI,IACf,IAAK,IAAO,GACZ,IAAO,KAAK,KAAK,GACjB,IAAO,KAAO,MAAO,IAAU,KAAO,MAAO,IAAO;AAC1D,QACE,kBAAC,OAAD;EAAK,WAAW,EAAG,qCAAqC,EAAU;YAAlE,CACE,kBAAC,OAAD;GACE,OAAO;GACP,QAAQ,IAAO,IAAI;GACnB,SAAS,OAAO,EAAK,GAAG,IAAO,IAAI;GACnC,MAAK;GACL,cAAY,UAAU,KAAK,MAAM,IAAM,IAAI,CAAC;GAC5C,WAAU;aANZ,CAQE,kBAAC,QAAD;IACE,GAAG,OAAO,EAAG,KAAK,EAAE,GAAG,EAAE,SAAS,IAAO,GAAG,GAAG;IAC/C,MAAK;IACL,QAAQ;IACR,aAAa;IACb,eAAc;IACd,CAAA,EACF,kBAAC,QAAD;IACE,GAAG,OAAO,EAAG,KAAK,EAAE,GAAG,EAAE,SAAS,IAAO,GAAG,GAAG;IAC/C,MAAK;IACL,QAAQ;IACR,aAAa;IACb,eAAc;IACd,iBAAiB,GAAG,IAAM,EAAK,GAAG;IAClC,CAAA,CACE;MACN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cACb,KAAK,MAAM,EAAM;IACb,CAAA,EACN,KAAS,kBAAC,KAAD;IAAG,WAAU;cAA+B;IAAU,CAAA,CAC5D;KACF;;GAaJ,IAA6D;CACjE,SAAS;CACT,UAAU;CACV,SAAS;CACT,OAAO;CACR,EACY,KAA+D,EAC1E,UACA,mBAEA,kBAAC,MAAD;CAAI,WAAW,EAAG,2BAA2B,EAAU;WAAvD,CACE,kBAAC,QAAD;EAAM,WAAU;EAA2D,eAAA;EAAc,CAAA,EACxF,EAAM,KAAK,GAAI,MACd,kBAAC,MAAD;EAAY,WAAU;YAAtB;GACE,kBAAC,QAAD;IACE,WAAU;IACV,OAAO,EAAE,iBAAiB,EAAQ,EAAG,QAAQ,YAAY;IACzD,eAAA;IACA,CAAA;GACF,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,KAAD;KAAG,WAAU;eAAyC,EAAG;KAAU,CAAA,EAClE,EAAG,QAAQ,kBAAC,QAAD;KAAM,WAAU;eAA0C,EAAG;KAAY,CAAA,CACjF;;GACL,EAAG,OAAO,kBAAC,KAAD;IAAG,WAAU;cAA+B,EAAG;IAAQ,CAAA;GAC/D;IAXI,EAWJ,CACL,CACC;IAMM,KAKP,EAAE,UAAO,SAAM,KAAK,UAAO,UAAU,mBAAgB;CACzD,IAAM,IAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAM,IAAQ,IAAM,EAAE,CAAC,EACrD,IACJ,MAAS,aACL,IACA,MAAS,YACP,IACA,MAAS,aACP,IACA;AACV,QACE,kBAAC,OAAD;EACE,WAAW,EAAG,2CAA2C,EAAU;EACnE,OAAO,EAAE,iBAAiB,GAAM;EAChC,MAAK;EACL,iBAAe,KAAK,MAAM,IAAM,IAAI;EACpC,iBAAe;EACf,iBAAe;YAEf,kBAAC,OAAD;GACE,WAAU;GACV,OAAO;IAAE,OAAO,GAAG,IAAM,IAAI;IAAI,iBAAiB;IAAO;GACzD,CAAA;EACE,CAAA"}
@@ -0,0 +1,13 @@
1
+ export declare const ASSISTANT_USECASE_CONFIG: readonly [{
2
+ readonly id: "assistant";
3
+ readonly label: "Assistant";
4
+ readonly description: "Ask questions and run operations on the current Subscriber Bot screen — answers from the docs and makes API calls for you";
5
+ readonly suggestions: readonly ["What can I do on this screen?", "Create a new subscription relationship", "List my recent invoices", "How do providers work?"];
6
+ }, {
7
+ readonly id: "api-calls";
8
+ readonly label: "API Calls";
9
+ readonly description: "Make workspace API calls in context with your credentials";
10
+ readonly suggestions: readonly ["Show me all subscription relationships", "How do I create a provider via the API?", "List invoices using the GraphQL API", "What headers are needed for authentication?"];
11
+ }];
12
+ export type AssistantUsecaseId = (typeof ASSISTANT_USECASE_CONFIG)[number]['id'];
13
+ //# sourceMappingURL=assistantUsecases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistantUsecases.d.ts","sourceRoot":"","sources":["../../../src/subscriberbot/config/assistantUsecases.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB;;;;;;;;;;EAwB3B,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ import { SubscriberBotRootProps } from '../types';
3
+
4
+ interface SubscriberBotContextValue extends Omit<SubscriberBotRootProps, 'registerNavItems' | 'registerFooterItems' | 'navigate'> {
5
+ isStandalone: boolean;
6
+ /** Shell's navigate function (only available in integrated mode) */
7
+ navigate?: (path: string) => void;
8
+ /** Navigate to a path relative to basePath */
9
+ navigateTo: (relativePath: string) => void;
10
+ /** Get the full path for a relative path */
11
+ getPath: (relativePath: string) => string;
12
+ }
13
+ export declare function useSubscriberBot(): SubscriberBotContextValue;
14
+ export declare const SubscriberBotProvider: FC<PropsWithChildren<SubscriberBotRootProps>>;
15
+ export {};
16
+ //# sourceMappingURL=SubscriberBotContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriberBotContext.d.ts","sourceRoot":"","sources":["../../../src/subscriberbot/context/SubscriberBotContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAOvD,UAAU,yBAA0B,SAAQ,IAAI,CAC9C,sBAAsB,EACtB,kBAAkB,GAAG,qBAAqB,GAAG,UAAU,CACxD;IACC,YAAY,EAAE,OAAO,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8CAA8C;IAC9C,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,4CAA4C;IAC5C,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAQD,wBAAgB,gBAAgB,IAAI,yBAAyB,CAM5D;AA6HD,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAuB/E,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Context Index
3
+ * @module subscriberbot/context
4
+ */
5
+ export { SubscriberBotProvider, useSubscriberBot } from './SubscriberBotContext';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/subscriberbot/context/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * SubscriberBot hooks barrel
3
+ * @module subscriberbot/hooks
4
+ */
5
+ export { useRelationships, useRelationship, useCreateRelationship, useUpdateRelationship, useTransitionRelationship, useCancelRelationship, useRenewalEvents, useEntitlements, useCreateEntitlement, useAssets, useCreateAsset, useUploadFile, useFileDownloadUrl, useProviders, useProvider, useCreateProvider, useUpdateProvider, useArchiveProvider, usePlans, useCreatePlan, useInboxMessages, useMarkMessageRead, useIngestMessage, useInvoices, useMarkInvoicePaid, useCreateInvoice, usePaymentInstruments, useCreatePaymentInstrument, useRemovePaymentInstrument, useChannels, useCreateChannel, useVerifyChannel, useAgents, useAgent, useCreateAgent, useSetAgentStatus, useCreatePolicy, useWorkflows, useCreateWorkflow, useActivateWorkflow, } from './useSubscriberBotApi';
6
+ export type { RelationshipListFilters, ProviderListFilters, InboxListFilters, InvoiceListFilters, AgentListFilters, } from './useSubscriberBotApi';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/subscriberbot/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,cAAc,EACd,aAAa,EACb,kBAAkB,EAElB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,aAAa,EAEb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAEhB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAEhB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAEhB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { PaginationInput, SubAgentKind, SubAgentStatus, SubAiAgent, SubAsset, SubCommunicationChannel, SubConnection, SubCreateAgentInput, SubCreateAssetInput, SubCreateChannelInput, SubCreateEntitlementInput, SubCreateInvoiceInput, SubCreatePaymentInstrumentInput, SubCreatePlanInput, SubCreatePolicyInput, SubCreateProviderInput, SubCreateRelationshipInput, SubCreateWorkflowInput, SubEntitlement, SubInboxMessage, SubIngestMessageInput, SubInvoice, SubInvoiceStatus, SubMessageCategory, SubPaymentInstrument, SubPlan, SubPolicy, SubProvider, SubProviderCategory, SubProviderStatus, SubRelationship, SubRelationshipKind, SubRelationshipStatus, SubRenewalEvent, SubUpdateProviderInput, SubUpdateRelationshipInput, SubWorkflow, SubWorkflowStatus } from '../types';
2
+
3
+ export interface RelationshipListFilters {
4
+ kind?: SubRelationshipKind;
5
+ status?: SubRelationshipStatus;
6
+ providerId?: string;
7
+ ownerId?: string;
8
+ /** Case-insensitive substring match on the relationship label (server-side). */
9
+ search?: string;
10
+ pagination?: PaginationInput;
11
+ }
12
+ export declare const useRelationships: (filters?: RelationshipListFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubConnection<SubRelationship>>, Error>;
13
+ export declare const useRelationship: (id: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubRelationship | null>, Error>;
14
+ export declare const useCreateRelationship: () => import('@tanstack/react-query').UseMutationResult<SubRelationship, Error, SubCreateRelationshipInput, unknown>;
15
+ export declare const useTransitionRelationship: () => import('@tanstack/react-query').UseMutationResult<SubRelationship, Error, {
16
+ id: string;
17
+ status: SubRelationshipStatus;
18
+ }, unknown>;
19
+ export declare const useCancelRelationship: () => import('@tanstack/react-query').UseMutationResult<SubRelationship, Error, string, unknown>;
20
+ export declare const useUpdateRelationship: () => import('@tanstack/react-query').UseMutationResult<SubRelationship, Error, {
21
+ id: string;
22
+ input: SubUpdateRelationshipInput;
23
+ }, unknown>;
24
+ export declare const useRenewalEvents: (args?: {
25
+ relationshipId?: string;
26
+ upcomingOnly?: boolean;
27
+ }) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubRenewalEvent[]>, Error>;
28
+ export declare const useEntitlements: (relationshipId: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubEntitlement[]>, Error>;
29
+ export declare const useCreateEntitlement: () => import('@tanstack/react-query').UseMutationResult<SubEntitlement, Error, SubCreateEntitlementInput, unknown>;
30
+ export declare const useAssets: (relationshipId: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubAsset[]>, Error>;
31
+ /** Every asset in the workspace (Digital Asset Vault) — omits relationshipId. */
32
+ export declare const useAllAssets: () => import('@tanstack/react-query').UseQueryResult<NoInfer<SubAsset[]>, Error>;
33
+ export declare const useCreateAsset: () => import('@tanstack/react-query').UseMutationResult<SubAsset, Error, SubCreateAssetInput, unknown>;
34
+ export declare const useUploadFile: () => {
35
+ uploadFile: (file: File) => Promise<{
36
+ fileId: string;
37
+ fileName: string;
38
+ }>;
39
+ progress: number;
40
+ isUploading: boolean;
41
+ };
42
+ /**
43
+ * Resolve a short-lived presigned download URL for a `wspace-files-svc` File id.
44
+ * Never select the federated arg-less `File.downloadUrl` (it mints a URL beyond
45
+ * S3's 7-day cap and 500s the response) — use the root `getFileDownloadUrl`
46
+ * query with a TTL under 604800s instead.
47
+ */
48
+ export declare const useFileDownloadUrl: () => (fileId: string) => Promise<string>;
49
+ export interface ProviderListFilters {
50
+ category?: SubProviderCategory;
51
+ status?: SubProviderStatus;
52
+ search?: string;
53
+ pagination?: PaginationInput;
54
+ }
55
+ export declare const useProviders: (filters?: ProviderListFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubConnection<SubProvider>>, Error>;
56
+ export declare const useProvider: (id: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubProvider | null>, Error>;
57
+ export declare const useCreateProvider: () => import('@tanstack/react-query').UseMutationResult<SubProvider, Error, SubCreateProviderInput, unknown>;
58
+ export declare const useUpdateProvider: () => import('@tanstack/react-query').UseMutationResult<SubProvider, Error, {
59
+ id: string;
60
+ input: SubUpdateProviderInput;
61
+ }, unknown>;
62
+ export declare const useArchiveProvider: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, string, unknown>;
63
+ export declare const usePlans: (providerId: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubPlan[]>, Error>;
64
+ export declare const useCreatePlan: () => import('@tanstack/react-query').UseMutationResult<SubPlan, Error, SubCreatePlanInput, unknown>;
65
+ export interface InboxListFilters {
66
+ category?: SubMessageCategory;
67
+ channelId?: string;
68
+ relationshipId?: string;
69
+ unreadOnly?: boolean;
70
+ pagination?: PaginationInput;
71
+ }
72
+ export declare const useInboxMessages: (filters?: InboxListFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubConnection<SubInboxMessage>>, Error>;
73
+ export declare const useMarkMessageRead: () => import('@tanstack/react-query').UseMutationResult<SubInboxMessage, Error, string, unknown>;
74
+ export declare const useIngestMessage: () => import('@tanstack/react-query').UseMutationResult<SubInboxMessage, Error, SubIngestMessageInput, unknown>;
75
+ export interface InvoiceListFilters {
76
+ status?: SubInvoiceStatus;
77
+ relationshipId?: string;
78
+ pagination?: PaginationInput;
79
+ }
80
+ export declare const useInvoices: (filters?: InvoiceListFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubConnection<SubInvoice>>, Error>;
81
+ export declare const useMarkInvoicePaid: () => import('@tanstack/react-query').UseMutationResult<SubInvoice, Error, string, unknown>;
82
+ export declare const useCreateInvoice: () => import('@tanstack/react-query').UseMutationResult<SubInvoice, Error, SubCreateInvoiceInput, unknown>;
83
+ export declare const usePaymentInstruments: (ownerId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubPaymentInstrument[]>, Error>;
84
+ export declare const useCreatePaymentInstrument: () => import('@tanstack/react-query').UseMutationResult<SubPaymentInstrument, Error, SubCreatePaymentInstrumentInput, unknown>;
85
+ export declare const useRemovePaymentInstrument: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, string, unknown>;
86
+ export declare const useChannels: (ownerId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubCommunicationChannel[]>, Error>;
87
+ export declare const useCreateChannel: () => import('@tanstack/react-query').UseMutationResult<SubCommunicationChannel, Error, SubCreateChannelInput, unknown>;
88
+ export declare const useVerifyChannel: () => import('@tanstack/react-query').UseMutationResult<SubCommunicationChannel, Error, string, unknown>;
89
+ export interface AgentListFilters {
90
+ kind?: SubAgentKind;
91
+ status?: SubAgentStatus;
92
+ ownerId?: string;
93
+ }
94
+ export declare const useAgents: (filters?: AgentListFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubAiAgent[]>, Error>;
95
+ export declare const useAgent: (id: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubAiAgent | null>, Error>;
96
+ export declare const useCreateAgent: () => import('@tanstack/react-query').UseMutationResult<SubAiAgent, Error, SubCreateAgentInput, unknown>;
97
+ export declare const useSetAgentStatus: () => import('@tanstack/react-query').UseMutationResult<SubAiAgent, Error, {
98
+ id: string;
99
+ status: SubAgentStatus;
100
+ }, unknown>;
101
+ export declare const useCreatePolicy: () => import('@tanstack/react-query').UseMutationResult<SubPolicy, Error, SubCreatePolicyInput, unknown>;
102
+ export declare const useWorkflows: (status?: SubWorkflowStatus) => import('@tanstack/react-query').UseQueryResult<NoInfer<SubWorkflow[]>, Error>;
103
+ export declare const useCreateWorkflow: () => import('@tanstack/react-query').UseMutationResult<SubWorkflow, Error, SubCreateWorkflowInput, unknown>;
104
+ export declare const useActivateWorkflow: () => import('@tanstack/react-query').UseMutationResult<SubWorkflow, Error, string, unknown>;
105
+ //# sourceMappingURL=useSubscriberBotApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSubscriberBotApi.d.ts","sourceRoot":"","sources":["../../../src/subscriberbot/hooks/useSubscriberBotApi.ts"],"names":[],"mappings":"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"}