@kizenapps/engine 1.9.3-bf7f7dc → 1.10.0-902e419

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 (47) hide show
  1. package/dist/{ThirdPartyScript-BkCjYWLd.d.ts → ThirdPartyScript-DxPk6YJY.d.ts} +16 -4
  2. package/dist/{automation-BuZbZjRB.d.ts → automation-WGLB_R74.d.ts} +1 -1
  3. package/dist/{blocks-1HdzUin7.d.ts → blocks-BOnF4OcC.d.ts} +2 -2
  4. package/dist/{chunk-47DPBQKI.js → chunk-6I3JOYPF.js} +12 -3
  5. package/dist/chunk-6I3JOYPF.js.map +1 -0
  6. package/dist/{chunk-6ADL5WHV.js → chunk-6SKBFHYX.js} +5 -5
  7. package/dist/{chunk-6ADL5WHV.js.map → chunk-6SKBFHYX.js.map} +1 -1
  8. package/dist/{chunk-VVPZFPDY.js → chunk-BQWJS4RP.js} +3 -3
  9. package/dist/{chunk-VVPZFPDY.js.map → chunk-BQWJS4RP.js.map} +1 -1
  10. package/dist/{chunk-IQF73DX4.js → chunk-FZ5F6QPV.js} +3 -3
  11. package/dist/{chunk-IQF73DX4.js.map → chunk-FZ5F6QPV.js.map} +1 -1
  12. package/dist/{chunk-IKDWO7WZ.js → chunk-KUBP4VBY.js} +3 -3
  13. package/dist/{chunk-IKDWO7WZ.js.map → chunk-KUBP4VBY.js.map} +1 -1
  14. package/dist/{chunk-3DAAR76O.js → chunk-LCLZCF7I.js} +31 -9
  15. package/dist/chunk-LCLZCF7I.js.map +1 -0
  16. package/dist/{chunk-E6OXPHFB.js → chunk-MRX2WNJ3.js} +3 -3
  17. package/dist/{chunk-E6OXPHFB.js.map → chunk-MRX2WNJ3.js.map} +1 -1
  18. package/dist/{chunk-ZO2FK25Z.js → chunk-N2DKKXXN.js} +4 -4
  19. package/dist/{chunk-ZO2FK25Z.js.map → chunk-N2DKKXXN.js.map} +1 -1
  20. package/dist/{chunk-JI4XARBZ.js → chunk-TCAO3QD3.js} +3 -3
  21. package/dist/chunk-TCAO3QD3.js.map +1 -0
  22. package/dist/communication.d.ts +2 -2
  23. package/dist/communication.js +2 -2
  24. package/dist/contexts/base.d.ts +1 -1
  25. package/dist/contexts/base.js +4 -4
  26. package/dist/contexts/floatingFrame.d.ts +1 -1
  27. package/dist/contexts/floatingFrame.js +5 -5
  28. package/dist/contexts/recordDetail.d.ts +1 -1
  29. package/dist/contexts/recordDetail.js +5 -5
  30. package/dist/index.d.ts +5 -5
  31. package/dist/index.js +4 -4
  32. package/dist/react.d.ts +18 -16
  33. package/dist/react.js +28 -12
  34. package/dist/react.js.map +1 -1
  35. package/dist/types.d.ts +5 -5
  36. package/dist/util.d.ts +28 -6
  37. package/dist/util.js +62 -10
  38. package/dist/util.js.map +1 -1
  39. package/dist/{values-08CsQDfa.d.ts → values-ClHf3SXM.d.ts} +4 -3
  40. package/dist/workers/calendarSource.worker.js +6 -6
  41. package/dist/workers/floatingFrame.worker.js +7 -7
  42. package/dist/workers/generic.worker.js +6 -6
  43. package/dist/workers/recordDetail.worker.js +7 -7
  44. package/package.json +1 -1
  45. package/dist/chunk-3DAAR76O.js.map +0 -1
  46. package/dist/chunk-47DPBQKI.js.map +0 -1
  47. package/dist/chunk-JI4XARBZ.js.map +0 -1
package/dist/types.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { U as UnknownJSON, b as PartialUser, c as PartialTeamMember, d as PartialBusiness, e as PartialClientObject, i as PartialLocation } from './ThirdPartyScript-BkCjYWLd.js';
2
- export { r as AppPlugin, t as AppPlugins, A as Args, u as AssistantConfigAction, v as AssistantField, w as AssistantLink, B as BaseAPI, x as BooleanCleanValue, y as BooleanValueStore, z as ButtonConfig, E as CleanValueStore, F as CleanValueStoreType, H as CloseModalFn, J as CompleteSetupFn, K as CompleteSetupLevel, j as CompleteSetupOptions, L as ConfigService, o as ConsoleBridge, N as ConsoleLogLevel, O as CreateRecordModalQueue, Q as CreateRelatedRecordModalQueue, C as CurrentUser, V as CurriedCloseModalFn, X as CurriedCompleteSetupFn, Y as CurriedDynamicPromptFn, Z as CurriedInstallThirdPartyScriptFn, _ as CurriedKizenRequestFn, $ as CurriedOpenCreateRecordFn, a0 as CurriedOpenCreateRelatedRecordFn, a1 as CurriedPostFormDataFn, a2 as CurriedPromptFn, a3 as CurriedRefreshEntityFn, a4 as CurriedShowViewInModalFn, a5 as CurriedUploadFileFn, a6 as CustomObjectCleanValue, a7 as CustomObjectValueStore, D as DataCache, a8 as DataCacheEntry, a9 as DeleteReturnValue, n as DynamicPromptConfig, aa as DynamicPromptFn, ab as EmployeeConfig, ac as ErrorHandler, ad as ErrorResponse, ae as FieldCleanValue, af as FieldValueStore, G as GetOptions, ag as GetReturnValue, p as IncludeOption, ah as InstallThirdPartyScriptFn, I as Instance, h as InternalSessionData, ai as JSONArray, aj as JSONObject, ak as JSONPrimitive, al as JSONValue, am as KizenConfig, an as KizenNetworkResponse, ao as KizenProxySuccessResponse, ap as KizenRequestFn, aq as KizenRequestFnHandler, ar as KnownArgs, as as MatchSetupAssistantField, at as MaybeMessageError, au as ModalBlock, av as ModalCancelEventSource, M as ModalConfig, aw as ModalContainer, ax as ModalQueue, ay as ModalSize, az as NumberCleanValue, aA as NumberValueStore, aB as OnCloseModalFn, aC as OnNetworkErrorFn, aD as OnShowCreateRecordModalFn, aE as OnShowCreateRelatedRecordModalFn, aF as OnShowModalFn, aG as OpenCreateRecordFn, aH as OpenCreateRelatedRecordFn, a as PartialCustomObject, P as PartialEntity, aI as PartialRelatedObject, aJ as PatchReturnValue, f as PostFormDataFn, aK as PostFormDataPayload, aL as PostReturnValue, aM as Profile, aN as PromiseMap, aO as PromiseReject, aP as PromiseResolve, aQ as PromiseState, aR as PromptFn, g as PromptState, aS as PutReturnValue, aT as RefreshEntityFn, aU as ReleaseBlockingScriptHandler, k as RequestOptions, R as RequestWithErrorsResponse, aV as SelectCleanValue, s as SelectOption, aW as SelectValueStore, aX as SetInternalSessionDataFn, aY as SetupAssistantConfig, q as SetupAssistantField, l as ShowToastOptions, aZ as ShowViewInModalFn, m as ShowViewInModalOptions, S as StateChangePayload, a_ as TextValueStore, a$ as UnknownFunction, b0 as UploadFileData, b1 as UploadFileFn, b2 as UserConfig, b3 as ValueStore, W as WorkerContextArgs, b4 as modalSize } from './ThirdPartyScript-BkCjYWLd.js';
3
- import { c as CommonPluginDefinition } from './automation-BuZbZjRB.js';
4
- export { e as AuthorizeEvent, A as AutomationStepConfig, B as BaseEvent, f as CalendarDefinition, g as CalendarScriptReturnData, C as CalendarSourceConfig, h as CalendarSourceMap, i as CalendarSources, j as CloseModalRequestEvent, b as CommonExecutionPlugin, k as CommunicateEvent, l as CompleteSetupRequestEvent, m as ConsoleLogEvent, n as CopyToClipboardEvent, o as CreateFileIdFn, D as DataAdornmentConfig, p as DoneEvent, q as DynamicPromptRequestEvent, E as ErrorEvent, r as ExecuteCalendarSourceScript, s as ExecuteFloatingFrameScript, F as FloatingFrameConfig, t as FloatingFrameEmployeeConfig, u as FrameQuadrant, G as GetPendingCacheCountFn, H as HideEvent, v as HostCompleteSetupFn, I as IframeOutputEvent, w as InstallThirdPartyScriptRequestEvent, x as InvalidateCacheFn, K as KizenFile, M as MessageEventData, y as MinimizedConfig, O as OnClearToastsFn, z as OnCompleteSetupFn, J as OnConsoleLogFn, L as OnNetworkRequestFn, N as OnRunEventScriptFn, P as OnShowToastFn, Q as OpenCreateRecordModalRequestEvent, S as OpenCreateRelatedRecordModalRequestEvent, U as OpenWindowEvent, V as PerformKizenFileUploadFn, W as PostFormDataRequestEvent, X as PromptRequestEvent, Y as QueryRequestEvent, Z as RecipientConfig, _ as RefreshEntityEvent, $ as RefreshTimelineEvent, a0 as RequestableQueryMethods, R as RoutablePageConfig, a as RouteScriptConfig, a1 as RunEventScriptEvent, d as RunScriptOptions, a2 as SchemaValidation, a3 as SetStateEvent, a4 as ShowEvent, a5 as ShowToastEvent, a6 as ShowViewInModalRequestEvent, a7 as TerminatorContent, a8 as Terminators, T as ToolbarItemConfig, a9 as UIOutputEvent, aa as UpdateSessionDataEvent, ab as UploadFilePayload, ac as UploadFileRequestEvent, ad as WindowPosition } from './automation-BuZbZjRB.js';
1
+ import { U as UnknownJSON, b as PartialUser, c as PartialTeamMember, d as PartialBusiness, e as PartialClientObject, i as PartialLocation } from './ThirdPartyScript-DxPk6YJY.js';
2
+ export { t as ApiKeyValueStore, r as AppPlugin, u as AppPlugins, A as Args, v as AssistantConfigAction, w as AssistantField, x as AssistantLink, B as BaseAPI, y as BooleanCleanValue, z as BooleanValueStore, E as ButtonConfig, F as CleanValueStore, H as CleanValueStoreType, K as CloseModalFn, L as CompleteSetupFn, N as CompleteSetupLevel, j as CompleteSetupOptions, O as ConfigService, o as ConsoleBridge, Q as ConsoleLogLevel, V as CreateRecordModalQueue, X as CreateRelatedRecordModalQueue, C as CurrentUser, Y as CurriedCloseModalFn, Z as CurriedCompleteSetupFn, _ as CurriedDynamicPromptFn, $ as CurriedInstallThirdPartyScriptFn, a0 as CurriedKizenRequestFn, a1 as CurriedOpenCreateRecordFn, a2 as CurriedOpenCreateRelatedRecordFn, a3 as CurriedPostFormDataFn, a4 as CurriedPromptFn, a5 as CurriedRefreshEntityFn, a6 as CurriedShowViewInModalFn, a7 as CurriedUploadFileFn, a8 as CustomObjectCleanValue, a9 as CustomObjectValueStore, D as DataCache, aa as DataCacheEntry, ab as DeleteReturnValue, n as DynamicPromptConfig, ac as DynamicPromptFn, ad as EmployeeConfig, ae as ErrorHandler, af as ErrorResponse, ag as FieldCleanValue, ah as FieldValueStore, G as GetOptions, ai as GetReturnValue, p as IncludeOption, aj as InstallThirdPartyScriptFn, I as Instance, h as InternalSessionData, ak as JSONArray, al as JSONObject, am as JSONPrimitive, J as JSONValue, an as KizenConfig, ao as KizenNetworkResponse, ap as KizenProxySuccessResponse, aq as KizenRequestFn, ar as KizenRequestFnHandler, as as KnownArgs, at as MatchSetupAssistantField, au as MaybeMessageError, av as ModalBlock, aw as ModalCancelEventSource, M as ModalConfig, ax as ModalContainer, ay as ModalQueue, az as ModalSize, aA as NumberCleanValue, aB as NumberValueStore, aC as OnCloseModalFn, aD as OnNetworkErrorFn, aE as OnShowCreateRecordModalFn, aF as OnShowCreateRelatedRecordModalFn, aG as OnShowModalFn, aH as OpenCreateRecordFn, aI as OpenCreateRelatedRecordFn, a as PartialCustomObject, P as PartialEntity, aJ as PartialRelatedObject, aK as PatchReturnValue, f as PostFormDataFn, aL as PostFormDataPayload, aM as PostReturnValue, aN as Profile, aO as PromiseMap, aP as PromiseReject, aQ as PromiseResolve, aR as PromiseState, aS as PromptFn, g as PromptState, aT as PutReturnValue, aU as RadioCleanValue, aV as RadioValueStore, aW as RefreshEntityFn, aX as ReleaseBlockingScriptHandler, k as RequestOptions, R as RequestWithErrorsResponse, aY as SelectCleanValue, s as SelectOption, aZ as SelectValueStore, a_ as SetInternalSessionDataFn, a$ as SetupAssistantConfig, q as SetupAssistantField, l as ShowToastOptions, b0 as ShowViewInModalFn, m as ShowViewInModalOptions, S as StateChangePayload, b1 as TextValueStore, b2 as UnknownFunction, b3 as UploadFileData, b4 as UploadFileFn, b5 as UserConfig, b6 as ValueStore, W as WorkerContextArgs, b7 as modalSize } from './ThirdPartyScript-DxPk6YJY.js';
3
+ import { c as CommonPluginDefinition } from './automation-WGLB_R74.js';
4
+ export { e as AuthorizeEvent, A as AutomationStepConfig, B as BaseEvent, f as CalendarDefinition, g as CalendarScriptReturnData, C as CalendarSourceConfig, h as CalendarSourceMap, i as CalendarSources, j as CloseModalRequestEvent, b as CommonExecutionPlugin, k as CommunicateEvent, l as CompleteSetupRequestEvent, m as ConsoleLogEvent, n as CopyToClipboardEvent, o as CreateFileIdFn, D as DataAdornmentConfig, p as DoneEvent, q as DynamicPromptRequestEvent, E as ErrorEvent, r as ExecuteCalendarSourceScript, s as ExecuteFloatingFrameScript, F as FloatingFrameConfig, t as FloatingFrameEmployeeConfig, u as FrameQuadrant, G as GetPendingCacheCountFn, H as HideEvent, v as HostCompleteSetupFn, I as IframeOutputEvent, w as InstallThirdPartyScriptRequestEvent, x as InvalidateCacheFn, K as KizenFile, M as MessageEventData, y as MinimizedConfig, O as OnClearToastsFn, z as OnCompleteSetupFn, J as OnConsoleLogFn, L as OnNetworkRequestFn, N as OnRunEventScriptFn, P as OnShowToastFn, Q as OpenCreateRecordModalRequestEvent, S as OpenCreateRelatedRecordModalRequestEvent, U as OpenWindowEvent, V as PerformKizenFileUploadFn, W as PostFormDataRequestEvent, X as PromptRequestEvent, Y as QueryRequestEvent, Z as RecipientConfig, _ as RefreshEntityEvent, $ as RefreshTimelineEvent, a0 as RequestableQueryMethods, R as RoutablePageConfig, a as RouteScriptConfig, a1 as RunEventScriptEvent, d as RunScriptOptions, a2 as SchemaValidation, a3 as SetStateEvent, a4 as ShowEvent, a5 as ShowToastEvent, a6 as ShowViewInModalRequestEvent, a7 as TerminatorContent, a8 as Terminators, T as ToolbarItemConfig, a9 as UIOutputEvent, aa as UpdateSessionDataEvent, ab as UploadFilePayload, ac as UploadFileRequestEvent, ad as WindowPosition } from './automation-WGLB_R74.js';
5
5
  export { H as HideConfig, S as ShowConfig } from './floatingFrames-BzaoL7cq.js';
6
- export { B as BlockConfig, a as BlockType, E as ExecuteGenericScript, G as GenericPluginConfig } from './blocks-1HdzUin7.js';
6
+ export { B as BlockConfig, a as BlockType, E as ExecuteGenericScript, G as GenericPluginConfig } from './blocks-BOnF4OcC.js';
7
7
  import 'react';
8
8
  import './frames-AOHUyPDP.js';
9
9
 
package/dist/util.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { i as PartialLocation, aY as SetupAssistantConfig, b3 as ValueStore, E as CleanValueStore, u as AssistantConfigAction, v as AssistantField, b5 as KizenRequestError, U as UnknownJSON, an as KizenNetworkResponse, ao as KizenProxySuccessResponse } from './ThirdPartyScript-BkCjYWLd.js';
2
- export { G as GetParamFunction, R as RemovedHTML, f as forceQualifiedUrl, g as getDisabledValue, a as getEnabledState, b as getLinkValue, c as getPluginSafeHTML, d as getQrCodeValue, m as mergeConfig, p as pluginMapper, r as reduceEnabledResults, e as replaceConfigValues } from './values-08CsQDfa.js';
1
+ import { i as PartialLocation, a$ as SetupAssistantConfig, b6 as ValueStore, F as CleanValueStore, w as AssistantField, v as AssistantConfigAction, b8 as KizenRequestError, U as UnknownJSON, ao as KizenNetworkResponse, ap as KizenProxySuccessResponse } from './ThirdPartyScript-DxPk6YJY.js';
2
+ export { G as GetParamFunction, R as RemovedHTML, f as flattenReservedState, a as forceQualifiedUrl, g as getDisabledValue, b as getEnabledState, c as getLinkValue, d as getPluginSafeHTML, e as getQrCodeValue, m as mergeConfig, p as pluginMapper, r as reduceEnabledResults, h as replaceConfigValues } from './values-ClHf3SXM.js';
3
3
  import 'react';
4
4
  import './frames-AOHUyPDP.js';
5
- import './automation-BuZbZjRB.js';
5
+ import './automation-WGLB_R74.js';
6
6
  import './floatingFrames-BzaoL7cq.js';
7
7
  import 'dompurify';
8
8
 
@@ -16,6 +16,7 @@ declare const findMatchingAction: (availableActions: {
16
16
  }[], apiName?: string) => unknown;
17
17
 
18
18
  declare const getFieldFromAction: (action: AssistantConfigAction) => AssistantField;
19
+ declare const getAllNestedInputsFromConfig: (config: SetupAssistantConfig, parentWhen?: string) => AssistantField[];
19
20
  declare const cleanConfig: (setupAssistantConfig: SetupAssistantConfig, configValues: Record<string, ValueStore>) => CleanValueStore;
20
21
 
21
22
  declare const getHash: (str?: string) => number;
@@ -35,14 +36,35 @@ declare const handleKizenNetworkResponse: (originalResponse: KizenNetworkRespons
35
36
  type ActionsToLink = Record<string, ValueStore & {
36
37
  menuFlags?: Record<string, boolean>;
37
38
  }>;
38
- declare const getProcessedAssistantConfig: (currentAssistantConfig: Record<string, ValueStore | undefined>, setupAssistantConfig: SetupAssistantConfig) => {
39
+ interface SecretToCreate {
40
+ fieldKey: string;
41
+ secretName: string;
42
+ value: string;
43
+ }
44
+ interface SaveSecretParams {
45
+ pluginApiName: string;
46
+ secretName: string;
47
+ value: string;
48
+ }
49
+ type SaveSecretFn = (params: SaveSecretParams) => Promise<void>;
50
+ interface ProcessAssistantConfigOptions {
51
+ /** Required together with `saveSecret` - identifies the plugin each secret belongs to. */
52
+ pluginApiName?: string;
53
+ includedKeys?: string[];
54
+ /** When provided, each fresh api_key value is persisted via this callback before it's
55
+ * stripped from the returned config, so callers don't need a second pass over
56
+ * `secretsToCreate` (which is still returned, for callers that persist it themselves). */
57
+ saveSecret?: SaveSecretFn;
58
+ }
59
+ declare const getProcessedAssistantConfig: (currentAssistantConfig: Record<string, ValueStore | undefined>, setupAssistantConfig: SetupAssistantConfig, options?: ProcessAssistantConfigOptions) => Promise<{
39
60
  partialNewConfig: {
40
61
  __kizen_setup_assistant_values: Record<string, ValueStore>;
41
62
  __kizen_setup_assistant_hash: number;
42
63
  __kizen_clean_config: CleanValueStore;
43
64
  };
44
65
  actionsToLink: ActionsToLink;
45
- };
66
+ secretsToCreate: SecretToCreate[];
67
+ }>;
46
68
 
47
69
  declare const getActionContainerKey: (actionApiName: string) => string;
48
70
  declare const getActionMenuHeadingKey: (actionApiName: string) => string;
@@ -50,4 +72,4 @@ declare const getActionMenuFieldKey: (actionApiName: string, objectId: string) =
50
72
  declare const isActionMenuFieldKey: (key: string) => boolean;
51
73
  declare const splitActionFieldKey: (key: string) => string;
52
74
 
53
- export { KizenRequestError, cleanConfig, createKizenProxyError, createKizenRequestError, emitRouteChange, findMatchingAction, getActionContainerKey, getActionMenuFieldKey, getActionMenuHeadingKey, getFieldFromAction, getHash, getModifiedResponse, getPartialLocation, getProcessedAssistantConfig, getStableHash, handleKizenNetworkResponse, isActionMenuFieldKey, isFlagEnabled, splitActionFieldKey };
75
+ export { KizenRequestError, type SaveSecretFn, type SaveSecretParams, type SecretToCreate, cleanConfig, createKizenProxyError, createKizenRequestError, emitRouteChange, findMatchingAction, getActionContainerKey, getActionMenuFieldKey, getActionMenuHeadingKey, getAllNestedInputsFromConfig, getFieldFromAction, getHash, getModifiedResponse, getPartialLocation, getProcessedAssistantConfig, getStableHash, handleKizenNetworkResponse, isActionMenuFieldKey, isFlagEnabled, splitActionFieldKey };
package/dist/util.js CHANGED
@@ -1,9 +1,9 @@
1
- import { getHash } from './chunk-3DAAR76O.js';
2
- export { forceQualifiedUrl, getDisabledValue, getEnabledState, getHash, getLinkValue, getPluginSafeHTML, getQrCodeValue, getStableHash, isFlagEnabled, mergeConfig, pluginMapper, reduceEnabledResults, replaceConfigValues } from './chunk-3DAAR76O.js';
3
- export { emitRouteChange, findMatchingAction, getPartialLocation } from './chunk-VVPZFPDY.js';
4
- import { KizenRequestError, isActionMenuFieldKey, splitActionMenuFieldKey, getActionFieldKey, isActionFieldKey, cleanConfig } from './chunk-47DPBQKI.js';
5
- export { KizenRequestError, cleanConfig, getActionContainerKey, getActionMenuFieldKey, getActionMenuHeadingKey, getFieldFromAction, isActionMenuFieldKey, splitActionFieldKey } from './chunk-47DPBQKI.js';
6
- import './chunk-JI4XARBZ.js';
1
+ import { getHash } from './chunk-LCLZCF7I.js';
2
+ export { flattenReservedState, forceQualifiedUrl, getDisabledValue, getEnabledState, getHash, getLinkValue, getPluginSafeHTML, getQrCodeValue, getStableHash, isFlagEnabled, mergeConfig, pluginMapper, reduceEnabledResults, replaceConfigValues } from './chunk-LCLZCF7I.js';
3
+ export { emitRouteChange, findMatchingAction, getPartialLocation } from './chunk-BQWJS4RP.js';
4
+ import { KizenRequestError, isActionMenuFieldKey, splitActionMenuFieldKey, getActionFieldKey, isActionFieldKey, cleanConfig, getAllNestedInputsFromConfig } from './chunk-6I3JOYPF.js';
5
+ export { KizenRequestError, cleanConfig, getActionContainerKey, getActionMenuFieldKey, getActionMenuHeadingKey, getAllNestedInputsFromConfig, getFieldFromAction, isActionMenuFieldKey, splitActionFieldKey } from './chunk-6I3JOYPF.js';
6
+ import './chunk-TCAO3QD3.js';
7
7
  import './chunk-5WRI5ZAA.js';
8
8
 
9
9
  // src/util/network.ts
@@ -40,7 +40,41 @@ var handleKizenNetworkResponse = (originalResponse) => {
40
40
  };
41
41
 
42
42
  // src/util/assistant.ts
43
- var getProcessedAssistantConfig = (currentAssistantConfig, setupAssistantConfig) => {
43
+ var extractApiKeySecrets = (currentAssistantConfig, setupAssistantConfig, includedKeys) => {
44
+ const apiKeyFields = getAllNestedInputsFromConfig(setupAssistantConfig).filter(
45
+ (field) => field.type === "api_key"
46
+ );
47
+ if (apiKeyFields.length === 0) {
48
+ return { sanitized: currentAssistantConfig, secretsToCreate: [] };
49
+ }
50
+ const includedKeySet = includedKeys ? new Set(includedKeys) : void 0;
51
+ const sanitized = { ...currentAssistantConfig };
52
+ const secretsToCreate = [];
53
+ for (const field of apiKeyFields) {
54
+ const entry = currentAssistantConfig[field.key];
55
+ if (!entry) {
56
+ continue;
57
+ }
58
+ if (includedKeySet && !includedKeySet.has(field.key)) {
59
+ sanitized[field.key] = { type: "api_key", hasValue: Boolean(entry.hasValue) };
60
+ continue;
61
+ }
62
+ if (entry.value) {
63
+ if (!field.secret) {
64
+ throw new Error(`api_key field "${field.key}" does not declare a secret`);
65
+ }
66
+ secretsToCreate.push({ fieldKey: field.key, secretName: field.secret, value: entry.value });
67
+ sanitized[field.key] = { type: "api_key", hasValue: true };
68
+ } else {
69
+ sanitized[field.key] = {
70
+ type: "api_key",
71
+ hasValue: Boolean(entry.hasValue)
72
+ };
73
+ }
74
+ }
75
+ return { sanitized, secretsToCreate };
76
+ };
77
+ var getProcessedAssistantConfig = async (currentAssistantConfig, setupAssistantConfig, options) => {
44
78
  const actionsToLink = {};
45
79
  const configValuesToSet = {};
46
80
  const configKeys = Object.keys(currentAssistantConfig);
@@ -68,14 +102,32 @@ var getProcessedAssistantConfig = (currentAssistantConfig, setupAssistantConfig)
68
102
  configValuesToSet[configKey] = currentAssistantConfig[configKey];
69
103
  }
70
104
  }
71
- const cleanConfigValue = cleanConfig(setupAssistantConfig, configValuesToSet);
105
+ const { sanitized: sanitizedConfigValues, secretsToCreate } = extractApiKeySecrets(
106
+ configValuesToSet,
107
+ setupAssistantConfig,
108
+ options?.includedKeys
109
+ );
110
+ if (options?.saveSecret) {
111
+ for (const secret of secretsToCreate) {
112
+ await options.saveSecret({
113
+ pluginApiName: options.pluginApiName ?? "",
114
+ secretName: secret.secretName,
115
+ value: secret.value
116
+ });
117
+ }
118
+ }
119
+ const cleanConfigValue = cleanConfig(
120
+ setupAssistantConfig,
121
+ sanitizedConfigValues
122
+ );
72
123
  return {
73
124
  partialNewConfig: {
74
- __kizen_setup_assistant_values: configValuesToSet,
125
+ __kizen_setup_assistant_values: sanitizedConfigValues,
75
126
  __kizen_setup_assistant_hash: configHash,
76
127
  __kizen_clean_config: cleanConfigValue
77
128
  },
78
- actionsToLink
129
+ actionsToLink,
130
+ secretsToCreate
79
131
  };
80
132
  };
81
133
 
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/network.ts","../src/util/assistant.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import type { KizenNetworkResponse, KizenProxySuccessResponse } from '../types/request.js';\nimport type { UnknownJSON } from '../types/common.js';\nimport { KizenRequestError } from './errors.js';\n\nexport const getModifiedResponse = (\n response: KizenNetworkResponse<KizenProxySuccessResponse>,\n): {\n response: KizenNetworkResponse;\n upstreamStatus: number;\n upstreamResponse: unknown;\n} => {\n const modifiedResponse = {\n ...response,\n data: response.data.body ?? response.data,\n status: response.data.status_code ?? response.status,\n };\n\n return {\n response: modifiedResponse,\n upstreamStatus: modifiedResponse.status,\n upstreamResponse: response.data.body,\n };\n};\n\nexport const createKizenRequestError = (\n proxyStatus: number,\n upstreamStatus?: number,\n upstreamResponse?: UnknownJSON,\n): KizenRequestError => {\n return new KizenRequestError(proxyStatus, upstreamStatus, upstreamResponse);\n};\n\nexport const createKizenProxyError = (\n proxyStatus?: number,\n proxyError?: string,\n): KizenRequestError => {\n return new KizenRequestError(\n proxyStatus ?? 500,\n undefined,\n undefined,\n proxyError ?? 'An unknown error occurred in the proxy',\n );\n};\n\nexport const handleKizenNetworkResponse = (\n originalResponse: KizenNetworkResponse<KizenProxySuccessResponse>,\n): KizenNetworkResponse<UnknownJSON> => {\n const { response, upstreamStatus, upstreamResponse } = getModifiedResponse(originalResponse);\n\n const isErrorCode = upstreamStatus >= 400;\n\n if (isErrorCode) {\n // If we manually throw an error, it means the proxy request succeeded but the upstream request failed.\n // In this case, always indicate a 200 status for the proxy.\n throw createKizenRequestError(200, upstreamStatus, upstreamResponse as UnknownJSON);\n }\n\n return response as KizenNetworkResponse<UnknownJSON>;\n};\n","import type { CleanValueStore, SetupAssistantConfig, ValueStore } from '../types/modals.js';\nimport { cleanConfig } from '../workers/util.js';\nimport {\n getActionFieldKey,\n isActionFieldKey,\n isActionMenuFieldKey,\n splitActionMenuFieldKey,\n} from './assistantKeys.js';\nimport { getHash } from './encode.js';\n\ntype ActionsToLink = Record<string, ValueStore & { menuFlags?: Record<string, boolean> }>;\n\nexport const getProcessedAssistantConfig = (\n currentAssistantConfig: Record<string, ValueStore | undefined>,\n setupAssistantConfig: SetupAssistantConfig,\n): {\n partialNewConfig: {\n __kizen_setup_assistant_values: Record<string, ValueStore>;\n __kizen_setup_assistant_hash: number;\n __kizen_clean_config: CleanValueStore;\n };\n actionsToLink: ActionsToLink;\n} => {\n const actionsToLink: ActionsToLink = {};\n const configValuesToSet: Record<string, ValueStore> = {};\n\n const configKeys = Object.keys(currentAssistantConfig);\n const configHash = getHash(JSON.stringify(setupAssistantConfig));\n\n for (const configKey of configKeys) {\n if (isActionMenuFieldKey(configKey)) {\n const { actionApiName, objectId } = splitActionMenuFieldKey(configKey);\n\n if (actionApiName && objectId) {\n const actionKey = getActionFieldKey(actionApiName);\n\n const existing = actionsToLink[actionKey] ?? {};\n actionsToLink[actionKey] = {\n ...existing,\n menuFlags: {\n ...(existing.menuFlags ?? {}),\n [objectId]: Boolean(currentAssistantConfig[configKey]?.value),\n },\n };\n }\n } else if (isActionFieldKey(configKey)) {\n actionsToLink[configKey] = {\n ...actionsToLink[configKey],\n ...currentAssistantConfig[configKey],\n };\n } else if (currentAssistantConfig[configKey]) {\n configValuesToSet[configKey] = currentAssistantConfig[configKey];\n }\n }\n\n const cleanConfigValue = cleanConfig(setupAssistantConfig, configValuesToSet);\n\n return {\n partialNewConfig: {\n __kizen_setup_assistant_values: configValuesToSet,\n __kizen_setup_assistant_hash: configHash,\n __kizen_clean_config: cleanConfigValue,\n },\n actionsToLink,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/util/network.ts","../src/util/assistant.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import type { KizenNetworkResponse, KizenProxySuccessResponse } from '../types/request.js';\nimport type { UnknownJSON } from '../types/common.js';\nimport { KizenRequestError } from './errors.js';\n\nexport const getModifiedResponse = (\n response: KizenNetworkResponse<KizenProxySuccessResponse>,\n): {\n response: KizenNetworkResponse;\n upstreamStatus: number;\n upstreamResponse: unknown;\n} => {\n const modifiedResponse = {\n ...response,\n data: response.data.body ?? response.data,\n status: response.data.status_code ?? response.status,\n };\n\n return {\n response: modifiedResponse,\n upstreamStatus: modifiedResponse.status,\n upstreamResponse: response.data.body,\n };\n};\n\nexport const createKizenRequestError = (\n proxyStatus: number,\n upstreamStatus?: number,\n upstreamResponse?: UnknownJSON,\n): KizenRequestError => {\n return new KizenRequestError(proxyStatus, upstreamStatus, upstreamResponse);\n};\n\nexport const createKizenProxyError = (\n proxyStatus?: number,\n proxyError?: string,\n): KizenRequestError => {\n return new KizenRequestError(\n proxyStatus ?? 500,\n undefined,\n undefined,\n proxyError ?? 'An unknown error occurred in the proxy',\n );\n};\n\nexport const handleKizenNetworkResponse = (\n originalResponse: KizenNetworkResponse<KizenProxySuccessResponse>,\n): KizenNetworkResponse<UnknownJSON> => {\n const { response, upstreamStatus, upstreamResponse } = getModifiedResponse(originalResponse);\n\n const isErrorCode = upstreamStatus >= 400;\n\n if (isErrorCode) {\n // If we manually throw an error, it means the proxy request succeeded but the upstream request failed.\n // In this case, always indicate a 200 status for the proxy.\n throw createKizenRequestError(200, upstreamStatus, upstreamResponse as UnknownJSON);\n }\n\n return response as KizenNetworkResponse<UnknownJSON>;\n};\n","import type {\n ApiKeyValueStore,\n AssistantField,\n CleanValueStore,\n SetupAssistantConfig,\n ValueStore,\n} from '../types/modals.js';\nimport { cleanConfig, getAllNestedInputsFromConfig } from '../workers/util.js';\nimport {\n getActionFieldKey,\n isActionFieldKey,\n isActionMenuFieldKey,\n splitActionMenuFieldKey,\n} from './assistantKeys.js';\nimport { getHash } from './encode.js';\n\ntype ActionsToLink = Record<string, ValueStore & { menuFlags?: Record<string, boolean> }>;\n\nexport interface SecretToCreate {\n fieldKey: string;\n secretName: string;\n value: string;\n}\n\nexport interface SaveSecretParams {\n pluginApiName: string;\n secretName: string;\n value: string;\n}\n\nexport type SaveSecretFn = (params: SaveSecretParams) => Promise<void>;\n\ninterface ExtractedApiKeySecrets {\n sanitized: Record<string, ValueStore | undefined>;\n secretsToCreate: SecretToCreate[];\n}\n\nconst extractApiKeySecrets = (\n currentAssistantConfig: Record<string, ValueStore | undefined>,\n setupAssistantConfig: SetupAssistantConfig,\n includedKeys?: string[],\n): ExtractedApiKeySecrets => {\n const apiKeyFields = getAllNestedInputsFromConfig(setupAssistantConfig).filter(\n (field): field is AssistantField & { type: 'api_key' } => field.type === 'api_key',\n );\n\n if (apiKeyFields.length === 0) {\n return { sanitized: currentAssistantConfig, secretsToCreate: [] };\n }\n\n const includedKeySet = includedKeys ? new Set(includedKeys) : undefined;\n const sanitized = { ...currentAssistantConfig };\n const secretsToCreate: SecretToCreate[] = [];\n\n for (const field of apiKeyFields) {\n const entry = currentAssistantConfig[field.key] as ApiKeyValueStore | undefined;\n\n if (!entry) {\n continue;\n }\n\n // Drop the plaintext value while keeping hasValue, so the field doesn't\n // look empty if/when it's shown again.\n if (includedKeySet && !includedKeySet.has(field.key)) {\n sanitized[field.key] = { type: 'api_key', hasValue: Boolean(entry.hasValue) };\n continue;\n }\n\n if (entry.value) {\n if (!field.secret) {\n throw new Error(`api_key field \"${field.key}\" does not declare a secret`);\n }\n\n secretsToCreate.push({ fieldKey: field.key, secretName: field.secret, value: entry.value });\n sanitized[field.key] = { type: 'api_key', hasValue: true };\n } else {\n sanitized[field.key] = {\n type: 'api_key',\n hasValue: Boolean(entry.hasValue),\n };\n }\n }\n\n return { sanitized, secretsToCreate };\n};\n\nexport interface ProcessAssistantConfigOptions {\n /** Required together with `saveSecret` - identifies the plugin each secret belongs to. */\n pluginApiName?: string;\n includedKeys?: string[];\n /** When provided, each fresh api_key value is persisted via this callback before it's\n * stripped from the returned config, so callers don't need a second pass over\n * `secretsToCreate` (which is still returned, for callers that persist it themselves). */\n saveSecret?: SaveSecretFn;\n}\n\nexport const getProcessedAssistantConfig = async (\n currentAssistantConfig: Record<string, ValueStore | undefined>,\n setupAssistantConfig: SetupAssistantConfig,\n options?: ProcessAssistantConfigOptions,\n): Promise<{\n partialNewConfig: {\n __kizen_setup_assistant_values: Record<string, ValueStore>;\n __kizen_setup_assistant_hash: number;\n __kizen_clean_config: CleanValueStore;\n };\n actionsToLink: ActionsToLink;\n secretsToCreate: SecretToCreate[];\n}> => {\n const actionsToLink: ActionsToLink = {};\n const configValuesToSet: Record<string, ValueStore> = {};\n\n const configKeys = Object.keys(currentAssistantConfig);\n const configHash = getHash(JSON.stringify(setupAssistantConfig));\n\n for (const configKey of configKeys) {\n if (isActionMenuFieldKey(configKey)) {\n const { actionApiName, objectId } = splitActionMenuFieldKey(configKey);\n\n if (actionApiName && objectId) {\n const actionKey = getActionFieldKey(actionApiName);\n\n const existing = actionsToLink[actionKey] ?? {};\n actionsToLink[actionKey] = {\n ...existing,\n menuFlags: {\n ...(existing.menuFlags ?? {}),\n [objectId]: Boolean(currentAssistantConfig[configKey]?.value),\n },\n };\n }\n } else if (isActionFieldKey(configKey)) {\n actionsToLink[configKey] = {\n ...actionsToLink[configKey],\n ...currentAssistantConfig[configKey],\n };\n } else if (currentAssistantConfig[configKey]) {\n configValuesToSet[configKey] = currentAssistantConfig[configKey];\n }\n }\n\n const { sanitized: sanitizedConfigValues, secretsToCreate } = extractApiKeySecrets(\n configValuesToSet,\n setupAssistantConfig,\n options?.includedKeys,\n );\n\n if (options?.saveSecret) {\n for (const secret of secretsToCreate) {\n await options.saveSecret({\n pluginApiName: options.pluginApiName ?? '',\n secretName: secret.secretName,\n value: secret.value,\n });\n }\n }\n\n const cleanConfigValue = cleanConfig(\n setupAssistantConfig,\n sanitizedConfigValues as Record<string, ValueStore>,\n );\n\n return {\n partialNewConfig: {\n __kizen_setup_assistant_values: sanitizedConfigValues as Record<string, ValueStore>,\n __kizen_setup_assistant_hash: configHash,\n __kizen_clean_config: cleanConfigValue,\n },\n actionsToLink,\n secretsToCreate,\n };\n};\n"]}
@@ -1,6 +1,6 @@
1
- import { p as IncludeOption, U as UnknownJSON, q as SetupAssistantField, r as AppPlugin } from './ThirdPartyScript-BkCjYWLd.js';
1
+ import { p as IncludeOption, J as JSONValue, U as UnknownJSON, q as SetupAssistantField, r as AppPlugin } from './ThirdPartyScript-DxPk6YJY.js';
2
2
  import { B as BuildIframeURLWithProxyOptions } from './frames-AOHUyPDP.js';
3
- import { F as FloatingFrameConfig, R as RoutablePageConfig, D as DataAdornmentConfig, T as ToolbarItemConfig, a as RouteScriptConfig, C as CalendarSourceConfig, A as AutomationStepConfig } from './automation-BuZbZjRB.js';
3
+ import { F as FloatingFrameConfig, R as RoutablePageConfig, D as DataAdornmentConfig, T as ToolbarItemConfig, a as RouteScriptConfig, C as CalendarSourceConfig, A as AutomationStepConfig } from './automation-WGLB_R74.js';
4
4
  import { RemovedAttribute, RemovedElement } from 'dompurify';
5
5
 
6
6
  type AllowedConfig = FloatingFrameConfig | RoutablePageConfig | DataAdornmentConfig | ToolbarItemConfig | RouteScriptConfig | CalendarSourceConfig | AutomationStepConfig;
@@ -12,6 +12,7 @@ declare const pluginMapper: <T extends AllowedConfig>(config: T, apiName: string
12
12
  };
13
13
  declare const getDisabledValue: (type?: string) => false | undefined;
14
14
  declare const mergeConfig: (cleanConfig: Record<string, UnknownJSON>, disabledFieldKeys: string[], rawConfig: Record<string, UnknownJSON>, setupAssistantFields?: SetupAssistantField[]) => Record<string, UnknownJSON>;
15
+ declare const flattenReservedState: (plan?: Record<string, Record<string, JSONValue>>, entitlements?: Record<string, JSONValue>) => Record<string, UnknownJSON>;
15
16
  declare const replaceConfigValues: (when?: string) => string;
16
17
  declare const getEnabledState: (when: string | undefined, state: Record<string, UnknownJSON>) => Promise<boolean>;
17
18
  declare const reduceEnabledResults: (results: {
@@ -29,4 +30,4 @@ declare const getPluginSafeHTML: (html?: string, pluginApiName?: string, options
29
30
  removed: RemovedHTML[];
30
31
  };
31
32
 
32
- export { type GetParamFunction as G, type RemovedHTML as R, getEnabledState as a, getLinkValue as b, getPluginSafeHTML as c, getQrCodeValue as d, replaceConfigValues as e, forceQualifiedUrl as f, getDisabledValue as g, mergeConfig as m, pluginMapper as p, reduceEnabledResults as r };
33
+ export { type GetParamFunction as G, type RemovedHTML as R, forceQualifiedUrl as a, getEnabledState as b, getLinkValue as c, getPluginSafeHTML as d, getQrCodeValue as e, flattenReservedState as f, getDisabledValue as g, replaceConfigValues as h, mergeConfig as m, pluginMapper as p, reduceEnabledResults as r };
@@ -1,9 +1,9 @@
1
- import { WorkerPromise } from '../chunk-E6OXPHFB.js';
2
- import { buildCodeRunnerFunction } from '../chunk-VVPZFPDY.js';
3
- import { BaseWorkerContext } from '../chunk-6ADL5WHV.js';
4
- import { dynamicPromptHandler, promptHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-47DPBQKI.js';
5
- import '../chunk-IKDWO7WZ.js';
6
- import { ACTIONS } from '../chunk-JI4XARBZ.js';
1
+ import { WorkerPromise } from '../chunk-MRX2WNJ3.js';
2
+ import { buildCodeRunnerFunction } from '../chunk-BQWJS4RP.js';
3
+ import { BaseWorkerContext } from '../chunk-6SKBFHYX.js';
4
+ import { dynamicPromptHandler, promptHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-6I3JOYPF.js';
5
+ import '../chunk-KUBP4VBY.js';
6
+ import { ACTIONS } from '../chunk-TCAO3QD3.js';
7
7
  import '../chunk-5WRI5ZAA.js';
8
8
 
9
9
  // src/workers/calendarSource.worker.ts
@@ -1,10 +1,10 @@
1
- import { FloatingFrameWorkerContext } from '../chunk-ZO2FK25Z.js';
2
- import { WorkerPromise } from '../chunk-E6OXPHFB.js';
3
- import { buildCodeRunnerFunction } from '../chunk-VVPZFPDY.js';
4
- import '../chunk-6ADL5WHV.js';
5
- import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-47DPBQKI.js';
6
- import '../chunk-IKDWO7WZ.js';
7
- import { ACTIONS } from '../chunk-JI4XARBZ.js';
1
+ import { FloatingFrameWorkerContext } from '../chunk-N2DKKXXN.js';
2
+ import { WorkerPromise } from '../chunk-MRX2WNJ3.js';
3
+ import { buildCodeRunnerFunction } from '../chunk-BQWJS4RP.js';
4
+ import '../chunk-6SKBFHYX.js';
5
+ import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-6I3JOYPF.js';
6
+ import '../chunk-KUBP4VBY.js';
7
+ import { ACTIONS } from '../chunk-TCAO3QD3.js';
8
8
  import '../chunk-5WRI5ZAA.js';
9
9
 
10
10
  // src/workers/floatingFrame.worker.ts
@@ -1,9 +1,9 @@
1
- import { WorkerPromise } from '../chunk-E6OXPHFB.js';
2
- import { buildCodeRunnerFunction } from '../chunk-VVPZFPDY.js';
3
- import { BaseWorkerContext } from '../chunk-6ADL5WHV.js';
4
- import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-47DPBQKI.js';
5
- import '../chunk-IKDWO7WZ.js';
6
- import { ACTIONS } from '../chunk-JI4XARBZ.js';
1
+ import { WorkerPromise } from '../chunk-MRX2WNJ3.js';
2
+ import { buildCodeRunnerFunction } from '../chunk-BQWJS4RP.js';
3
+ import { BaseWorkerContext } from '../chunk-6SKBFHYX.js';
4
+ import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-6I3JOYPF.js';
5
+ import '../chunk-KUBP4VBY.js';
6
+ import { ACTIONS } from '../chunk-TCAO3QD3.js';
7
7
  import '../chunk-5WRI5ZAA.js';
8
8
 
9
9
  // src/workers/generic.worker.ts
@@ -1,10 +1,10 @@
1
- import { RecordDetailWorkerContext } from '../chunk-IQF73DX4.js';
2
- import { WorkerPromise } from '../chunk-E6OXPHFB.js';
3
- import { buildCodeRunnerFunction } from '../chunk-VVPZFPDY.js';
4
- import '../chunk-6ADL5WHV.js';
5
- import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-47DPBQKI.js';
6
- import '../chunk-IKDWO7WZ.js';
7
- import { ACTIONS } from '../chunk-JI4XARBZ.js';
1
+ import { RecordDetailWorkerContext } from '../chunk-FZ5F6QPV.js';
2
+ import { WorkerPromise } from '../chunk-MRX2WNJ3.js';
3
+ import { buildCodeRunnerFunction } from '../chunk-BQWJS4RP.js';
4
+ import '../chunk-6SKBFHYX.js';
5
+ import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-6I3JOYPF.js';
6
+ import '../chunk-KUBP4VBY.js';
7
+ import { ACTIONS } from '../chunk-TCAO3QD3.js';
8
8
  import '../chunk-5WRI5ZAA.js';
9
9
 
10
10
  // src/workers/recordDetail.worker.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kizenapps/engine",
3
- "version": "1.9.3-bf7f7dc",
3
+ "version": "1.10.0-902e419",
4
4
  "description": "Run JavaScript plugin apps inside Web Workers with host ↔ worker messaging",
5
5
  "license": "GPL-3.0",
6
6
  "repository": {