@flowselections/ai-authenticatie 1.0.14 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/components/AiAuthenticatiePage.d.ts.map +1 -1
- package/dist-lib/components/AiAuthenticatiePage.js +6 -3
- package/dist-lib/hooks/useAiForGoal.d.ts +2 -2
- package/dist-lib/hooks/useAiForGoal.d.ts.map +1 -1
- package/dist-lib/hooks/useAiForGoal.js +1 -1
- package/dist-lib/hooks/useIsAiAdmin.d.ts +1 -0
- package/dist-lib/hooks/useIsAiAdmin.d.ts.map +1 -1
- package/dist-lib/hooks/useIsAiAdmin.js +22 -3
- package/dist-lib/index.d.ts +6 -1
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +4 -0
- package/dist-lib/integrations/supabase/types.d.ts +1544 -15
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/aiAttachments.d.ts +22 -0
- package/dist-lib/lib/aiAttachments.d.ts.map +1 -0
- package/dist-lib/lib/aiAttachments.js +105 -0
- package/dist-lib/lib/aiChat.functions.d.ts +3 -2
- package/dist-lib/lib/aiChat.functions.d.ts.map +1 -1
- package/dist-lib/lib/aiChat.functions.js +6 -1
- package/dist-lib/lib/aiChat.server.d.ts +8 -1
- package/dist-lib/lib/aiChat.server.d.ts.map +1 -1
- package/dist-lib/lib/aiChat.server.js +37 -17
- package/dist-lib/lib/aiChat.stream.server.d.ts.map +1 -1
- package/dist-lib/lib/aiChat.stream.server.js +3 -1
- package/dist-lib/lib/aiChat.types.d.ts +8 -1
- package/dist-lib/lib/aiChat.types.d.ts.map +1 -1
- package/dist-lib/lib/aiModules.server.d.ts +4 -0
- package/dist-lib/lib/aiModules.server.d.ts.map +1 -1
- package/dist-lib/lib/aiModules.server.js +6 -3
- package/dist-lib/lib/aiRegistry.d.ts +31 -0
- package/dist-lib/lib/aiRegistry.d.ts.map +1 -0
- package/dist-lib/lib/aiRegistry.functions.d.ts +25 -0
- package/dist-lib/lib/aiRegistry.functions.d.ts.map +1 -0
- package/dist-lib/lib/aiRegistry.functions.js +25 -0
- package/dist-lib/lib/aiRegistry.js +46 -0
- package/dist-lib/lib/aiRegistry.server.d.ts +13 -0
- package/dist-lib/lib/aiRegistry.server.d.ts.map +1 -0
- package/dist-lib/lib/aiRegistry.server.js +21 -0
- package/dist-lib/lib/aiUsageByModule.functions.d.ts.map +1 -1
- package/dist-lib/lib/aiUsageByModule.functions.js +1 -4
- package/dist-lib/lib/modules.server.d.ts.map +1 -1
- package/dist-lib/lib/modules.server.js +7 -7
- package/package.json +14 -4
- package/schema/ai-authenticatie.sql +124 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiAuthenticatiePage.d.ts","sourceRoot":"","sources":["../../src/components/AiAuthenticatiePage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AiAuthenticatiePage.d.ts","sourceRoot":"","sources":["../../src/components/AiAuthenticatiePage.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,mBAAmB,CAAC,EAAE,QAAgB,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,+BAyRpF"}
|
|
@@ -8,6 +8,7 @@ import { useModelPricing, providerSummaries, formatUsd, formatTokens } from '../
|
|
|
8
8
|
import { useAllProviderUsage } from '../hooks/useAiUsage.js';
|
|
9
9
|
import { useAiModules } from '../hooks/useAiModules.js';
|
|
10
10
|
import { useModules } from '../hooks/useModules.js';
|
|
11
|
+
import { useIsAiAdmin } from '../hooks/useIsAiAdmin.js';
|
|
11
12
|
import { useAiCostOverview } from '../hooks/useAiCostOverview.js';
|
|
12
13
|
import { periodFromPreset } from '../lib/aiPeriod.js';
|
|
13
14
|
import { AiPeriodFilter } from './AiPeriodFilter.js';
|
|
@@ -36,6 +37,8 @@ if (res.ok) console.log(res.content);`;
|
|
|
36
37
|
export function AiAuthenticatiePage({ embedded = false } = {}) {
|
|
37
38
|
const { providers, models, credentials, bindings, loading, reload } = useAiAdminData();
|
|
38
39
|
const { modules, loading: modulesLoading, save: saveModule, setEnabled, remove: removeModule } = useAiModules();
|
|
40
|
+
const { isAdmin } = useIsAiAdmin();
|
|
41
|
+
const canManage = isAdmin === true;
|
|
39
42
|
const [period, setPeriod] = useState(() => periodFromPreset('month'));
|
|
40
43
|
const { overview, loading: overviewLoading, reload: reloadOverview } = useAiCostOverview(period.from, period.to);
|
|
41
44
|
const safeProviders = Array.isArray(providers) ? providers : [];
|
|
@@ -75,11 +78,11 @@ export function AiAuthenticatiePage({ embedded = false } = {}) {
|
|
|
75
78
|
const primaryModel = primary ? safeModels.find(x => x.id === primary.model_id) : undefined;
|
|
76
79
|
const primaryProvider = primaryModel ? safeProviders.find(p => p.id === primaryModel.provider_id) : undefined;
|
|
77
80
|
const s = statsByModule.get(m.module_key);
|
|
78
|
-
return (_jsxs("li", { className:
|
|
81
|
+
return (_jsxs("li", { className: `${m.is_in_use === false ? 'opacity-50 ' : ''}grid grid-cols-1 md:grid-cols-[1.4fr_1.2fr_.7fr_.7fr_.8fr_auto] gap-3 md:gap-4 items-center px-4 md:px-6 py-4`, children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "font-semibold text-sm truncate", children: m.module_name }), _jsxs("p", { className: "text-xs text-muted-foreground truncate", children: [m.module_key, m.ai_source === 'manifest' && ' · aangemeld door module', m.ai_source === 'runtime' && ' · automatisch herkend', m.last_declared_at && ` · laatst gezien ${new Date(m.last_declared_at).toLocaleDateString('nl-NL')}`] }), m.is_in_use === false && (_jsx("span", { className: "mt-1 mr-1 inline-flex items-center rounded-full bg-muted px-2 py-0.5 text-[11px] font-medium text-muted-foreground", children: "Niet meer in gebruik" })), m.ai_enabled && (!primary || !safeCreds.some(c => c.id === primary.credential_id && c.active)) && (_jsx("span", { className: "mt-1 inline-flex items-center rounded-full bg-destructive/10 px-2 py-0.5 text-[11px] font-medium text-destructive", children: primary ? 'Geen actieve sleutel' : 'Nog geen AI-agent' }))] }), _jsx("button", { type: "button", onClick: () => canManage && setAgentsFor(m), disabled: !canManage, className: "text-left min-w-0 rounded-lg hover:bg-muted/40 px-2 py-1 -mx-2", children: primary ? (_jsxs("span", { className: "flex items-center gap-2 min-w-0", children: [primaryProvider && _jsx(ProviderLogo, { slug: primaryProvider.slug, name: primaryProvider.name, className: "h-4 w-4 shrink-0" }), _jsxs("span", { className: "min-w-0", children: [_jsx("span", { className: "block text-sm truncate", children: primary.label || primaryModel?.display_name || 'Onbekend model' }), _jsxs("span", { className: "block text-xs text-muted-foreground truncate", children: [primaryProvider?.name ?? '—', (() => {
|
|
79
82
|
const cred = safeCreds.find(c => c.id === primary.credential_id && c.active);
|
|
80
83
|
return cred ? ` · sleutel: ${cred.label}` : ' · geen actieve sleutel';
|
|
81
|
-
})(), moduleBindings.length > 1 && ` · +${moduleBindings.length - 1} agent${moduleBindings.length > 2 ? 's' : ''}`] })] })] })) : (_jsxs("span", { className: "text-sm text-primary inline-flex items-center gap-1", children: [_jsx(Plus, { className: "h-3.5 w-3.5" }), " AI-agent koppelen"] })) }), _jsx("span", { className: "text-sm md:text-right", children: s?.calls ?? 0 }), _jsx("span", { className: "text-sm md:text-right", children: formatTokens(s?.total_tokens ?? 0) }), _jsx("span", { className: "text-sm md:text-right font-medium", children: formatUsd(s?.cost_usd ?? 0) }), _jsxs("div", { className: "flex items-center justify-end gap-2 md:pl-2", children: [_jsx(Switch, { checked: m.ai_enabled, onCheckedChange: v => handleToggle(m, v), title:
|
|
82
|
-
}) })), _jsxs("div", { className: "border-t px-4 md:px-6 py-3 flex items-center justify-between gap-3 bg-muted/10", children: [_jsx("p", { className: "text-xs text-muted-foreground", children: "Modules met AI uitgeschakeld worden hier niet getoond en kunnen geen AI-agent gebruiken." }), _jsxs(Button, { variant: "outline", size: "sm", onClick: () => setAddModuleOpen(true), children: [_jsx(Plus, { className: "h-4 w-4 mr-1.5" }), " Module toevoegen"] })] })] }), !modulesLoading && safeModules.some(m => !m.ai_enabled) && (_jsxs("div", { className: `${embedded ? 'rounded-xl border bg-background/40' : 'rounded-2xl border bg-card shadow-sm'} p-4 space-y-2`, children: [_jsx("p", { className: "text-sm font-semibold", children: "Modules zonder AI" }), _jsx("ul", { className: "divide-y", children: safeModules.filter(m => !m.ai_enabled).map(m => (_jsxs("li", { className: "flex items-center justify-between gap-3 py-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "text-sm truncate", children: m.module_name }), _jsx("p", { className: "text-xs text-muted-foreground truncate", children: m.module_key })] }), _jsx(Switch, { checked: false, onCheckedChange: () => handleToggle(m, true), title: "AI inschakelen" })] }, m.id))) })] })), _jsx(ModuleDialog, { open: addModuleOpen, onOpenChange: setAddModuleOpen, existingKeys: safeModules.map(m => m.module_key), onSubmit: (key, name, enabled) => saveModule({ module_key: key, module_name: name, ai_enabled: enabled }) }), agentsFor && (_jsx(ModuleAgentsDialog, { module: agentsFor, open: !!agentsFor, onOpenChange: o => { if (!o)
|
|
84
|
+
})(), moduleBindings.length > 1 && ` · +${moduleBindings.length - 1} agent${moduleBindings.length > 2 ? 's' : ''}`] })] })] })) : (_jsxs("span", { className: "text-sm text-primary inline-flex items-center gap-1", children: [_jsx(Plus, { className: "h-3.5 w-3.5" }), " AI-agent koppelen"] })) }), _jsx("span", { className: "text-sm md:text-right", children: s?.calls ?? 0 }), _jsx("span", { className: "text-sm md:text-right", children: formatTokens(s?.total_tokens ?? 0) }), _jsx("span", { className: "text-sm md:text-right font-medium", children: formatUsd(s?.cost_usd ?? 0) }), _jsxs("div", { className: "flex items-center justify-end gap-2 md:pl-2", children: [_jsx(Switch, { checked: m.ai_enabled, disabled: !canManage, onCheckedChange: v => handleToggle(m, v), title: canManage ? 'AI in-/uitschakelen' : 'Alleen beheerders kunnen dit wijzigen' }), _jsx(Button, { variant: "ghost", size: "icon", className: "h-9 w-9", title: "Integratiecode kopi\u00EBren", onClick: () => void copyIntegrationSnippet(m.module_key), children: _jsx(Code2, { className: "h-4 w-4" }) }), _jsx(Button, { variant: "ghost", size: "icon", className: "h-9 w-9", title: "AI-agents beheren", disabled: !canManage, onClick: () => setAgentsFor(m), children: _jsx(Settings2, { className: "h-4 w-4" }) }), _jsx(Button, { asChild: true, variant: "outline", size: "icon", className: "h-9 w-9", title: "Details bekijken", children: _jsx(Link, { to: "/ai-authenticatie/$moduleKey", params: { moduleKey: m.module_key }, children: _jsx(ChevronRight, { className: "h-4 w-4" }) }) }), _jsx(Button, { variant: "ghost", size: "icon", className: "h-9 w-9 text-muted-foreground hover:text-destructive", title: "Module verwijderen", disabled: !canManage, onClick: () => handleDelete(m), children: _jsx(Trash2, { className: "h-4 w-4" }) })] })] }, m.id));
|
|
85
|
+
}) })), _jsxs("div", { className: "border-t px-4 md:px-6 py-3 flex items-center justify-between gap-3 bg-muted/10", children: [_jsx("p", { className: "text-xs text-muted-foreground", children: "Modules met AI uitgeschakeld worden hier niet getoond en kunnen geen AI-agent gebruiken." }), _jsxs(Button, { variant: "outline", size: "sm", disabled: !canManage, onClick: () => setAddModuleOpen(true), children: [_jsx(Plus, { className: "h-4 w-4 mr-1.5" }), " Module toevoegen"] })] })] }), !modulesLoading && safeModules.some(m => !m.ai_enabled) && (_jsxs("div", { className: `${embedded ? 'rounded-xl border bg-background/40' : 'rounded-2xl border bg-card shadow-sm'} p-4 space-y-2`, children: [_jsx("p", { className: "text-sm font-semibold", children: "Modules zonder AI" }), _jsx("ul", { className: "divide-y", children: safeModules.filter(m => !m.ai_enabled).map(m => (_jsxs("li", { className: "flex items-center justify-between gap-3 py-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "text-sm truncate", children: m.module_name }), _jsx("p", { className: "text-xs text-muted-foreground truncate", children: m.module_key })] }), _jsx(Switch, { checked: false, onCheckedChange: () => handleToggle(m, true), title: "AI inschakelen" })] }, m.id))) })] })), _jsx(ModuleDialog, { open: addModuleOpen, onOpenChange: setAddModuleOpen, existingKeys: safeModules.map(m => m.module_key), onSubmit: (key, name, enabled) => saveModule({ module_key: key, module_name: name, ai_enabled: enabled }) }), agentsFor && (_jsx(ModuleAgentsDialog, { module: agentsFor, open: !!agentsFor, onOpenChange: o => { if (!o)
|
|
83
86
|
setAgentsFor(null); }, providers: safeProviders, models: safeModels, credentials: safeCreds, bindings: safeBindings.filter(b => b.consumer_module_id === agentsFor.module_key), onChange: reload, onOpenProvider: p => { setAgentsFor(null); setManageProvider(p); } })), _jsx("button", { onClick: () => setKeysOpen(true), className: "w-full text-left", children: _jsxs("div", { className: `${embedded ? 'rounded-xl border bg-background/40' : 'rounded-2xl border bg-card shadow-sm'} p-5 flex items-center gap-4 hover:border-primary/60 hover:bg-muted/30 transition-colors`, children: [_jsx("div", { className: "h-11 w-11 rounded-xl bg-primary/10 text-primary flex items-center justify-center shrink-0", children: _jsx(KeyRound, { className: "h-5 w-5" }) }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("p", { className: "font-semibold text-sm", children: "API sleutels beheren" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Beheer je API sleutels voor de verschillende AI providers." })] }), _jsx(ChevronRight, { className: "h-5 w-5 text-muted-foreground shrink-0" })] }) }), _jsx(ApiKeysDialog, { open: keysOpen, onOpenChange: setKeysOpen, providers: safeProviders, models: safeModels, credentials: safeCreds, onOpenProvider: p => { setKeysOpen(false); setManageProvider(p); } }), manageProvider && (_jsx(ProviderManageDialog, { provider: manageProvider, credentials: safeCreds.filter(c => c.provider_id === manageProvider.id), open: !!manageProvider, onOpenChange: o => { if (!o) {
|
|
84
87
|
setManageProvider(null);
|
|
85
88
|
setKeysOpen(true);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type AiStreamHandlers } from '../lib/aiChat.stream.js';
|
|
2
|
-
import type { AiChatBindingInfo, AiChatMessage, AiChatOptions, AiChatResult } from '../lib/aiChat.types.js';
|
|
2
|
+
import type { AiChatAttachment, AiChatBindingInfo, AiChatMessage, AiChatOptions, AiChatResult } from '../lib/aiChat.types.js';
|
|
3
3
|
export type UseAiForGoalReturn = {
|
|
4
4
|
ready: boolean;
|
|
5
5
|
loading: boolean;
|
|
@@ -8,7 +8,7 @@ export type UseAiForGoalReturn = {
|
|
|
8
8
|
credential?: AiChatBindingInfo['credential'];
|
|
9
9
|
reason?: string;
|
|
10
10
|
reload: () => Promise<void>;
|
|
11
|
-
run: (messages: AiChatMessage[], options?: AiChatOptions) => Promise<AiChatResult>;
|
|
11
|
+
run: (messages: AiChatMessage[], options?: AiChatOptions, attachments?: AiChatAttachment[]) => Promise<AiChatResult>;
|
|
12
12
|
stream: (messages: AiChatMessage[], handlers: AiStreamHandlers, options?: AiChatOptions) => Promise<{
|
|
13
13
|
ok: boolean;
|
|
14
14
|
text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAiForGoal.d.ts","sourceRoot":"","sources":["../../src/hooks/useAiForGoal.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAiForGoal.d.ts","sourceRoot":"","sources":["../../src/hooks/useAiForGoal.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE3H,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,GAAG,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrH,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpI,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,GAAG,kBAAkB,CA6CzE"}
|
|
@@ -25,7 +25,7 @@ export function useAiForGoal(consumerModuleId) {
|
|
|
25
25
|
}
|
|
26
26
|
}, [describe, consumerModuleId]);
|
|
27
27
|
useEffect(() => { void reload(); }, [reload]);
|
|
28
|
-
const run = useCallback((messages, options) => chat({ data: { consumerModuleId, messages, options } }), [chat, consumerModuleId]);
|
|
28
|
+
const run = useCallback((messages, options, attachments) => chat({ data: attachments?.length ? { consumerModuleId, messages, options, attachments } : { consumerModuleId, messages, options } }), [chat, consumerModuleId]);
|
|
29
29
|
const stream = useCallback((messages, handlers, options) => streamAiChat({ consumerModuleId, messages, options, ...handlers }), [consumerModuleId]);
|
|
30
30
|
return {
|
|
31
31
|
ready: info.ready,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsAiAdmin.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsAiAdmin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useIsAiAdmin.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsAiAdmin.ts"],"names":[],"mappings":"AAIA,gGAAgG;AAChG,wBAAgB,YAAY;;;;EAY3B"}
|
|
@@ -1,5 +1,24 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import { useServerFn } from '@tanstack/react-start';
|
|
3
|
+
import { isAiAdmin } from '../lib/aiUsageByModule.functions.js';
|
|
4
|
+
/** Echte beheerderscontrole (ai_admin, admin, superadmin of developer), server-side bepaald. */
|
|
2
5
|
export function useIsAiAdmin() {
|
|
3
|
-
const
|
|
4
|
-
|
|
6
|
+
const check = useServerFn(isAiAdmin);
|
|
7
|
+
const [isAdmin, setIsAdmin] = useState(null);
|
|
8
|
+
const [loading, setLoading] = useState(true);
|
|
9
|
+
const reload = useCallback(async () => {
|
|
10
|
+
setLoading(true);
|
|
11
|
+
try {
|
|
12
|
+
const r = await check();
|
|
13
|
+
setIsAdmin(r?.ok === true);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
setIsAdmin(false);
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
setLoading(false);
|
|
20
|
+
}
|
|
21
|
+
}, [check]);
|
|
22
|
+
useEffect(() => { void reload(); }, [reload]);
|
|
23
|
+
return { isAdmin, loading, reload };
|
|
5
24
|
}
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -10,12 +10,17 @@ export { streamAiChat } from './lib/aiChat.stream.js';
|
|
|
10
10
|
export type { AiStreamHandlers } from './lib/aiChat.stream.js';
|
|
11
11
|
export { listAiModules, saveAiModule, setAiModuleEnabled, deleteAiModule, getAiCostOverview, getAiModuleCalls, } from './lib/aiModules.functions.js';
|
|
12
12
|
export type { AiModuleRow, AiModuleStats, AiCostTotals, AiCostOverview, AiCallLogEntry } from './lib/aiModules.functions.js';
|
|
13
|
+
export { registerAiConsumers } from './lib/aiRegistry.functions.js';
|
|
14
|
+
export type { AiRegistrationResult } from './lib/aiRegistry.functions.js';
|
|
15
|
+
export { normalizeAiDeclarations, declarationsFromManifest, buildRegistration } from './lib/aiRegistry.js';
|
|
16
|
+
export type { AiConsumerDeclaration, InstalledPackageRead } from './lib/aiRegistry.js';
|
|
17
|
+
export { pdfSupportProblem } from './lib/aiAttachments.js';
|
|
13
18
|
export { listModules, registerModule, setModuleActiveFn } from './lib/modules.functions.js';
|
|
14
19
|
export type { ModuleRow, ModuleMutationResult } from './lib/modules.functions.js';
|
|
15
20
|
export { useModules } from './hooks/useModules.js';
|
|
16
21
|
export { getAiUsageByModule, isAiAdmin } from './lib/aiUsageByModule.functions.js';
|
|
17
22
|
export type { AiUsageByModuleRow } from './lib/aiUsageByModule.functions.js';
|
|
18
|
-
export type { AiChatMessage, AiChatRole, AiChatOptions, AiChatUsage, AiChatResult, AiChatSuccess, AiChatError, AiChatBindingInfo, } from './lib/aiChat.types.js';
|
|
23
|
+
export type { AiChatMessage, AiChatAttachment, AiChatRole, AiChatOptions, AiChatUsage, AiChatResult, AiChatSuccess, AiChatError, AiChatBindingInfo, } from './lib/aiChat.types.js';
|
|
19
24
|
export { useAiForGoal } from './hooks/useAiForGoal.js';
|
|
20
25
|
export type { UseAiForGoalReturn } from './hooks/useAiForGoal.js';
|
|
21
26
|
export { useAiForModule } from './hooks/useAiForModule.js';
|
package/dist-lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,GACrG,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG1H,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACzF,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAChF,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EACV,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,eAAO,MAAM,qBAAqB,EAAE,UAUnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,GACrG,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG1H,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxG,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACzF,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAChF,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,eAAO,MAAM,qBAAqB,EAAE,UAUnC,CAAC"}
|
package/dist-lib/index.js
CHANGED
|
@@ -9,6 +9,10 @@ export * from './hooks/useAiAdmin.js';
|
|
|
9
9
|
export { runAiChat, describeAiBinding } from './lib/aiChat.functions.js';
|
|
10
10
|
export { streamAiChat } from './lib/aiChat.stream.js';
|
|
11
11
|
export { listAiModules, saveAiModule, setAiModuleEnabled, deleteAiModule, getAiCostOverview, getAiModuleCalls, } from './lib/aiModules.functions.js';
|
|
12
|
+
// Automatische registratie van AI-gebruikende modules (flowselections.ai)
|
|
13
|
+
export { registerAiConsumers } from './lib/aiRegistry.functions.js';
|
|
14
|
+
export { normalizeAiDeclarations, declarationsFromManifest, buildRegistration } from './lib/aiRegistry.js';
|
|
15
|
+
export { pdfSupportProblem } from './lib/aiAttachments.js';
|
|
12
16
|
// Centrale moduleregistratie
|
|
13
17
|
export { listModules, registerModule, setModuleActiveFn } from './lib/modules.functions.js';
|
|
14
18
|
export { useModules } from './hooks/useModules.js';
|