@plumile/backoffice-react 0.1.65 → 0.1.67

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 (58) hide show
  1. package/README.md +101 -0
  2. package/lib/esm/hooks/useConditionalSubscription.js +57 -0
  3. package/lib/esm/hooks/useConditionalSubscription.js.map +1 -0
  4. package/lib/esm/hooks/useCopyToClipboard.js +31 -0
  5. package/lib/esm/hooks/useCopyToClipboard.js.map +1 -0
  6. package/lib/esm/hooks/useRefetchNeededReload.js +23 -0
  7. package/lib/esm/hooks/useRefetchNeededReload.js.map +1 -0
  8. package/lib/esm/i18n/useReviewStatusLabel.js +19 -0
  9. package/lib/esm/i18n/useReviewStatusLabel.js.map +1 -0
  10. package/lib/esm/i18n/useSharedEnumLabels.js +22 -0
  11. package/lib/esm/i18n/useSharedEnumLabels.js.map +1 -0
  12. package/lib/esm/index.js +23 -7
  13. package/lib/esm/modules/access/viewerPermissionsPolicy.js +17 -0
  14. package/lib/esm/modules/access/viewerPermissionsPolicy.js.map +1 -0
  15. package/lib/esm/modules/base64.js +23 -0
  16. package/lib/esm/modules/base64.js.map +1 -0
  17. package/lib/esm/modules/billing/usageChartMappers.js +49 -0
  18. package/lib/esm/modules/billing/usageChartMappers.js.map +1 -0
  19. package/lib/esm/modules/formatFileSize.js +28 -0
  20. package/lib/esm/modules/formatFileSize.js.map +1 -0
  21. package/lib/esm/modules/merge/taskMergeRun.js +67 -0
  22. package/lib/esm/modules/merge/taskMergeRun.js.map +1 -0
  23. package/lib/esm/modules/projectIngestionStatus.js +25 -0
  24. package/lib/esm/modules/projectIngestionStatus.js.map +1 -0
  25. package/lib/esm/provider/BackofficeProvider.js +30 -20
  26. package/lib/esm/provider/BackofficeProvider.js.map +1 -1
  27. package/lib/esm/subscriptions/conversationStream.js +38 -0
  28. package/lib/esm/subscriptions/conversationStream.js.map +1 -0
  29. package/lib/types/hooks/useConditionalSubscription.d.ts +13 -0
  30. package/lib/types/hooks/useConditionalSubscription.d.ts.map +1 -0
  31. package/lib/types/hooks/useCopyToClipboard.d.ts +6 -0
  32. package/lib/types/hooks/useCopyToClipboard.d.ts.map +1 -0
  33. package/lib/types/hooks/useRefetchNeededReload.d.ts +10 -0
  34. package/lib/types/hooks/useRefetchNeededReload.d.ts.map +1 -0
  35. package/lib/types/i18n/useReviewStatusLabel.d.ts +6 -0
  36. package/lib/types/i18n/useReviewStatusLabel.d.ts.map +1 -0
  37. package/lib/types/i18n/useSharedEnumLabels.d.ts +6 -0
  38. package/lib/types/i18n/useSharedEnumLabels.d.ts.map +1 -0
  39. package/lib/types/index.d.ts +16 -0
  40. package/lib/types/index.d.ts.map +1 -1
  41. package/lib/types/modules/access/viewerPermissionsPolicy.d.ts +38 -0
  42. package/lib/types/modules/access/viewerPermissionsPolicy.d.ts.map +1 -0
  43. package/lib/types/modules/base64.d.ts +3 -0
  44. package/lib/types/modules/base64.d.ts.map +1 -0
  45. package/lib/types/modules/billing/usageChartMappers.d.ts +26 -0
  46. package/lib/types/modules/billing/usageChartMappers.d.ts.map +1 -0
  47. package/lib/types/modules/formatFileSize.d.ts +8 -0
  48. package/lib/types/modules/formatFileSize.d.ts.map +1 -0
  49. package/lib/types/modules/merge/taskMergeRun.d.ts +48 -0
  50. package/lib/types/modules/merge/taskMergeRun.d.ts.map +1 -0
  51. package/lib/types/modules/projectIngestionStatus.d.ts +9 -0
  52. package/lib/types/modules/projectIngestionStatus.d.ts.map +1 -0
  53. package/lib/types/provider/BackofficeProvider.d.ts.map +1 -1
  54. package/lib/types/provider/types.d.ts +2 -0
  55. package/lib/types/provider/types.d.ts.map +1 -1
  56. package/lib/types/subscriptions/conversationStream.d.ts +12 -0
  57. package/lib/types/subscriptions/conversationStream.d.ts.map +1 -0
  58. package/package.json +15 -5
@@ -26,12 +26,19 @@ var x = (e) => e.trim() === "" || e === "/" ? "/" : e.startsWith("/") ? e.endsWi
26
26
  detail: (e) => S(t, n.routes.detail(e)),
27
27
  detailPage: (e, r) => S(t, n.routes.detailPage(e, r))
28
28
  }
29
- }])), w = (e) => typeof e == "object" && !Array.isArray(e) ? e : {}, T = ({ routes: e }) => {
30
- let r = i(), a = h(() => ({ relayEnvironment: r }), [r]), o = h(() => v(e, { context: a }), [e, a]);
29
+ }])), w = (e) => typeof e == "object" && !Array.isArray(e) ? e : {}, T = ({ routes: e, instrumentations: r }) => {
30
+ let a = i(), o = h(() => ({ relayEnvironment: a }), [a]), s = h(() => v(e, {
31
+ context: o,
32
+ instrumentations: r
33
+ }), [
34
+ r,
35
+ e,
36
+ o
37
+ ]);
31
38
  return m(() => () => {
32
- o.cleanup();
33
- }, [o]), /* @__PURE__ */ d(_.Provider, {
34
- value: o.context,
39
+ s.cleanup();
40
+ }, [s]), /* @__PURE__ */ d(_.Provider, {
41
+ value: s.context,
35
42
  children: /* @__PURE__ */ d(g, {
36
43
  enableTransition: !0,
37
44
  fallback: /* @__PURE__ */ d(t, {}),
@@ -116,21 +123,24 @@ var x = (e) => e.trim() === "" || e === "/" ? "/" : e.startsWith("/") ? e.endsWi
116
123
  t.graphql,
117
124
  t.sidebar
118
125
  ]),
119
- children: /* @__PURE__ */ d(T, { routes: h(() => l({
120
- basePath: n,
121
- entityManifest: i,
122
- entityRegistry: g,
123
- sidebar: t.sidebar,
124
- auth: t.auth,
125
- dashboard: t.dashboard
126
- }), [
127
- n,
128
- i,
129
- g,
130
- t.auth,
131
- t.dashboard,
132
- t.sidebar
133
- ]) })
126
+ children: /* @__PURE__ */ d(T, {
127
+ routes: h(() => l({
128
+ basePath: n,
129
+ entityManifest: i,
130
+ entityRegistry: g,
131
+ sidebar: t.sidebar,
132
+ auth: t.auth,
133
+ dashboard: t.dashboard
134
+ }), [
135
+ n,
136
+ i,
137
+ g,
138
+ t.auth,
139
+ t.dashboard,
140
+ t.sidebar
141
+ ]),
142
+ instrumentations: t.instrumentations
143
+ })
134
144
  }) }) })
135
145
  }) });
136
146
  };
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeProvider.js","names":[],"sources":["../../../src/provider/BackofficeProvider.tsx"],"sourcesContent":["import { StrictMode, useEffect, useMemo, type JSX } from 'react';\nimport {\n createInstance,\n type Resource,\n type ResourceKey,\n type ResourceLanguage,\n} from 'i18next';\nimport { I18nextProvider } from 'react-i18next';\nimport { createRouter, RouterRenderer, RoutingContext } from '@plumile/router';\nimport { ThemeProvider } from '@plumile/ui/theme/ThemeProvider';\n\nimport { type BackofficeEntityManifestMap } from '@plumile/backoffice-core/types.js';\n\nimport { createI18nInstance } from '../i18n/createI18nInstance.js';\nimport { mergeResourceLanguages } from '../i18n/mergeResourceLanguages.js';\nimport { backofficeReactI18nResources } from '../i18n/resources.js';\nimport { RelayProvider } from '../relay/RelayProvider.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\nimport { configureRelayEnvironment } from '../relay/environment.js';\nimport { BackofficeConfigProvider } from './BackofficeConfigContext.js';\nimport { createBackofficeRoutes } from '../router/createBackofficeRoutes.js';\nimport type { BackofficeProviderProps } from './types.js';\nimport { BackofficeRouteFallback } from '../components/backoffice/routing/BackofficeRouteFallback.js';\nimport { BackofficeRoutePendingBar } from '../components/backoffice/routing/BackofficeRoutePendingBar.js';\nimport { createBackofficeEntityRegistry } from './entityRegistry.js';\n\nconst normalizeAbsolutePath = (value: string): string => {\n if (value.trim() === '' || value === '/') {\n return '/';\n }\n if (!value.startsWith('/')) {\n return `/${value}`;\n }\n if (value.endsWith('/')) {\n return value.slice(0, -1);\n }\n return value;\n};\n\nconst prefixRoutePath = (basePath: string, value: string): string => {\n const normalizedPath = normalizeAbsolutePath(value);\n const normalizedBasePath = normalizeAbsolutePath(basePath);\n if (normalizedBasePath === '/') {\n return normalizedPath;\n }\n if (\n normalizedPath === normalizedBasePath ||\n normalizedPath.startsWith(`${normalizedBasePath}/`)\n ) {\n return normalizedPath;\n }\n if (normalizedPath === '/') {\n return normalizedBasePath;\n }\n return `${normalizedBasePath}${normalizedPath}`;\n};\n\nconst resolveEntityManifest = (\n manifest: BackofficeEntityManifestMap,\n basePath: string,\n): BackofficeEntityManifestMap => {\n return Object.fromEntries(\n Object.entries(manifest).map(([entityId, item]) => {\n return [\n entityId,\n {\n ...item,\n routes: {\n list: prefixRoutePath(basePath, item.routes.list),\n detail: (id: string) => {\n return prefixRoutePath(basePath, item.routes.detail(id));\n },\n detailPage: (id: string, pageId: string) => {\n return prefixRoutePath(\n basePath,\n item.routes.detailPage(id, pageId),\n );\n },\n },\n } satisfies BackofficeEntityManifestMap[string],\n ] as const;\n }),\n );\n};\n\nconst asResourceLanguage = (\n value: ResourceKey | undefined,\n): ResourceLanguage => {\n if (typeof value === 'object' && !Array.isArray(value)) {\n return value as ResourceLanguage;\n }\n return {};\n};\n\ntype RouterShellProps = {\n routes: ReturnType<typeof createBackofficeRoutes>;\n};\n\nconst RouterShell = ({ routes }: RouterShellProps): JSX.Element => {\n const relayEnvironment = useRelayEnvironment();\n\n const routerContext = useMemo(() => {\n return { relayEnvironment };\n }, [relayEnvironment]);\n\n const router = useMemo(() => {\n return createRouter(routes, {\n context: routerContext,\n });\n }, [routes, routerContext]);\n\n useEffect(() => {\n return () => {\n router.cleanup();\n };\n }, [router]);\n\n return (\n <RoutingContext.Provider value={router.context}>\n <RouterRenderer\n enableTransition\n fallback={<BackofficeRouteFallback />}\n pending={<BackofficeRoutePendingBar />}\n />\n </RoutingContext.Provider>\n );\n};\n\nexport const BackofficeProvider = (\n props: BackofficeProviderProps,\n): JSX.Element => {\n const basePath = normalizeAbsolutePath(props.basePath ?? '/');\n\n const entityManifest = useMemo(() => {\n return resolveEntityManifest(props.entityManifest, basePath);\n }, [basePath, props.entityManifest]);\n const entityRegistry = useMemo(() => {\n return createBackofficeEntityRegistry(entityManifest, { basePath });\n }, [basePath, entityManifest]);\n\n const graphQLConfig = props.graphql;\n\n useEffect(() => {\n const httpUrl = graphQLConfig.httpUrl ?? graphQLConfig.endpoint;\n const wsUrl = graphQLConfig.wsUrl ?? graphQLConfig.wsEndpoint;\n configureRelayEnvironment({\n httpUrl,\n wsUrl,\n logEvents: graphQLConfig.logEvents,\n getAuthHeaders: graphQLConfig.getAuthHeaders,\n });\n }, [\n graphQLConfig.endpoint,\n graphQLConfig.getAuthHeaders,\n graphQLConfig.httpUrl,\n graphQLConfig.logEvents,\n graphQLConfig.wsEndpoint,\n graphQLConfig.wsUrl,\n ]);\n\n const mergedResources = useMemo(() => {\n const appResources: Resource = props.i18n?.resources ?? {};\n const backofficeReactResources = backofficeReactI18nResources as Resource;\n const locales = new Set([\n ...Object.keys(backofficeReactResources),\n ...Object.keys(appResources),\n ]);\n\n const output: Resource = {};\n\n locales.forEach((locale) => {\n const packageLocale = asResourceLanguage(\n backofficeReactResources[locale],\n );\n const appLocale = asResourceLanguage(appResources[locale]);\n output[locale] = {\n ...packageLocale,\n ...appLocale,\n backofficeReact: mergeResourceLanguages(\n asResourceLanguage(packageLocale.backofficeReact),\n asResourceLanguage(appLocale.backofficeReact),\n ),\n shared: mergeResourceLanguages(\n asResourceLanguage(packageLocale.shared),\n asResourceLanguage(appLocale.shared),\n ),\n };\n });\n\n return output;\n }, [props.i18n?.resources]);\n\n const i18nInstance = useMemo(() => {\n return props.i18n?.instance ?? createInstance();\n }, [props.i18n?.instance]);\n\n useEffect(() => {\n const initOptions = props.i18n?.initOptions ?? {};\n const defaultNs = initOptions.defaultNS ?? 'translations';\n const ns = initOptions.ns ?? [\n 'backofficeReact',\n 'translations',\n 'shared',\n 'ui',\n ];\n createI18nInstance({\n resources: mergedResources,\n lng: props.i18n?.lng,\n fallbackLng: props.i18n?.fallbackLng,\n initOptions: {\n ...initOptions,\n defaultNS: defaultNs,\n ns,\n },\n instance: i18nInstance,\n useLanguageDetector: props.i18n?.useLanguageDetector,\n detection: props.i18n?.detection,\n // eslint-disable-next-line no-console\n }).catch(console.error);\n }, [\n i18nInstance,\n mergedResources,\n props.i18n?.initOptions,\n props.i18n?.detection,\n props.i18n?.fallbackLng,\n props.i18n?.lng,\n props.i18n?.useLanguageDetector,\n ]);\n\n const configValue = useMemo(() => {\n return {\n basePath,\n entities: entityManifest,\n entityManifest,\n entityRegistry,\n sidebar: props.sidebar,\n dashboard: props.dashboard,\n auth: props.auth,\n graphql: props.graphql,\n };\n }, [\n basePath,\n props.auth,\n props.dashboard,\n entityManifest,\n entityRegistry,\n props.graphql,\n props.sidebar,\n ]);\n\n const routes = useMemo(() => {\n return createBackofficeRoutes({\n basePath,\n entityManifest,\n entityRegistry,\n sidebar: props.sidebar,\n auth: props.auth,\n dashboard: props.dashboard,\n });\n }, [\n basePath,\n entityManifest,\n entityRegistry,\n props.auth,\n props.dashboard,\n props.sidebar,\n ]);\n\n return (\n <StrictMode>\n <I18nextProvider i18n={i18nInstance}>\n <ThemeProvider>\n <RelayProvider>\n <BackofficeConfigProvider value={configValue}>\n <RouterShell routes={routes} />\n </BackofficeConfigProvider>\n </RelayProvider>\n </ThemeProvider>\n </I18nextProvider>\n </StrictMode>\n );\n};\n\nexport default BackofficeProvider;\n"],"mappings":"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"}
1
+ {"version":3,"file":"BackofficeProvider.js","names":[],"sources":["../../../src/provider/BackofficeProvider.tsx"],"sourcesContent":["import { StrictMode, useEffect, useMemo, type JSX } from 'react';\nimport {\n createInstance,\n type Resource,\n type ResourceKey,\n type ResourceLanguage,\n} from 'i18next';\nimport { I18nextProvider } from 'react-i18next';\nimport { createRouter, RouterRenderer, RoutingContext } from '@plumile/router';\nimport { ThemeProvider } from '@plumile/ui/theme/ThemeProvider';\n\nimport { type BackofficeEntityManifestMap } from '@plumile/backoffice-core/types.js';\n\nimport { createI18nInstance } from '../i18n/createI18nInstance.js';\nimport { mergeResourceLanguages } from '../i18n/mergeResourceLanguages.js';\nimport { backofficeReactI18nResources } from '../i18n/resources.js';\nimport { RelayProvider } from '../relay/RelayProvider.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\nimport { configureRelayEnvironment } from '../relay/environment.js';\nimport { BackofficeConfigProvider } from './BackofficeConfigContext.js';\nimport { createBackofficeRoutes } from '../router/createBackofficeRoutes.js';\nimport type { BackofficeProviderProps } from './types.js';\nimport { BackofficeRouteFallback } from '../components/backoffice/routing/BackofficeRouteFallback.js';\nimport { BackofficeRoutePendingBar } from '../components/backoffice/routing/BackofficeRoutePendingBar.js';\nimport { createBackofficeEntityRegistry } from './entityRegistry.js';\n\nconst normalizeAbsolutePath = (value: string): string => {\n if (value.trim() === '' || value === '/') {\n return '/';\n }\n if (!value.startsWith('/')) {\n return `/${value}`;\n }\n if (value.endsWith('/')) {\n return value.slice(0, -1);\n }\n return value;\n};\n\nconst prefixRoutePath = (basePath: string, value: string): string => {\n const normalizedPath = normalizeAbsolutePath(value);\n const normalizedBasePath = normalizeAbsolutePath(basePath);\n if (normalizedBasePath === '/') {\n return normalizedPath;\n }\n if (\n normalizedPath === normalizedBasePath ||\n normalizedPath.startsWith(`${normalizedBasePath}/`)\n ) {\n return normalizedPath;\n }\n if (normalizedPath === '/') {\n return normalizedBasePath;\n }\n return `${normalizedBasePath}${normalizedPath}`;\n};\n\nconst resolveEntityManifest = (\n manifest: BackofficeEntityManifestMap,\n basePath: string,\n): BackofficeEntityManifestMap => {\n return Object.fromEntries(\n Object.entries(manifest).map(([entityId, item]) => {\n return [\n entityId,\n {\n ...item,\n routes: {\n list: prefixRoutePath(basePath, item.routes.list),\n detail: (id: string) => {\n return prefixRoutePath(basePath, item.routes.detail(id));\n },\n detailPage: (id: string, pageId: string) => {\n return prefixRoutePath(\n basePath,\n item.routes.detailPage(id, pageId),\n );\n },\n },\n } satisfies BackofficeEntityManifestMap[string],\n ] as const;\n }),\n );\n};\n\nconst asResourceLanguage = (\n value: ResourceKey | undefined,\n): ResourceLanguage => {\n if (typeof value === 'object' && !Array.isArray(value)) {\n return value as ResourceLanguage;\n }\n return {};\n};\n\ntype RouterShellProps = {\n routes: ReturnType<typeof createBackofficeRoutes>;\n instrumentations?: BackofficeProviderProps['instrumentations'];\n};\n\nconst RouterShell = ({\n routes,\n instrumentations,\n}: RouterShellProps): JSX.Element => {\n const relayEnvironment = useRelayEnvironment();\n\n const routerContext = useMemo(() => {\n return { relayEnvironment };\n }, [relayEnvironment]);\n\n const router = useMemo(() => {\n return createRouter(routes, {\n context: routerContext,\n instrumentations,\n });\n }, [instrumentations, routes, routerContext]);\n\n useEffect(() => {\n return () => {\n router.cleanup();\n };\n }, [router]);\n\n return (\n <RoutingContext.Provider value={router.context}>\n <RouterRenderer\n enableTransition\n fallback={<BackofficeRouteFallback />}\n pending={<BackofficeRoutePendingBar />}\n />\n </RoutingContext.Provider>\n );\n};\n\nexport const BackofficeProvider = (\n props: BackofficeProviderProps,\n): JSX.Element => {\n const basePath = normalizeAbsolutePath(props.basePath ?? '/');\n\n const entityManifest = useMemo(() => {\n return resolveEntityManifest(props.entityManifest, basePath);\n }, [basePath, props.entityManifest]);\n const entityRegistry = useMemo(() => {\n return createBackofficeEntityRegistry(entityManifest, { basePath });\n }, [basePath, entityManifest]);\n\n const graphQLConfig = props.graphql;\n\n useEffect(() => {\n const httpUrl = graphQLConfig.httpUrl ?? graphQLConfig.endpoint;\n const wsUrl = graphQLConfig.wsUrl ?? graphQLConfig.wsEndpoint;\n configureRelayEnvironment({\n httpUrl,\n wsUrl,\n logEvents: graphQLConfig.logEvents,\n getAuthHeaders: graphQLConfig.getAuthHeaders,\n });\n }, [\n graphQLConfig.endpoint,\n graphQLConfig.getAuthHeaders,\n graphQLConfig.httpUrl,\n graphQLConfig.logEvents,\n graphQLConfig.wsEndpoint,\n graphQLConfig.wsUrl,\n ]);\n\n const mergedResources = useMemo(() => {\n const appResources: Resource = props.i18n?.resources ?? {};\n const backofficeReactResources = backofficeReactI18nResources as Resource;\n const locales = new Set([\n ...Object.keys(backofficeReactResources),\n ...Object.keys(appResources),\n ]);\n\n const output: Resource = {};\n\n locales.forEach((locale) => {\n const packageLocale = asResourceLanguage(\n backofficeReactResources[locale],\n );\n const appLocale = asResourceLanguage(appResources[locale]);\n output[locale] = {\n ...packageLocale,\n ...appLocale,\n backofficeReact: mergeResourceLanguages(\n asResourceLanguage(packageLocale.backofficeReact),\n asResourceLanguage(appLocale.backofficeReact),\n ),\n shared: mergeResourceLanguages(\n asResourceLanguage(packageLocale.shared),\n asResourceLanguage(appLocale.shared),\n ),\n };\n });\n\n return output;\n }, [props.i18n?.resources]);\n\n const i18nInstance = useMemo(() => {\n return props.i18n?.instance ?? createInstance();\n }, [props.i18n?.instance]);\n\n useEffect(() => {\n const initOptions = props.i18n?.initOptions ?? {};\n const defaultNs = initOptions.defaultNS ?? 'translations';\n const ns = initOptions.ns ?? [\n 'backofficeReact',\n 'translations',\n 'shared',\n 'ui',\n ];\n createI18nInstance({\n resources: mergedResources,\n lng: props.i18n?.lng,\n fallbackLng: props.i18n?.fallbackLng,\n initOptions: {\n ...initOptions,\n defaultNS: defaultNs,\n ns,\n },\n instance: i18nInstance,\n useLanguageDetector: props.i18n?.useLanguageDetector,\n detection: props.i18n?.detection,\n // eslint-disable-next-line no-console\n }).catch(console.error);\n }, [\n i18nInstance,\n mergedResources,\n props.i18n?.initOptions,\n props.i18n?.detection,\n props.i18n?.fallbackLng,\n props.i18n?.lng,\n props.i18n?.useLanguageDetector,\n ]);\n\n const configValue = useMemo(() => {\n return {\n basePath,\n entities: entityManifest,\n entityManifest,\n entityRegistry,\n sidebar: props.sidebar,\n dashboard: props.dashboard,\n auth: props.auth,\n graphql: props.graphql,\n };\n }, [\n basePath,\n props.auth,\n props.dashboard,\n entityManifest,\n entityRegistry,\n props.graphql,\n props.sidebar,\n ]);\n\n const routes = useMemo(() => {\n return createBackofficeRoutes({\n basePath,\n entityManifest,\n entityRegistry,\n sidebar: props.sidebar,\n auth: props.auth,\n dashboard: props.dashboard,\n });\n }, [\n basePath,\n entityManifest,\n entityRegistry,\n props.auth,\n props.dashboard,\n props.sidebar,\n ]);\n\n return (\n <StrictMode>\n <I18nextProvider i18n={i18nInstance}>\n <ThemeProvider>\n <RelayProvider>\n <BackofficeConfigProvider value={configValue}>\n <RouterShell\n routes={routes}\n instrumentations={props.instrumentations}\n />\n </BackofficeConfigProvider>\n </RelayProvider>\n </ThemeProvider>\n </I18nextProvider>\n </StrictMode>\n );\n};\n\nexport default BackofficeProvider;\n"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ //#region src/subscriptions/conversationStream.ts
2
+ function e(e, t) {
3
+ let n = e.getLinkedRecord("chunk");
4
+ if (n == null) return;
5
+ let r = n.getValue("partId");
6
+ if (r == null) return;
7
+ let i = t.get(r);
8
+ if (i == null) return;
9
+ let a = n.getValue("chunkIndex"), o = n.getValue("delta"), s = n.getValue("done");
10
+ if (o == null) return;
11
+ let c = i.getValue("__lastChunkIndex") ?? -1;
12
+ if (a != null && a <= c) return;
13
+ let l = i.getLinkedRecord("body");
14
+ if (l == null) return;
15
+ let u = l.getType();
16
+ if (u !== "AgentMessagePart" && u !== "ModelMessagePart" && u !== "UserMessagePart") return;
17
+ let d = l.getLinkedRecord("content");
18
+ if (d == null) return;
19
+ let f = d.getValue("markdown") ?? "";
20
+ d.setValue(`${f}${o}`, "markdown"), a != null && i.setValue(a, "__lastChunkIndex"), s != null && i.setValue(s, "__streamingDone");
21
+ }
22
+ function t(t, n, r) {
23
+ return (i) => {
24
+ let a = i.getRootField("conversationChunkEvent");
25
+ if (a == null) return;
26
+ let o = a.getType(), s = a.getValue("cursor");
27
+ if (typeof s == "string" && n?.(s), o === "RefetchNeeded") {
28
+ let e = a.getValue("reason") ?? null;
29
+ r?.(e);
30
+ return;
31
+ }
32
+ i.get(t) != null && (a.getValue("conversationId") ?? null) === t && o === "PartChunkAppended" && e(a, i);
33
+ };
34
+ }
35
+ //#endregion
36
+ export { t as createConversationStreamUpdater, e as handlePartChunkAppended };
37
+
38
+ //# sourceMappingURL=conversationStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationStream.js","names":[],"sources":["../../../src/subscriptions/conversationStream.ts"],"sourcesContent":["import type {\n RecordProxy,\n RecordSourceSelectorProxy,\n SelectorStoreUpdater,\n} from 'relay-runtime';\n\nexport type ConversationRequestUsageSnapshot = {\n cachedInputTokens?: number | null;\n costUsd?: number | null;\n inputTokens?: number | null;\n outputTokens?: number | null;\n reasoningTokens?: number | null;\n totalTokens?: number | null;\n};\n\n/** Apply a streamed message chunk delta to the matching conversation part. */\nexport function handlePartChunkAppended(\n payload: RecordProxy,\n store: RecordSourceSelectorProxy<unknown>,\n): void {\n const chunk = payload.getLinkedRecord('chunk');\n if (chunk == null) {\n return;\n }\n\n const partId = chunk.getValue('partId') as string | null;\n if (partId == null) {\n return;\n }\n const partRecord = store.get(partId);\n if (partRecord == null) {\n return;\n }\n\n const chunkIndex = chunk.getValue('chunkIndex') as number | null;\n const delta = chunk.getValue('delta') as string | null;\n const done = chunk.getValue('done') as boolean | null;\n if (delta == null) {\n return;\n }\n\n const lastChunkIndex =\n (partRecord.getValue('__lastChunkIndex') as number | null) ?? -1;\n if (chunkIndex != null && chunkIndex <= lastChunkIndex) {\n return;\n }\n\n const bodyRecord = partRecord.getLinkedRecord('body');\n if (bodyRecord == null) {\n return;\n }\n const bodyType = bodyRecord.getType();\n if (\n bodyType !== 'AgentMessagePart' &&\n bodyType !== 'ModelMessagePart' &&\n bodyType !== 'UserMessagePart'\n ) {\n return;\n }\n const contentRecord = bodyRecord.getLinkedRecord('content');\n if (contentRecord == null) {\n return;\n }\n const previousText =\n (contentRecord.getValue('markdown') as string | null) ?? '';\n contentRecord.setValue(`${previousText}${delta}`, 'markdown');\n\n if (chunkIndex != null) {\n partRecord.setValue(chunkIndex, '__lastChunkIndex');\n }\n if (done != null) {\n partRecord.setValue(done, '__streamingDone');\n }\n}\n\n/** Create a Relay store updater for conversation chunk events. */\nexport function createConversationStreamUpdater<T>(\n conversationId: string,\n onCursor?: (cursor: string | null) => void,\n onRefetchNeeded?: (reason: string | null) => void,\n): SelectorStoreUpdater<T> {\n return (store) => {\n const eventRecord = store.getRootField('conversationChunkEvent');\n if (eventRecord == null) {\n return;\n }\n\n const eventType = eventRecord.getType();\n const cursorValue = eventRecord.getValue('cursor');\n if (typeof cursorValue === 'string') {\n onCursor?.(cursorValue);\n }\n\n if (eventType === 'RefetchNeeded') {\n const reason =\n (eventRecord.getValue('reason') as string | null | undefined) ?? null;\n onRefetchNeeded?.(reason);\n return;\n }\n\n const conversationRecord = store.get(conversationId);\n if (conversationRecord == null) {\n return;\n }\n\n const targetConversationId =\n (eventRecord.getValue('conversationId') as string | null) ?? null;\n if (targetConversationId !== conversationId) {\n return;\n }\n\n if (eventType === 'PartChunkAppended') {\n handlePartChunkAppended(eventRecord, store);\n }\n };\n}\n"],"mappings":";AAgBA,SAAgB,EACd,GACA,GACM;CACN,IAAM,IAAQ,EAAQ,gBAAgB,QAAQ;AAC9C,KAAI,KAAS,KACX;CAGF,IAAM,IAAS,EAAM,SAAS,SAAS;AACvC,KAAI,KAAU,KACZ;CAEF,IAAM,IAAa,EAAM,IAAI,EAAO;AACpC,KAAI,KAAc,KAChB;CAGF,IAAM,IAAa,EAAM,SAAS,aAAa,EACzC,IAAQ,EAAM,SAAS,QAAQ,EAC/B,IAAO,EAAM,SAAS,OAAO;AACnC,KAAI,KAAS,KACX;CAGF,IAAM,IACH,EAAW,SAAS,mBAAmB,IAAsB;AAChE,KAAI,KAAc,QAAQ,KAAc,EACtC;CAGF,IAAM,IAAa,EAAW,gBAAgB,OAAO;AACrD,KAAI,KAAc,KAChB;CAEF,IAAM,IAAW,EAAW,SAAS;AACrC,KACE,MAAa,sBACb,MAAa,sBACb,MAAa,kBAEb;CAEF,IAAM,IAAgB,EAAW,gBAAgB,UAAU;AAC3D,KAAI,KAAiB,KACnB;CAEF,IAAM,IACH,EAAc,SAAS,WAAW,IAAsB;AAM3D,CALA,EAAc,SAAS,GAAG,IAAe,KAAS,WAAW,EAEzD,KAAc,QAChB,EAAW,SAAS,GAAY,mBAAmB,EAEjD,KAAQ,QACV,EAAW,SAAS,GAAM,kBAAkB;;AAKhD,SAAgB,EACd,GACA,GACA,GACyB;AACzB,SAAQ,MAAU;EAChB,IAAM,IAAc,EAAM,aAAa,yBAAyB;AAChE,MAAI,KAAe,KACjB;EAGF,IAAM,IAAY,EAAY,SAAS,EACjC,IAAc,EAAY,SAAS,SAAS;AAKlD,MAJI,OAAO,KAAgB,YACzB,IAAW,EAAY,EAGrB,MAAc,iBAAiB;GACjC,IAAM,IACH,EAAY,SAAS,SAAS,IAAkC;AACnE,OAAkB,EAAO;AACzB;;AAGyB,IAAM,IAAI,EAAe,IAC1B,SAKvB,EAAY,SAAS,iBAAiB,IAAsB,UAClC,KAIzB,MAAc,uBAChB,EAAwB,GAAa,EAAM"}
@@ -0,0 +1,13 @@
1
+ import type { GraphQLSubscriptionConfig, OperationType } from 'relay-runtime';
2
+ type ConditionalOptions<T extends OperationType> = {
3
+ enabled: boolean;
4
+ deps?: readonly unknown[];
5
+ getVariables?: () => T['variables'];
6
+ };
7
+ type UseConditionalSubscriptionReturn = {
8
+ active: boolean;
9
+ error: Error | null;
10
+ };
11
+ export declare function useConditionalSubscription<T extends OperationType>(config: GraphQLSubscriptionConfig<T>, options: ConditionalOptions<T>): UseConditionalSubscriptionReturn;
12
+ export {};
13
+ //# sourceMappingURL=useConditionalSubscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConditionalSubscription.d.ts","sourceRoot":"","sources":["../../../src/hooks/useConditionalSubscription.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9E,KAAK,kBAAkB,CAAC,CAAC,SAAS,aAAa,IAAI;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAgBF,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,aAAa,EAChE,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC,EACpC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,gCAAgC,CAwElC"}
@@ -0,0 +1,6 @@
1
+ export declare function useCopyToClipboard(timeoutMs?: number): {
2
+ copiedKey: string | null;
3
+ copy: (value: string, key?: string) => Promise<boolean>;
4
+ };
5
+ export default useCopyToClipboard;
6
+ //# sourceMappingURL=useCopyToClipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCopyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCopyToClipboard.ts"],"names":[],"mappings":"AA+BA,wBAAgB,kBAAkB,CAAC,SAAS,SAAO,GAAG;IACpD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACzD,CAoDA;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ type RefetchReason = string;
2
+ type UseRefetchNeededReloadReturn = {
3
+ reason: RefetchReason | null;
4
+ onRefetchNeeded: (reason: RefetchReason | null | undefined) => void;
5
+ reload: () => void;
6
+ clear: () => void;
7
+ };
8
+ export declare function useRefetchNeededReload(resetKey: string | null | undefined): UseRefetchNeededReloadReturn;
9
+ export {};
10
+ //# sourceMappingURL=useRefetchNeededReload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRefetchNeededReload.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRefetchNeededReload.ts"],"names":[],"mappings":"AAEA,KAAK,aAAa,GAAG,MAAM,CAAC;AAE5B,KAAK,4BAA4B,GAAG;IAClC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IACpE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAGF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,4BAA4B,CAuB9B"}
@@ -0,0 +1,6 @@
1
+ import type { ReviewStatus } from '../modules/sharedSchemaTypes.js';
2
+ export type ReviewStatusLabeler = {
3
+ getReviewStatusLabel: (status: ReviewStatus | null | undefined) => string;
4
+ };
5
+ export declare function useReviewStatusLabel(): ReviewStatusLabeler;
6
+ //# sourceMappingURL=useReviewStatusLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReviewStatusLabel.d.ts","sourceRoot":"","sources":["../../../src/i18n/useReviewStatusLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGpE,MAAM,MAAM,mBAAmB,GAAG;IAChC,oBAAoB,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,KAAK,MAAM,CAAC;CAC3E,CAAC;AAGF,wBAAgB,oBAAoB,IAAI,mBAAmB,CAuB1D"}
@@ -0,0 +1,6 @@
1
+ import type { ProjectIngestionStatusKind } from '../modules/sharedSchemaTypes.js';
2
+ export type SharedEnumLabels = {
3
+ projectIngestionStatus: (kind: ProjectIngestionStatusKind | null | undefined) => string;
4
+ };
5
+ export declare function useSharedEnumLabels(): SharedEnumLabels;
6
+ //# sourceMappingURL=useSharedEnumLabels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSharedEnumLabels.d.ts","sourceRoot":"","sources":["../../../src/i18n/useSharedEnumLabels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAGlF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sBAAsB,EAAE,CACtB,IAAI,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,KAChD,MAAM,CAAC;CACb,CAAC;AAGF,wBAAgB,mBAAmB,IAAI,gBAAgB,CA4BtD"}
@@ -15,7 +15,23 @@ export type { BackofficeDetailFieldProps } from './components/backoffice/detail/
15
15
  export { BackofficeDetailPayload } from './components/backoffice/detail/BackofficeDetailPayload.js';
16
16
  export { BackofficeDetailSection, type BackofficeDetailSectionProps, } from './components/backoffice/detail/BackofficeDetailSection.js';
17
17
  export { useBackofficeListUrlState } from './hooks/useBackofficeListUrlState.js';
18
+ export { createUseAuth, type AuthError, type LoginCredentials, type LoginStatus, type TotpCredentials, type UseAuthReturn, } from './hooks/useAuth.js';
19
+ export { useConditionalSubscription } from './hooks/useConditionalSubscription.js';
20
+ export { useCopyToClipboard } from './hooks/useCopyToClipboard.js';
21
+ export { useRefetchNeededReload } from './hooks/useRefetchNeededReload.js';
22
+ export { createI18nInstance } from './i18n/createI18nInstance.js';
23
+ export { backofficeReactI18nResources } from './i18n/resources.js';
24
+ export { useReviewStatusLabel } from './i18n/useReviewStatusLabel.js';
25
+ export { useSharedEnumLabels } from './i18n/useSharedEnumLabels.js';
26
+ export { AccessReason, canAssignGroupRoles, canAssignOrganizationRoles, canCreateProject, canEditTaskByPermission, canLaunchInitiativeTechAgent, canLaunchProjectTechAgent, canManageBilling, canManageProject, canManageGroupInitiatives, canManageGroups, canRunGroupTechAgents, canRunOrganizationTechAgents, canStartProjectDigestAgent, canViewBilling, decideConnectorAccess, } from './modules/access/viewerPermissionsPolicy.js';
27
+ export { DEFAULT_BILLING_USAGE_CHART_CATEGORIES, DEFAULT_BILLING_USAGE_CHART_CATEGORY_COLORS, toBillingUsageChartSeries, type BillingChartSerie, type DefaultBillingUsageChartCategory, } from './modules/billing/usageChartMappers.js';
28
+ export { decodeBase64ToUtf8, encodeUtf8ToBase64 } from './modules/base64.js';
29
+ export { formatFileSize } from './modules/formatFileSize.js';
30
+ export { createMergeRunViewModel, formatMergeBlockReasonCode, getMergeRunStatusTone, getMergeRunTone, type MergeBlockReasonCode, type MergeRunViewModel, type ToolMergeBlockReasonCode, } from './modules/merge/taskMergeRun.js';
31
+ export { getProjectIngestionStatusMeta } from './modules/projectIngestionStatus.js';
32
+ export { base64UrlToBuffer, bufferToBase64Url, mapWebAuthnRegistrationError, parseSignCount, type WebAuthnRegistrationErrorKind, } from './modules/webauthn.js';
18
33
  export { resolveVisibleDetailPages } from './pages/detail/pageResolution.js';
19
34
  export { createInlineDataReader } from './relay/createInlineReader.js';
20
35
  export { identityView } from './relay/identityView.js';
36
+ export { createConversationStreamUpdater, type ConversationRequestUsageSnapshot, } from './subscriptions/conversationStream.js';
21
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,yBAAyB,EACzB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AACpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,2DAA2D,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAC7F,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,2BAA2B,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,EAAE,yBAAyB,EAAE,MAAM,6DAA6D,CAAC;AACxG,OAAO,EAAE,wBAAwB,EAAE,MAAM,4DAA4D,CAAC;AACtG,YAAY,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AACpG,OAAO,EACL,uBAAuB,EACvB,KAAK,4BAA4B,GAClC,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,yBAAyB,EACzB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AACpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,2DAA2D,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAC7F,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,2BAA2B,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,EAAE,yBAAyB,EAAE,MAAM,6DAA6D,CAAC;AACxG,OAAO,EAAE,wBAAwB,EAAE,MAAM,4DAA4D,CAAC;AACtG,YAAY,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AACpG,OAAO,EACL,uBAAuB,EACvB,KAAK,4BAA4B,GAClC,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EACL,aAAa,EACb,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,4BAA4B,EAC5B,0BAA0B,EAC1B,cAAc,EACd,qBAAqB,GACtB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,sCAAsC,EACtC,2CAA2C,EAC3C,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,GACtC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,cAAc,EACd,KAAK,6BAA6B,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,+BAA+B,EAC/B,KAAK,gCAAgC,GACtC,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,38 @@
1
+ export declare enum AccessReason {
2
+ MissingPermission = "MISSING_PERMISSION",
3
+ FeatureDisabled = "FEATURE_DISABLED"
4
+ }
5
+ export type AccessDecision = {
6
+ readonly allowed: boolean;
7
+ readonly reason: AccessReason | null;
8
+ };
9
+ export declare const hasCapability: (value: boolean | null | undefined) => boolean;
10
+ export declare const canManageBilling: (value: boolean | null | undefined) => boolean;
11
+ export declare const canViewBilling: (value: boolean | null | undefined) => boolean;
12
+ export declare const canRunOrganizationTechAgents: (value: boolean | null | undefined) => boolean;
13
+ export declare const canAssignOrganizationRoles: (value: boolean | null | undefined) => boolean;
14
+ export declare const canManageGroups: (value: boolean | null | undefined) => boolean;
15
+ export declare const canManageProjects: (value: boolean | null | undefined) => boolean;
16
+ export declare const canManageGroup: (value: boolean | null | undefined) => boolean;
17
+ export declare const canManageGroupInitiatives: (value: boolean | null | undefined) => boolean;
18
+ export declare const canAssignGroupRoles: (value: boolean | null | undefined) => boolean;
19
+ export declare const canRunGroupTechAgents: (value: boolean | null | undefined) => boolean;
20
+ export declare const canLaunchProjectTechAgent: (value: boolean | null | undefined) => boolean;
21
+ export declare const canManageProject: (value: boolean | null | undefined) => boolean;
22
+ export declare const canEditTaskByPermission: (value: boolean | null | undefined) => boolean;
23
+ export declare const canLaunchTaskDevAgent: (value: boolean | null | undefined) => boolean;
24
+ export declare const canLaunchTaskReviewAgent: (value: boolean | null | undefined) => boolean;
25
+ export declare const canLaunchInitiativeTechAgent: (value: boolean | null | undefined) => boolean;
26
+ export declare const canCreateProject: (params: {
27
+ readonly canManageGroup: boolean | null | undefined;
28
+ readonly canManageProjects: boolean | null | undefined;
29
+ }) => boolean;
30
+ export declare const decideConnectorAccess: (params: {
31
+ readonly canAssignRoles: boolean | null | undefined;
32
+ readonly isConnectorsEnabled: boolean;
33
+ }) => AccessDecision;
34
+ export declare const canStartProjectDigestAgent: (params: {
35
+ readonly isGitRepositoryReady: boolean;
36
+ readonly canLaunchTechAgent: boolean | null | undefined;
37
+ }) => boolean;
38
+ //# sourceMappingURL=viewerPermissionsPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewerPermissionsPolicy.d.ts","sourceRoot":"","sources":["../../../../src/modules/access/viewerPermissionsPolicy.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,iBAAiB,uBAAuB;IACxC,eAAe,qBAAqB;CACrC;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAAG,OAEjE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAAG,OAElE,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAAG,OAEnE,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAAG,OAElE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,KAChC,OAEF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ;IACvC,QAAQ,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,iBAAiB,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;CACxD,KAAG,OAKH,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,QAAQ;IAC5C,QAAQ,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;CACvC,KAAG,cAQH,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,QAAQ;IACjD,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;CACzD,KAAG,OAKH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function encodeUtf8ToBase64(value: string): string;
2
+ export declare function decodeBase64ToUtf8(value: string): string;
3
+ //# sourceMappingURL=base64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../../src/modules/base64.ts"],"names":[],"mappings":"AACA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBxD;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBxD"}
@@ -0,0 +1,26 @@
1
+ export type BillingChartPoint = {
2
+ x: string;
3
+ y: number;
4
+ };
5
+ export type BillingChartSerie<Category extends string> = {
6
+ id: Category;
7
+ data: readonly BillingChartPoint[];
8
+ };
9
+ export type BillingChartBucketInput<Category extends string> = {
10
+ day: string;
11
+ category: Category;
12
+ credits: number;
13
+ };
14
+ export declare const DEFAULT_BILLING_USAGE_CHART_CATEGORIES: readonly ["INGESTION", "CHAT", "DEVELOPMENT"];
15
+ export type DefaultBillingUsageChartCategory = (typeof DEFAULT_BILLING_USAGE_CHART_CATEGORIES)[number];
16
+ export declare const DEFAULT_BILLING_USAGE_CHART_CATEGORY_COLORS: Readonly<Record<DefaultBillingUsageChartCategory, string>>;
17
+ export declare function toUtcDayKey(isoDateTime: string): string;
18
+ export declare function buildUtcDayRange(fromIsoDateTime: string, toIsoDateTime: string): readonly string[];
19
+ export declare function aggregateCreditsByDayAndCategory<Category extends string>(buckets: readonly BillingChartBucketInput<Category>[], allowedCategories: readonly Category[]): ReadonlyMap<string, number>;
20
+ export declare function toBillingUsageChartSeries<Category extends string>(params: {
21
+ fromIsoDateTime: string;
22
+ toIsoDateTime: string;
23
+ buckets: readonly BillingChartBucketInput<Category>[];
24
+ categories: readonly Category[];
25
+ }): readonly BillingChartSerie<Category>[];
26
+ //# sourceMappingURL=usageChartMappers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usageChartMappers.d.ts","sourceRoot":"","sources":["../../../../src/modules/billing/usageChartMappers.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,MAAM,IAAI;IACvD,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,QAAQ,SAAS,MAAM,IAAI;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,sCAAsC,+CAIzC,CAAC;AAEX,MAAM,MAAM,gCAAgC,GAC1C,CAAC,OAAO,sCAAsC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,eAAO,MAAM,2CAA2C,EAAE,QAAQ,CAChE,MAAM,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAKjD,CAAC;AAYF,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAMvD;AAGD,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GACpB,SAAS,MAAM,EAAE,CA0BnB;AAGD,wBAAgB,gCAAgC,CAAC,QAAQ,SAAS,MAAM,EACtE,OAAO,EAAE,SAAS,uBAAuB,CAAC,QAAQ,CAAC,EAAE,EACrD,iBAAiB,EAAE,SAAS,QAAQ,EAAE,GACrC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAa7B;AAGD,wBAAgB,yBAAyB,CAAC,QAAQ,SAAS,MAAM,EAAE,MAAM,EAAE;IACzE,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,SAAS,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtD,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAC;CACjC,GAAG,SAAS,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAuBzC"}
@@ -0,0 +1,8 @@
1
+ export type FileSizeUnit = 'B' | 'KB' | 'MB' | 'GB' | 'TB';
2
+ export type FileSizeResult = {
3
+ value: number;
4
+ unit: FileSizeUnit;
5
+ displayValue: string;
6
+ };
7
+ export declare function formatFileSize(bytes: number): FileSizeResult;
8
+ //# sourceMappingURL=formatFileSize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatFileSize.d.ts","sourceRoot":"","sources":["../../../src/modules/formatFileSize.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAiBF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAyB5D"}
@@ -0,0 +1,48 @@
1
+ export type MergeBlockReasonCode = 'CONFLICT_NEEDS_HUMAN_DECISION' | 'CONFLICT_UNRESOLVED' | 'BRANCH_NOT_FOUND' | 'PERMISSION_DENIED' | 'TARGET_MOVED' | 'REMOTE_POLICY_REJECTED' | 'CI_POLICY_BLOCKED' | 'RETRY_BUDGET_EXCEEDED' | 'UNKNOWN';
2
+ export type ToolMergeBlockReasonCode = MergeBlockReasonCode;
3
+ export type TaskMergeConflictKind = 'SQUASH' | 'REBASE';
4
+ export type TaskMergeRunStateKind = 'NOT_STARTED' | 'RUNNING' | 'COMPLETED' | 'FAILED';
5
+ export type TaskMergeRunStatus = 'SUCCEEDED' | 'BLOCKED';
6
+ export type MergeConflictDetailViewModel = {
7
+ path: string;
8
+ kind: TaskMergeConflictKind;
9
+ relatedTaskIds: readonly string[];
10
+ };
11
+ export type MergeRunViewModel = {
12
+ runKind: TaskMergeRunStateKind;
13
+ runStatus: TaskMergeRunStatus | null;
14
+ startedAt: string | null;
15
+ completedAt: string | null;
16
+ requestedAt: string | null;
17
+ mergedAt: string | null;
18
+ sourceBranch: string | null;
19
+ targetBranch: string | null;
20
+ reasonCode: MergeBlockReasonCode | null;
21
+ conflictFiles: readonly string[];
22
+ conflictDetails: readonly MergeConflictDetailViewModel[];
23
+ attemptedCommands: readonly string[];
24
+ };
25
+ export type MergeRunInput = {
26
+ mergeStateRequestedAt?: string | null;
27
+ mergeStateMergedAt?: string | null;
28
+ runKind?: TaskMergeRunStateKind | null;
29
+ runStatus?: TaskMergeRunStatus | null;
30
+ startedAt?: string | null;
31
+ completedAt?: string | null;
32
+ sourceBranch?: string | null;
33
+ targetBranch?: string | null;
34
+ reasonCode?: MergeBlockReasonCode | null;
35
+ conflictFiles?: readonly string[] | null;
36
+ conflictDetails?: readonly {
37
+ path?: string | null;
38
+ kind?: TaskMergeConflictKind | null;
39
+ relatedTaskIds?: readonly string[] | null;
40
+ }[] | null;
41
+ attemptedCommands?: readonly string[] | null;
42
+ };
43
+ export declare function createMergeRunViewModel(input: MergeRunInput): MergeRunViewModel;
44
+ export declare function getMergeRunTone(kind: TaskMergeRunStateKind): 'neutral' | 'info' | 'success' | 'warning' | 'danger';
45
+ export declare function getMergeRunStatusTone(status: TaskMergeRunStatus | null): 'neutral' | 'success' | 'warning';
46
+ export declare function isMergeRunBlocked(model: MergeRunViewModel): boolean;
47
+ export declare function formatMergeBlockReasonCode(reasonCode: MergeBlockReasonCode | ToolMergeBlockReasonCode | null | undefined): string;
48
+ //# sourceMappingURL=taskMergeRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskMergeRun.d.ts","sourceRoot":"","sources":["../../../../src/modules/merge/taskMergeRun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ProjectIngestionStatusKind } from './sharedSchemaTypes.js';
2
+ export type ProjectIngestionStatusTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger';
3
+ type ProjectIngestionStatusMeta = {
4
+ label: string;
5
+ tone: ProjectIngestionStatusTone;
6
+ };
7
+ export declare function getProjectIngestionStatusMeta(kind: ProjectIngestionStatusKind | null | undefined): ProjectIngestionStatusMeta;
8
+ export {};
9
+ //# sourceMappingURL=projectIngestionStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectIngestionStatus.d.ts","sourceRoot":"","sources":["../../../src/modules/projectIngestionStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,MAAM,0BAA0B,GAClC,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,QAAQ,CAAC;AAEb,KAAK,0BAA0B,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,0BAA0B,CAAC;CAClC,CAAC;AAiBF,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,GAClD,0BAA0B,CAM5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeProvider.d.ts","sourceRoot":"","sources":["../../../src/provider/BackofficeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAqBjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AA2G1D,eAAO,MAAM,kBAAkB,GAC7B,OAAO,uBAAuB,KAC7B,GAAG,CAAC,OAuJN,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"BackofficeProvider.d.ts","sourceRoot":"","sources":["../../../src/provider/BackofficeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAqBjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAgH1D,eAAO,MAAM,kBAAkB,GAC7B,OAAO,uBAAuB,KAC7B,GAAG,CAAC,OA0JN,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -2,6 +2,7 @@ import type { ComponentType, SVGProps } from 'react';
2
2
  import type { InitOptions, i18n } from 'i18next';
3
3
  import type { DetectorOptions } from 'i18next-browser-languagedetector';
4
4
  import type { GraphQLTaggedNode } from 'relay-runtime';
5
+ import type { InstrumentationAPI } from '@plumile/router';
5
6
  import type { BackofficeDashboardConfig, BackofficeEntityManifestMap, I18nLabel } from '@plumile/backoffice-core/types.js';
6
7
  import type { BackofficeLazyValue } from './lazyValue.js';
7
8
  export type BackofficeIconComponent = ComponentType<SVGProps<SVGSVGElement>>;
@@ -97,5 +98,6 @@ export type BackofficeProviderProps = {
97
98
  i18n?: BackofficeI18nConfig;
98
99
  sidebar?: BackofficeSidebarConfig;
99
100
  dashboard?: BackofficeDashboardModule;
101
+ instrumentations?: InstrumentationAPI[];
100
102
  };
101
103
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/provider/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/provider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,KAAK,EACV,yBAAyB,EACzB,2BAA2B,EAC3B,SAAS,EACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAE7E,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExE,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,yBAAyB,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,OAAO,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;IACrD,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,+BAA+B,EACrC,WAAW,EAAE,OAAO,KACjB,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,cAAc,EAAE,iBAAiB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,aAAa,EAAE,iBAAiB,CAAC;IACjC,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,yBAAyB,CAAC,EAAE,iBAAiB,CAAC;IAC9C,0BAA0B,CAAC,EAAE,iBAAiB,CAAC;IAC/C,2BAA2B,CAAC,EAAE,iBAAiB,CAAC;IAChD,wBAAwB,CAAC,EAAE,iBAAiB,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IACpD,mBAAmB,EAAE,iBAAiB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACrD,yBAAyB,EAAE,iBAAiB,CAAC;IAC7C,0BAA0B,EAAE,iBAAiB,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,0CAA0C,GAAG;IACvD,2BAA2B,EAAE,iBAAiB,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,4CAA4C,GAAG;IACzD,wBAAwB,EAAE,iBAAiB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,gDAAgD,GAAG;IAC7D,0BAA0B,EAAE,iBAAiB,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,iDAAiD,GAAG;IAC9D,6BAA6B,EAAE,iBAAiB,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IACpD,mBAAmB,EAAE,iBAAiB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,mBAAmB,CAAC,mCAAmC,CAAC,CAAC;IAClE,MAAM,EAAE,mBAAmB,CAAC,kCAAkC,CAAC,CAAC;IAChE,KAAK,EAAE,mBAAmB,CAAC,iCAAiC,CAAC,CAAC;IAC9D,WAAW,CAAC,EAAE,mBAAmB,CAAC,uCAAuC,CAAC,CAAC;IAC3E,YAAY,CAAC,EAAE,mBAAmB,CAAC,wCAAwC,CAAC,CAAC;IAC7E,cAAc,CAAC,EAAE,mBAAmB,CAAC,0CAA0C,CAAC,CAAC;IACjF,gBAAgB,CAAC,EAAE,mBAAmB,CAAC,4CAA4C,CAAC,CAAC;IACrF,oBAAoB,EAAE,mBAAmB,CAAC,gDAAgD,CAAC,CAAC;IAC5F,qBAAqB,EAAE,mBAAmB,CAAC,iDAAiD,CAAC,CAAC;IAC9F,WAAW,EAAE,mBAAmB,CAAC,uCAAuC,CAAC,CAAC;IAC1E,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACnC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;AAEjD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IACjD,GAAG,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,2BAA2B,CAAC;IAC5C,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,uBAAuB,CAAC;IACjC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACzC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { RecordProxy, RecordSourceSelectorProxy, SelectorStoreUpdater } from 'relay-runtime';
2
+ export type ConversationRequestUsageSnapshot = {
3
+ cachedInputTokens?: number | null;
4
+ costUsd?: number | null;
5
+ inputTokens?: number | null;
6
+ outputTokens?: number | null;
7
+ reasoningTokens?: number | null;
8
+ totalTokens?: number | null;
9
+ };
10
+ export declare function handlePartChunkAppended(payload: RecordProxy, store: RecordSourceSelectorProxy<unknown>): void;
11
+ export declare function createConversationStreamUpdater<T>(conversationId: string, onCursor?: (cursor: string | null) => void, onRefetchNeeded?: (reason: string | null) => void): SelectorStoreUpdater<T>;
12
+ //# sourceMappingURL=conversationStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationStream.d.ts","sourceRoot":"","sources":["../../../src/subscriptions/conversationStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,gCAAgC,GAAG;IAC7C,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAGF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,GACxC,IAAI,CAsDN;AAGD,wBAAgB,+BAA+B,CAAC,CAAC,EAC/C,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,EAC1C,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAChD,oBAAoB,CAAC,CAAC,CAAC,CAmCzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumile/backoffice-react",
3
- "version": "0.1.65",
3
+ "version": "0.1.67",
4
4
  "description": "React provider and pages for Plumile backoffice",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -115,6 +115,16 @@
115
115
  "import": "./lib/esm/router/*.js",
116
116
  "default": "./lib/esm/router/*.js"
117
117
  },
118
+ "./subscriptions/*.js": {
119
+ "types": "./lib/types/subscriptions/*.d.ts",
120
+ "import": "./lib/esm/subscriptions/*.js",
121
+ "default": "./lib/esm/subscriptions/*.js"
122
+ },
123
+ "./subscriptions/*": {
124
+ "types": "./lib/types/subscriptions/*.d.ts",
125
+ "import": "./lib/esm/subscriptions/*.js",
126
+ "default": "./lib/esm/subscriptions/*.js"
127
+ },
118
128
  "./package.json": "./package.json"
119
129
  },
120
130
  "sideEffects": true,
@@ -148,10 +158,10 @@
148
158
  "npm": ">=8.0.0"
149
159
  },
150
160
  "dependencies": {
151
- "@plumile/backoffice-core": "^0.1.65",
152
- "@plumile/filter-query": "^0.1.65",
153
- "@plumile/router": "^0.1.65",
154
- "@plumile/ui": "^0.1.65",
161
+ "@plumile/backoffice-core": "^0.1.67",
162
+ "@plumile/filter-query": "^0.1.67",
163
+ "@plumile/router": "^0.1.67",
164
+ "@plumile/ui": "^0.1.67",
155
165
  "graphql-ws": "6.0.7",
156
166
  "i18next": "^25.8.18",
157
167
  "i18next-browser-languagedetector": "8.2.1",