@datatechsolutions/ui 2.11.80 → 2.11.82

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 (57) hide show
  1. package/dist/astrlabe/contracts.d.mts +24 -1
  2. package/dist/astrlabe/contracts.d.ts +24 -1
  3. package/dist/astrlabe/index.d.mts +25 -84
  4. package/dist/astrlabe/index.d.ts +25 -84
  5. package/dist/astrlabe/index.js +175 -4570
  6. package/dist/astrlabe/index.js.map +1 -1
  7. package/dist/astrlabe/index.mjs +3 -4535
  8. package/dist/astrlabe/index.mjs.map +1 -1
  9. package/dist/astrlabe/workflow-canvas.d.mts +69 -5
  10. package/dist/astrlabe/workflow-canvas.d.ts +69 -5
  11. package/dist/chunk-6PBTB5ZX.js +165 -0
  12. package/dist/chunk-6PBTB5ZX.js.map +1 -0
  13. package/dist/chunk-HAZP5J67.mjs +4781 -0
  14. package/dist/chunk-HAZP5J67.mjs.map +1 -0
  15. package/dist/chunk-HZ4LOVHM.js +46 -0
  16. package/dist/chunk-HZ4LOVHM.js.map +1 -0
  17. package/dist/chunk-K4QJV3GC.js +4825 -0
  18. package/dist/chunk-K4QJV3GC.js.map +1 -0
  19. package/dist/chunk-UHHPBREK.mjs +135 -0
  20. package/dist/chunk-UHHPBREK.mjs.map +1 -0
  21. package/dist/chunk-ZJPNP2YW.mjs +44 -0
  22. package/dist/chunk-ZJPNP2YW.mjs.map +1 -0
  23. package/dist/{workflow-canvas-NSxfr5dy.d.ts → index-AioB90qq.d.mts} +2 -67
  24. package/dist/{workflow-canvas-D4928AfA.d.mts → index-D5ai0cGZ.d.ts} +2 -67
  25. package/dist/platform/index.d.mts +41 -0
  26. package/dist/platform/index.d.ts +41 -0
  27. package/dist/platform/index.js +237 -0
  28. package/dist/platform/index.js.map +1 -0
  29. package/dist/platform/index.mjs +109 -0
  30. package/dist/platform/index.mjs.map +1 -0
  31. package/dist/platform/pages/index.d.mts +272 -0
  32. package/dist/platform/pages/index.d.ts +272 -0
  33. package/dist/platform/pages/index.js +1793 -0
  34. package/dist/platform/pages/index.js.map +1 -0
  35. package/dist/platform/pages/index.mjs +1777 -0
  36. package/dist/platform/pages/index.mjs.map +1 -0
  37. package/dist/platform/rbac.d.mts +41 -0
  38. package/dist/platform/rbac.d.ts +41 -0
  39. package/dist/platform/rbac.js +13 -0
  40. package/dist/platform/rbac.js.map +1 -0
  41. package/dist/platform/rbac.mjs +4 -0
  42. package/dist/platform/rbac.mjs.map +1 -0
  43. package/dist/platform/utils/index.d.mts +32 -0
  44. package/dist/platform/utils/index.d.ts +32 -0
  45. package/dist/platform/utils/index.js +131 -0
  46. package/dist/platform/utils/index.js.map +1 -0
  47. package/dist/platform/utils/index.mjs +119 -0
  48. package/dist/platform/utils/index.mjs.map +1 -0
  49. package/dist/platform/windsock-admin-client.d.mts +57 -0
  50. package/dist/platform/windsock-admin-client.d.ts +57 -0
  51. package/dist/platform/windsock-admin-client.js +125 -0
  52. package/dist/platform/windsock-admin-client.js.map +1 -0
  53. package/dist/platform/windsock-admin-client.mjs +4 -0
  54. package/dist/platform/windsock-admin-client.mjs.map +1 -0
  55. package/dist/rule-form-F5jBOeqk.d.mts +79 -0
  56. package/dist/rule-form-F5jBOeqk.d.ts +79 -0
  57. package/package.json +28 -1
@@ -0,0 +1,237 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkHZ4LOVHM_js = require('../chunk-HZ4LOVHM.js');
5
+ var chunk6PBTB5ZX_js = require('../chunk-6PBTB5ZX.js');
6
+ var chunkTUEYBNWL_js = require('../chunk-TUEYBNWL.js');
7
+ var chunkYXN2K77G_js = require('../chunk-YXN2K77G.js');
8
+ require('../chunk-S7KHTUHA.js');
9
+ require('../chunk-UZ3CMNUJ.js');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+ var react = require('react');
12
+ var client = require('@datatechsolutions/windsock/client');
13
+
14
+ function SessionSwitcher({
15
+ organizations,
16
+ users,
17
+ organizationId,
18
+ userEmail,
19
+ onOrganizationChange,
20
+ onUserChange
21
+ }) {
22
+ const tSession = chunkYXN2K77G_js.useTranslations("platform.session");
23
+ const tCommon = chunkYXN2K77G_js.useTranslations("common");
24
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "session-switcher", children: [
25
+ /* @__PURE__ */ jsxRuntime.jsx(
26
+ chunkTUEYBNWL_js.Select,
27
+ {
28
+ value: organizationId,
29
+ "aria-label": tSession("organization"),
30
+ onChange: (event) => {
31
+ onOrganizationChange(event.target.value);
32
+ },
33
+ options: organizations,
34
+ placeholder: tSession("organization")
35
+ }
36
+ ),
37
+ /* @__PURE__ */ jsxRuntime.jsx(
38
+ chunkTUEYBNWL_js.Select,
39
+ {
40
+ value: userEmail,
41
+ "aria-label": tSession("user"),
42
+ onChange: (event) => {
43
+ onUserChange(event.target.value);
44
+ },
45
+ options: users,
46
+ placeholder: tSession("user")
47
+ }
48
+ ),
49
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTUEYBNWL_js.Button, { outline: true, onClick: () => globalThis.location.reload(), children: tCommon("refresh") })
50
+ ] });
51
+ }
52
+ var PlatformStateContext = react.createContext(null);
53
+ function PlatformStateProvider({ children, normalizeRole }) {
54
+ const { user } = client.useAuth();
55
+ const state = react.useMemo(() => {
56
+ const organizationId = user?.organizationId ?? "";
57
+ const actor = user ? {
58
+ ...user,
59
+ role: normalizeRole(user.role),
60
+ organizationId
61
+ } : null;
62
+ return {
63
+ currentOrganizationId: organizationId,
64
+ actor
65
+ };
66
+ }, [user, normalizeRole]);
67
+ return /* @__PURE__ */ jsxRuntime.jsx(PlatformStateContext.Provider, { value: state, children });
68
+ }
69
+ function usePlatformState() {
70
+ const context = react.useContext(PlatformStateContext);
71
+ if (!context) throw new Error("usePlatformState must be used inside PlatformStateProvider");
72
+ return context;
73
+ }
74
+
75
+ // src/platform/windsock-mappers.ts
76
+ function mapAuthOrg(raw) {
77
+ return {
78
+ id: raw.id,
79
+ name: raw.displayName ?? raw.name,
80
+ currency: "BRL",
81
+ country: "BR"
82
+ };
83
+ }
84
+ function mapAdminUser(row, normalizeRole) {
85
+ return {
86
+ id: row.id,
87
+ email: row.email,
88
+ name: row.name ?? row.email,
89
+ role: normalizeRole(row.role),
90
+ active: row.status === "active"
91
+ };
92
+ }
93
+ var ORG_ROLE_MAP = {
94
+ owner: "owner",
95
+ admin: "admin",
96
+ manager: "admin",
97
+ analyst: "member",
98
+ operator: "member",
99
+ viewer: "viewer",
100
+ finance: "member",
101
+ sales: "member",
102
+ support: "member",
103
+ member: "member"
104
+ };
105
+ function mapRoleToOrgRole(role) {
106
+ return ORG_ROLE_MAP[role] ?? "member";
107
+ }
108
+
109
+ Object.defineProperty(exports, "createPlatformRbac", {
110
+ enumerable: true,
111
+ get: function () { return chunkHZ4LOVHM_js.createPlatformRbac; }
112
+ });
113
+ Object.defineProperty(exports, "addOrganizationDomain", {
114
+ enumerable: true,
115
+ get: function () { return chunk6PBTB5ZX_js.addOrganizationDomain; }
116
+ });
117
+ Object.defineProperty(exports, "addOrganizationMember", {
118
+ enumerable: true,
119
+ get: function () { return chunk6PBTB5ZX_js.addOrganizationMember; }
120
+ });
121
+ Object.defineProperty(exports, "createOrganization", {
122
+ enumerable: true,
123
+ get: function () { return chunk6PBTB5ZX_js.createOrganization; }
124
+ });
125
+ Object.defineProperty(exports, "createOrganizationInvitation", {
126
+ enumerable: true,
127
+ get: function () { return chunk6PBTB5ZX_js.createOrganizationInvitation; }
128
+ });
129
+ Object.defineProperty(exports, "createPermission", {
130
+ enumerable: true,
131
+ get: function () { return chunk6PBTB5ZX_js.createPermission; }
132
+ });
133
+ Object.defineProperty(exports, "createSecret", {
134
+ enumerable: true,
135
+ get: function () { return chunk6PBTB5ZX_js.createSecret; }
136
+ });
137
+ Object.defineProperty(exports, "createUser", {
138
+ enumerable: true,
139
+ get: function () { return chunk6PBTB5ZX_js.createUser; }
140
+ });
141
+ Object.defineProperty(exports, "deleteOrganization", {
142
+ enumerable: true,
143
+ get: function () { return chunk6PBTB5ZX_js.deleteOrganization; }
144
+ });
145
+ Object.defineProperty(exports, "deletePermission", {
146
+ enumerable: true,
147
+ get: function () { return chunk6PBTB5ZX_js.deletePermission; }
148
+ });
149
+ Object.defineProperty(exports, "deleteUser", {
150
+ enumerable: true,
151
+ get: function () { return chunk6PBTB5ZX_js.deleteUser; }
152
+ });
153
+ Object.defineProperty(exports, "disableSecret", {
154
+ enumerable: true,
155
+ get: function () { return chunk6PBTB5ZX_js.disableSecret; }
156
+ });
157
+ Object.defineProperty(exports, "getSecret", {
158
+ enumerable: true,
159
+ get: function () { return chunk6PBTB5ZX_js.getSecret; }
160
+ });
161
+ Object.defineProperty(exports, "getUserPermissions", {
162
+ enumerable: true,
163
+ get: function () { return chunk6PBTB5ZX_js.getUserPermissions; }
164
+ });
165
+ Object.defineProperty(exports, "listOrganizationDomains", {
166
+ enumerable: true,
167
+ get: function () { return chunk6PBTB5ZX_js.listOrganizationDomains; }
168
+ });
169
+ Object.defineProperty(exports, "listOrganizationInvitations", {
170
+ enumerable: true,
171
+ get: function () { return chunk6PBTB5ZX_js.listOrganizationInvitations; }
172
+ });
173
+ Object.defineProperty(exports, "listOrganizationMembers", {
174
+ enumerable: true,
175
+ get: function () { return chunk6PBTB5ZX_js.listOrganizationMembers; }
176
+ });
177
+ Object.defineProperty(exports, "listOrganizations", {
178
+ enumerable: true,
179
+ get: function () { return chunk6PBTB5ZX_js.listOrganizations; }
180
+ });
181
+ Object.defineProperty(exports, "listPermissions", {
182
+ enumerable: true,
183
+ get: function () { return chunk6PBTB5ZX_js.listPermissions; }
184
+ });
185
+ Object.defineProperty(exports, "listSecrets", {
186
+ enumerable: true,
187
+ get: function () { return chunk6PBTB5ZX_js.listSecrets; }
188
+ });
189
+ Object.defineProperty(exports, "listUsers", {
190
+ enumerable: true,
191
+ get: function () { return chunk6PBTB5ZX_js.listUsers; }
192
+ });
193
+ Object.defineProperty(exports, "removeOrganizationMember", {
194
+ enumerable: true,
195
+ get: function () { return chunk6PBTB5ZX_js.removeOrganizationMember; }
196
+ });
197
+ Object.defineProperty(exports, "resetUserPassword", {
198
+ enumerable: true,
199
+ get: function () { return chunk6PBTB5ZX_js.resetUserPassword; }
200
+ });
201
+ Object.defineProperty(exports, "rotateSecret", {
202
+ enumerable: true,
203
+ get: function () { return chunk6PBTB5ZX_js.rotateSecret; }
204
+ });
205
+ Object.defineProperty(exports, "setUserPermissions", {
206
+ enumerable: true,
207
+ get: function () { return chunk6PBTB5ZX_js.setUserPermissions; }
208
+ });
209
+ Object.defineProperty(exports, "setWindsockAdminClient", {
210
+ enumerable: true,
211
+ get: function () { return chunk6PBTB5ZX_js.setWindsockAdminClient; }
212
+ });
213
+ Object.defineProperty(exports, "updateOrganization", {
214
+ enumerable: true,
215
+ get: function () { return chunk6PBTB5ZX_js.updateOrganization; }
216
+ });
217
+ Object.defineProperty(exports, "updatePermission", {
218
+ enumerable: true,
219
+ get: function () { return chunk6PBTB5ZX_js.updatePermission; }
220
+ });
221
+ Object.defineProperty(exports, "updateUser", {
222
+ enumerable: true,
223
+ get: function () { return chunk6PBTB5ZX_js.updateUser; }
224
+ });
225
+ Object.defineProperty(exports, "verifyOrganizationDomain", {
226
+ enumerable: true,
227
+ get: function () { return chunk6PBTB5ZX_js.verifyOrganizationDomain; }
228
+ });
229
+ exports.ORG_ROLE_MAP = ORG_ROLE_MAP;
230
+ exports.PlatformStateProvider = PlatformStateProvider;
231
+ exports.SessionSwitcher = SessionSwitcher;
232
+ exports.mapAdminUser = mapAdminUser;
233
+ exports.mapAuthOrg = mapAuthOrg;
234
+ exports.mapRoleToOrgRole = mapRoleToOrgRole;
235
+ exports.usePlatformState = usePlatformState;
236
+ //# sourceMappingURL=index.js.map
237
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/platform/session-switcher.tsx","../../src/platform/platform-state-provider.tsx","../../src/platform/windsock-mappers.ts"],"names":["useTranslations","jsxs","jsx","Select","Button","createContext","useAuth","useMemo","useContext"],"mappings":"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","file":"index.js","sourcesContent":["import { Select, Button } from '@ui/index'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport type { SessionSwitcherProps } from '@datatechsolutions/shared-domain/common'\n\nexport function SessionSwitcher({\n organizations,\n users,\n organizationId,\n userEmail,\n onOrganizationChange,\n onUserChange,\n}: SessionSwitcherProps) {\n const tSession = useTranslations('platform.session')\n const tCommon = useTranslations('common')\n\n return (\n <div className=\"session-switcher\">\n <Select\n value={organizationId}\n aria-label={tSession('organization')}\n onChange={(event) => {\n onOrganizationChange(event.target.value)\n }}\n options={organizations}\n placeholder={tSession('organization')}\n />\n <Select\n value={userEmail}\n aria-label={tSession('user')}\n onChange={(event) => {\n onUserChange(event.target.value)\n }}\n options={users}\n placeholder={tSession('user')}\n />\n <Button outline onClick={() => globalThis.location.reload()}>\n {tCommon('refresh')}\n </Button>\n </div>\n )\n}\n","import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { useAuth, type AuthUser } from '@datatechsolutions/windsock/client'\n\ntype PlatformState = {\n currentOrganizationId: string\n actor: AuthUser | null\n}\n\nconst PlatformStateContext = createContext<PlatformState | null>(null)\n\nexport type PlatformStateProviderProps = {\n children: ReactNode\n /**\n * Function that converts a JWT role claim to the app's canonical role\n * union (the same `normalizePlatformRole` produced by\n * `createPlatformRbac()` in this app). Lifted out as a prop because\n * each consuming app uses its own role enum.\n */\n normalizeRole: (input: unknown) => string\n}\n\nexport function PlatformStateProvider({ children, normalizeRole }: PlatformStateProviderProps) {\n const { user } = useAuth()\n\n const state = useMemo<PlatformState>(() => {\n const organizationId = user?.organizationId ?? ''\n\n const actor: AuthUser | null = user\n ? {\n ...user,\n role: normalizeRole(user.role),\n organizationId,\n }\n : null\n\n return {\n currentOrganizationId: organizationId,\n actor,\n }\n }, [user, normalizeRole])\n\n return (\n <PlatformStateContext.Provider value={state}>\n {children}\n </PlatformStateContext.Provider>\n )\n}\n\nexport function usePlatformState() {\n const context = useContext(PlatformStateContext)\n if (!context) throw new Error('usePlatformState must be used inside PlatformStateProvider')\n return context\n}\n","import type {\n AdminUserSummary,\n AuthOrganization,\n} from '@datatechsolutions/shared-domain'\nimport type { ManagedUser, Organization, UserRole } from '@datatechsolutions/shared-domain/common'\n\n/** Maps a windsock AuthOrganization to the app-level Organization shape used by UI pages. */\nexport function mapAuthOrg(raw: AuthOrganization): Organization {\n return {\n id: raw.id,\n name: raw.displayName ?? raw.name,\n currency: 'BRL',\n country: 'BR',\n } as Organization\n}\n\n/**\n * Maps a windsock AdminUserSummary to the app-level ManagedUser shape.\n * Takes `normalizeRole` as a parameter so each consuming app can plug in\n * the role normalizer produced by its own `createPlatformRbac()` call —\n * we deliberately don't hardcode an app-specific role enum here.\n */\nexport function mapAdminUser(\n row: AdminUserSummary,\n normalizeRole: (input: unknown) => string,\n): ManagedUser {\n return {\n id: row.id,\n email: row.email,\n name: row.name ?? row.email,\n role: normalizeRole(row.role) as UserRole,\n active: row.status === 'active',\n }\n}\n\n/** Maps an app-level UserRole to a windsock AuthOrganizationRole. */\nexport const ORG_ROLE_MAP: Record<string, 'owner' | 'admin' | 'member' | 'viewer'> = {\n owner: 'owner',\n admin: 'admin',\n manager: 'admin',\n analyst: 'member',\n operator: 'member',\n viewer: 'viewer',\n finance: 'member',\n sales: 'member',\n support: 'member',\n member: 'member',\n}\n\nexport function mapRoleToOrgRole(role: string): 'owner' | 'admin' | 'member' | 'viewer' {\n return ORG_ROLE_MAP[role] ?? 'member'\n}\n"]}
@@ -0,0 +1,109 @@
1
+ "use client";
2
+ export { createPlatformRbac } from '../chunk-ZJPNP2YW.mjs';
3
+ export { addOrganizationDomain, addOrganizationMember, createOrganization, createOrganizationInvitation, createPermission, createSecret, createUser, deleteOrganization, deletePermission, deleteUser, disableSecret, getSecret, getUserPermissions, listOrganizationDomains, listOrganizationInvitations, listOrganizationMembers, listOrganizations, listPermissions, listSecrets, listUsers, removeOrganizationMember, resetUserPassword, rotateSecret, setUserPermissions, setWindsockAdminClient, updateOrganization, updatePermission, updateUser, verifyOrganizationDomain } from '../chunk-UHHPBREK.mjs';
4
+ import { Select, Button } from '../chunk-LLFU42KC.mjs';
5
+ import { useTranslations } from '../chunk-7VJ7CMMT.mjs';
6
+ import '../chunk-QWG2FMUN.mjs';
7
+ import '../chunk-D2JF6C3E.mjs';
8
+ import { jsxs, jsx } from 'react/jsx-runtime';
9
+ import { createContext, useMemo, useContext } from 'react';
10
+ import { useAuth } from '@datatechsolutions/windsock/client';
11
+
12
+ function SessionSwitcher({
13
+ organizations,
14
+ users,
15
+ organizationId,
16
+ userEmail,
17
+ onOrganizationChange,
18
+ onUserChange
19
+ }) {
20
+ const tSession = useTranslations("platform.session");
21
+ const tCommon = useTranslations("common");
22
+ return /* @__PURE__ */ jsxs("div", { className: "session-switcher", children: [
23
+ /* @__PURE__ */ jsx(
24
+ Select,
25
+ {
26
+ value: organizationId,
27
+ "aria-label": tSession("organization"),
28
+ onChange: (event) => {
29
+ onOrganizationChange(event.target.value);
30
+ },
31
+ options: organizations,
32
+ placeholder: tSession("organization")
33
+ }
34
+ ),
35
+ /* @__PURE__ */ jsx(
36
+ Select,
37
+ {
38
+ value: userEmail,
39
+ "aria-label": tSession("user"),
40
+ onChange: (event) => {
41
+ onUserChange(event.target.value);
42
+ },
43
+ options: users,
44
+ placeholder: tSession("user")
45
+ }
46
+ ),
47
+ /* @__PURE__ */ jsx(Button, { outline: true, onClick: () => globalThis.location.reload(), children: tCommon("refresh") })
48
+ ] });
49
+ }
50
+ var PlatformStateContext = createContext(null);
51
+ function PlatformStateProvider({ children, normalizeRole }) {
52
+ const { user } = useAuth();
53
+ const state = useMemo(() => {
54
+ const organizationId = user?.organizationId ?? "";
55
+ const actor = user ? {
56
+ ...user,
57
+ role: normalizeRole(user.role),
58
+ organizationId
59
+ } : null;
60
+ return {
61
+ currentOrganizationId: organizationId,
62
+ actor
63
+ };
64
+ }, [user, normalizeRole]);
65
+ return /* @__PURE__ */ jsx(PlatformStateContext.Provider, { value: state, children });
66
+ }
67
+ function usePlatformState() {
68
+ const context = useContext(PlatformStateContext);
69
+ if (!context) throw new Error("usePlatformState must be used inside PlatformStateProvider");
70
+ return context;
71
+ }
72
+
73
+ // src/platform/windsock-mappers.ts
74
+ function mapAuthOrg(raw) {
75
+ return {
76
+ id: raw.id,
77
+ name: raw.displayName ?? raw.name,
78
+ currency: "BRL",
79
+ country: "BR"
80
+ };
81
+ }
82
+ function mapAdminUser(row, normalizeRole) {
83
+ return {
84
+ id: row.id,
85
+ email: row.email,
86
+ name: row.name ?? row.email,
87
+ role: normalizeRole(row.role),
88
+ active: row.status === "active"
89
+ };
90
+ }
91
+ var ORG_ROLE_MAP = {
92
+ owner: "owner",
93
+ admin: "admin",
94
+ manager: "admin",
95
+ analyst: "member",
96
+ operator: "member",
97
+ viewer: "viewer",
98
+ finance: "member",
99
+ sales: "member",
100
+ support: "member",
101
+ member: "member"
102
+ };
103
+ function mapRoleToOrgRole(role) {
104
+ return ORG_ROLE_MAP[role] ?? "member";
105
+ }
106
+
107
+ export { ORG_ROLE_MAP, PlatformStateProvider, SessionSwitcher, mapAdminUser, mapAuthOrg, mapRoleToOrgRole, usePlatformState };
108
+ //# sourceMappingURL=index.mjs.map
109
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/platform/session-switcher.tsx","../../src/platform/platform-state-provider.tsx","../../src/platform/windsock-mappers.ts"],"names":["jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Select, Button } from '@ui/index'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport type { SessionSwitcherProps } from '@datatechsolutions/shared-domain/common'\n\nexport function SessionSwitcher({\n organizations,\n users,\n organizationId,\n userEmail,\n onOrganizationChange,\n onUserChange,\n}: SessionSwitcherProps) {\n const tSession = useTranslations('platform.session')\n const tCommon = useTranslations('common')\n\n return (\n <div className=\"session-switcher\">\n <Select\n value={organizationId}\n aria-label={tSession('organization')}\n onChange={(event) => {\n onOrganizationChange(event.target.value)\n }}\n options={organizations}\n placeholder={tSession('organization')}\n />\n <Select\n value={userEmail}\n aria-label={tSession('user')}\n onChange={(event) => {\n onUserChange(event.target.value)\n }}\n options={users}\n placeholder={tSession('user')}\n />\n <Button outline onClick={() => globalThis.location.reload()}>\n {tCommon('refresh')}\n </Button>\n </div>\n )\n}\n","import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { useAuth, type AuthUser } from '@datatechsolutions/windsock/client'\n\ntype PlatformState = {\n currentOrganizationId: string\n actor: AuthUser | null\n}\n\nconst PlatformStateContext = createContext<PlatformState | null>(null)\n\nexport type PlatformStateProviderProps = {\n children: ReactNode\n /**\n * Function that converts a JWT role claim to the app's canonical role\n * union (the same `normalizePlatformRole` produced by\n * `createPlatformRbac()` in this app). Lifted out as a prop because\n * each consuming app uses its own role enum.\n */\n normalizeRole: (input: unknown) => string\n}\n\nexport function PlatformStateProvider({ children, normalizeRole }: PlatformStateProviderProps) {\n const { user } = useAuth()\n\n const state = useMemo<PlatformState>(() => {\n const organizationId = user?.organizationId ?? ''\n\n const actor: AuthUser | null = user\n ? {\n ...user,\n role: normalizeRole(user.role),\n organizationId,\n }\n : null\n\n return {\n currentOrganizationId: organizationId,\n actor,\n }\n }, [user, normalizeRole])\n\n return (\n <PlatformStateContext.Provider value={state}>\n {children}\n </PlatformStateContext.Provider>\n )\n}\n\nexport function usePlatformState() {\n const context = useContext(PlatformStateContext)\n if (!context) throw new Error('usePlatformState must be used inside PlatformStateProvider')\n return context\n}\n","import type {\n AdminUserSummary,\n AuthOrganization,\n} from '@datatechsolutions/shared-domain'\nimport type { ManagedUser, Organization, UserRole } from '@datatechsolutions/shared-domain/common'\n\n/** Maps a windsock AuthOrganization to the app-level Organization shape used by UI pages. */\nexport function mapAuthOrg(raw: AuthOrganization): Organization {\n return {\n id: raw.id,\n name: raw.displayName ?? raw.name,\n currency: 'BRL',\n country: 'BR',\n } as Organization\n}\n\n/**\n * Maps a windsock AdminUserSummary to the app-level ManagedUser shape.\n * Takes `normalizeRole` as a parameter so each consuming app can plug in\n * the role normalizer produced by its own `createPlatformRbac()` call —\n * we deliberately don't hardcode an app-specific role enum here.\n */\nexport function mapAdminUser(\n row: AdminUserSummary,\n normalizeRole: (input: unknown) => string,\n): ManagedUser {\n return {\n id: row.id,\n email: row.email,\n name: row.name ?? row.email,\n role: normalizeRole(row.role) as UserRole,\n active: row.status === 'active',\n }\n}\n\n/** Maps an app-level UserRole to a windsock AuthOrganizationRole. */\nexport const ORG_ROLE_MAP: Record<string, 'owner' | 'admin' | 'member' | 'viewer'> = {\n owner: 'owner',\n admin: 'admin',\n manager: 'admin',\n analyst: 'member',\n operator: 'member',\n viewer: 'viewer',\n finance: 'member',\n sales: 'member',\n support: 'member',\n member: 'member',\n}\n\nexport function mapRoleToOrgRole(role: string): 'owner' | 'admin' | 'member' | 'viewer' {\n return ORG_ROLE_MAP[role] ?? 'member'\n}\n"]}
@@ -0,0 +1,272 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { UsersPageViewProps, DataSource } from '@datatechsolutions/shared-domain/common';
3
+ import { AgentModel, AgentTool, AgentRule } from '../../astrlabe/contracts.mjs';
4
+ import { A as AgentWithPrompts } from '../../index-AioB90qq.mjs';
5
+ import { AgentPrompt } from '@datatechsolutions/shared-domain/ports/workflow';
6
+ import { R as RuleFormValue } from '../../rule-form-F5jBOeqk.mjs';
7
+
8
+ declare function UsersPageView({ labels, users, onCreateUser, onUpdateRole }: UsersPageViewProps): react_jsx_runtime.JSX.Element;
9
+
10
+ type AgentsModelsLabels = {
11
+ title: string;
12
+ subtitle: string;
13
+ provider: string;
14
+ enabled: string;
15
+ disabled: string;
16
+ empty: string;
17
+ };
18
+ type Props$4 = {
19
+ labels: AgentsModelsLabels;
20
+ models: AgentModel[];
21
+ loading: boolean;
22
+ };
23
+ declare function AgentsModelsPageView({ labels, models, loading }: Props$4): react_jsx_runtime.JSX.Element;
24
+
25
+ type AgentConfigFormInput = {
26
+ agentId?: string;
27
+ name: string;
28
+ modelId: string;
29
+ systemPrompt: string;
30
+ maxTokens: number;
31
+ temperature: number;
32
+ outputSchema?: string;
33
+ };
34
+ type AgentsConfigLabels = {
35
+ title: string;
36
+ subtitle: string;
37
+ addAgent: string;
38
+ createTitle: string;
39
+ editTitle: string;
40
+ name: string;
41
+ model: string;
42
+ systemPrompt: string;
43
+ maxTokens: number | string;
44
+ temperature: string;
45
+ outputSchema: string;
46
+ outputSchemaPlaceholder: string;
47
+ save: string;
48
+ delete: string;
49
+ edit: string;
50
+ deleteConfirm: string;
51
+ activeVersion: string;
52
+ empty: string;
53
+ };
54
+ type Props$3 = {
55
+ labels: AgentsConfigLabels;
56
+ agents: AgentWithPrompts[];
57
+ models: AgentModel[];
58
+ loading: boolean;
59
+ onCreate: (input: AgentConfigFormInput) => void;
60
+ onUpdate: (agentId: string, input: AgentConfigFormInput) => void;
61
+ onDelete: (agent: AgentWithPrompts) => void;
62
+ };
63
+ declare function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpdate, onDelete }: Props$3): react_jsx_runtime.JSX.Element;
64
+
65
+ type PromptFormInput = {
66
+ agentId: string;
67
+ locale: string;
68
+ prompt: string;
69
+ systemPrompt?: string;
70
+ userTemplate?: string;
71
+ isActive: boolean;
72
+ reason?: string;
73
+ };
74
+ type AgentsPromptsLabels = {
75
+ title: string;
76
+ subtitle: string;
77
+ addPrompt: string;
78
+ createTitle: string;
79
+ editTitle: string;
80
+ agent: string;
81
+ locale: string;
82
+ version: string;
83
+ isActive: string;
84
+ prompt: string;
85
+ systemPrompt: string;
86
+ userTemplate: string;
87
+ reason: string;
88
+ save: string;
89
+ delete: string;
90
+ activate: string;
91
+ deleteConfirm: string;
92
+ empty: string;
93
+ };
94
+ type Props$2 = {
95
+ labels: AgentsPromptsLabels;
96
+ agents: AgentWithPrompts[];
97
+ prompts: AgentPrompt[];
98
+ loading: boolean;
99
+ onCreate: (input: PromptFormInput) => void;
100
+ onActivate: (prompt: AgentPrompt) => void;
101
+ onDelete: (prompt: AgentPrompt) => void;
102
+ };
103
+ declare function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onActivate, onDelete }: Props$2): react_jsx_runtime.JSX.Element;
104
+
105
+ declare const TOOL_TYPES: readonly ["http", "function", "database_query", "code_execution", "api_call"];
106
+ type ToolType = (typeof TOOL_TYPES)[number];
107
+ type ToolParameter = {
108
+ name: string;
109
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object';
110
+ description: string;
111
+ required: boolean;
112
+ };
113
+ /**
114
+ * Canonical form payload the page emits. The page wrapper turns this
115
+ * into the backend POST/PATCH bodies — parameters go through
116
+ * `parametersToJsonSchema` to produce `inputSchema`, and `handlerConfig`
117
+ * stays as-is.
118
+ */
119
+ type ToolDefinitionFormInput = {
120
+ agentToolId?: string;
121
+ name: string;
122
+ description?: string;
123
+ toolType: ToolType;
124
+ parameters: ToolParameter[];
125
+ handlerConfig: Record<string, unknown>;
126
+ enabled: boolean;
127
+ icon?: string;
128
+ };
129
+ type AgentsToolDefinitionsLabels = {
130
+ title: string;
131
+ subtitle: string;
132
+ addTool: string;
133
+ createTitle: string;
134
+ editTitle: string;
135
+ name: string;
136
+ description: string;
137
+ category: string;
138
+ enabled: string;
139
+ disabled: string;
140
+ icon: string;
141
+ save: string;
142
+ delete: string;
143
+ edit: string;
144
+ deleteConfirm: string;
145
+ empty: string;
146
+ };
147
+ type Props$1 = {
148
+ labels: AgentsToolDefinitionsLabels;
149
+ tools: AgentTool[];
150
+ loading: boolean;
151
+ onCreate: (input: ToolDefinitionFormInput) => void;
152
+ onUpdate: (toolId: string, input: ToolDefinitionFormInput) => void;
153
+ onDelete: (tool: AgentTool) => void;
154
+ };
155
+ declare function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpdate, onDelete }: Props$1): react_jsx_runtime.JSX.Element;
156
+ /**
157
+ * Build a JSON Schema object from the parameter list. Mirrors the
158
+ * format the backend validator (`validate_input_schema`) expects —
159
+ * `{ type: 'object', properties, required }`.
160
+ */
161
+ declare function parametersToJsonSchema(params: ToolParameter[]): Record<string, unknown>;
162
+ /**
163
+ * Inverse of `parametersToJsonSchema` — hydrate the editor UI from an
164
+ * existing schema so the Edit flow shows what was stored.
165
+ */
166
+ declare function jsonSchemaToParameters(schema: unknown): ToolParameter[];
167
+
168
+ type RulesLabels = {
169
+ title: string;
170
+ subtitle: string;
171
+ addRule: string;
172
+ createTitle: string;
173
+ editTitle: string;
174
+ save: string;
175
+ delete: string;
176
+ edit: string;
177
+ deleteConfirm: string;
178
+ empty: string;
179
+ enabled: string;
180
+ disabled: string;
181
+ order: string;
182
+ };
183
+ type Props = {
184
+ labels: RulesLabels;
185
+ rules: AgentRule[];
186
+ loading: boolean;
187
+ onCreate: (input: RuleFormValue) => void;
188
+ onUpdate: (ruleId: string, input: RuleFormValue) => void;
189
+ onDelete: (rule: AgentRule) => void;
190
+ };
191
+ declare function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete }: Props): react_jsx_runtime.JSX.Element;
192
+
193
+ type DialectCategory = {
194
+ id: string;
195
+ labelKey: string;
196
+ icon: React.ComponentType<{
197
+ className?: string;
198
+ }>;
199
+ gradient: string;
200
+ dialects: DialectOption[];
201
+ };
202
+ type DialectOption = {
203
+ value: string;
204
+ label: string;
205
+ defaultPort?: number;
206
+ /** 'standard' = host/port/db, 'connection-string' = single URL, 'cloud' = project/dataset/key */
207
+ formType: 'standard' | 'connection-string' | 'cloud-bigquery' | 'cloud-snowflake' | 'cloud-key' | 'vector-key';
208
+ };
209
+ declare const DIALECT_CATEGORIES: DialectCategory[];
210
+ declare function findDialect(value: string): DialectOption | undefined;
211
+ declare function findCategory(dialectValue: string): DialectCategory | undefined;
212
+ type DatasourceFormData = {
213
+ name: string;
214
+ dialect: string;
215
+ host?: string;
216
+ port?: number;
217
+ database?: string;
218
+ username?: string;
219
+ password?: string;
220
+ schema?: string;
221
+ ssl?: boolean;
222
+ readOnly?: boolean;
223
+ connectionString?: string;
224
+ projectId?: string;
225
+ dataset?: string;
226
+ keyFile?: string;
227
+ account?: string;
228
+ warehouse?: string;
229
+ region?: string;
230
+ bucket?: string;
231
+ token?: string;
232
+ apiKey?: string;
233
+ environment?: string;
234
+ index?: string;
235
+ url?: string;
236
+ /** Whitelist of tables the engine is allowed to query. Empty/undef =
237
+ * allow every table the credential can see. */
238
+ allowedTables?: string[];
239
+ /** Columns the engine MUST NOT surface to workflows. Applied at the
240
+ * driver layer — trying to SELECT a blocked column still fails. */
241
+ blockedColumns?: string[];
242
+ /** Max concurrent connections in the org's cached pool (default 5). */
243
+ maxPoolSize?: number;
244
+ /** Query/connect timeout in ms (default 5000). */
245
+ timeoutMs?: number;
246
+ };
247
+ type Labels$1 = Record<string, string>;
248
+ type DatasourceFormModalProps = {
249
+ open: boolean;
250
+ onClose: () => void;
251
+ labels: Labels$1;
252
+ onSave: (data: DatasourceFormData) => void;
253
+ };
254
+ declare function DatasourceFormModal({ open, onClose, labels, onSave }: DatasourceFormModalProps): react_jsx_runtime.JSX.Element;
255
+ type DatasourceModalProps = {
256
+ open: boolean;
257
+ onClose: () => void;
258
+ labels: Labels$1;
259
+ onSave: (data: DatasourceFormData) => void;
260
+ };
261
+ declare function DatasourceModal({ open, onClose, labels, onSave }: DatasourceModalProps): react_jsx_runtime.JSX.Element;
262
+
263
+ type Labels = Record<string, string>;
264
+ type DatasourcesPageViewProps = {
265
+ labels: Labels;
266
+ datasources?: DataSource[];
267
+ useSampleData?: boolean;
268
+ onCreate?: (data: DatasourceFormData) => void;
269
+ };
270
+ declare function DatasourcesPageView({ labels, datasources: externalDatasources, useSampleData, onCreate, }: DatasourcesPageViewProps): react_jsx_runtime.JSX.Element;
271
+
272
+ export { type AgentConfigFormInput, type AgentsConfigLabels, AgentsConfigPageView, type AgentsModelsLabels, AgentsModelsPageView, type AgentsPromptsLabels, AgentsPromptsPageView, type AgentsToolDefinitionsLabels, AgentsToolDefinitionsPageView, DIALECT_CATEGORIES, type DatasourceFormData, DatasourceFormModal, type DatasourceFormModalProps, DatasourceModal, type DatasourceModalProps, DatasourcesPageView, type DatasourcesPageViewProps, type PromptFormInput, RuleFormValue, type RulesLabels, RulesPageView, TOOL_TYPES, type ToolDefinitionFormInput, type ToolParameter, type ToolType, UsersPageView, findCategory, findDialect, jsonSchemaToParameters, parametersToJsonSchema };