@kepler.gl/mcp 0.0.0-stage → 3.3.0-alpha.20
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/cjs/commands/add-column-command.js +192 -0
- package/dist/cjs/commands/basemap-command.js +80 -0
- package/dist/cjs/commands/boundary-command.js +81 -0
- package/dist/cjs/commands/command-wrappers.js +122 -0
- package/dist/cjs/commands/dataset-context-command.js +87 -0
- package/dist/cjs/commands/index.js +230 -0
- package/dist/cjs/commands/layer-creation-command.js +534 -0
- package/dist/cjs/commands/layer-style-command.js +136 -0
- package/dist/cjs/commands/load-data-command.js +270 -0
- package/dist/cjs/commands/save-data-command.js +118 -0
- package/dist/cjs/commands/split-view-command.js +261 -0
- package/dist/cjs/commands/table-command.js +199 -0
- package/dist/cjs/commands/time-filter-command.js +289 -0
- package/dist/cjs/commands/toggle-time-filter-command.js +155 -0
- package/dist/cjs/commands/types.js +6 -0
- package/dist/cjs/commands/utils.js +536 -0
- package/dist/cjs/commands/view-mode-command.js +94 -0
- package/dist/cjs/index.js +39 -0
- package/dist/cjs/map-contract.js +6 -0
- package/dist/cjs/server/bridge-server.js +435 -0
- package/dist/cjs/server/index.js +31 -0
- package/dist/cjs/server/stdio.js +201 -0
- package/dist/cjs/types.js +30 -0
- package/dist/commands/add-column-command.d.ts +4 -0
- package/dist/commands/basemap-command.d.ts +4 -0
- package/dist/commands/boundary-command.d.ts +4 -0
- package/dist/commands/command-wrappers.d.ts +52 -0
- package/dist/commands/dataset-context-command.d.ts +4 -0
- package/dist/commands/index.d.ts +31 -0
- package/dist/commands/layer-creation-command.d.ts +8 -0
- package/dist/commands/layer-style-command.d.ts +4 -0
- package/dist/commands/load-data-command.d.ts +4 -0
- package/dist/commands/save-data-command.d.ts +4 -0
- package/dist/commands/split-view-command.d.ts +4 -0
- package/dist/commands/table-command.d.ts +4 -0
- package/dist/commands/time-filter-command.d.ts +13 -0
- package/dist/commands/toggle-time-filter-command.d.ts +4 -0
- package/dist/commands/types.d.ts +132 -0
- package/dist/commands/utils.d.ts +138 -0
- package/dist/commands/view-mode-command.d.ts +4 -0
- package/dist/esm/commands/add-column-command.js +185 -0
- package/dist/esm/commands/basemap-command.js +72 -0
- package/dist/esm/commands/boundary-command.js +73 -0
- package/dist/esm/commands/command-wrappers.js +114 -0
- package/dist/esm/commands/dataset-context-command.js +79 -0
- package/dist/esm/commands/index.js +51 -0
- package/dist/esm/commands/layer-creation-command.js +527 -0
- package/dist/esm/commands/layer-style-command.js +130 -0
- package/dist/esm/commands/load-data-command.js +264 -0
- package/dist/esm/commands/save-data-command.js +112 -0
- package/dist/esm/commands/split-view-command.js +255 -0
- package/dist/esm/commands/table-command.js +194 -0
- package/dist/esm/commands/time-filter-command.js +280 -0
- package/dist/esm/commands/toggle-time-filter-command.js +147 -0
- package/dist/esm/commands/types.js +3 -0
- package/dist/esm/commands/utils.js +521 -0
- package/dist/esm/commands/view-mode-command.js +86 -0
- package/dist/esm/index.js +20 -0
- package/dist/esm/map-contract.js +3 -0
- package/dist/esm/server/bridge-server.js +428 -0
- package/dist/esm/server/index.js +13 -0
- package/dist/esm/server/stdio.js +198 -0
- package/dist/esm/types.js +24 -0
- package/dist/index.d.ts +15 -0
- package/dist/map-contract.d.ts +31 -0
- package/dist/server/bridge-server.d.ts +53 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/stdio.d.ts +2 -0
- package/dist/types.d.ts +24 -0
- package/package.json +84 -4
- package/skill/kepler/SKILL.md +438 -0
- package/skill/kepler/skill.yaml +4 -0
- package/README.md +0 -3
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
|
+
// SPDX-License-Identifier: MIT
|
|
5
|
+
// Copyright contributors to the kepler.gl project
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Generic utility for converting an existing AI SDK tool into a sqlrooms
|
|
9
|
+
* `RoomCommand`. Kept dependency-light (only `zod` + `RoomCommand` type) so it
|
|
10
|
+
* can be reused by any in-browser skill system that wants to expose its
|
|
11
|
+
* existing AI SDK tools as commands without rewriting them.
|
|
12
|
+
*
|
|
13
|
+
* The demo-app's own command factories return `RoomCommand` directly (preferred
|
|
14
|
+
* when you own the command — see `basemap-command.ts` for the reference shape). This
|
|
15
|
+
* wrapper is the fallback path for hosts that cannot rewrite their tools:
|
|
16
|
+
* it folds the tool's `execute`, `inputSchema`, and `toModelOutput` (the
|
|
17
|
+
* token-trim logic the AI SDK applies between tool call and model) into a
|
|
18
|
+
* single `RoomCommand.execute` so the registry-stored result already carries
|
|
19
|
+
* the model-facing subset.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/** A built AI SDK tool, treated loosely for dynamic dispatch. */
|
|
23
|
+
|
|
24
|
+
/** Metadata that the AI SDK tool does not carry but a `RoomCommand` requires. */
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Cast a concrete zod schema (e.g. `z.object({...})`, which is `ZodObject<...>`)
|
|
28
|
+
* to the `ZodType<unknown>` that `RoomCommand.inputSchema` expects. The
|
|
29
|
+
* installed zod `ZodObject` is not structurally assignable to sqlrooms'
|
|
30
|
+
* `ZodType<unknown>` (covariance on the output type), so a cast is required at
|
|
31
|
+
* the assignment site. This helper centralizes that cast.
|
|
32
|
+
*/
|
|
33
|
+
export function asInputSchema(schema) {
|
|
34
|
+
return schema;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Wrap an existing AI SDK tool as a sqlrooms `RoomCommand`. The command's
|
|
39
|
+
* `execute` calls the tool's `execute` and then applies the tool's
|
|
40
|
+
* `toModelOutput` (if any) so the trimmed, model-facing shape is what the
|
|
41
|
+
* registry stores and downstream surfaces (AI skill, palette, CLI, MCP) see.
|
|
42
|
+
*/
|
|
43
|
+
export function toolToCommand(tool, meta) {
|
|
44
|
+
return {
|
|
45
|
+
id: meta.id,
|
|
46
|
+
name: meta.name,
|
|
47
|
+
description: tool.description,
|
|
48
|
+
group: meta.group,
|
|
49
|
+
keywords: meta.keywords,
|
|
50
|
+
inputSchema: tool.inputSchema,
|
|
51
|
+
execute: function () {
|
|
52
|
+
var _execute = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(ctx, input) {
|
|
53
|
+
var _rawOutput$success, _ref, _ref2, rawOutput, trimmed;
|
|
54
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
55
|
+
while (1) switch (_context.prev = _context.next) {
|
|
56
|
+
case 0:
|
|
57
|
+
if (!(!tool.execute || typeof tool.execute !== 'function')) {
|
|
58
|
+
_context.next = 2;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
return _context.abrupt("return", {
|
|
62
|
+
success: false,
|
|
63
|
+
commandId: meta.id,
|
|
64
|
+
error: 'Tool has no execute function.'
|
|
65
|
+
});
|
|
66
|
+
case 2:
|
|
67
|
+
_context.prev = 2;
|
|
68
|
+
_context.next = 5;
|
|
69
|
+
return tool.execute(input !== null && input !== void 0 ? input : {}, {
|
|
70
|
+
toolCallId: meta.id,
|
|
71
|
+
signal: ctx.signal
|
|
72
|
+
});
|
|
73
|
+
case 5:
|
|
74
|
+
rawOutput = _context.sent;
|
|
75
|
+
trimmed = typeof tool.toModelOutput === 'function' ? tool.toModelOutput({
|
|
76
|
+
output: rawOutput,
|
|
77
|
+
toolCallId: meta.id
|
|
78
|
+
}) : rawOutput;
|
|
79
|
+
return _context.abrupt("return", {
|
|
80
|
+
success: (_rawOutput$success = rawOutput === null || rawOutput === void 0 ? void 0 : rawOutput.success) !== null && _rawOutput$success !== void 0 ? _rawOutput$success : true,
|
|
81
|
+
commandId: meta.id,
|
|
82
|
+
// A structured failure (success:false) that didn't throw must still
|
|
83
|
+
// carry an error message — otherwise callers see {success:false,
|
|
84
|
+
// error:undefined} and downstream formatters misreport it as a
|
|
85
|
+
// success. Many tool/result shapes (including RoomCommandResult)
|
|
86
|
+
// carry the failure in a `message` field rather than `error`, so
|
|
87
|
+
// fall back to that before the generic message.
|
|
88
|
+
error: (rawOutput === null || rawOutput === void 0 ? void 0 : rawOutput.success) === false ? (_ref = (_ref2 = rawOutput === null || rawOutput === void 0 ? void 0 : rawOutput.error) !== null && _ref2 !== void 0 ? _ref2 : rawOutput === null || rawOutput === void 0 ? void 0 : rawOutput.message) !== null && _ref !== void 0 ? _ref : 'Tool execution failed.' : undefined,
|
|
89
|
+
data: _typeof(trimmed) === 'object' && trimmed !== null ? trimmed : {
|
|
90
|
+
details: trimmed
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
case 10:
|
|
94
|
+
_context.prev = 10;
|
|
95
|
+
_context.t0 = _context["catch"](2);
|
|
96
|
+
return _context.abrupt("return", {
|
|
97
|
+
success: false,
|
|
98
|
+
commandId: meta.id,
|
|
99
|
+
error: _context.t0 instanceof Error ? _context.t0.message : String(_context.t0)
|
|
100
|
+
});
|
|
101
|
+
case 13:
|
|
102
|
+
case "end":
|
|
103
|
+
return _context.stop();
|
|
104
|
+
}
|
|
105
|
+
}, _callee, null, [[2, 10]]);
|
|
106
|
+
}));
|
|
107
|
+
function execute(_x, _x2) {
|
|
108
|
+
return _execute.apply(this, arguments);
|
|
109
|
+
}
|
|
110
|
+
return execute;
|
|
111
|
+
}()
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc0lucHV0U2NoZW1hIiwic2NoZW1hIiwidG9vbFRvQ29tbWFuZCIsInRvb2wiLCJtZXRhIiwiaWQiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJncm91cCIsImtleXdvcmRzIiwiaW5wdXRTY2hlbWEiLCJleGVjdXRlIiwiX2V4ZWN1dGUiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImN0eCIsImlucHV0IiwiX3Jhd091dHB1dCRzdWNjZXNzIiwiX3JlZiIsIl9yZWYyIiwicmF3T3V0cHV0IiwidHJpbW1lZCIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJhYnJ1cHQiLCJzdWNjZXNzIiwiY29tbWFuZElkIiwiZXJyb3IiLCJ0b29sQ2FsbElkIiwic2lnbmFsIiwic2VudCIsInRvTW9kZWxPdXRwdXQiLCJvdXRwdXQiLCJtZXNzYWdlIiwidW5kZWZpbmVkIiwiZGF0YSIsIl90eXBlb2YiLCJkZXRhaWxzIiwidDAiLCJFcnJvciIsIlN0cmluZyIsInN0b3AiLCJfeCIsIl94MiIsImFwcGx5IiwiYXJndW1lbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NvbW1hbmQtd3JhcHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLyoqXG4gKiBHZW5lcmljIHV0aWxpdHkgZm9yIGNvbnZlcnRpbmcgYW4gZXhpc3RpbmcgQUkgU0RLIHRvb2wgaW50byBhIHNxbHJvb21zXG4gKiBgUm9vbUNvbW1hbmRgLiBLZXB0IGRlcGVuZGVuY3ktbGlnaHQgKG9ubHkgYHpvZGAgKyBgUm9vbUNvbW1hbmRgIHR5cGUpIHNvIGl0XG4gKiBjYW4gYmUgcmV1c2VkIGJ5IGFueSBpbi1icm93c2VyIHNraWxsIHN5c3RlbSB0aGF0IHdhbnRzIHRvIGV4cG9zZSBpdHNcbiAqIGV4aXN0aW5nIEFJIFNESyB0b29scyBhcyBjb21tYW5kcyB3aXRob3V0IHJld3JpdGluZyB0aGVtLlxuICpcbiAqIFRoZSBkZW1vLWFwcCdzIG93biBjb21tYW5kIGZhY3RvcmllcyByZXR1cm4gYFJvb21Db21tYW5kYCBkaXJlY3RseSAocHJlZmVycmVkXG4gKiB3aGVuIHlvdSBvd24gdGhlIGNvbW1hbmQg4oCUIHNlZSBgYmFzZW1hcC1jb21tYW5kLnRzYCBmb3IgdGhlIHJlZmVyZW5jZSBzaGFwZSkuIFRoaXNcbiAqIHdyYXBwZXIgaXMgdGhlIGZhbGxiYWNrIHBhdGggZm9yIGhvc3RzIHRoYXQgY2Fubm90IHJld3JpdGUgdGhlaXIgdG9vbHM6XG4gKiBpdCBmb2xkcyB0aGUgdG9vbCdzIGBleGVjdXRlYCwgYGlucHV0U2NoZW1hYCwgYW5kIGB0b01vZGVsT3V0cHV0YCAodGhlXG4gKiB0b2tlbi10cmltIGxvZ2ljIHRoZSBBSSBTREsgYXBwbGllcyBiZXR3ZWVuIHRvb2wgY2FsbCBhbmQgbW9kZWwpIGludG8gYVxuICogc2luZ2xlIGBSb29tQ29tbWFuZC5leGVjdXRlYCBzbyB0aGUgcmVnaXN0cnktc3RvcmVkIHJlc3VsdCBhbHJlYWR5IGNhcnJpZXNcbiAqIHRoZSBtb2RlbC1mYWNpbmcgc3Vic2V0LlxuICovXG5cbmltcG9ydCB0eXBlIHtSb29tQ29tbWFuZH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7Wm9kVHlwZX0gZnJvbSAnem9kJztcblxuLyoqIEEgYnVpbHQgQUkgU0RLIHRvb2wsIHRyZWF0ZWQgbG9vc2VseSBmb3IgZHluYW1pYyBkaXNwYXRjaC4gKi9cbmV4cG9ydCB0eXBlIEFueVRvb2wgPSB7XG4gIGV4ZWN1dGU/OiAoYXJnczogYW55LCBvcHRpb25zOiBhbnkpID0+IFByb21pc2U8YW55PjtcbiAgdG9Nb2RlbE91dHB1dD86IChwYXJhbXM6IHtvdXRwdXQ6IGFueTsgdG9vbENhbGxJZD86IHN0cmluZ30pID0+IGFueTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlucHV0U2NoZW1hPzogWm9kVHlwZTtcbn07XG5cbi8qKiBNZXRhZGF0YSB0aGF0IHRoZSBBSSBTREsgdG9vbCBkb2VzIG5vdCBjYXJyeSBidXQgYSBgUm9vbUNvbW1hbmRgIHJlcXVpcmVzLiAqL1xuZXhwb3J0IHR5cGUgQ29tbWFuZE1ldGEgPSB7XG4gIC8qKiBTdGFibGUsIG5hbWVzcGFjZWQgY29tbWFuZCBpZCwgZS5nLiBgbWFwLnNldC1iYXNlbWFwYC4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUgc2hvd24gaW4gdGhlIGNvbW1hbmQgcGFsZXR0ZSAvIGxpc3RpbmdzLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBncm91cGluZyBsYWJlbCwgZS5nLiBgTWFwYCwgYERhdGFgLCBgR2VvRGFgLiAqL1xuICBncm91cD86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHNlYXJjaCBrZXl3b3Jkcy4gKi9cbiAga2V5d29yZHM/OiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogQ2FzdCBhIGNvbmNyZXRlIHpvZCBzY2hlbWEgKGUuZy4gYHoub2JqZWN0KHsuLi59KWAsIHdoaWNoIGlzIGBab2RPYmplY3Q8Li4uPmApXG4gKiB0byB0aGUgYFpvZFR5cGU8dW5rbm93bj5gIHRoYXQgYFJvb21Db21tYW5kLmlucHV0U2NoZW1hYCBleHBlY3RzLiBUaGVcbiAqIGluc3RhbGxlZCB6b2QgYFpvZE9iamVjdGAgaXMgbm90IHN0cnVjdHVyYWxseSBhc3NpZ25hYmxlIHRvIHNxbHJvb21zJ1xuICogYFpvZFR5cGU8dW5rbm93bj5gIChjb3ZhcmlhbmNlIG9uIHRoZSBvdXRwdXQgdHlwZSksIHNvIGEgY2FzdCBpcyByZXF1aXJlZCBhdFxuICogdGhlIGFzc2lnbm1lbnQgc2l0ZS4gVGhpcyBoZWxwZXIgY2VudHJhbGl6ZXMgdGhhdCBjYXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNJbnB1dFNjaGVtYShzY2hlbWE6IFpvZFR5cGUpOiBab2RUeXBlPHVua25vd24+IHtcbiAgcmV0dXJuIHNjaGVtYSBhcyB1bmtub3duIGFzIFpvZFR5cGU8dW5rbm93bj47XG59XG5cbi8qKlxuICogV3JhcCBhbiBleGlzdGluZyBBSSBTREsgdG9vbCBhcyBhIHNxbHJvb21zIGBSb29tQ29tbWFuZGAuIFRoZSBjb21tYW5kJ3NcbiAqIGBleGVjdXRlYCBjYWxscyB0aGUgdG9vbCdzIGBleGVjdXRlYCBhbmQgdGhlbiBhcHBsaWVzIHRoZSB0b29sJ3NcbiAqIGB0b01vZGVsT3V0cHV0YCAoaWYgYW55KSBzbyB0aGUgdHJpbW1lZCwgbW9kZWwtZmFjaW5nIHNoYXBlIGlzIHdoYXQgdGhlXG4gKiByZWdpc3RyeSBzdG9yZXMgYW5kIGRvd25zdHJlYW0gc3VyZmFjZXMgKEFJIHNraWxsLCBwYWxldHRlLCBDTEksIE1DUCkgc2VlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9vbFRvQ29tbWFuZCh0b29sOiBBbnlUb29sLCBtZXRhOiBDb21tYW5kTWV0YSk6IFJvb21Db21tYW5kIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogbWV0YS5pZCxcbiAgICBuYW1lOiBtZXRhLm5hbWUsXG4gICAgZGVzY3JpcHRpb246IHRvb2wuZGVzY3JpcHRpb24sXG4gICAgZ3JvdXA6IG1ldGEuZ3JvdXAsXG4gICAga2V5d29yZHM6IG1ldGEua2V5d29yZHMsXG4gICAgaW5wdXRTY2hlbWE6IHRvb2wuaW5wdXRTY2hlbWEgYXMgYW55LFxuICAgIGV4ZWN1dGU6IGFzeW5jIChjdHgsIGlucHV0KSA9PiB7XG4gICAgICBpZiAoIXRvb2wuZXhlY3V0ZSB8fCB0eXBlb2YgdG9vbC5leGVjdXRlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgY29tbWFuZElkOiBtZXRhLmlkLFxuICAgICAgICAgIGVycm9yOiAnVG9vbCBoYXMgbm8gZXhlY3V0ZSBmdW5jdGlvbi4nXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaHJlYWQgdGhlIGNhbGxlcidzIEFib3J0U2lnbmFsIHRocm91Z2ggc28gaG9zdHMgKFdlYk1DUCAvIGJyaWRnZSlcbiAgICAgICAgLy8gY2FuIGNhbmNlbCBsb25nLXJ1bm5pbmcgd3JhcHBlZCB0b29scyB3aGVuIHRoZSBhZ2VudCBhYm9ydHMuIFRvb2xzXG4gICAgICAgIC8vIHRoYXQgZG9uJ3QgdXNlIGEgc2lnbmFsIGlnbm9yZSBpdC5cbiAgICAgICAgY29uc3QgcmF3T3V0cHV0ID0gYXdhaXQgdG9vbC5leGVjdXRlKGlucHV0ID8/IHt9LCB7XG4gICAgICAgICAgdG9vbENhbGxJZDogbWV0YS5pZCxcbiAgICAgICAgICBzaWduYWw6IGN0eC5zaWduYWxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRyaW1tZWQgPVxuICAgICAgICAgIHR5cGVvZiB0b29sLnRvTW9kZWxPdXRwdXQgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gdG9vbC50b01vZGVsT3V0cHV0KHtvdXRwdXQ6IHJhd091dHB1dCwgdG9vbENhbGxJZDogbWV0YS5pZH0pXG4gICAgICAgICAgICA6IHJhd091dHB1dDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiByYXdPdXRwdXQ/LnN1Y2Nlc3MgPz8gdHJ1ZSxcbiAgICAgICAgICBjb21tYW5kSWQ6IG1ldGEuaWQsXG4gICAgICAgICAgLy8gQSBzdHJ1Y3R1cmVkIGZhaWx1cmUgKHN1Y2Nlc3M6ZmFsc2UpIHRoYXQgZGlkbid0IHRocm93IG11c3Qgc3RpbGxcbiAgICAgICAgICAvLyBjYXJyeSBhbiBlcnJvciBtZXNzYWdlIOKAlCBvdGhlcndpc2UgY2FsbGVycyBzZWUge3N1Y2Nlc3M6ZmFsc2UsXG4gICAgICAgICAgLy8gZXJyb3I6dW5kZWZpbmVkfSBhbmQgZG93bnN0cmVhbSBmb3JtYXR0ZXJzIG1pc3JlcG9ydCBpdCBhcyBhXG4gICAgICAgICAgLy8gc3VjY2Vzcy4gTWFueSB0b29sL3Jlc3VsdCBzaGFwZXMgKGluY2x1ZGluZyBSb29tQ29tbWFuZFJlc3VsdClcbiAgICAgICAgICAvLyBjYXJyeSB0aGUgZmFpbHVyZSBpbiBhIGBtZXNzYWdlYCBmaWVsZCByYXRoZXIgdGhhbiBgZXJyb3JgLCBzb1xuICAgICAgICAgIC8vIGZhbGwgYmFjayB0byB0aGF0IGJlZm9yZSB0aGUgZ2VuZXJpYyBtZXNzYWdlLlxuICAgICAgICAgIGVycm9yOlxuICAgICAgICAgICAgcmF3T3V0cHV0Py5zdWNjZXNzID09PSBmYWxzZVxuICAgICAgICAgICAgICA/IChyYXdPdXRwdXQ/LmVycm9yIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz9cbiAgICAgICAgICAgICAgICAocmF3T3V0cHV0Py5tZXNzYWdlIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz9cbiAgICAgICAgICAgICAgICAnVG9vbCBleGVjdXRpb24gZmFpbGVkLidcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgZGF0YTogdHlwZW9mIHRyaW1tZWQgPT09ICdvYmplY3QnICYmIHRyaW1tZWQgIT09IG51bGwgPyB0cmltbWVkIDoge2RldGFpbHM6IHRyaW1tZWR9XG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGNvbW1hbmRJZDogbWV0YS5pZCxcbiAgICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBS0E7O0FBUUE7O0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNBLGFBQWFBLENBQUNDLE1BQWUsRUFBb0I7RUFDL0QsT0FBT0EsTUFBTTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsYUFBYUEsQ0FBQ0MsSUFBYSxFQUFFQyxJQUFpQixFQUFlO0VBQzNFLE9BQU87SUFDTEMsRUFBRSxFQUFFRCxJQUFJLENBQUNDLEVBQUU7SUFDWEMsSUFBSSxFQUFFRixJQUFJLENBQUNFLElBQUk7SUFDZkMsV0FBVyxFQUFFSixJQUFJLENBQUNJLFdBQVc7SUFDN0JDLEtBQUssRUFBRUosSUFBSSxDQUFDSSxLQUFLO0lBQ2pCQyxRQUFRLEVBQUVMLElBQUksQ0FBQ0ssUUFBUTtJQUN2QkMsV0FBVyxFQUFFUCxJQUFJLENBQUNPLFdBQWtCO0lBQ3BDQyxPQUFPO01BQUEsSUFBQUMsUUFBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUUsU0FBQUMsUUFBT0MsR0FBRyxFQUFFQyxLQUFLO1FBQUEsSUFBQUMsa0JBQUEsRUFBQUMsSUFBQSxFQUFBQyxLQUFBLEVBQUFDLFNBQUEsRUFBQUMsT0FBQTtRQUFBLE9BQUFULG1CQUFBLENBQUFVLElBQUEsVUFBQUMsU0FBQUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1lBQUE7Y0FBQSxNQUNwQixDQUFDekIsSUFBSSxDQUFDUSxPQUFPLElBQUksT0FBT1IsSUFBSSxDQUFDUSxPQUFPLEtBQUssVUFBVTtnQkFBQWUsUUFBQSxDQUFBRSxJQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBRixRQUFBLENBQUFHLE1BQUEsV0FDOUM7Z0JBQ0xDLE9BQU8sRUFBRSxLQUFLO2dCQUNkQyxTQUFTLEVBQUUzQixJQUFJLENBQUNDLEVBQUU7Z0JBQ2xCMkIsS0FBSyxFQUFFO2NBQ1QsQ0FBQztZQUFBO2NBQUFOLFFBQUEsQ0FBQUMsSUFBQTtjQUFBRCxRQUFBLENBQUFFLElBQUE7Y0FBQSxPQU11QnpCLElBQUksQ0FBQ1EsT0FBTyxDQUFDTyxLQUFLLGFBQUxBLEtBQUssY0FBTEEsS0FBSyxHQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNoRGUsVUFBVSxFQUFFN0IsSUFBSSxDQUFDQyxFQUFFO2dCQUNuQjZCLE1BQU0sRUFBRWpCLEdBQUcsQ0FBQ2lCO2NBQ2QsQ0FBQyxDQUFDO1lBQUE7Y0FISVosU0FBUyxHQUFBSSxRQUFBLENBQUFTLElBQUE7Y0FJVFosT0FBTyxHQUNYLE9BQU9wQixJQUFJLENBQUNpQyxhQUFhLEtBQUssVUFBVSxHQUNwQ2pDLElBQUksQ0FBQ2lDLGFBQWEsQ0FBQztnQkFBQ0MsTUFBTSxFQUFFZixTQUFTO2dCQUFFVyxVQUFVLEVBQUU3QixJQUFJLENBQUNDO2NBQUUsQ0FBQyxDQUFDLEdBQzVEaUIsU0FBUztjQUFBLE9BQUFJLFFBQUEsQ0FBQUcsTUFBQSxXQUNSO2dCQUNMQyxPQUFPLEdBQUFYLGtCQUFBLEdBQUVHLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFUSxPQUFPLGNBQUFYLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUksSUFBSTtnQkFDbkNZLFNBQVMsRUFBRTNCLElBQUksQ0FBQ0MsRUFBRTtnQkFDbEI7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0EyQixLQUFLLEVBQ0gsQ0FBQVYsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVRLE9BQU8sTUFBSyxLQUFLLElBQUFWLElBQUEsSUFBQUMsS0FBQSxHQUN2QkMsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVVLEtBQUssY0FBQVgsS0FBQSxjQUFBQSxLQUFBLEdBQ2hCQyxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRWdCLE9BQU8sY0FBQWxCLElBQUEsY0FBQUEsSUFBQSxHQUNuQix3QkFBd0IsR0FDeEJtQixTQUFTO2dCQUNmQyxJQUFJLEVBQUVDLE9BQUEsQ0FBT2xCLE9BQU8sTUFBSyxRQUFRLElBQUlBLE9BQU8sS0FBSyxJQUFJLEdBQUdBLE9BQU8sR0FBRztrQkFBQ21CLE9BQU8sRUFBRW5CO2dCQUFPO2NBQ3JGLENBQUM7WUFBQTtjQUFBRyxRQUFBLENBQUFDLElBQUE7Y0FBQUQsUUFBQSxDQUFBaUIsRUFBQSxHQUFBakIsUUFBQTtjQUFBLE9BQUFBLFFBQUEsQ0FBQUcsTUFBQSxXQUVNO2dCQUNMQyxPQUFPLEVBQUUsS0FBSztnQkFDZEMsU0FBUyxFQUFFM0IsSUFBSSxDQUFDQyxFQUFFO2dCQUNsQjJCLEtBQUssRUFBRU4sUUFBQSxDQUFBaUIsRUFBQSxZQUFpQkMsS0FBSyxHQUFHbEIsUUFBQSxDQUFBaUIsRUFBQSxDQUFNTCxPQUFPLEdBQUdPLE1BQU0sQ0FBQW5CLFFBQUEsQ0FBQWlCLEVBQU07Y0FDOUQsQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBakIsUUFBQSxDQUFBb0IsSUFBQTtVQUFBO1FBQUEsR0FBQTlCLE9BQUE7TUFBQSxDQUVKO01BQUEsU0E1Q0RMLE9BQU9BLENBQUFvQyxFQUFBLEVBQUFDLEdBQUE7UUFBQSxPQUFBcEMsUUFBQSxDQUFBcUMsS0FBQSxPQUFBQyxTQUFBO01BQUE7TUFBQSxPQUFQdkMsT0FBTztJQUFBO0VBNkNULENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
// SPDX-License-Identifier: MIT
|
|
4
|
+
// Copyright contributors to the kepler.gl project
|
|
5
|
+
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
export var datasetContextCommandId = 'map.get-dataset-context';
|
|
8
|
+
export function getDatasetContextCommand(ctx) {
|
|
9
|
+
return {
|
|
10
|
+
id: datasetContextCommandId,
|
|
11
|
+
name: 'Get dataset context',
|
|
12
|
+
group: 'Map',
|
|
13
|
+
description: 'Get all loaded kepler.gl datasets with their fields and layer configurations. ' + 'Returns each dataset name, id, field name→type mappings, and the layers ' + '(id, label, type, geometryMode, geometryColumns) bound to it.',
|
|
14
|
+
metadata: {
|
|
15
|
+
readOnly: true,
|
|
16
|
+
riskLevel: 'low',
|
|
17
|
+
idempotent: true
|
|
18
|
+
},
|
|
19
|
+
inputSchema: z.object({}),
|
|
20
|
+
execute: function () {
|
|
21
|
+
var _execute = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
22
|
+
var context, trimmed, datasets, count;
|
|
23
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
24
|
+
while (1) switch (_context.prev = _context.next) {
|
|
25
|
+
case 0:
|
|
26
|
+
_context.prev = 0;
|
|
27
|
+
context = ctx.getDatasetContext();
|
|
28
|
+
if (context) {
|
|
29
|
+
_context.next = 4;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
return _context.abrupt("return", {
|
|
33
|
+
success: false,
|
|
34
|
+
commandId: datasetContextCommandId,
|
|
35
|
+
error: 'No datasets or layers available.',
|
|
36
|
+
data: {
|
|
37
|
+
instruction: 'Please ensure the kepler.gl map has loaded datasets and try again.'
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
case 4:
|
|
41
|
+
// Accept either a pure-JSON context or the two-part "human line + JSON"
|
|
42
|
+
// format: hosts may return either, so don't assume the first line is a
|
|
43
|
+
// preface.
|
|
44
|
+
trimmed = context.trim();
|
|
45
|
+
datasets = JSON.parse(trimmed.startsWith('[') || trimmed.startsWith('{') ? trimmed : context.split('\n').slice(1).join('\n'));
|
|
46
|
+
count = Array.isArray(datasets) ? datasets.length : Object.keys(datasets).length;
|
|
47
|
+
return _context.abrupt("return", {
|
|
48
|
+
success: true,
|
|
49
|
+
commandId: datasetContextCommandId,
|
|
50
|
+
data: {
|
|
51
|
+
details: "".concat(count, " dataset(s) loaded."),
|
|
52
|
+
datasets: datasets
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
case 10:
|
|
56
|
+
_context.prev = 10;
|
|
57
|
+
_context.t0 = _context["catch"](0);
|
|
58
|
+
return _context.abrupt("return", {
|
|
59
|
+
success: false,
|
|
60
|
+
commandId: datasetContextCommandId,
|
|
61
|
+
error: _context.t0 instanceof Error ? _context.t0.message : 'Unknown error',
|
|
62
|
+
data: {
|
|
63
|
+
instruction: 'Please ensure the kepler.gl map is properly loaded and try again.'
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
case 13:
|
|
67
|
+
case "end":
|
|
68
|
+
return _context.stop();
|
|
69
|
+
}
|
|
70
|
+
}, _callee, null, [[0, 10]]);
|
|
71
|
+
}));
|
|
72
|
+
function execute() {
|
|
73
|
+
return _execute.apply(this, arguments);
|
|
74
|
+
}
|
|
75
|
+
return execute;
|
|
76
|
+
}()
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ6IiwiZGF0YXNldENvbnRleHRDb21tYW5kSWQiLCJnZXREYXRhc2V0Q29udGV4dENvbW1hbmQiLCJjdHgiLCJpZCIsIm5hbWUiLCJncm91cCIsImRlc2NyaXB0aW9uIiwibWV0YWRhdGEiLCJyZWFkT25seSIsInJpc2tMZXZlbCIsImlkZW1wb3RlbnQiLCJpbnB1dFNjaGVtYSIsIm9iamVjdCIsImV4ZWN1dGUiLCJfZXhlY3V0ZSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiY29udGV4dCIsInRyaW1tZWQiLCJkYXRhc2V0cyIsImNvdW50Iiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImdldERhdGFzZXRDb250ZXh0IiwiYWJydXB0Iiwic3VjY2VzcyIsImNvbW1hbmRJZCIsImVycm9yIiwiZGF0YSIsImluc3RydWN0aW9uIiwidHJpbSIsIkpTT04iLCJwYXJzZSIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsIk9iamVjdCIsImtleXMiLCJkZXRhaWxzIiwiY29uY2F0IiwidDAiLCJFcnJvciIsIm1lc3NhZ2UiLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvZGF0YXNldC1jb250ZXh0LWNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHR5cGUge1Jvb21Db21tYW5kfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB0eXBlIHtLZXBsZXJDb250ZXh0fSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGRhdGFzZXRDb250ZXh0Q29tbWFuZElkID0gJ21hcC5nZXQtZGF0YXNldC1jb250ZXh0JyBhcyBjb25zdDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFzZXRDb250ZXh0Q29tbWFuZChjdHg6IEtlcGxlckNvbnRleHQpOiBSb29tQ29tbWFuZCB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGRhdGFzZXRDb250ZXh0Q29tbWFuZElkLFxuICAgIG5hbWU6ICdHZXQgZGF0YXNldCBjb250ZXh0JyxcbiAgICBncm91cDogJ01hcCcsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnR2V0IGFsbCBsb2FkZWQga2VwbGVyLmdsIGRhdGFzZXRzIHdpdGggdGhlaXIgZmllbGRzIGFuZCBsYXllciBjb25maWd1cmF0aW9ucy4gJyArXG4gICAgICAnUmV0dXJucyBlYWNoIGRhdGFzZXQgbmFtZSwgaWQsIGZpZWxkIG5hbWXihpJ0eXBlIG1hcHBpbmdzLCBhbmQgdGhlIGxheWVycyAnICtcbiAgICAgICcoaWQsIGxhYmVsLCB0eXBlLCBnZW9tZXRyeU1vZGUsIGdlb21ldHJ5Q29sdW1ucykgYm91bmQgdG8gaXQuJyxcbiAgICBtZXRhZGF0YToge3JlYWRPbmx5OiB0cnVlLCByaXNrTGV2ZWw6ICdsb3cnLCBpZGVtcG90ZW50OiB0cnVlfSxcbiAgICBpbnB1dFNjaGVtYTogei5vYmplY3Qoe30pIGFzIGFueSxcbiAgICBleGVjdXRlOiBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gY3R4LmdldERhdGFzZXRDb250ZXh0KCk7XG4gICAgICAgIGlmICghY29udGV4dCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbW1hbmRJZDogZGF0YXNldENvbnRleHRDb21tYW5kSWQsXG4gICAgICAgICAgICBlcnJvcjogJ05vIGRhdGFzZXRzIG9yIGxheWVycyBhdmFpbGFibGUuJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb246ICdQbGVhc2UgZW5zdXJlIHRoZSBrZXBsZXIuZ2wgbWFwIGhhcyBsb2FkZWQgZGF0YXNldHMgYW5kIHRyeSBhZ2Fpbi4nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBY2NlcHQgZWl0aGVyIGEgcHVyZS1KU09OIGNvbnRleHQgb3IgdGhlIHR3by1wYXJ0IFwiaHVtYW4gbGluZSArIEpTT05cIlxuICAgICAgICAvLyBmb3JtYXQ6IGhvc3RzIG1heSByZXR1cm4gZWl0aGVyLCBzbyBkb24ndCBhc3N1bWUgdGhlIGZpcnN0IGxpbmUgaXMgYVxuICAgICAgICAvLyBwcmVmYWNlLlxuICAgICAgICBjb25zdCB0cmltbWVkID0gY29udGV4dC50cmltKCk7XG4gICAgICAgIGNvbnN0IGRhdGFzZXRzID0gSlNPTi5wYXJzZShcbiAgICAgICAgICB0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKVxuICAgICAgICAgICAgPyB0cmltbWVkXG4gICAgICAgICAgICA6IGNvbnRleHQuc3BsaXQoJ1xcbicpLnNsaWNlKDEpLmpvaW4oJ1xcbicpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gQXJyYXkuaXNBcnJheShkYXRhc2V0cykgPyBkYXRhc2V0cy5sZW5ndGggOiBPYmplY3Qua2V5cyhkYXRhc2V0cykubGVuZ3RoO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgY29tbWFuZElkOiBkYXRhc2V0Q29udGV4dENvbW1hbmRJZCxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkZXRhaWxzOiBgJHtjb3VudH0gZGF0YXNldChzKSBsb2FkZWQuYCxcbiAgICAgICAgICAgIGRhdGFzZXRzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBjb21tYW5kSWQ6IGRhdGFzZXRDb250ZXh0Q29tbWFuZElkLFxuICAgICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbnN0cnVjdGlvbjogJ1BsZWFzZSBlbnN1cmUgdGhlIGtlcGxlci5nbCBtYXAgaXMgcHJvcGVybHkgbG9hZGVkIGFuZCB0cnkgYWdhaW4uJ1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTs7QUFHQSxTQUFRQSxDQUFDLFFBQU8sS0FBSztBQUdyQixPQUFPLElBQU1DLHVCQUF1QixHQUFHLHlCQUFrQztBQUV6RSxPQUFPLFNBQVNDLHdCQUF3QkEsQ0FBQ0MsR0FBa0IsRUFBZTtFQUN4RSxPQUFPO0lBQ0xDLEVBQUUsRUFBRUgsdUJBQXVCO0lBQzNCSSxJQUFJLEVBQUUscUJBQXFCO0lBQzNCQyxLQUFLLEVBQUUsS0FBSztJQUNaQyxXQUFXLEVBQ1QsZ0ZBQWdGLEdBQ2hGLDBFQUEwRSxHQUMxRSwrREFBK0Q7SUFDakVDLFFBQVEsRUFBRTtNQUFDQyxRQUFRLEVBQUUsSUFBSTtNQUFFQyxTQUFTLEVBQUUsS0FBSztNQUFFQyxVQUFVLEVBQUU7SUFBSSxDQUFDO0lBQzlEQyxXQUFXLEVBQUVaLENBQUMsQ0FBQ2EsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFRO0lBQ2hDQyxPQUFPO01BQUEsSUFBQUMsUUFBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUUsU0FBQUMsUUFBQTtRQUFBLElBQUFDLE9BQUEsRUFBQUMsT0FBQSxFQUFBQyxRQUFBLEVBQUFDLEtBQUE7UUFBQSxPQUFBTixtQkFBQSxDQUFBTyxJQUFBLFVBQUFDLFNBQUFDLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtZQUFBO2NBQUFGLFFBQUEsQ0FBQUMsSUFBQTtjQUVDUCxPQUFPLEdBQUdqQixHQUFHLENBQUMwQixpQkFBaUIsQ0FBQyxDQUFDO2NBQUEsSUFDbENULE9BQU87Z0JBQUFNLFFBQUEsQ0FBQUUsSUFBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQUYsUUFBQSxDQUFBSSxNQUFBLFdBQ0g7Z0JBQ0xDLE9BQU8sRUFBRSxLQUFLO2dCQUNkQyxTQUFTLEVBQUUvQix1QkFBdUI7Z0JBQ2xDZ0MsS0FBSyxFQUFFLGtDQUFrQztnQkFDekNDLElBQUksRUFBRTtrQkFDSkMsV0FBVyxFQUFFO2dCQUNmO2NBQ0YsQ0FBQztZQUFBO2NBRUg7Y0FDQTtjQUNBO2NBQ01kLE9BQU8sR0FBR0QsT0FBTyxDQUFDZ0IsSUFBSSxDQUFDLENBQUM7Y0FDeEJkLFFBQVEsR0FBR2UsSUFBSSxDQUFDQyxLQUFLLENBQ3pCakIsT0FBTyxDQUFDa0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJbEIsT0FBTyxDQUFDa0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUM5Q2xCLE9BQU8sR0FDUEQsT0FBTyxDQUFDb0IsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQzVDLENBQUM7Y0FDS25CLEtBQUssR0FBR29CLEtBQUssQ0FBQ0MsT0FBTyxDQUFDdEIsUUFBUSxDQUFDLEdBQUdBLFFBQVEsQ0FBQ3VCLE1BQU0sR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUN6QixRQUFRLENBQUMsQ0FBQ3VCLE1BQU07Y0FBQSxPQUFBbkIsUUFBQSxDQUFBSSxNQUFBLFdBQy9FO2dCQUNMQyxPQUFPLEVBQUUsSUFBSTtnQkFDYkMsU0FBUyxFQUFFL0IsdUJBQXVCO2dCQUNsQ2lDLElBQUksRUFBRTtrQkFDSmMsT0FBTyxLQUFBQyxNQUFBLENBQUsxQixLQUFLLHdCQUFxQjtrQkFDdENELFFBQVEsRUFBUkE7Z0JBQ0Y7Y0FDRixDQUFDO1lBQUE7Y0FBQUksUUFBQSxDQUFBQyxJQUFBO2NBQUFELFFBQUEsQ0FBQXdCLEVBQUEsR0FBQXhCLFFBQUE7Y0FBQSxPQUFBQSxRQUFBLENBQUFJLE1BQUEsV0FFTTtnQkFDTEMsT0FBTyxFQUFFLEtBQUs7Z0JBQ2RDLFNBQVMsRUFBRS9CLHVCQUF1QjtnQkFDbENnQyxLQUFLLEVBQUVQLFFBQUEsQ0FBQXdCLEVBQUEsWUFBaUJDLEtBQUssR0FBR3pCLFFBQUEsQ0FBQXdCLEVBQUEsQ0FBTUUsT0FBTyxHQUFHLGVBQWU7Z0JBQy9EbEIsSUFBSSxFQUFFO2tCQUNKQyxXQUFXLEVBQUU7Z0JBQ2Y7Y0FDRixDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUFULFFBQUEsQ0FBQTJCLElBQUE7VUFBQTtRQUFBLEdBQUFsQyxPQUFBO01BQUEsQ0FFSjtNQUFBLFNBekNETCxPQUFPQSxDQUFBO1FBQUEsT0FBQUMsUUFBQSxDQUFBdUMsS0FBQSxPQUFBQyxTQUFBO01BQUE7TUFBQSxPQUFQekMsT0FBTztJQUFBO0VBMENULENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
import { getBasemapCommand } from './basemap-command';
|
|
5
|
+
import { getViewModeCommand } from './view-mode-command';
|
|
6
|
+
import { getMapBoundaryCommand } from './boundary-command';
|
|
7
|
+
import { getAddLayerCommand } from './layer-creation-command';
|
|
8
|
+
import { getUpdateLayerColorCommand } from './layer-style-command';
|
|
9
|
+
import { getLoadDataCommand } from './load-data-command';
|
|
10
|
+
import { getSaveDataCommand } from './save-data-command';
|
|
11
|
+
import { getTableCommand } from './table-command';
|
|
12
|
+
import { getAddColumnCommand } from './add-column-command';
|
|
13
|
+
import { getAddTimeFilterCommand } from './time-filter-command';
|
|
14
|
+
import { getToggleTimeFilterCommand } from './toggle-time-filter-command';
|
|
15
|
+
import { getSplitViewCommand } from './split-view-command';
|
|
16
|
+
import { getDatasetContextCommand } from './dataset-context-command';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Owner string under which all kepler-ai commands are registered in the
|
|
20
|
+
* room-store command registry. Used by `registerCommandsForOwner` /
|
|
21
|
+
* `unregisterCommandsForOwner` in the host's store wiring.
|
|
22
|
+
*/
|
|
23
|
+
export var KEPLER_COMMAND_OWNER = 'kepler-ai';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Build the kepler-gl map-mutation commands for a given `KeplerContext`.
|
|
27
|
+
* Returns a map keyed by command id (e.g. `map.set-basemap`) so the registry
|
|
28
|
+
* registration is a flat merge.
|
|
29
|
+
*/
|
|
30
|
+
export function getKeplerCommands(ctx) {
|
|
31
|
+
var commands = [getBasemapCommand(ctx), getViewModeCommand(ctx), getMapBoundaryCommand(ctx), getAddLayerCommand(ctx), getUpdateLayerColorCommand(ctx), getLoadDataCommand(ctx), getSaveDataCommand(ctx), getTableCommand(ctx), getAddColumnCommand(ctx), getAddTimeFilterCommand(ctx), getToggleTimeFilterCommand(ctx), getSplitViewCommand(ctx), getDatasetContextCommand(ctx)];
|
|
32
|
+
return Object.fromEntries(commands.map(function (c) {
|
|
33
|
+
return [c.id, c];
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
export { getBasemapCommand } from './basemap-command';
|
|
37
|
+
export { getViewModeCommand } from './view-mode-command';
|
|
38
|
+
export { getMapBoundaryCommand } from './boundary-command';
|
|
39
|
+
export { getAddLayerCommand, guessDefaultLayer } from './layer-creation-command';
|
|
40
|
+
export { getUpdateLayerColorCommand } from './layer-style-command';
|
|
41
|
+
export { getLoadDataCommand } from './load-data-command';
|
|
42
|
+
export { getSaveDataCommand } from './save-data-command';
|
|
43
|
+
export { getTableCommand } from './table-command';
|
|
44
|
+
export { getAddColumnCommand } from './add-column-command';
|
|
45
|
+
export { getAddTimeFilterCommand } from './time-filter-command';
|
|
46
|
+
export { getToggleTimeFilterCommand } from './toggle-time-filter-command';
|
|
47
|
+
export { getSplitViewCommand } from './split-view-command';
|
|
48
|
+
export { getDatasetContextCommand } from './dataset-context-command';
|
|
49
|
+
export { toolToCommand, asInputSchema } from './command-wrappers';
|
|
50
|
+
export { datasetNameToTableName, convertArrowRowToObject, arrowTableToObjects, tableToLLMResult, formatResultsForLLM, NUMBER_OF_ROWS_RETURN_TO_LLM, LLM_PREVIEW_MAX_TOTAL_LENGTH, LLM_PREVIEW_MAX_VALUE_LENGTH, getValuesFromDataset, getValuesFromVectorTileLayer, isObjectColumn, isVectorTileLayer, stringifyObjectColumn, restoreObjectColumns, buildAddColumnPayload } from './utils';
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRCYXNlbWFwQ29tbWFuZCIsImdldFZpZXdNb2RlQ29tbWFuZCIsImdldE1hcEJvdW5kYXJ5Q29tbWFuZCIsImdldEFkZExheWVyQ29tbWFuZCIsImdldFVwZGF0ZUxheWVyQ29sb3JDb21tYW5kIiwiZ2V0TG9hZERhdGFDb21tYW5kIiwiZ2V0U2F2ZURhdGFDb21tYW5kIiwiZ2V0VGFibGVDb21tYW5kIiwiZ2V0QWRkQ29sdW1uQ29tbWFuZCIsImdldEFkZFRpbWVGaWx0ZXJDb21tYW5kIiwiZ2V0VG9nZ2xlVGltZUZpbHRlckNvbW1hbmQiLCJnZXRTcGxpdFZpZXdDb21tYW5kIiwiZ2V0RGF0YXNldENvbnRleHRDb21tYW5kIiwiS0VQTEVSX0NPTU1BTkRfT1dORVIiLCJnZXRLZXBsZXJDb21tYW5kcyIsImN0eCIsImNvbW1hbmRzIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJtYXAiLCJjIiwiaWQiLCJndWVzc0RlZmF1bHRMYXllciIsInRvb2xUb0NvbW1hbmQiLCJhc0lucHV0U2NoZW1hIiwiZGF0YXNldE5hbWVUb1RhYmxlTmFtZSIsImNvbnZlcnRBcnJvd1Jvd1RvT2JqZWN0IiwiYXJyb3dUYWJsZVRvT2JqZWN0cyIsInRhYmxlVG9MTE1SZXN1bHQiLCJmb3JtYXRSZXN1bHRzRm9yTExNIiwiTlVNQkVSX09GX1JPV1NfUkVUVVJOX1RPX0xMTSIsIkxMTV9QUkVWSUVXX01BWF9UT1RBTF9MRU5HVEgiLCJMTE1fUFJFVklFV19NQVhfVkFMVUVfTEVOR1RIIiwiZ2V0VmFsdWVzRnJvbURhdGFzZXQiLCJnZXRWYWx1ZXNGcm9tVmVjdG9yVGlsZUxheWVyIiwiaXNPYmplY3RDb2x1bW4iLCJpc1ZlY3RvclRpbGVMYXllciIsInN0cmluZ2lmeU9iamVjdENvbHVtbiIsInJlc3RvcmVPYmplY3RDb2x1bW5zIiwiYnVpbGRBZGRDb2x1bW5QYXlsb2FkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB0eXBlIHtSb29tQ29tbWFuZH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7S2VwbGVyQ29udGV4dH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge2dldEJhc2VtYXBDb21tYW5kfSBmcm9tICcuL2Jhc2VtYXAtY29tbWFuZCc7XG5pbXBvcnQge2dldFZpZXdNb2RlQ29tbWFuZH0gZnJvbSAnLi92aWV3LW1vZGUtY29tbWFuZCc7XG5pbXBvcnQge2dldE1hcEJvdW5kYXJ5Q29tbWFuZH0gZnJvbSAnLi9ib3VuZGFyeS1jb21tYW5kJztcbmltcG9ydCB7Z2V0QWRkTGF5ZXJDb21tYW5kfSBmcm9tICcuL2xheWVyLWNyZWF0aW9uLWNvbW1hbmQnO1xuaW1wb3J0IHtnZXRVcGRhdGVMYXllckNvbG9yQ29tbWFuZH0gZnJvbSAnLi9sYXllci1zdHlsZS1jb21tYW5kJztcbmltcG9ydCB7Z2V0TG9hZERhdGFDb21tYW5kfSBmcm9tICcuL2xvYWQtZGF0YS1jb21tYW5kJztcbmltcG9ydCB7Z2V0U2F2ZURhdGFDb21tYW5kfSBmcm9tICcuL3NhdmUtZGF0YS1jb21tYW5kJztcbmltcG9ydCB7Z2V0VGFibGVDb21tYW5kfSBmcm9tICcuL3RhYmxlLWNvbW1hbmQnO1xuaW1wb3J0IHtnZXRBZGRDb2x1bW5Db21tYW5kfSBmcm9tICcuL2FkZC1jb2x1bW4tY29tbWFuZCc7XG5pbXBvcnQge2dldEFkZFRpbWVGaWx0ZXJDb21tYW5kfSBmcm9tICcuL3RpbWUtZmlsdGVyLWNvbW1hbmQnO1xuaW1wb3J0IHtnZXRUb2dnbGVUaW1lRmlsdGVyQ29tbWFuZH0gZnJvbSAnLi90b2dnbGUtdGltZS1maWx0ZXItY29tbWFuZCc7XG5pbXBvcnQge2dldFNwbGl0Vmlld0NvbW1hbmR9IGZyb20gJy4vc3BsaXQtdmlldy1jb21tYW5kJztcbmltcG9ydCB7Z2V0RGF0YXNldENvbnRleHRDb21tYW5kfSBmcm9tICcuL2RhdGFzZXQtY29udGV4dC1jb21tYW5kJztcblxuLyoqXG4gKiBPd25lciBzdHJpbmcgdW5kZXIgd2hpY2ggYWxsIGtlcGxlci1haSBjb21tYW5kcyBhcmUgcmVnaXN0ZXJlZCBpbiB0aGVcbiAqIHJvb20tc3RvcmUgY29tbWFuZCByZWdpc3RyeS4gVXNlZCBieSBgcmVnaXN0ZXJDb21tYW5kc0Zvck93bmVyYCAvXG4gKiBgdW5yZWdpc3RlckNvbW1hbmRzRm9yT3duZXJgIGluIHRoZSBob3N0J3Mgc3RvcmUgd2lyaW5nLlxuICovXG5leHBvcnQgY29uc3QgS0VQTEVSX0NPTU1BTkRfT1dORVIgPSAna2VwbGVyLWFpJztcblxuLyoqXG4gKiBCdWlsZCB0aGUga2VwbGVyLWdsIG1hcC1tdXRhdGlvbiBjb21tYW5kcyBmb3IgYSBnaXZlbiBgS2VwbGVyQ29udGV4dGAuXG4gKiBSZXR1cm5zIGEgbWFwIGtleWVkIGJ5IGNvbW1hbmQgaWQgKGUuZy4gYG1hcC5zZXQtYmFzZW1hcGApIHNvIHRoZSByZWdpc3RyeVxuICogcmVnaXN0cmF0aW9uIGlzIGEgZmxhdCBtZXJnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtlcGxlckNvbW1hbmRzKGN0eDogS2VwbGVyQ29udGV4dCk6IFJlY29yZDxzdHJpbmcsIFJvb21Db21tYW5kPiB7XG4gIGNvbnN0IGNvbW1hbmRzID0gW1xuICAgIGdldEJhc2VtYXBDb21tYW5kKGN0eCksXG4gICAgZ2V0Vmlld01vZGVDb21tYW5kKGN0eCksXG4gICAgZ2V0TWFwQm91bmRhcnlDb21tYW5kKGN0eCksXG4gICAgZ2V0QWRkTGF5ZXJDb21tYW5kKGN0eCksXG4gICAgZ2V0VXBkYXRlTGF5ZXJDb2xvckNvbW1hbmQoY3R4KSxcbiAgICBnZXRMb2FkRGF0YUNvbW1hbmQoY3R4KSxcbiAgICBnZXRTYXZlRGF0YUNvbW1hbmQoY3R4KSxcbiAgICBnZXRUYWJsZUNvbW1hbmQoY3R4KSxcbiAgICBnZXRBZGRDb2x1bW5Db21tYW5kKGN0eCksXG4gICAgZ2V0QWRkVGltZUZpbHRlckNvbW1hbmQoY3R4KSxcbiAgICBnZXRUb2dnbGVUaW1lRmlsdGVyQ29tbWFuZChjdHgpLFxuICAgIGdldFNwbGl0Vmlld0NvbW1hbmQoY3R4KSxcbiAgICBnZXREYXRhc2V0Q29udGV4dENvbW1hbmQoY3R4KVxuICBdO1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGNvbW1hbmRzLm1hcChjID0+IFtjLmlkLCBjXSkpO1xufVxuXG5leHBvcnQge2dldEJhc2VtYXBDb21tYW5kfSBmcm9tICcuL2Jhc2VtYXAtY29tbWFuZCc7XG5leHBvcnQge2dldFZpZXdNb2RlQ29tbWFuZH0gZnJvbSAnLi92aWV3LW1vZGUtY29tbWFuZCc7XG5leHBvcnQge2dldE1hcEJvdW5kYXJ5Q29tbWFuZH0gZnJvbSAnLi9ib3VuZGFyeS1jb21tYW5kJztcbmV4cG9ydCB7Z2V0QWRkTGF5ZXJDb21tYW5kLCBndWVzc0RlZmF1bHRMYXllcn0gZnJvbSAnLi9sYXllci1jcmVhdGlvbi1jb21tYW5kJztcbmV4cG9ydCB7Z2V0VXBkYXRlTGF5ZXJDb2xvckNvbW1hbmR9IGZyb20gJy4vbGF5ZXItc3R5bGUtY29tbWFuZCc7XG5leHBvcnQge2dldExvYWREYXRhQ29tbWFuZH0gZnJvbSAnLi9sb2FkLWRhdGEtY29tbWFuZCc7XG5leHBvcnQge2dldFNhdmVEYXRhQ29tbWFuZH0gZnJvbSAnLi9zYXZlLWRhdGEtY29tbWFuZCc7XG5leHBvcnQge2dldFRhYmxlQ29tbWFuZH0gZnJvbSAnLi90YWJsZS1jb21tYW5kJztcbmV4cG9ydCB7Z2V0QWRkQ29sdW1uQ29tbWFuZH0gZnJvbSAnLi9hZGQtY29sdW1uLWNvbW1hbmQnO1xuZXhwb3J0IHtnZXRBZGRUaW1lRmlsdGVyQ29tbWFuZH0gZnJvbSAnLi90aW1lLWZpbHRlci1jb21tYW5kJztcbmV4cG9ydCB7Z2V0VG9nZ2xlVGltZUZpbHRlckNvbW1hbmR9IGZyb20gJy4vdG9nZ2xlLXRpbWUtZmlsdGVyLWNvbW1hbmQnO1xuZXhwb3J0IHtnZXRTcGxpdFZpZXdDb21tYW5kfSBmcm9tICcuL3NwbGl0LXZpZXctY29tbWFuZCc7XG5leHBvcnQge2dldERhdGFzZXRDb250ZXh0Q29tbWFuZH0gZnJvbSAnLi9kYXRhc2V0LWNvbnRleHQtY29tbWFuZCc7XG5leHBvcnQge3Rvb2xUb0NvbW1hbmQsIGFzSW5wdXRTY2hlbWF9IGZyb20gJy4vY29tbWFuZC13cmFwcGVycyc7XG5leHBvcnQgdHlwZSB7QW55VG9vbCwgQ29tbWFuZE1ldGF9IGZyb20gJy4vY29tbWFuZC13cmFwcGVycyc7XG5leHBvcnQgdHlwZSB7XG4gIEtlcGxlckNvbnRleHQsXG4gIEtlcGxlclN0YXRlQWNjZXNzb3JzLFxuICBWaXNTdGF0ZSxcbiAgUm9vbUNvbW1hbmRSZXN1bHQsXG4gIFJvb21Db21tYW5kRXhlY3V0ZU91dHB1dCxcbiAgVG9vbERlc2NyaXB0b3Jcbn0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQge1xuICBkYXRhc2V0TmFtZVRvVGFibGVOYW1lLFxuICBjb252ZXJ0QXJyb3dSb3dUb09iamVjdCxcbiAgYXJyb3dUYWJsZVRvT2JqZWN0cyxcbiAgdGFibGVUb0xMTVJlc3VsdCxcbiAgZm9ybWF0UmVzdWx0c0ZvckxMTSxcbiAgTlVNQkVSX09GX1JPV1NfUkVUVVJOX1RPX0xMTSxcbiAgTExNX1BSRVZJRVdfTUFYX1RPVEFMX0xFTkdUSCxcbiAgTExNX1BSRVZJRVdfTUFYX1ZBTFVFX0xFTkdUSCxcbiAgZ2V0VmFsdWVzRnJvbURhdGFzZXQsXG4gIGdldFZhbHVlc0Zyb21WZWN0b3JUaWxlTGF5ZXIsXG4gIGlzT2JqZWN0Q29sdW1uLFxuICBpc1ZlY3RvclRpbGVMYXllcixcbiAgc3RyaW5naWZ5T2JqZWN0Q29sdW1uLFxuICByZXN0b3JlT2JqZWN0Q29sdW1ucyxcbiAgYnVpbGRBZGRDb2x1bW5QYXlsb2FkXG59IGZyb20gJy4vdXRpbHMnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUlBLFNBQVFBLGlCQUFpQixR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
|