@scenemesh/entity-engine-aimodule 1.0.0 → 1.0.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/components/ChatDialog/ChatDialog.d.ts +17 -0
- package/dist/components/ChatDialog/ChatDialog.d.ts.map +1 -0
- package/dist/components/ChatDialog/ChatDialog.js +346 -0
- package/dist/components/ChatDialog/ChatDialog.js.map +1 -0
- package/dist/components/DynamicUI/DynamicToolRenderer.d.ts +9 -0
- package/dist/components/DynamicUI/DynamicToolRenderer.d.ts.map +1 -0
- package/dist/components/DynamicUI/DynamicToolRenderer.js +114 -0
- package/dist/components/DynamicUI/DynamicToolRenderer.js.map +1 -0
- package/dist/components/DynamicUI/EntityEngineDynamicComponents.d.ts +75 -0
- package/dist/components/DynamicUI/EntityEngineDynamicComponents.d.ts.map +1 -0
- package/dist/components/DynamicUI/EntityEngineDynamicComponents.js +123 -0
- package/dist/components/DynamicUI/EntityEngineDynamicComponents.js.map +1 -0
- package/dist/components/DynamicUI/index.d.ts +12 -0
- package/dist/components/DynamicUI/index.d.ts.map +1 -0
- package/dist/components/DynamicUI/index.js +13 -0
- package/dist/components/DynamicUI/index.js.map +1 -0
- package/dist/components/FileViewer/FileViewer.d.ts +16 -0
- package/dist/components/FileViewer/FileViewer.d.ts.map +1 -0
- package/dist/components/FileViewer/FileViewer.js +158 -0
- package/dist/components/FileViewer/FileViewer.js.map +1 -0
- package/dist/components/GenerativeUI/PrebuiltComponents.d.ts +44 -0
- package/dist/components/GenerativeUI/PrebuiltComponents.d.ts.map +1 -0
- package/dist/components/GenerativeUI/PrebuiltComponents.js +77 -0
- package/dist/components/GenerativeUI/PrebuiltComponents.js.map +1 -0
- package/dist/components/MessageBubble/MessageBubble.d.ts +29 -0
- package/dist/components/MessageBubble/MessageBubble.d.ts.map +1 -0
- package/dist/components/MessageBubble/MessageBubble.js +222 -0
- package/dist/components/MessageBubble/MessageBubble.js.map +1 -0
- package/dist/components/ReasoningComponents/ReasoningDisplay.d.ts +26 -0
- package/dist/components/ReasoningComponents/ReasoningDisplay.d.ts.map +1 -0
- package/dist/components/ReasoningComponents/ReasoningDisplay.js +44 -0
- package/dist/components/ReasoningComponents/ReasoningDisplay.js.map +1 -0
- package/dist/components/index.d.ts +10 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +10 -0
- package/dist/components/index.js.map +1 -0
- package/dist/core/ai-core-manager.d.ts +221 -0
- package/dist/core/ai-core-manager.d.ts.map +1 -0
- package/dist/core/ai-core-manager.js +536 -0
- package/dist/core/ai-core-manager.js.map +1 -0
- package/dist/core/ai-core.d.ts +380 -0
- package/dist/core/ai-core.d.ts.map +1 -0
- package/dist/core/ai-core.js +297 -0
- package/dist/core/ai-core.js.map +1 -0
- package/dist/core/ai-embeddings.d.ts +204 -0
- package/dist/core/ai-embeddings.d.ts.map +1 -0
- package/dist/core/ai-embeddings.js +380 -0
- package/dist/core/ai-embeddings.js.map +1 -0
- package/dist/core/ai-provider.d.ts +265 -0
- package/dist/core/ai-provider.d.ts.map +1 -0
- package/dist/core/ai-provider.js +707 -0
- package/dist/core/ai-provider.js.map +1 -0
- package/dist/core/ai-settings.d.ts +289 -0
- package/dist/core/ai-settings.d.ts.map +1 -0
- package/dist/core/ai-settings.js +585 -0
- package/dist/core/ai-settings.js.map +1 -0
- package/dist/core/ai-structured.d.ts +198 -0
- package/dist/core/ai-structured.d.ts.map +1 -0
- package/dist/core/ai-structured.js +460 -0
- package/dist/core/ai-structured.js.map +1 -0
- package/dist/core/ai-tools.d.ts +378 -0
- package/dist/core/ai-tools.d.ts.map +1 -0
- package/dist/core/ai-tools.js +637 -0
- package/dist/core/ai-tools.js.map +1 -0
- package/dist/core/index.d.ts +47 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +75 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/system-prompt.d.ts +6 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +305 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core-index.d.ts +29 -1648
- package/dist/core-index.d.ts.map +1 -0
- package/dist/core-index.js +63 -99
- package/dist/core-index.js.map +1 -1
- package/dist/entity-module/ai.module.d.ts +48 -0
- package/dist/entity-module/ai.module.d.ts.map +1 -0
- package/dist/entity-module/ai.module.js +126 -0
- package/dist/entity-module/ai.module.js.map +1 -0
- package/dist/entity-module/index.d.ts +9 -0
- package/dist/entity-module/index.d.ts.map +1 -0
- package/dist/entity-module/index.js +9 -0
- package/dist/entity-module/index.js.map +1 -0
- package/dist/entity-module/models/ai-model.d.ts +3 -0
- package/dist/entity-module/models/ai-model.d.ts.map +1 -0
- package/dist/entity-module/models/ai-model.js +44 -0
- package/dist/entity-module/models/ai-model.js.map +1 -0
- package/dist/entity-module/models/index.d.ts +3 -0
- package/dist/entity-module/models/index.d.ts.map +1 -0
- package/dist/entity-module/models/index.js +6 -0
- package/dist/entity-module/models/index.js.map +1 -0
- package/dist/entity-module/module.json +8 -0
- package/dist/entity-module/renderers/ai-form-renderer.d.ts +3 -0
- package/dist/entity-module/renderers/ai-form-renderer.d.ts.map +1 -0
- package/dist/entity-module/renderers/ai-form-renderer.js +201 -0
- package/dist/entity-module/renderers/ai-form-renderer.js.map +1 -0
- package/dist/entity-module/renderers/ai-renderer.d.ts +3 -0
- package/dist/entity-module/renderers/ai-renderer.d.ts.map +1 -0
- package/dist/entity-module/renderers/ai-renderer.js +99 -0
- package/dist/entity-module/renderers/ai-renderer.js.map +1 -0
- package/dist/entity-module/renderers/index.d.ts +3 -0
- package/dist/entity-module/renderers/index.d.ts.map +1 -0
- package/dist/entity-module/renderers/index.js +3 -0
- package/dist/entity-module/renderers/index.js.map +1 -0
- package/dist/entity-module/servlets/ai-servlet.d.ts +15 -0
- package/dist/entity-module/servlets/ai-servlet.d.ts.map +1 -0
- package/dist/entity-module/servlets/ai-servlet.js +377 -0
- package/dist/entity-module/servlets/ai-servlet.js.map +1 -0
- package/dist/entity-module/servlets/index.d.ts +3 -0
- package/dist/entity-module/servlets/index.d.ts.map +1 -0
- package/dist/entity-module/servlets/index.js +6 -0
- package/dist/entity-module/servlets/index.js.map +1 -0
- package/dist/entity-module/views/ai-view.d.ts +3 -0
- package/dist/entity-module/views/ai-view.d.ts.map +1 -0
- package/dist/entity-module/views/ai-view.js +33 -0
- package/dist/entity-module/views/ai-view.js.map +1 -0
- package/dist/entity-module/views/index.d.ts +3 -0
- package/dist/entity-module/views/index.d.ts.map +1 -0
- package/dist/entity-module/views/index.js +6 -0
- package/dist/entity-module/views/index.js.map +1 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +10 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useChat.d.ts +13 -0
- package/dist/hooks/useChat.d.ts.map +1 -0
- package/dist/hooks/useChat.js +13 -0
- package/dist/hooks/useChat.js.map +1 -0
- package/dist/hooks/useCompletion.d.ts +17 -0
- package/dist/hooks/useCompletion.d.ts.map +1 -0
- package/dist/hooks/useCompletion.js +17 -0
- package/dist/hooks/useCompletion.js.map +1 -0
- package/dist/hooks/useObject.d.ts +16 -0
- package/dist/hooks/useObject.d.ts.map +1 -0
- package/dist/hooks/useObject.js +17 -0
- package/dist/hooks/useObject.js.map +1 -0
- package/dist/index.d.ts +42 -2876
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -1168
- package/dist/index.js.map +1 -1
- package/dist/tools/dynamic-tools/entity-query-tool.d.ts +15 -0
- package/dist/tools/dynamic-tools/entity-query-tool.d.ts.map +1 -0
- package/dist/tools/dynamic-tools/entity-query-tool.js +178 -0
- package/dist/tools/dynamic-tools/entity-query-tool.js.map +1 -0
- package/dist/tools/dynamic-tools/index.d.ts +8 -0
- package/dist/tools/dynamic-tools/index.d.ts.map +1 -0
- package/dist/tools/dynamic-tools/index.js +8 -0
- package/dist/tools/dynamic-tools/index.js.map +1 -0
- package/dist/tools/frontend-tools/index.d.ts +7 -0
- package/dist/tools/frontend-tools/index.d.ts.map +1 -0
- package/dist/tools/frontend-tools/index.js +7 -0
- package/dist/tools/frontend-tools/index.js.map +1 -0
- package/dist/tools/frontend-tools/record-tools.d.ts +48 -0
- package/dist/tools/frontend-tools/record-tools.d.ts.map +1 -0
- package/dist/tools/frontend-tools/record-tools.js +97 -0
- package/dist/tools/frontend-tools/record-tools.js.map +1 -0
- package/dist/tools/index.d.ts +217 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/static-tools/index.d.ts +9 -0
- package/dist/tools/static-tools/index.d.ts.map +1 -0
- package/dist/tools/static-tools/index.js +9 -0
- package/dist/tools/static-tools/index.js.map +1 -0
- package/dist/tools/static-tools/location-tool.d.ts +38 -0
- package/dist/tools/static-tools/location-tool.d.ts.map +1 -0
- package/dist/tools/static-tools/location-tool.js +97 -0
- package/dist/tools/static-tools/location-tool.js.map +1 -0
- package/dist/tools/static-tools/weather-tool.d.ts +19 -0
- package/dist/tools/static-tools/weather-tool.d.ts.map +1 -0
- package/dist/tools/static-tools/weather-tool.js +27 -0
- package/dist/tools/static-tools/weather-tool.js.map +1 -0
- package/dist/types/core-types.d.ts +183 -0
- package/dist/types/core-types.d.ts.map +1 -0
- package/dist/types/core-types.js +7 -0
- package/dist/types/core-types.js.map +1 -0
- package/dist/types/index.d.ts +50 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +31 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/ui-types.d.ts +434 -0
- package/dist/types/ui-types.d.ts.map +1 -0
- package/dist/types/ui-types.js +8 -0
- package/dist/types/ui-types.js.map +1 -0
- package/dist/ui/index.d.ts +30 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +67 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui-index.d.ts +12 -607
- package/dist/ui-index.d.ts.map +1 -0
- package/dist/ui-index.js +106 -2350
- package/dist/ui-index.js.map +1 -1
- package/dist/utils/index.d.ts +122 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +336 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/persistence.d.ts +99 -0
- package/dist/utils/persistence.d.ts.map +1 -0
- package/dist/utils/persistence.js +286 -0
- package/dist/utils/persistence.js.map +1 -0
- package/dist/utils/streaming.d.ts +144 -0
- package/dist/utils/streaming.d.ts.map +1 -0
- package/dist/utils/streaming.js +359 -0
- package/dist/utils/streaming.js.map +1 -0
- package/dist/utils/theme.d.ts +162 -0
- package/dist/utils/theme.d.ts.map +1 -0
- package/dist/utils/theme.js +211 -0
- package/dist/utils/theme.js.map +1 -0
- package/dist/utils/warnings.d.ts +77 -0
- package/dist/utils/warnings.d.ts.map +1 -0
- package/dist/utils/warnings.js +228 -0
- package/dist/utils/warnings.js.map +1 -0
- package/package.json +3 -2
- package/dist/ai-core-LBGYFGOK.mjs +0 -17
- package/dist/ai-core-LBGYFGOK.mjs.map +0 -1
- package/dist/ai-core-UGJWSCQN.js +0 -17
- package/dist/ai-core-UGJWSCQN.js.map +0 -1
- package/dist/ai-core-manager-B3Z34RHA.mjs +0 -9
- package/dist/ai-core-manager-B3Z34RHA.mjs.map +0 -1
- package/dist/ai-core-manager-W7SSDCG5.js +0 -9
- package/dist/ai-core-manager-W7SSDCG5.js.map +0 -1
- package/dist/ai-embeddings-5ED5LDXX.mjs +0 -17
- package/dist/ai-embeddings-5ED5LDXX.mjs.map +0 -1
- package/dist/ai-embeddings-WCXZMMTZ.js +0 -17
- package/dist/ai-embeddings-WCXZMMTZ.js.map +0 -1
- package/dist/ai-form-renderer-24IWNMX5.js +0 -233
- package/dist/ai-form-renderer-24IWNMX5.js.map +0 -1
- package/dist/ai-form-renderer-BORQABF2.mjs +0 -233
- package/dist/ai-form-renderer-BORQABF2.mjs.map +0 -1
- package/dist/ai-provider-3PSCVEEN.mjs +0 -17
- package/dist/ai-provider-3PSCVEEN.mjs.map +0 -1
- package/dist/ai-provider-WMPMVZFL.js +0 -17
- package/dist/ai-provider-WMPMVZFL.js.map +0 -1
- package/dist/ai-renderer-7WGGWH5D.mjs +0 -134
- package/dist/ai-renderer-7WGGWH5D.mjs.map +0 -1
- package/dist/ai-renderer-OILYWAJV.js +0 -134
- package/dist/ai-renderer-OILYWAJV.js.map +0 -1
- package/dist/ai-settings-DGCFPK3U.js +0 -15
- package/dist/ai-settings-DGCFPK3U.js.map +0 -1
- package/dist/ai-settings-DTXEAB64.mjs +0 -15
- package/dist/ai-settings-DTXEAB64.mjs.map +0 -1
- package/dist/ai-structured-EGZ26ZS4.mjs +0 -13
- package/dist/ai-structured-EGZ26ZS4.mjs.map +0 -1
- package/dist/ai-structured-N2FZLO4A.js +0 -13
- package/dist/ai-structured-N2FZLO4A.js.map +0 -1
- package/dist/ai-tools-B3R77HZ3.js +0 -19
- package/dist/ai-tools-B3R77HZ3.js.map +0 -1
- package/dist/ai-tools-JAPVYQGE.mjs +0 -19
- package/dist/ai-tools-JAPVYQGE.mjs.map +0 -1
- package/dist/ai.module-GAHVCBTP.js +0 -7
- package/dist/ai.module-GAHVCBTP.js.map +0 -1
- package/dist/ai.module-TTPMTPB3.mjs +0 -7
- package/dist/ai.module-TTPMTPB3.mjs.map +0 -1
- package/dist/chunk-25C2NRSD.mjs +0 -611
- package/dist/chunk-25C2NRSD.mjs.map +0 -1
- package/dist/chunk-4JQ7UOXH.js +0 -427
- package/dist/chunk-4JQ7UOXH.js.map +0 -1
- package/dist/chunk-6IUKES2L.js +0 -290
- package/dist/chunk-6IUKES2L.js.map +0 -1
- package/dist/chunk-COWPK7XN.mjs +0 -834
- package/dist/chunk-COWPK7XN.mjs.map +0 -1
- package/dist/chunk-CTEXPMVZ.js +0 -512
- package/dist/chunk-CTEXPMVZ.js.map +0 -1
- package/dist/chunk-DXQTHA75.js +0 -573
- package/dist/chunk-DXQTHA75.js.map +0 -1
- package/dist/chunk-DZFQ6I23.js +0 -72
- package/dist/chunk-DZFQ6I23.js.map +0 -1
- package/dist/chunk-J323UTPE.mjs +0 -650
- package/dist/chunk-J323UTPE.mjs.map +0 -1
- package/dist/chunk-LHNNALVF.js +0 -834
- package/dist/chunk-LHNNALVF.js.map +0 -1
- package/dist/chunk-O7SZSMXV.js +0 -1621
- package/dist/chunk-O7SZSMXV.js.map +0 -1
- package/dist/chunk-OTNOFOVW.js +0 -650
- package/dist/chunk-OTNOFOVW.js.map +0 -1
- package/dist/chunk-PRIGZEI4.mjs +0 -72
- package/dist/chunk-PRIGZEI4.mjs.map +0 -1
- package/dist/chunk-SBSZ3IPB.mjs +0 -573
- package/dist/chunk-SBSZ3IPB.mjs.map +0 -1
- package/dist/chunk-SXPA6SSD.mjs +0 -1621
- package/dist/chunk-SXPA6SSD.mjs.map +0 -1
- package/dist/chunk-T5A4KAVS.mjs +0 -512
- package/dist/chunk-T5A4KAVS.mjs.map +0 -1
- package/dist/chunk-TDRKKUNT.mjs +0 -357
- package/dist/chunk-TDRKKUNT.mjs.map +0 -1
- package/dist/chunk-TJFNODPE.js +0 -357
- package/dist/chunk-TJFNODPE.js.map +0 -1
- package/dist/chunk-V2SSI3SL.mjs +0 -427
- package/dist/chunk-V2SSI3SL.mjs.map +0 -1
- package/dist/chunk-X42L6MTY.mjs +0 -290
- package/dist/chunk-X42L6MTY.mjs.map +0 -1
- package/dist/chunk-YSVMY77H.js +0 -611
- package/dist/chunk-YSVMY77H.js.map +0 -1
- package/dist/core-ANYRS6EF.mjs +0 -73
- package/dist/core-ANYRS6EF.mjs.map +0 -1
- package/dist/core-K5K34DCS.js +0 -73
- package/dist/core-K5K34DCS.js.map +0 -1
- package/dist/core-index.d.mts +0 -1668
- package/dist/core-index.mjs +0 -101
- package/dist/core-index.mjs.map +0 -1
- package/dist/index.d.mts +0 -2911
- package/dist/index.mjs +0 -1177
- package/dist/index.mjs.map +0 -1
- package/dist/tools-352X7A6X.mjs +0 -366
- package/dist/tools-352X7A6X.mjs.map +0 -1
- package/dist/tools-YLEX6GNO.js +0 -366
- package/dist/tools-YLEX6GNO.js.map +0 -1
- package/dist/ui-index.d.mts +0 -627
- package/dist/ui-index.mjs +0 -2353
- package/dist/ui-index.mjs.map +0 -1
package/dist/tools-YLEX6GNO.js
DELETED
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
-
|
|
3
|
-
var _chunkYSVMY77Hjs = require('./chunk-YSVMY77H.js');
|
|
4
|
-
|
|
5
|
-
// src/tools/dynamic-tools/entity-query-tool.ts
|
|
6
|
-
var _zod = require('zod');
|
|
7
|
-
var toolsIntegration = new (0, _chunkYSVMY77Hjs.AIToolsIntegration)();
|
|
8
|
-
var entityQueryTool = toolsIntegration.createDynamicTool(
|
|
9
|
-
"Query entity data with basic operations like pagination, sorting, and filtering. Focused on data retrieval without analysis functionality.",
|
|
10
|
-
_zod.z.object({
|
|
11
|
-
modelName: _zod.z.string().describe("Entity model name, e.g.: ee-base-user (users), product (products), etc"),
|
|
12
|
-
displayMode: _zod.z.enum(["table", "list", "grid", "form", "kanban", "dashboard", "mastail"]).optional().default("table").describe("Display mode: table, list, grid, form, kanban, dashboard, or mastail (master-detail view)"),
|
|
13
|
-
baseObjectId: _zod.z.string().optional().describe("Entity object ID, used for form mode to display specific object"),
|
|
14
|
-
pageSize: _zod.z.number().optional().default(20).describe("Number of items per page, default 20"),
|
|
15
|
-
pageIndex: _zod.z.number().optional().default(0).describe("Page index, starting from 0"),
|
|
16
|
-
sortBy: _zod.z.record(_zod.z.string(), _zod.z.enum(["asc", "desc"])).optional().describe("Sort fields and directions"),
|
|
17
|
-
filters: _zod.z.record(_zod.z.string(), _zod.z.any()).optional().describe("Filter conditions")
|
|
18
|
-
}),
|
|
19
|
-
async (input, options) => {
|
|
20
|
-
try {
|
|
21
|
-
const validatedInput = validateAndParseInput(input);
|
|
22
|
-
const { modelName, displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = validatedInput;
|
|
23
|
-
return await executeEntityQuery(modelName, {
|
|
24
|
-
displayMode,
|
|
25
|
-
baseObjectId,
|
|
26
|
-
pageSize,
|
|
27
|
-
pageIndex,
|
|
28
|
-
sortBy,
|
|
29
|
-
filters
|
|
30
|
-
}, options);
|
|
31
|
-
} catch (error) {
|
|
32
|
-
console.error("Entity query tool execution error:", error);
|
|
33
|
-
return {
|
|
34
|
-
error: error instanceof Error ? error.message : "Query failed",
|
|
35
|
-
toolName: "entityQuery",
|
|
36
|
-
toolCallId: options.toolCallId,
|
|
37
|
-
executedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
38
|
-
_renderHint: {
|
|
39
|
-
componentType: "DynamicErrorDisplay",
|
|
40
|
-
errorType: "query_error",
|
|
41
|
-
errorDetails: error instanceof Error ? error.message : "Unknown error"
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
);
|
|
47
|
-
function validateAndParseInput(input) {
|
|
48
|
-
if (typeof input !== "object" || input === null) {
|
|
49
|
-
throw new Error("Invalid input: expected object");
|
|
50
|
-
}
|
|
51
|
-
const obj = input;
|
|
52
|
-
if (!obj.modelName || typeof obj.modelName !== "string") {
|
|
53
|
-
throw new Error("Invalid modelName: must be a string");
|
|
54
|
-
}
|
|
55
|
-
return {
|
|
56
|
-
modelName: obj.modelName,
|
|
57
|
-
displayMode: obj.displayMode || "table",
|
|
58
|
-
baseObjectId: obj.baseObjectId || void 0,
|
|
59
|
-
pageSize: obj.pageSize || 20,
|
|
60
|
-
pageIndex: obj.pageIndex || 0,
|
|
61
|
-
sortBy: obj.sortBy || { createdAt: "desc" },
|
|
62
|
-
filters: obj.filters || {}
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
async function executeEntityQuery(modelName, queryOptions, options) {
|
|
66
|
-
const { displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = queryOptions;
|
|
67
|
-
const tRPCInput = encodeURIComponent(JSON.stringify({
|
|
68
|
-
"0": {
|
|
69
|
-
"json": {
|
|
70
|
-
modelName,
|
|
71
|
-
pageSize,
|
|
72
|
-
pageIndex,
|
|
73
|
-
sortBy,
|
|
74
|
-
where: filters
|
|
75
|
-
// Convert filter conditions to where clause
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}));
|
|
79
|
-
const response = await fetch(`http://localhost:8082/api/ee/trpc/model.listObjects?batch=1&input=${tRPCInput}`, {
|
|
80
|
-
method: "GET",
|
|
81
|
-
headers: {
|
|
82
|
-
"Content-Type": "application/json"
|
|
83
|
-
},
|
|
84
|
-
signal: options.abortSignal
|
|
85
|
-
});
|
|
86
|
-
if (!response.ok) {
|
|
87
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
88
|
-
}
|
|
89
|
-
const tRPCResult = await response.json();
|
|
90
|
-
const result = _optionalChain([tRPCResult, 'access', _ => _[0], 'optionalAccess', _2 => _2.result, 'optionalAccess', _3 => _3.data, 'optionalAccess', _4 => _4.json]) || {};
|
|
91
|
-
const rawEntityData = result.data || [];
|
|
92
|
-
const totalCount = result.count || 0;
|
|
93
|
-
const entityData = rawEntityData.map((item) => ({
|
|
94
|
-
id: item.id,
|
|
95
|
-
modelName: item.modelName,
|
|
96
|
-
createdAt: item.createdAt,
|
|
97
|
-
updatedAt: item.updatedAt,
|
|
98
|
-
isDeleted: item.isDeleted,
|
|
99
|
-
...item.values
|
|
100
|
-
// Spread entity data values
|
|
101
|
-
}));
|
|
102
|
-
return {
|
|
103
|
-
toolName: "entityQuery",
|
|
104
|
-
modelName,
|
|
105
|
-
displayMode,
|
|
106
|
-
data: entityData,
|
|
107
|
-
totalCount,
|
|
108
|
-
baseObjectId,
|
|
109
|
-
// Add baseObjectId to response for form mode
|
|
110
|
-
pagination: {
|
|
111
|
-
pageSize,
|
|
112
|
-
pageIndex,
|
|
113
|
-
totalPages: Math.ceil(totalCount / pageSize),
|
|
114
|
-
hasNextPage: pageIndex < Math.ceil(totalCount / pageSize) - 1,
|
|
115
|
-
hasPreviousPage: pageIndex > 0
|
|
116
|
-
},
|
|
117
|
-
query: {
|
|
118
|
-
sortBy,
|
|
119
|
-
filters,
|
|
120
|
-
appliedFilters: Object.keys(filters).length
|
|
121
|
-
},
|
|
122
|
-
executedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
123
|
-
toolCallId: options.toolCallId,
|
|
124
|
-
// Provide rendering hints for dynamic component renderers
|
|
125
|
-
_renderHint: {
|
|
126
|
-
componentType: getDynamicComponentType(displayMode),
|
|
127
|
-
preferredLayout: displayMode,
|
|
128
|
-
features: getDisplayModeFeatures(displayMode),
|
|
129
|
-
dataSchema: entityData.length > 0 ? Object.keys(entityData[0]) : [],
|
|
130
|
-
capabilities: ["pagination", "sorting", "filtering"]
|
|
131
|
-
// 只提供基础功能
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
function getDynamicComponentType(displayMode) {
|
|
136
|
-
const mapping = {
|
|
137
|
-
"table": "DynamicDataTable",
|
|
138
|
-
"list": "DynamicDataList",
|
|
139
|
-
"grid": "DynamicDataGrid",
|
|
140
|
-
"form": "DynamicEntityForm",
|
|
141
|
-
"kanban": "DynamicEntityKanban",
|
|
142
|
-
"dashboard": "DynamicEntityDashboard",
|
|
143
|
-
"mastail": "DynamicEntityMastail"
|
|
144
|
-
};
|
|
145
|
-
return mapping[displayMode] || "DynamicDataTable";
|
|
146
|
-
}
|
|
147
|
-
function getDisplayModeFeatures(displayMode) {
|
|
148
|
-
const featureMap = {
|
|
149
|
-
"table": ["pagination", "sorting", "filtering", "selection", "export"],
|
|
150
|
-
"list": ["pagination", "filtering", "search"],
|
|
151
|
-
"grid": ["pagination", "filtering", "card_view"],
|
|
152
|
-
"form": ["display", "edit", "validation", "field_layout"],
|
|
153
|
-
"kanban": ["drag_drop", "status_columns", "card_management", "filtering"],
|
|
154
|
-
"dashboard": ["charts", "metrics", "widgets", "real_time_data"],
|
|
155
|
-
"mastail": ["master_detail", "navigation", "related_data", "drill_down"]
|
|
156
|
-
};
|
|
157
|
-
return featureMap[displayMode] || ["pagination"];
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
// src/tools/static-tools/weather-tool.ts
|
|
161
|
-
|
|
162
|
-
var _ai = require('ai');
|
|
163
|
-
var weatherTool = _ai.tool.call(void 0, {
|
|
164
|
-
description: "Display weather information for a city including temperature, conditions, and humidity",
|
|
165
|
-
inputSchema: _zod.z.object({
|
|
166
|
-
location: _zod.z.string().describe("\u57CE\u5E02\u540D\u79F0\uFF0C\u5982\uFF1A\u5317\u4EAC\u3001\u4E0A\u6D77\u3001\u6DF1\u5733"),
|
|
167
|
-
unit: _zod.z.enum(["celsius", "fahrenheit"]).default("celsius").describe("\u6E29\u5EA6\u5355\u4F4D\uFF1A\u6444\u6C0F\u5EA6\u6216\u534E\u6C0F\u5EA6")
|
|
168
|
-
}),
|
|
169
|
-
execute: async ({ location, unit }) => (
|
|
170
|
-
// Simulate weather API call - return component data directly
|
|
171
|
-
{
|
|
172
|
-
location,
|
|
173
|
-
temperature: unit === "celsius" ? 22 : 72,
|
|
174
|
-
weather: "\u6674\u5929",
|
|
175
|
-
humidity: 65,
|
|
176
|
-
windSpeed: 12,
|
|
177
|
-
unit,
|
|
178
|
-
lastUpdated: (/* @__PURE__ */ new Date()).toISOString()
|
|
179
|
-
}
|
|
180
|
-
)
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
// src/tools/static-tools/location-tool.ts
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
var locationTool = _ai.tool.call(void 0, {
|
|
187
|
-
description: "Display geographic information for a city including coordinates, timezone, and population",
|
|
188
|
-
inputSchema: _zod.z.object({
|
|
189
|
-
city: _zod.z.string().describe("\u57CE\u5E02\u540D\u79F0\uFF0C\u5982\uFF1A\u5317\u4EAC\u3001\u4E0A\u6D77\u3001\u5E7F\u5DDE"),
|
|
190
|
-
includeWeather: _zod.z.boolean().default(false).describe("\u662F\u5426\u540C\u65F6\u5305\u542B\u5929\u6C14\u4FE1\u606F")
|
|
191
|
-
}),
|
|
192
|
-
execute: async ({ city, includeWeather }) => {
|
|
193
|
-
const locationData = {
|
|
194
|
-
city,
|
|
195
|
-
country: "\u4E2D\u56FD",
|
|
196
|
-
province: getProvinceByCity(city),
|
|
197
|
-
coordinates: getCityCoordinates(city),
|
|
198
|
-
timezone: "Asia/Shanghai",
|
|
199
|
-
population: getCityPopulation(city),
|
|
200
|
-
area: getCityArea(city)
|
|
201
|
-
};
|
|
202
|
-
if (includeWeather) {
|
|
203
|
-
return {
|
|
204
|
-
...locationData,
|
|
205
|
-
weather: {
|
|
206
|
-
temperature: 22,
|
|
207
|
-
condition: "\u6674\u5929",
|
|
208
|
-
humidity: 65
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
return locationData;
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
function getProvinceByCity(city) {
|
|
216
|
-
const cityProvinceMap = {
|
|
217
|
-
"\u5317\u4EAC": "\u5317\u4EAC\u5E02",
|
|
218
|
-
"\u4E0A\u6D77": "\u4E0A\u6D77\u5E02",
|
|
219
|
-
"\u6DF1\u5733": "\u5E7F\u4E1C\u7701",
|
|
220
|
-
"\u5E7F\u5DDE": "\u5E7F\u4E1C\u7701",
|
|
221
|
-
"\u676D\u5DDE": "\u6D59\u6C5F\u7701",
|
|
222
|
-
"\u6210\u90FD": "\u56DB\u5DDD\u7701",
|
|
223
|
-
"\u897F\u5B89": "\u9655\u897F\u7701",
|
|
224
|
-
"\u5357\u4EAC": "\u6C5F\u82CF\u7701"
|
|
225
|
-
};
|
|
226
|
-
return cityProvinceMap[city] || "\u672A\u77E5\u7701\u4EFD";
|
|
227
|
-
}
|
|
228
|
-
function getCityCoordinates(city) {
|
|
229
|
-
const coordinatesMap = {
|
|
230
|
-
"\u5317\u4EAC": { lat: 39.9042, lng: 116.4074 },
|
|
231
|
-
"\u4E0A\u6D77": { lat: 31.2304, lng: 121.4737 },
|
|
232
|
-
"\u6DF1\u5733": { lat: 22.3193, lng: 114.1694 },
|
|
233
|
-
"\u5E7F\u5DDE": { lat: 23.1291, lng: 113.2644 },
|
|
234
|
-
"\u676D\u5DDE": { lat: 30.2741, lng: 120.1551 },
|
|
235
|
-
"\u6210\u90FD": { lat: 30.5728, lng: 104.0668 },
|
|
236
|
-
"\u897F\u5B89": { lat: 34.3416, lng: 108.9398 },
|
|
237
|
-
"\u5357\u4EAC": { lat: 32.0603, lng: 118.7969 }
|
|
238
|
-
};
|
|
239
|
-
return coordinatesMap[city] || { lat: 39.9042, lng: 116.4074 };
|
|
240
|
-
}
|
|
241
|
-
function getCityPopulation(city) {
|
|
242
|
-
const populationMap = {
|
|
243
|
-
"\u5317\u4EAC": 2154,
|
|
244
|
-
"\u4E0A\u6D77": 2424,
|
|
245
|
-
"\u6DF1\u5733": 1756,
|
|
246
|
-
"\u5E7F\u5DDE": 1868,
|
|
247
|
-
"\u676D\u5DDE": 1220,
|
|
248
|
-
"\u6210\u90FD": 2094,
|
|
249
|
-
"\u897F\u5B89": 1295,
|
|
250
|
-
"\u5357\u4EAC": 931
|
|
251
|
-
};
|
|
252
|
-
return populationMap[city] || 1e3;
|
|
253
|
-
}
|
|
254
|
-
function getCityArea(city) {
|
|
255
|
-
const areaMap = {
|
|
256
|
-
"\u5317\u4EAC": 16410,
|
|
257
|
-
"\u4E0A\u6D77": 6340,
|
|
258
|
-
"\u6DF1\u5733": 1997,
|
|
259
|
-
"\u5E7F\u5DDE": 7434,
|
|
260
|
-
"\u676D\u5DDE": 16853,
|
|
261
|
-
"\u6210\u90FD": 14335,
|
|
262
|
-
"\u897F\u5B89": 10108,
|
|
263
|
-
"\u5357\u4EAC": 6587
|
|
264
|
-
};
|
|
265
|
-
return areaMap[city] || 5e3;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
// src/tools/frontend-tools/record-tools.ts
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
var frontendToolWaitPool = /* @__PURE__ */ new Map();
|
|
272
|
-
async function executeFrontendTool(toolName, input) {
|
|
273
|
-
const waitId = `frontend-${toolName}`;
|
|
274
|
-
return new Promise((resolve, reject) => {
|
|
275
|
-
const timeout = setTimeout(() => {
|
|
276
|
-
frontendToolWaitPool.delete(waitId);
|
|
277
|
-
reject(new Error(`Frontend tool ${toolName} timeout after 30 seconds`));
|
|
278
|
-
}, 3e4);
|
|
279
|
-
frontendToolWaitPool.set(waitId, {
|
|
280
|
-
resolve,
|
|
281
|
-
reject,
|
|
282
|
-
timeout
|
|
283
|
-
});
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
global.resolveFrontendTool = (waitId, result) => {
|
|
287
|
-
const waiting = frontendToolWaitPool.get(waitId);
|
|
288
|
-
if (waiting) {
|
|
289
|
-
clearTimeout(waiting.timeout);
|
|
290
|
-
frontendToolWaitPool.delete(waitId);
|
|
291
|
-
waiting.resolve(result);
|
|
292
|
-
}
|
|
293
|
-
};
|
|
294
|
-
global.rejectFrontendTool = (waitId, error) => {
|
|
295
|
-
const waiting = frontendToolWaitPool.get(waitId);
|
|
296
|
-
if (waiting) {
|
|
297
|
-
clearTimeout(waiting.timeout);
|
|
298
|
-
frontendToolWaitPool.delete(waitId);
|
|
299
|
-
waiting.reject(new Error(error));
|
|
300
|
-
}
|
|
301
|
-
};
|
|
302
|
-
var recordGetValuesTool = _ai.tool.call(void 0, {
|
|
303
|
-
description: "Get current form/record field values. Returns all field values in the current form.",
|
|
304
|
-
inputSchema: _zod.z.object({}).describe("No input parameters required"),
|
|
305
|
-
execute: async () => await executeFrontendTool("recordGetValues", {})
|
|
306
|
-
});
|
|
307
|
-
var recordSetValuesTool = _ai.tool.call(void 0, {
|
|
308
|
-
description: "Set form field values",
|
|
309
|
-
inputSchema: _zod.z.object({
|
|
310
|
-
values: _zod.z.record(_zod.z.string(), _zod.z.any()).describe("Field value object. Keys MUST be exact field names returned by recordGetFieldInfo")
|
|
311
|
-
}),
|
|
312
|
-
execute: async ({ values }) => await executeFrontendTool("recordSetValues", { values })
|
|
313
|
-
});
|
|
314
|
-
var recordResetFormTool = _ai.tool.call(void 0, {
|
|
315
|
-
description: "Reset form to initial state. Clear all user input and restore default values.",
|
|
316
|
-
inputSchema: _zod.z.object({}).describe("No input parameters required"),
|
|
317
|
-
execute: async () => await executeFrontendTool("recordResetForm", {})
|
|
318
|
-
});
|
|
319
|
-
var recordValidateFormTool = _ai.tool.call(void 0, {
|
|
320
|
-
description: "Validate current form/record data. Check all field validation rules and return validation results.",
|
|
321
|
-
inputSchema: _zod.z.object({}).describe("No input parameters required"),
|
|
322
|
-
execute: async () => await executeFrontendTool("recordValidateForm", {})
|
|
323
|
-
});
|
|
324
|
-
var recordGetFieldInfoTool = _ai.tool.call(void 0, {
|
|
325
|
-
description: "Get record field information. Returns detailed information and exact field names for all fields in current view. Must call this tool before recordSetValues to get correct field names.",
|
|
326
|
-
inputSchema: _zod.z.object({
|
|
327
|
-
fieldName: _zod.z.string().optional().describe("Specific field name, if not provided returns all field information")
|
|
328
|
-
}),
|
|
329
|
-
execute: async ({ fieldName }) => await executeFrontendTool("recordGetFieldInfo", { fieldName })
|
|
330
|
-
});
|
|
331
|
-
|
|
332
|
-
// src/tools/index.ts
|
|
333
|
-
var defaultTools = {
|
|
334
|
-
// Static tools
|
|
335
|
-
getWeather: weatherTool,
|
|
336
|
-
getLocation: locationTool,
|
|
337
|
-
// Dynamic tools
|
|
338
|
-
entityQuery: entityQueryTool,
|
|
339
|
-
// Frontend proxy tools - standardized view controller operations
|
|
340
|
-
recordGetValues: recordGetValuesTool,
|
|
341
|
-
recordSetValues: recordSetValuesTool,
|
|
342
|
-
recordResetForm: recordResetFormTool,
|
|
343
|
-
recordValidateForm: recordValidateFormTool,
|
|
344
|
-
recordGetFieldInfo: recordGetFieldInfoTool
|
|
345
|
-
};
|
|
346
|
-
function getAllTools() {
|
|
347
|
-
return defaultTools;
|
|
348
|
-
}
|
|
349
|
-
function getToolsList() {
|
|
350
|
-
return Object.keys(defaultTools);
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
exports.defaultTools = defaultTools; exports.entityQueryTool = entityQueryTool; exports.getAllTools = getAllTools; exports.getToolsList = getToolsList; exports.locationTool = locationTool; exports.recordGetFieldInfoTool = recordGetFieldInfoTool; exports.recordGetValuesTool = recordGetValuesTool; exports.recordResetFormTool = recordResetFormTool; exports.recordSetValuesTool = recordSetValuesTool; exports.recordValidateFormTool = recordValidateFormTool; exports.toolsIntegration = toolsIntegration; exports.weatherTool = weatherTool;
|
|
366
|
-
//# sourceMappingURL=tools-YLEX6GNO.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/shixin/dev/workspaces/scenemesh-projects/scenemesh-platform-workbench5/packages/entity-engine-aimodule/dist/tools-YLEX6GNO.js","../src/tools/dynamic-tools/entity-query-tool.ts","../src/tools/static-tools/weather-tool.ts","../src/tools/static-tools/location-tool.ts","../src/tools/frontend-tools/record-tools.ts","../src/tools/index.ts"],"names":[],"mappings":"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","file":"/Users/shixin/dev/workspaces/scenemesh-projects/scenemesh-platform-workbench5/packages/entity-engine-aimodule/dist/tools-YLEX6GNO.js","sourcesContent":[null,"/**\n * Entity Data Query Dynamic Tool\n * \n * Dynamic tool implementation for entity data queries\n * Focused on data retrieval without complex analysis features\n */\n\nimport { z } from 'zod';\n\nimport { type DynamicTool, AIToolsIntegration } from '../../core/ai-tools';\n\n// Create tools integration instance\nconst toolsIntegration = new AIToolsIntegration();\n\n/**\n * Entity data query tool\n * Focused on data retrieval without analysis functionality\n */\nexport const entityQueryTool: DynamicTool = toolsIntegration.createDynamicTool(\n 'Query entity data with basic operations like pagination, sorting, and filtering. Focused on data retrieval without analysis functionality.',\n z.object({\n modelName: z.string().describe('Entity model name, e.g.: ee-base-user (users), product (products), etc'),\n displayMode: z.enum(['table', 'list', 'grid', 'form', 'kanban', 'dashboard', 'mastail']).optional().default('table').describe('Display mode: table, list, grid, form, kanban, dashboard, or mastail (master-detail view)'),\n baseObjectId: z.string().optional().describe('Entity object ID, used for form mode to display specific object'),\n pageSize: z.number().optional().default(20).describe('Number of items per page, default 20'),\n pageIndex: z.number().optional().default(0).describe('Page index, starting from 0'),\n sortBy: z.record(z.string(), z.enum(['asc', 'desc'])).optional().describe('Sort fields and directions'),\n filters: z.record(z.string(), z.any()).optional().describe('Filter conditions')\n }),\n async (input: unknown, options) => {\n try {\n // Validate and parse input\n const validatedInput = validateAndParseInput(input);\n const { modelName, displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = validatedInput;\n\n\n // Execute data query\n return await executeEntityQuery(modelName, {\n displayMode,\n baseObjectId,\n pageSize,\n pageIndex,\n sortBy,\n filters\n }, options);\n\n } catch (error) {\n console.error('Entity query tool execution error:', error);\n \n return {\n error: error instanceof Error ? error.message : 'Query failed',\n toolName: 'entityQuery',\n toolCallId: options.toolCallId,\n executedAt: new Date().toISOString(),\n _renderHint: {\n componentType: 'DynamicErrorDisplay',\n errorType: 'query_error',\n errorDetails: error instanceof Error ? error.message : 'Unknown error'\n }\n };\n }\n }\n);\n\n/**\n * Input validation and parsing function\n */\nfunction validateAndParseInput(input: unknown) {\n if (typeof input !== 'object' || input === null) {\n throw new Error('Invalid input: expected object');\n }\n\n const obj = input as Record<string, any>;\n \n if (!obj.modelName || typeof obj.modelName !== 'string') {\n throw new Error('Invalid modelName: must be a string');\n }\n\n return {\n modelName: obj.modelName as string,\n displayMode: obj.displayMode || 'table',\n baseObjectId: obj.baseObjectId || undefined,\n pageSize: obj.pageSize || 20,\n pageIndex: obj.pageIndex || 0,\n sortBy: obj.sortBy || { createdAt: 'desc' },\n filters: obj.filters || {}\n };\n}\n\n/**\n * Execute entity data query\n */\nasync function executeEntityQuery(\n modelName: string,\n queryOptions: {\n displayMode: string;\n baseObjectId?: string;\n pageSize: number;\n pageIndex: number;\n sortBy: Record<string, 'asc' | 'desc'>;\n filters: Record<string, any>;\n },\n options: { toolCallId: string; messages: any[]; abortSignal?: AbortSignal }\n) {\n const { displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = queryOptions;\n\n // Build tRPC query parameters\n const tRPCInput = encodeURIComponent(JSON.stringify({\n \"0\": {\n \"json\": {\n modelName,\n pageSize,\n pageIndex,\n sortBy,\n where: filters // Convert filter conditions to where clause\n }\n }\n }));\n \n // Call Entity Engine tRPC API\n const response = await fetch(`http://localhost:8082/api/ee/trpc/model.listObjects?batch=1&input=${tRPCInput}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n signal: options.abortSignal\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n const tRPCResult = await response.json();\n const result = tRPCResult[0]?.result?.data?.json || {};\n const rawEntityData = result.data || [];\n const totalCount = result.count || 0;\n \n // Flatten Entity data structure for frontend rendering\n const entityData = rawEntityData.map((item: any) => ({\n id: item.id,\n modelName: item.modelName,\n createdAt: item.createdAt,\n updatedAt: item.updatedAt,\n isDeleted: item.isDeleted,\n ...item.values // Spread entity data values\n }));\n\n return {\n toolName: 'entityQuery',\n modelName,\n displayMode,\n data: entityData,\n totalCount,\n baseObjectId, // Add baseObjectId to response for form mode\n pagination: {\n pageSize,\n pageIndex,\n totalPages: Math.ceil(totalCount / pageSize),\n hasNextPage: pageIndex < Math.ceil(totalCount / pageSize) - 1,\n hasPreviousPage: pageIndex > 0\n },\n query: {\n sortBy,\n filters,\n appliedFilters: Object.keys(filters).length\n },\n executedAt: new Date().toISOString(),\n toolCallId: options.toolCallId,\n // Provide rendering hints for dynamic component renderers\n _renderHint: {\n componentType: getDynamicComponentType(displayMode),\n preferredLayout: displayMode,\n features: getDisplayModeFeatures(displayMode),\n dataSchema: entityData.length > 0 ? Object.keys(entityData[0]) : [],\n capabilities: ['pagination', 'sorting', 'filtering'] // 只提供基础功能\n }\n };\n}\n\n/**\n * 根据显示模式获取对应的动态组件类型\n */\nfunction getDynamicComponentType(displayMode: string): string {\n const mapping = {\n 'table': 'DynamicDataTable',\n 'list': 'DynamicDataList',\n 'grid': 'DynamicDataGrid',\n 'form': 'DynamicEntityForm',\n 'kanban': 'DynamicEntityKanban',\n 'dashboard': 'DynamicEntityDashboard',\n 'mastail': 'DynamicEntityMastail'\n };\n return mapping[displayMode as keyof typeof mapping] || 'DynamicDataTable';\n}\n\n/**\n * 根据显示模式获取功能特性\n */\nfunction getDisplayModeFeatures(displayMode: string): string[] {\n const featureMap = {\n 'table': ['pagination', 'sorting', 'filtering', 'selection', 'export'],\n 'list': ['pagination', 'filtering', 'search'],\n 'grid': ['pagination', 'filtering', 'card_view'],\n 'form': ['display', 'edit', 'validation', 'field_layout'],\n 'kanban': ['drag_drop', 'status_columns', 'card_management', 'filtering'],\n 'dashboard': ['charts', 'metrics', 'widgets', 'real_time_data'],\n 'mastail': ['master_detail', 'navigation', 'related_data', 'drill_down']\n };\n return featureMap[displayMode as keyof typeof featureMap] || ['pagination'];\n}\n\n// 导出工具集成器实例\nexport { toolsIntegration };","/**\n * Weather Tool - Get city weather information\n */\n\nimport { z } from 'zod';\nimport { tool } from 'ai';\n\n/**\n * Weather tool - get weather information for specified city\n */\nexport const weatherTool = tool({\n description: 'Display weather information for a city including temperature, conditions, and humidity',\n inputSchema: z.object({\n location: z.string().describe('城市名称,如:北京、上海、深圳'),\n unit: z.enum(['celsius', 'fahrenheit']).default('celsius').describe('温度单位:摄氏度或华氏度')\n }),\n execute: async ({ location, unit }) => \n // Simulate weather API call - return component data directly\n ({\n location,\n temperature: unit === 'celsius' ? 22 : 72,\n weather: '晴天',\n humidity: 65,\n windSpeed: 12,\n unit,\n lastUpdated: new Date().toISOString()\n })\n \n});","/**\n * Location Tool - Get city geographic information\n */\n\nimport { z } from 'zod';\nimport { tool } from 'ai';\n\n/**\n * Location tool - get geographic location information for cities\n */\nexport const locationTool = tool({\n description: 'Display geographic information for a city including coordinates, timezone, and population',\n inputSchema: z.object({\n city: z.string().describe('城市名称,如:北京、上海、广州'),\n includeWeather: z.boolean().default(false).describe('是否同时包含天气信息')\n }),\n execute: async ({ city, includeWeather }) => {\n // Simulate location API call - return component data directly\n const locationData = {\n city,\n country: '中国',\n province: getProvinceByCity(city),\n coordinates: getCityCoordinates(city),\n timezone: 'Asia/Shanghai',\n population: getCityPopulation(city),\n area: getCityArea(city)\n };\n\n // 如果需要天气信息,直接扩展数据结构\n if (includeWeather) {\n return {\n ...locationData,\n weather: {\n temperature: 22,\n condition: '晴天',\n humidity: 65\n }\n };\n }\n\n // 直接返回位置数据,不包装在success/data/message中\n return locationData;\n }\n});\n\n// 辅助函数 - 获取城市省份\nfunction getProvinceByCity(city: string): string {\n const cityProvinceMap: Record<string, string> = {\n '北京': '北京市',\n '上海': '上海市',\n '深圳': '广东省',\n '广州': '广东省',\n '杭州': '浙江省',\n '成都': '四川省',\n '西安': '陕西省',\n '南京': '江苏省'\n };\n return cityProvinceMap[city] || '未知省份';\n}\n\n// 辅助函数 - 获取城市坐标\nfunction getCityCoordinates(city: string): { lat: number; lng: number } {\n const coordinatesMap: Record<string, { lat: number; lng: number }> = {\n '北京': { lat: 39.9042, lng: 116.4074 },\n '上海': { lat: 31.2304, lng: 121.4737 },\n '深圳': { lat: 22.3193, lng: 114.1694 },\n '广州': { lat: 23.1291, lng: 113.2644 },\n '杭州': { lat: 30.2741, lng: 120.1551 },\n '成都': { lat: 30.5728, lng: 104.0668 },\n '西安': { lat: 34.3416, lng: 108.9398 },\n '南京': { lat: 32.0603, lng: 118.7969 }\n };\n return coordinatesMap[city] || { lat: 39.9042, lng: 116.4074 };\n}\n\n// 辅助函数 - 获取城市人口\nfunction getCityPopulation(city: string): number {\n const populationMap: Record<string, number> = {\n '北京': 2154,\n '上海': 2424,\n '深圳': 1756,\n '广州': 1868,\n '杭州': 1220,\n '成都': 2094,\n '西安': 1295,\n '南京': 931\n };\n return populationMap[city] || 1000;\n}\n\n// 辅助函数 - 获取城市面积\nfunction getCityArea(city: string): number {\n const areaMap: Record<string, number> = {\n '北京': 16410,\n '上海': 6340,\n '深圳': 1997,\n '广州': 7434,\n '杭州': 16853,\n '成都': 14335,\n '西安': 10108,\n '南京': 6587\n };\n return areaMap[city] || 5000;\n}","/**\n * Entity Engine Frontend Proxy Tools\n * \n * Registers frontend controller operations as standard tools.\n * Communicates with frontend view controllers through backend proxy API.\n */\n\nimport { z } from 'zod';\nimport { tool } from 'ai';\n\n/**\n * Global frontend tool call bridge\n * Communicates with frontend through global objects\n */\ndeclare global {\n interface Window {\n __ENTITY_ENGINE_AI_BRIDGE__?: {\n executeViewControllerTool: (toolName: string, input: any) => Promise<string>;\n };\n __FRONTEND_TOOL_EXECUTOR__?: (waitId: string, toolName: string, input: any) => Promise<void>;\n resolveFrontendTool?: (waitId: string, result: string) => void;\n rejectFrontendTool?: (waitId: string, error: string) => void;\n }\n \n var resolveFrontendTool: (waitId: string, result: string) => void;\n var rejectFrontendTool: (waitId: string, error: string) => void;\n var __FRONTEND_TOOL_EXECUTOR__: (waitId: string, toolName: string, input: any) => Promise<void>;\n}\n\n/**\n * Frontend tool waiting pool - for backend waiting for frontend results\n */\nconst frontendToolWaitPool = new Map<string, {\n resolve: (result: string) => void;\n reject: (error: Error) => void;\n timeout: NodeJS.Timeout;\n}>();\n\n/**\n * Frontend tool executor - waits for frontend HTTP responses\n */\nasync function executeFrontendTool(toolName: string, input: any): Promise<string> {\n \n // Key: use simplified waitId for frontend matching\n const waitId = `frontend-${toolName}`;\n \n // Key: create Promise waiting for frontend HTTP result\n return new Promise((resolve, reject) => {\n // Set timeout mechanism\n const timeout = setTimeout(() => {\n frontendToolWaitPool.delete(waitId);\n reject(new Error(`Frontend tool ${toolName} timeout after 30 seconds`));\n }, 30000);\n \n // Store Promise in waiting pool\n frontendToolWaitPool.set(waitId, {\n resolve,\n reject,\n timeout\n });\n });\n}\n\n/**\n * Frontend tool result callback - for frontend invocation\n */\n(global as any).resolveFrontendTool = (waitId: string, result: string) => {\n const waiting = frontendToolWaitPool.get(waitId);\n if (waiting) {\n clearTimeout(waiting.timeout);\n frontendToolWaitPool.delete(waitId);\n waiting.resolve(result);\n }\n};\n\n(global as any).rejectFrontendTool = (waitId: string, error: string) => {\n const waiting = frontendToolWaitPool.get(waitId);\n if (waiting) {\n clearTimeout(waiting.timeout);\n frontendToolWaitPool.delete(waitId);\n waiting.reject(new Error(error));\n }\n};\n\n/**\n * Get record field values tool\n */\nexport const recordGetValuesTool = tool({\n description: 'Get current form/record field values. Returns all field values in the current form.',\n inputSchema: z.object({}).describe('No input parameters required'),\n execute: async () => await executeFrontendTool('recordGetValues', {})\n});\n\n/**\n * Set record field value tool\n */\nexport const recordSetValuesTool = tool({\n description: 'Set form field values',\n inputSchema: z.object({\n values: z.record(z.string(), z.any()).describe('Field value object. Keys MUST be exact field names returned by recordGetFieldInfo')\n }),\n execute: async ({ values }) => await executeFrontendTool('recordSetValues', { values })\n});\n\n/**\n * Reset form tool\n */\nexport const recordResetFormTool = tool({\n description: 'Reset form to initial state. Clear all user input and restore default values.',\n inputSchema: z.object({}).describe('No input parameters required'),\n execute: async () => await executeFrontendTool('recordResetForm', {})\n});\n\n/**\n * Form validation tool\n */\nexport const recordValidateFormTool = tool({\n description: 'Validate current form/record data. Check all field validation rules and return validation results.',\n inputSchema: z.object({}).describe('No input parameters required'),\n execute: async () => await executeFrontendTool('recordValidateForm', {})\n});\n\n/**\n * Get field information tool\n */\nexport const recordGetFieldInfoTool = tool({\n description: 'Get record field information. Returns detailed information and exact field names for all fields in current view. Must call this tool before recordSetValues to get correct field names.',\n inputSchema: z.object({\n fieldName: z.string().optional().describe('Specific field name, if not provided returns all field information')\n }),\n execute: async ({ fieldName }) => await executeFrontendTool('recordGetFieldInfo', { fieldName })\n});","/**\n * Tools Collection - Unified export for all available tools\n * \n * Optimized file structure:\n * - static-tools/: Static tools (predefined types)\n * - dynamic-tools/: Dynamic tools (runtime types)\n * - frontend-tools/: Frontend proxy tools\n */\n\n// Dynamic tools import\nimport { entityQueryTool } from './dynamic-tools';\n// Static tools import\nimport { weatherTool, locationTool } from './static-tools';\n// Frontend proxy tools import\nimport { \n recordGetValuesTool,\n recordSetValuesTool,\n recordResetFormTool,\n recordValidateFormTool,\n recordGetFieldInfoTool\n} from './frontend-tools';\n\n/**\n * Default tools collection - Static, dynamic and frontend proxy tools\n * \n * Design features:\n * - Static tools: getWeather, getLocation (basic functionality)\n * - Dynamic tools: entityQuery (data retrieval focused)\n * - Frontend proxy tools: record* operations\n */\nexport const defaultTools = {\n // Static tools\n getWeather: weatherTool,\n getLocation: locationTool,\n \n // Dynamic tools\n entityQuery: entityQueryTool,\n \n // Frontend proxy tools - standardized view controller operations\n recordGetValues: recordGetValuesTool,\n recordSetValues: recordSetValuesTool,\n recordResetForm: recordResetFormTool,\n recordValidateForm: recordValidateFormTool,\n recordGetFieldInfo: recordGetFieldInfoTool,\n} as const;\n\n/**\n * Get all available tools\n */\nexport function getAllTools() {\n return defaultTools;\n}\n\n/**\n * Get tools list (for API documentation or debugging)\n */\nexport function getToolsList() {\n return Object.keys(defaultTools);\n}\n\n// Re-export specific tools (backward compatibility)\nexport { weatherTool, locationTool } from './static-tools';\nexport { entityQueryTool, toolsIntegration } from './dynamic-tools';\nexport { \n recordGetValuesTool,\n recordSetValuesTool,\n recordResetFormTool,\n recordValidateFormTool,\n recordGetFieldInfoTool\n} from './frontend-tools';"]}
|