@antelopejs/dms-ai 0.8.0 → 0.9.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/README.md +2 -1
- package/dist/lifecycle/skill-sources.js +19 -146
- package/dist/lifecycle/skill-sources.js.map +1 -1
- package/dist/pages/settings/availability.js +8 -1
- package/dist/pages/settings/availability.js.map +1 -1
- package/dist/pages/settings/options.d.ts +2 -1
- package/dist/pages/settings/options.js +29 -8
- package/dist/pages/settings/options.js.map +1 -1
- package/dist/pages/settings/sections.js +25 -4
- package/dist/pages/settings/sections.js.map +1 -1
- package/dist/routes/builder.d.ts +3 -3
- package/dist/routes/builder.js +10 -2
- package/dist/routes/builder.js.map +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/settings.js.map +1 -1
- package/dist/sidecar/settings-values.d.ts +3 -0
- package/dist/sidecar/settings-values.js +33 -1
- package/dist/sidecar/settings-values.js.map +1 -1
- package/dist/vocabulary/enumerations.js +2 -0
- package/dist/vocabulary/enumerations.js.map +1 -1
- package/dist/vocabulary/tools.js +3 -0
- package/dist/vocabulary/tools.js.map +1 -1
- package/frontend-vue/app/chat/components/ChatView.vue +53 -85
- package/frontend-vue/app/chat/components/Composer.vue +23 -39
- package/frontend-vue/app/chat/components/NoticeCard.vue +25 -0
- package/frontend-vue/app/chat/components/PanelHeader.vue +2 -6
- package/frontend-vue/app/chat/components/ProviderNotice.vue +14 -3
- package/frontend-vue/app/chat/composables/conversation-events.ts +4 -3
- package/frontend-vue/app/chat/composables/useConversation.ts +6 -0
- package/frontend-vue/app/chat/composables/useConversationMode.ts +8 -11
- package/frontend-vue/app/chat/composables/useFollowScroll.ts +77 -0
- package/frontend-vue/app/chat/constants/modes.ts +15 -0
- package/frontend-vue/app/chat/constants/protocol.ts +0 -1
- package/frontend-vue/app/chat/constants/settings.ts +1 -1
- package/frontend-vue/app/chat/types/protocol.ts +19 -9
- package/frontend-vue/app/chat/types/settings.ts +7 -2
- package/frontend-vue/app/chat/utils/permission-view.ts +1 -0
- package/frontend-vue/app/chat/utils/status-label.ts +50 -0
- package/frontend-vue/app/chat/utils/tool-lexicon.ts +16 -0
- package/frontend-vue/app/plugins/ai.client.ts +2 -2
- package/frontend-vue/app/runtime/assistant-actions.ts +4 -2
- package/frontend-vue/app/runtime/assistant-session.ts +5 -1
- package/frontend-vue/app/runtime/block-health.ts +135 -0
- package/frontend-vue/app/runtime/constants.ts +1 -0
- package/frontend-vue/app/runtime/navigation-complete.ts +47 -6
- package/frontend-vue/app/runtime/panel-intents.ts +6 -2
- package/frontend-vue/app/views/constants.ts +2 -0
- package/frontend-vue/app/views/types.ts +3 -1
- package/frontend-vue/i18n/locales/dms-ai-pages-en-GB.json +28 -11
- package/frontend-vue/i18n/locales/dms-ai-pages-fr-FR.json +28 -11
- package/frontend-vue/i18n/locales/dms-ai-panel-en-GB.json +17 -22
- package/frontend-vue/i18n/locales/dms-ai-panel-fr-FR.json +17 -22
- package/frontend-vue/i18n/locales/dms-ai-views-en-GB.json +2 -0
- package/frontend-vue/i18n/locales/dms-ai-views-fr-FR.json +2 -0
- package/frontend-vue/tests/assistant-actions.test.ts +37 -0
- package/frontend-vue/tests/block-health.test.ts +142 -0
- package/frontend-vue/tests/chat/chat-scroll.test.ts +251 -0
- package/frontend-vue/tests/chat/conversation-events.test.ts +35 -3
- package/frontend-vue/tests/chat/provider-notice.test.ts +33 -0
- package/frontend-vue/tests/chat/tool-lexicon.test.ts +1 -0
- package/frontend-vue/tests/chat-panel.test.ts +2 -4
- package/frontend-vue/tests/navigation.test.ts +67 -2
- package/frontend-vue/tests/panel-modes.test.ts +146 -0
- package/frontend-vue/tests/panel-questions.test.ts +1 -19
- package/frontend-vue/tests/panel-states.test.ts +3 -15
- package/frontend-vue/tests/support/fake-layout.ts +119 -0
- package/frontend-vue/tests/support/panel-harness.ts +16 -8
- package/frontend-vue/tests/support/setup-layout.ts +3 -0
- package/frontend-vue/tests/support/stubs.ts +2 -0
- package/frontend-vue/vitest.config.ts +1 -0
- package/package.json +6 -5
- package/sidecar/dist/agent/always-ask-files.d.ts +2 -0
- package/sidecar/dist/agent/always-ask-files.js +34 -0
- package/sidecar/dist/agent/always-ask-files.js.map +1 -0
- package/sidecar/dist/agent/conversation-modes.d.ts +3 -12
- package/sidecar/dist/agent/conversation-modes.js +16 -69
- package/sidecar/dist/agent/conversation-modes.js.map +1 -1
- package/sidecar/dist/agent/effective-mode.d.ts +2 -5
- package/sidecar/dist/agent/effective-mode.js +1 -15
- package/sidecar/dist/agent/effective-mode.js.map +1 -1
- package/sidecar/dist/agent/permission-bus.d.ts +1 -2
- package/sidecar/dist/agent/permission-bus.js +1 -3
- package/sidecar/dist/agent/permission-bus.js.map +1 -1
- package/sidecar/dist/agent/permission-preview.d.ts +6 -0
- package/sidecar/dist/agent/permission-preview.js +35 -10
- package/sidecar/dist/agent/permission-preview.js.map +1 -1
- package/sidecar/dist/agent/permission-rules.js +2 -2
- package/sidecar/dist/agent/permission-rules.js.map +1 -1
- package/sidecar/dist/agent/project-secrets.d.ts +7 -0
- package/sidecar/dist/agent/project-secrets.js +61 -0
- package/sidecar/dist/agent/project-secrets.js.map +1 -0
- package/sidecar/dist/agent/provider.d.ts +10 -4
- package/sidecar/dist/agent/runner.d.ts +8 -2
- package/sidecar/dist/agent/runner.js +11 -3
- package/sidecar/dist/agent/runner.js.map +1 -1
- package/sidecar/dist/agent/session.d.ts +3 -3
- package/sidecar/dist/agent/session.js.map +1 -1
- package/sidecar/dist/agent/tool-kinds.d.ts +7 -1
- package/sidecar/dist/agent/tool-kinds.js +24 -5
- package/sidecar/dist/agent/tool-kinds.js.map +1 -1
- package/sidecar/dist/audit/activity-query.js +2 -0
- package/sidecar/dist/audit/activity-query.js.map +1 -1
- package/sidecar/dist/audit/activity.js +1 -0
- package/sidecar/dist/audit/activity.js.map +1 -1
- package/sidecar/dist/builder/builder-client.js +14 -2
- package/sidecar/dist/builder/builder-client.js.map +1 -1
- package/sidecar/dist/constants/audit.d.ts +1 -3
- package/sidecar/dist/constants/audit.js +2 -1
- package/sidecar/dist/constants/audit.js.map +1 -1
- package/sidecar/dist/constants/builder.d.ts +5 -1
- package/sidecar/dist/constants/builder.js +15 -0
- package/sidecar/dist/constants/builder.js.map +1 -1
- package/sidecar/dist/constants/claude.d.ts +8 -0
- package/sidecar/dist/constants/claude.js +8 -0
- package/sidecar/dist/constants/claude.js.map +1 -1
- package/sidecar/dist/constants/codex.d.ts +4 -0
- package/sidecar/dist/constants/codex.js +4 -0
- package/sidecar/dist/constants/codex.js.map +1 -1
- package/sidecar/dist/constants/mcp.d.ts +1 -1
- package/sidecar/dist/constants/mcp.js +1 -1
- package/sidecar/dist/constants/mcp.js.map +1 -1
- package/sidecar/dist/constants/native-binary.d.ts +5 -2
- package/sidecar/dist/constants/native-binary.js +5 -2
- package/sidecar/dist/constants/native-binary.js.map +1 -1
- package/sidecar/dist/constants/permissions.d.ts +2 -0
- package/sidecar/dist/constants/permissions.js +23 -0
- package/sidecar/dist/constants/permissions.js.map +1 -1
- package/sidecar/dist/constants/project-secrets.d.ts +5 -0
- package/sidecar/dist/constants/project-secrets.js +20 -0
- package/sidecar/dist/constants/project-secrets.js.map +1 -0
- package/sidecar/dist/constants/providers.d.ts +2 -0
- package/sidecar/dist/constants/providers.js +1 -0
- package/sidecar/dist/constants/providers.js.map +1 -1
- package/sidecar/dist/constants/settings.d.ts +2 -2
- package/sidecar/dist/constants/settings.js +4 -9
- package/sidecar/dist/constants/settings.js.map +1 -1
- package/sidecar/dist/constants/timing.d.ts +1 -0
- package/sidecar/dist/constants/timing.js +1 -0
- package/sidecar/dist/constants/timing.js.map +1 -1
- package/sidecar/dist/constants/tool-kinds.d.ts +67 -2
- package/sidecar/dist/constants/tool-kinds.js +111 -33
- package/sidecar/dist/constants/tool-kinds.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-compose.d.ts +51 -0
- package/sidecar/dist/mcp/tools/builder-compose.js +96 -0
- package/sidecar/dist/mcp/tools/builder-compose.js.map +1 -0
- package/sidecar/dist/mcp/tools/builder-gate.js +3 -1
- package/sidecar/dist/mcp/tools/builder-gate.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-project.js +119 -4
- package/sidecar/dist/mcp/tools/builder-project.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-queries.d.ts +31 -0
- package/sidecar/dist/mcp/tools/builder-queries.js +30 -13
- package/sidecar/dist/mcp/tools/builder-queries.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-table-view-schema.d.ts +99 -0
- package/sidecar/dist/mcp/tools/builder-table-view-schema.js +118 -0
- package/sidecar/dist/mcp/tools/builder-table-view-schema.js.map +1 -0
- package/sidecar/dist/mcp/tools/builder-table-view.d.ts +102 -0
- package/sidecar/dist/mcp/tools/builder-table-view.js +24 -0
- package/sidecar/dist/mcp/tools/builder-table-view.js.map +1 -0
- package/sidecar/dist/mcp/tools/builder.d.ts +135 -1
- package/sidecar/dist/mcp/tools/builder.js +17 -4
- package/sidecar/dist/mcp/tools/builder.js.map +1 -1
- package/sidecar/dist/mcp/tools/navigate-to-page.js +12 -4
- package/sidecar/dist/mcp/tools/navigate-to-page.js.map +1 -1
- package/sidecar/dist/pages/block-health.d.ts +14 -0
- package/sidecar/dist/pages/block-health.js +60 -0
- package/sidecar/dist/pages/block-health.js.map +1 -0
- package/sidecar/dist/prompts/agent.d.ts +1 -1
- package/sidecar/dist/prompts/agent.js +4 -3
- package/sidecar/dist/prompts/agent.js.map +1 -1
- package/sidecar/dist/protocol/events.d.ts +140 -63
- package/sidecar/dist/protocol/events.js +24 -8
- package/sidecar/dist/protocol/events.js.map +1 -1
- package/sidecar/dist/protocol/messages.d.ts +111 -49
- package/sidecar/dist/protocol/messages.js +30 -13
- package/sidecar/dist/protocol/messages.js.map +1 -1
- package/sidecar/dist/providers/claude/config.d.ts +19 -5
- package/sidecar/dist/providers/claude/config.js +21 -7
- package/sidecar/dist/providers/claude/config.js.map +1 -1
- package/sidecar/dist/providers/claude/model-fallback.d.ts +9 -0
- package/sidecar/dist/providers/claude/model-fallback.js +37 -0
- package/sidecar/dist/providers/claude/model-fallback.js.map +1 -0
- package/sidecar/dist/providers/claude/provider.js +35 -40
- package/sidecar/dist/providers/claude/provider.js.map +1 -1
- package/sidecar/dist/providers/claude/resolve-binary.js +18 -13
- package/sidecar/dist/providers/claude/resolve-binary.js.map +1 -1
- package/sidecar/dist/providers/claude/safe-mode.d.ts +5 -5
- package/sidecar/dist/providers/claude/safe-mode.js +49 -30
- package/sidecar/dist/providers/claude/safe-mode.js.map +1 -1
- package/sidecar/dist/providers/claude/secret-files.d.ts +2 -0
- package/sidecar/dist/providers/claude/secret-files.js +50 -0
- package/sidecar/dist/providers/claude/secret-files.js.map +1 -0
- package/sidecar/dist/providers/claude/session-stream.d.ts +18 -0
- package/sidecar/dist/providers/claude/session-stream.js +80 -0
- package/sidecar/dist/providers/claude/session-stream.js.map +1 -0
- package/sidecar/dist/providers/claude/tool-guard.d.ts +14 -0
- package/sidecar/dist/providers/claude/tool-guard.js +112 -0
- package/sidecar/dist/providers/claude/tool-guard.js.map +1 -0
- package/sidecar/dist/providers/codex/adapter.d.ts +10 -0
- package/sidecar/dist/providers/codex/adapter.js +20 -5
- package/sidecar/dist/providers/codex/adapter.js.map +1 -1
- package/sidecar/dist/providers/codex/config.d.ts +6 -17
- package/sidecar/dist/providers/codex/config.js +9 -56
- package/sidecar/dist/providers/codex/config.js.map +1 -1
- package/sidecar/dist/providers/codex/mcp-elicitation.d.ts +21 -0
- package/sidecar/dist/providers/codex/mcp-elicitation.js +66 -0
- package/sidecar/dist/providers/codex/mcp-elicitation.js.map +1 -0
- package/sidecar/dist/providers/codex/module.js +1 -1
- package/sidecar/dist/providers/codex/module.js.map +1 -1
- package/sidecar/dist/providers/codex/patch-directories.d.ts +6 -0
- package/sidecar/dist/providers/codex/patch-directories.js +53 -0
- package/sidecar/dist/providers/codex/patch-directories.js.map +1 -0
- package/sidecar/dist/providers/codex/permission-profiles.d.ts +11 -0
- package/sidecar/dist/providers/codex/permission-profiles.js +37 -0
- package/sidecar/dist/providers/codex/permission-profiles.js.map +1 -0
- package/sidecar/dist/providers/codex/permissions.d.ts +13 -4
- package/sidecar/dist/providers/codex/permissions.js +28 -2
- package/sidecar/dist/providers/codex/permissions.js.map +1 -1
- package/sidecar/dist/providers/codex/process.d.ts +1 -0
- package/sidecar/dist/providers/codex/process.js +3 -1
- package/sidecar/dist/providers/codex/process.js.map +1 -1
- package/sidecar/dist/providers/codex/protocol/common.d.ts +16 -4
- package/sidecar/dist/providers/codex/protocol/index.d.ts +2 -2
- package/sidecar/dist/providers/codex/protocol/index.js +1 -1
- package/sidecar/dist/providers/codex/protocol/index.js.map +1 -1
- package/sidecar/dist/providers/codex/protocol/v2.d.ts +23 -32
- package/sidecar/dist/providers/codex/provider.js +13 -12
- package/sidecar/dist/providers/codex/provider.js.map +1 -1
- package/sidecar/dist/providers/codex/secret-file-globs.d.ts +2 -0
- package/sidecar/dist/providers/codex/secret-file-globs.js +45 -0
- package/sidecar/dist/providers/codex/secret-file-globs.js.map +1 -0
- package/sidecar/dist/providers/types.d.ts +3 -1
- package/sidecar/dist/providers/types.js +2 -2
- package/sidecar/dist/providers/types.js.map +1 -1
- package/sidecar/dist/server/chat-events.js +1 -0
- package/sidecar/dist/server/chat-events.js.map +1 -1
- package/sidecar/dist/server/http-routes.js +1 -1
- package/sidecar/dist/server/http-routes.js.map +1 -1
- package/sidecar/dist/server/navigation-completer.d.ts +15 -2
- package/sidecar/dist/server/navigation-completer.js +42 -41
- package/sidecar/dist/server/navigation-completer.js.map +1 -1
- package/sidecar/dist/server/permission-events.d.ts +1 -1
- package/sidecar/dist/server/permission-events.js +5 -8
- package/sidecar/dist/server/permission-events.js.map +1 -1
- package/sidecar/dist/server/routing.js +11 -6
- package/sidecar/dist/server/routing.js.map +1 -1
- package/sidecar/dist/server/tool-calls.d.ts +0 -2
- package/sidecar/dist/server/tool-calls.js +7 -8
- package/sidecar/dist/server/tool-calls.js.map +1 -1
- package/sidecar/dist/server/turns.js +17 -1
- package/sidecar/dist/server/turns.js.map +1 -1
- package/sidecar/dist/server/ws.js +4 -15
- package/sidecar/dist/server/ws.js.map +1 -1
- package/sidecar/dist/skills/skill-usage.js +2 -2
- package/sidecar/dist/skills/skill-usage.js.map +1 -1
- package/sidecar/dist/state/conversations.d.ts +1 -0
- package/sidecar/dist/state/conversations.js +8 -0
- package/sidecar/dist/state/conversations.js.map +1 -1
- package/sidecar/dist/state/settings-store.d.ts +14 -5
- package/sidecar/dist/state/settings-store.js +34 -8
- package/sidecar/dist/state/settings-store.js.map +1 -1
- package/sidecar/dist/state/settings-types.d.ts +16 -2
- package/sidecar/dist/state/settings-types.js +14 -1
- package/sidecar/dist/state/settings-types.js.map +1 -1
- package/sidecar/dist/state/types.d.ts +14 -6
- package/sidecar/dist/state/types.js.map +1 -1
- package/sidecar/package.json +3 -3
- package/skills/dms-ai/SKILL.md +2 -1
- package/skills/dms-builder-safe/REFERENCE.md +5 -6
- package/skills/dms-builder-safe/SKILL.md +12 -10
- package/skills/dms-external-database/REFERENCE.md +20 -8
- package/skills/dms-external-database/SKILL.md +69 -20
- package/skills/dms-page-design/SKILL.md +192 -0
- package/skills/dms-page-design/cases.json +57 -0
- package/frontend-vue/app/chat/components/FullAutoBanner.vue +0 -76
- package/frontend-vue/app/chat/components/FullAutoDialog.vue +0 -103
|
@@ -1,9 +1,38 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { type BuilderRun } from "./builder-expr.js";
|
|
3
|
+
export declare const QUERY_ARGS: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
4
|
+
export declare const QUERY_FIELDS: {
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
resource: z.ZodString;
|
|
7
|
+
template: z.ZodString;
|
|
8
|
+
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
9
|
+
response: z.ZodOptional<z.ZodEnum<{
|
|
10
|
+
value: "value";
|
|
11
|
+
items: "items";
|
|
12
|
+
series: "series";
|
|
13
|
+
card: "card";
|
|
14
|
+
}>>;
|
|
15
|
+
compare: z.ZodOptional<z.ZodBoolean>;
|
|
16
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
17
|
+
};
|
|
3
18
|
export declare function buildQueryTools(run: BuilderRun): (import("../define-tool.js").McpToolDefinition<{
|
|
4
19
|
resourceType: z.ZodOptional<z.ZodString>;
|
|
5
20
|
}> | import("../define-tool.js").McpToolDefinition<{
|
|
21
|
+
name: z.ZodString;
|
|
22
|
+
resource: z.ZodString;
|
|
23
|
+
template: z.ZodString;
|
|
24
|
+
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
25
|
+
response: z.ZodOptional<z.ZodEnum<{
|
|
26
|
+
value: "value";
|
|
27
|
+
items: "items";
|
|
28
|
+
series: "series";
|
|
29
|
+
card: "card";
|
|
30
|
+
}>>;
|
|
31
|
+
compare: z.ZodOptional<z.ZodBoolean>;
|
|
32
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
6
33
|
page: z.ZodString;
|
|
34
|
+
}> | import("../define-tool.js").McpToolDefinition<{
|
|
35
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
7
36
|
name: z.ZodString;
|
|
8
37
|
resource: z.ZodString;
|
|
9
38
|
template: z.ZodString;
|
|
@@ -14,6 +43,7 @@ export declare function buildQueryTools(run: BuilderRun): (import("../define-too
|
|
|
14
43
|
series: "series";
|
|
15
44
|
card: "card";
|
|
16
45
|
}>>;
|
|
46
|
+
compare: z.ZodOptional<z.ZodBoolean>;
|
|
17
47
|
endpoint: z.ZodOptional<z.ZodString>;
|
|
18
48
|
}> | import("../define-tool.js").McpToolDefinition<{
|
|
19
49
|
query: z.ZodString;
|
|
@@ -27,6 +57,7 @@ export declare function buildQueryTools(run: BuilderRun): (import("../define-too
|
|
|
27
57
|
series: "series";
|
|
28
58
|
card: "card";
|
|
29
59
|
}>>;
|
|
60
|
+
compare: z.ZodOptional<z.ZodBoolean>;
|
|
30
61
|
endpoint: z.ZodOptional<z.ZodString>;
|
|
31
62
|
}, z.core.$strip>;
|
|
32
63
|
}> | import("../define-tool.js").McpToolDefinition<{
|
|
@@ -13,6 +13,25 @@ const QUERY_PARAMS = z
|
|
|
13
13
|
const QUERY_RESPONSE = z
|
|
14
14
|
.enum(["series", "card", "value", "items"])
|
|
15
15
|
.describe("How the route arranges a `series` template's points for the block that reads them: `series` (the default) one point per group, for a bare chart such as ChartLine, ChartColumn or ChartBar; `card` a figure above its series, for a ChartCard; `value` a figure and its sparkline, for a KpiCard; `items` ranked entries, for a TopListCard. A block reads only its own arrangement, so match the block. A `count` or `aggregate` query answers `{ value }` whatever you pass.");
|
|
16
|
+
const QUERY_COMPARE = z
|
|
17
|
+
.boolean()
|
|
18
|
+
.describe("Also answer the preceding period so a card shows a delta. Only meaningful when the query binds its period with `$param` `from` and `to`.");
|
|
19
|
+
export const QUERY_ARGS = z
|
|
20
|
+
.record(z.string(), z.unknown())
|
|
21
|
+
.describe('The values the route would receive, by the name it exposes them under, e.g. `{ "from": "2026-01-01", "to": "2026-03-31" }` for a query binding `$param` `from` and `to`. With `compare`, also `compareFrom` and `compareTo`.');
|
|
22
|
+
export const QUERY_FIELDS = {
|
|
23
|
+
name: z
|
|
24
|
+
.string()
|
|
25
|
+
.describe("camelCase identifier, unique among the page's members. Names the route; the model method it compiles into may differ, since queries wanting the identical chain share one."),
|
|
26
|
+
resource: z
|
|
27
|
+
.string()
|
|
28
|
+
.describe("Resource ref to read, from BuilderListResources."),
|
|
29
|
+
template: z.string().describe("A template id from BuilderQueryTemplates."),
|
|
30
|
+
params: QUERY_PARAMS.optional(),
|
|
31
|
+
response: QUERY_RESPONSE.optional(),
|
|
32
|
+
compare: QUERY_COMPARE.optional(),
|
|
33
|
+
endpoint: QUERY_ENDPOINT.optional(),
|
|
34
|
+
};
|
|
16
35
|
export function buildQueryTools(run) {
|
|
17
36
|
return [
|
|
18
37
|
defineTool("BuilderQueryTemplates", note("Lists the query templates BuilderAddQuery can compile, each with its id, what it computes, its `output` kind, and the JSON Schema for its `params`. Call this before adding a query — the schema is the reference for every parameter and value shape."), {
|
|
@@ -21,23 +40,20 @@ export function buildQueryTools(run) {
|
|
|
21
40
|
.optional()
|
|
22
41
|
.describe("Filter to templates for one resource type (v1 has only `database-table`). Omit for all."),
|
|
23
42
|
}, ({ resourceType }) => run("ListQueryTemplates", resourceType ? [resourceType] : [])),
|
|
24
|
-
defineTool("BuilderAddQuery", note("Adds a query — a page-hosted GET route serving a computed number, or one per group, that the DataAPI cannot give you. Compiles the template into a method on the resource's model and a route on the page, atomically. Returns `{ query, route }`; `route` is the full URL to pass as the reading block's `fetchUrl`. A `count` or `aggregate` route serves `{ \"value\": <number> }`; a `series` route serves the arrangement `response` names."), {
|
|
43
|
+
defineTool("BuilderAddQuery", note("Adds a query — a page-hosted GET route serving a computed number, or one per group, that the DataAPI cannot give you. Compiles the template into a method on the resource's model and a route on the page, atomically. Returns `{ query, route }`; `route` is the full URL to pass as the reading block's `fetchUrl`. A `count` or `aggregate` route serves `{ \"value\": <number> }`; a `series` route serves the arrangement `response` names. Add `compare: true` to a query that binds its period with `$param` `from` and `to` so a card shows a delta. Run BuilderPreviewQuery first to see what the route would answer."), {
|
|
25
44
|
page: z
|
|
26
45
|
.string()
|
|
27
46
|
.describe("PageRef the query is served from — the page that displays it, not the resource's page."),
|
|
28
|
-
|
|
29
|
-
.string()
|
|
30
|
-
.describe("camelCase identifier, unique among the page's members. Names the route; the model method it compiles into may differ, since queries wanting the identical chain share one."),
|
|
31
|
-
resource: z
|
|
32
|
-
.string()
|
|
33
|
-
.describe("Resource ref to read, from BuilderListResources."),
|
|
34
|
-
template: z
|
|
35
|
-
.string()
|
|
36
|
-
.describe("A template id from BuilderQueryTemplates."),
|
|
37
|
-
params: QUERY_PARAMS.optional(),
|
|
38
|
-
response: QUERY_RESPONSE.optional(),
|
|
39
|
-
endpoint: QUERY_ENDPOINT.optional(),
|
|
47
|
+
...QUERY_FIELDS,
|
|
40
48
|
}, async ({ page, ...input }) => hasExprSentinel(input) ? exprRefusal() : run("AddQuery", [page, input])),
|
|
49
|
+
defineTool("BuilderPreviewQuery", note("Runs a query that is not saved and answers what its route would, as `{ body, truncated }`, writing nothing. Takes BuilderAddQuery's query fields (no page) and `args`. An empty `series` or `items` in `body` means the block reading it renders empty: fix the query before wiring its route."), {
|
|
50
|
+
...QUERY_FIELDS,
|
|
51
|
+
args: QUERY_ARGS.optional(),
|
|
52
|
+
}, async ({ args, ...query }) => hasExprSentinel({ query, args })
|
|
53
|
+
? exprRefusal()
|
|
54
|
+
: run("PreviewQuery", [
|
|
55
|
+
args === undefined ? { query } : { query, args },
|
|
56
|
+
])),
|
|
41
57
|
defineTool("BuilderConfigureQuery", note("Recompiles a query, replacing both its route and its chain. Only the keys you pass change; the rest are re-read from the query. A query BuilderPageStructure reports as `opaque` is refused with opaque_target, leaving the hand-edit intact. Renaming is not supported — remove and re-add. Never affects another page's query, even one sharing the same model method."), {
|
|
42
58
|
query: QUERY_REF,
|
|
43
59
|
patch: z.object({
|
|
@@ -45,6 +61,7 @@ export function buildQueryTools(run) {
|
|
|
45
61
|
template: z.string().optional(),
|
|
46
62
|
params: QUERY_PARAMS.optional(),
|
|
47
63
|
response: QUERY_RESPONSE.optional(),
|
|
64
|
+
compare: QUERY_COMPARE.optional(),
|
|
48
65
|
endpoint: QUERY_ENDPOINT.optional(),
|
|
49
66
|
}),
|
|
50
67
|
}, async ({ query, patch }) => hasExprSentinel(patch)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder-queries.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAEL,WAAW,EACX,eAAe,EACf,IAAI,GACL,MAAM,mBAAmB,CAAC;AAE3B,MAAM,SAAS,GAAG,CAAC;KAChB,MAAM,EAAE;KACR,QAAQ,CACP,4HAA4H,CAC7H,CAAC;AAEJ,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,EAAE;KACR,QAAQ,CACP,qSAAqS,CACtS,CAAC;AAEJ,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KAC/B,QAAQ,CACP,8LAA8L,CAC/L,CAAC;AAEJ,MAAM,cAAc,GAAG,CAAC;KACrB,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAC1C,QAAQ,CACP,gdAAgd,CACjd,CAAC;
|
|
1
|
+
{"version":3,"file":"builder-queries.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const TABLE_VIEW_SETTINGS: {
|
|
3
|
+
kanban: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
4
|
+
groupBy: z.ZodString;
|
|
5
|
+
draggable: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
}, z.core.$strip>>>;
|
|
7
|
+
grouped: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
8
|
+
groupBy: z.ZodString;
|
|
9
|
+
by: z.ZodOptional<z.ZodEnum<{
|
|
10
|
+
value: "value";
|
|
11
|
+
day: "day";
|
|
12
|
+
week: "week";
|
|
13
|
+
}>>;
|
|
14
|
+
collapsible: z.ZodOptional<z.ZodBoolean>;
|
|
15
|
+
count: z.ZodOptional<z.ZodBoolean>;
|
|
16
|
+
}, z.core.$strip>>>;
|
|
17
|
+
cards: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
18
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
19
|
+
}, z.core.$strip>>>;
|
|
20
|
+
defaultDisplay: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
21
|
+
table: "table";
|
|
22
|
+
kanban: "kanban";
|
|
23
|
+
cards: "cards";
|
|
24
|
+
grouped: "grouped";
|
|
25
|
+
}>>>;
|
|
26
|
+
views: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
27
|
+
items: z.ZodArray<z.ZodObject<{
|
|
28
|
+
id: z.ZodString;
|
|
29
|
+
label: z.ZodString;
|
|
30
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
31
|
+
count: z.ZodOptional<z.ZodBoolean>;
|
|
32
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
33
|
+
column: z.ZodString;
|
|
34
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
35
|
+
is: "is";
|
|
36
|
+
is_not: "is_not";
|
|
37
|
+
include: "include";
|
|
38
|
+
exclude: "exclude";
|
|
39
|
+
contains: "contains";
|
|
40
|
+
not_contains: "not_contains";
|
|
41
|
+
greater_than: "greater_than";
|
|
42
|
+
less_than: "less_than";
|
|
43
|
+
greater_than_or_equal_to: "greater_than_or_equal_to";
|
|
44
|
+
less_than_or_equal_to: "less_than_or_equal_to";
|
|
45
|
+
is_empty: "is_empty";
|
|
46
|
+
is_not_empty: "is_not_empty";
|
|
47
|
+
}>>;
|
|
48
|
+
value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
49
|
+
}, z.core.$strip>>>;
|
|
50
|
+
search: z.ZodOptional<z.ZodString>;
|
|
51
|
+
sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
52
|
+
column: z.ZodString;
|
|
53
|
+
desc: z.ZodOptional<z.ZodBoolean>;
|
|
54
|
+
}, z.core.$strip>>>;
|
|
55
|
+
columns: z.ZodOptional<z.ZodObject<{
|
|
56
|
+
visible: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
57
|
+
hidden: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
58
|
+
order: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
59
|
+
}, z.core.$strip>>;
|
|
60
|
+
display: z.ZodOptional<z.ZodEnum<{
|
|
61
|
+
table: "table";
|
|
62
|
+
kanban: "kanban";
|
|
63
|
+
cards: "cards";
|
|
64
|
+
grouped: "grouped";
|
|
65
|
+
}>>;
|
|
66
|
+
density: z.ZodOptional<z.ZodEnum<{
|
|
67
|
+
default: "default";
|
|
68
|
+
compact: "compact";
|
|
69
|
+
}>>;
|
|
70
|
+
}, z.core.$strip>>;
|
|
71
|
+
layout: z.ZodOptional<z.ZodEnum<{
|
|
72
|
+
tabs: "tabs";
|
|
73
|
+
strip: "strip";
|
|
74
|
+
menu: "menu";
|
|
75
|
+
}>>;
|
|
76
|
+
defaultView: z.ZodOptional<z.ZodString>;
|
|
77
|
+
userViews: z.ZodOptional<z.ZodBoolean>;
|
|
78
|
+
}, z.core.$strip>>>;
|
|
79
|
+
footer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
80
|
+
summary: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
81
|
+
label: z.ZodString;
|
|
82
|
+
op: z.ZodEnum<{
|
|
83
|
+
count: "count";
|
|
84
|
+
sum: "sum";
|
|
85
|
+
}>;
|
|
86
|
+
field: z.ZodOptional<z.ZodString>;
|
|
87
|
+
where: z.ZodOptional<z.ZodObject<{
|
|
88
|
+
column: z.ZodString;
|
|
89
|
+
op: z.ZodEnum<{
|
|
90
|
+
in: "in";
|
|
91
|
+
equals: "equals";
|
|
92
|
+
notEquals: "notEquals";
|
|
93
|
+
notIn: "notIn";
|
|
94
|
+
}>;
|
|
95
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>;
|
|
96
|
+
}, z.core.$strip>>;
|
|
97
|
+
}, z.core.$strip>>>;
|
|
98
|
+
}, z.core.$strip>>>;
|
|
99
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const COLUMN = z
|
|
3
|
+
.string()
|
|
4
|
+
.describe("A column name as BuilderResourceStructure lists it.");
|
|
5
|
+
const DISPLAY = z.enum(["table", "kanban", "cards", "grouped"]);
|
|
6
|
+
const KANBAN = z.object({
|
|
7
|
+
groupBy: COLUMN.describe("A single-choice column: a select that is not multiple, a boolean or a status."),
|
|
8
|
+
draggable: z.boolean().optional(),
|
|
9
|
+
});
|
|
10
|
+
const GROUPED = z.object({
|
|
11
|
+
groupBy: COLUMN.describe("A sortable column; `day` and `week` need a date column."),
|
|
12
|
+
by: z.enum(["value", "day", "week"]).optional(),
|
|
13
|
+
collapsible: z.boolean().optional(),
|
|
14
|
+
count: z.boolean().optional().describe("Needs a filterable groupBy column."),
|
|
15
|
+
});
|
|
16
|
+
const CARDS = z.object({
|
|
17
|
+
fields: z
|
|
18
|
+
.array(COLUMN)
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Listable columns shown under the card's title; the first few by default."),
|
|
21
|
+
});
|
|
22
|
+
const VIEW_FILTER = z.object({
|
|
23
|
+
column: COLUMN.describe("A filterable column."),
|
|
24
|
+
mode: z
|
|
25
|
+
.enum([
|
|
26
|
+
"is",
|
|
27
|
+
"is_not",
|
|
28
|
+
"include",
|
|
29
|
+
"exclude",
|
|
30
|
+
"contains",
|
|
31
|
+
"not_contains",
|
|
32
|
+
"greater_than",
|
|
33
|
+
"less_than",
|
|
34
|
+
"greater_than_or_equal_to",
|
|
35
|
+
"less_than_or_equal_to",
|
|
36
|
+
"is_empty",
|
|
37
|
+
"is_not_empty",
|
|
38
|
+
])
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("`is` by default."),
|
|
41
|
+
value: z
|
|
42
|
+
.union([z.string(), z.array(z.string())])
|
|
43
|
+
.optional()
|
|
44
|
+
.describe("A list is joined with commas. Tokens: `{{user.id}}`, `{{now}}`, `{{now-7d}}`, `{{now+14d}}`."),
|
|
45
|
+
});
|
|
46
|
+
const VIEW = z.object({
|
|
47
|
+
id: z.string().describe("Lower-case words joined by dashes: `late-orders`."),
|
|
48
|
+
label: z.string(),
|
|
49
|
+
icon: z.string().optional(),
|
|
50
|
+
count: z.boolean().optional().describe("Shows how many rows the view lists."),
|
|
51
|
+
filters: z.array(VIEW_FILTER).optional(),
|
|
52
|
+
search: z.string().optional(),
|
|
53
|
+
sort: z
|
|
54
|
+
.array(z.object({
|
|
55
|
+
column: COLUMN.describe("A sortable column."),
|
|
56
|
+
desc: z.boolean().optional(),
|
|
57
|
+
}))
|
|
58
|
+
.optional(),
|
|
59
|
+
columns: z
|
|
60
|
+
.object({
|
|
61
|
+
visible: z.array(COLUMN).optional(),
|
|
62
|
+
hidden: z.array(COLUMN).optional(),
|
|
63
|
+
order: z.array(COLUMN).optional(),
|
|
64
|
+
})
|
|
65
|
+
.optional(),
|
|
66
|
+
display: DISPLAY.optional().describe("One of the displays the table offers."),
|
|
67
|
+
density: z.enum(["default", "compact"]).optional(),
|
|
68
|
+
});
|
|
69
|
+
const VIEWS = z.object({
|
|
70
|
+
items: z.array(VIEW),
|
|
71
|
+
layout: z.enum(["tabs", "strip", "menu"]).optional(),
|
|
72
|
+
defaultView: z
|
|
73
|
+
.string()
|
|
74
|
+
.optional()
|
|
75
|
+
.describe("The id of the view opened on arrival."),
|
|
76
|
+
userViews: z.boolean().optional(),
|
|
77
|
+
});
|
|
78
|
+
const FOOTER_SUMMARY = z.object({
|
|
79
|
+
label: z.string().describe("Shown before the figure: `Revenue`."),
|
|
80
|
+
op: z.enum(["sum", "count"]),
|
|
81
|
+
field: COLUMN.optional().describe("The number or price column a `sum` adds up."),
|
|
82
|
+
where: z
|
|
83
|
+
.object({
|
|
84
|
+
column: COLUMN,
|
|
85
|
+
op: z.enum(["equals", "notEquals", "in", "notIn"]),
|
|
86
|
+
value: z.union([
|
|
87
|
+
z.string(),
|
|
88
|
+
z.number(),
|
|
89
|
+
z.boolean(),
|
|
90
|
+
z.array(z.union([z.string(), z.number(), z.boolean()])),
|
|
91
|
+
]),
|
|
92
|
+
})
|
|
93
|
+
.optional()
|
|
94
|
+
.describe("Only the rows where the column compares to the value are summed or counted."),
|
|
95
|
+
});
|
|
96
|
+
export const TABLE_VIEW_SETTINGS = {
|
|
97
|
+
kanban: KANBAN.nullable()
|
|
98
|
+
.optional()
|
|
99
|
+
.describe("A board, one column per value; `null` removes it."),
|
|
100
|
+
grouped: GROUPED.nullable()
|
|
101
|
+
.optional()
|
|
102
|
+
.describe("Rows under group headers; `null` removes it."),
|
|
103
|
+
cards: CARDS.nullable()
|
|
104
|
+
.optional()
|
|
105
|
+
.describe("A card per row; `null` stops offering it."),
|
|
106
|
+
defaultDisplay: DISPLAY.nullable()
|
|
107
|
+
.optional()
|
|
108
|
+
.describe("The display shown first, one the table offers; `null` goes back to the first offered."),
|
|
109
|
+
views: VIEWS.nullable()
|
|
110
|
+
.optional()
|
|
111
|
+
.describe("Named views of the table; `null` removes them."),
|
|
112
|
+
footer: z
|
|
113
|
+
.object({ summary: z.array(FOOTER_SUMMARY).optional() })
|
|
114
|
+
.nullable()
|
|
115
|
+
.optional()
|
|
116
|
+
.describe("Footer figures; an empty `summary` removes them, `null` removes the footer."),
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=builder-table-view-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder-table-view-schema.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-table-view-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type BuilderRun } from "./builder-expr.js";
|
|
3
|
+
export declare function buildTableViewTools(run: BuilderRun): import("../define-tool.js").McpToolDefinition<{
|
|
4
|
+
kanban: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
5
|
+
groupBy: z.ZodString;
|
|
6
|
+
draggable: z.ZodOptional<z.ZodBoolean>;
|
|
7
|
+
}, z.core.$strip>>>;
|
|
8
|
+
grouped: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
9
|
+
groupBy: z.ZodString;
|
|
10
|
+
by: z.ZodOptional<z.ZodEnum<{
|
|
11
|
+
value: "value";
|
|
12
|
+
day: "day";
|
|
13
|
+
week: "week";
|
|
14
|
+
}>>;
|
|
15
|
+
collapsible: z.ZodOptional<z.ZodBoolean>;
|
|
16
|
+
count: z.ZodOptional<z.ZodBoolean>;
|
|
17
|
+
}, z.core.$strip>>>;
|
|
18
|
+
cards: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
19
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
20
|
+
}, z.core.$strip>>>;
|
|
21
|
+
defaultDisplay: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
22
|
+
table: "table";
|
|
23
|
+
kanban: "kanban";
|
|
24
|
+
cards: "cards";
|
|
25
|
+
grouped: "grouped";
|
|
26
|
+
}>>>;
|
|
27
|
+
views: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
28
|
+
items: z.ZodArray<z.ZodObject<{
|
|
29
|
+
id: z.ZodString;
|
|
30
|
+
label: z.ZodString;
|
|
31
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
32
|
+
count: z.ZodOptional<z.ZodBoolean>;
|
|
33
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
34
|
+
column: z.ZodString;
|
|
35
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
36
|
+
is: "is";
|
|
37
|
+
is_not: "is_not";
|
|
38
|
+
include: "include";
|
|
39
|
+
exclude: "exclude";
|
|
40
|
+
contains: "contains";
|
|
41
|
+
not_contains: "not_contains";
|
|
42
|
+
greater_than: "greater_than";
|
|
43
|
+
less_than: "less_than";
|
|
44
|
+
greater_than_or_equal_to: "greater_than_or_equal_to";
|
|
45
|
+
less_than_or_equal_to: "less_than_or_equal_to";
|
|
46
|
+
is_empty: "is_empty";
|
|
47
|
+
is_not_empty: "is_not_empty";
|
|
48
|
+
}>>;
|
|
49
|
+
value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
50
|
+
}, z.core.$strip>>>;
|
|
51
|
+
search: z.ZodOptional<z.ZodString>;
|
|
52
|
+
sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
53
|
+
column: z.ZodString;
|
|
54
|
+
desc: z.ZodOptional<z.ZodBoolean>;
|
|
55
|
+
}, z.core.$strip>>>;
|
|
56
|
+
columns: z.ZodOptional<z.ZodObject<{
|
|
57
|
+
visible: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
58
|
+
hidden: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
59
|
+
order: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
60
|
+
}, z.core.$strip>>;
|
|
61
|
+
display: z.ZodOptional<z.ZodEnum<{
|
|
62
|
+
table: "table";
|
|
63
|
+
kanban: "kanban";
|
|
64
|
+
cards: "cards";
|
|
65
|
+
grouped: "grouped";
|
|
66
|
+
}>>;
|
|
67
|
+
density: z.ZodOptional<z.ZodEnum<{
|
|
68
|
+
default: "default";
|
|
69
|
+
compact: "compact";
|
|
70
|
+
}>>;
|
|
71
|
+
}, z.core.$strip>>;
|
|
72
|
+
layout: z.ZodOptional<z.ZodEnum<{
|
|
73
|
+
tabs: "tabs";
|
|
74
|
+
strip: "strip";
|
|
75
|
+
menu: "menu";
|
|
76
|
+
}>>;
|
|
77
|
+
defaultView: z.ZodOptional<z.ZodString>;
|
|
78
|
+
userViews: z.ZodOptional<z.ZodBoolean>;
|
|
79
|
+
}, z.core.$strip>>>;
|
|
80
|
+
footer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
81
|
+
summary: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
82
|
+
label: z.ZodString;
|
|
83
|
+
op: z.ZodEnum<{
|
|
84
|
+
count: "count";
|
|
85
|
+
sum: "sum";
|
|
86
|
+
}>;
|
|
87
|
+
field: z.ZodOptional<z.ZodString>;
|
|
88
|
+
where: z.ZodOptional<z.ZodObject<{
|
|
89
|
+
column: z.ZodString;
|
|
90
|
+
op: z.ZodEnum<{
|
|
91
|
+
in: "in";
|
|
92
|
+
equals: "equals";
|
|
93
|
+
notEquals: "notEquals";
|
|
94
|
+
notIn: "notIn";
|
|
95
|
+
}>;
|
|
96
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>;
|
|
97
|
+
}, z.core.$strip>>;
|
|
98
|
+
}, z.core.$strip>>>;
|
|
99
|
+
}, z.core.$strip>>>;
|
|
100
|
+
pageRef: z.ZodString;
|
|
101
|
+
block: z.ZodOptional<z.ZodString>;
|
|
102
|
+
}>[];
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { defineTool } from "../define-tool.js";
|
|
3
|
+
import { TABLE_VIEW_SETTINGS } from "./builder-table-view-schema.js";
|
|
4
|
+
import { exprRefusal, hasExprSentinel, note, } from "./builder-expr.js";
|
|
5
|
+
const DESCRIPTION = "Sets displays, named views and footer figures on a table page's TableView, checking every choice against the columns of the table first: a kanban needs a single-choice column, a sum a number or price column, a view's filters filterable columns and its sort sortable ones, the default display one the table offers. A key left out stays as the page has it; `null` removes it. A footer figure also mounts the controller's summary route. Nothing is written when a choice is refused or the page would not typecheck. Read the column names and types with BuilderResourceStructure first. For the page's title, icon, description and order use BuilderConfigurePage.";
|
|
6
|
+
export function buildTableViewTools(run) {
|
|
7
|
+
return [
|
|
8
|
+
defineTool("BuilderConfigureTableView", note(DESCRIPTION), {
|
|
9
|
+
pageRef: z.string(),
|
|
10
|
+
block: z
|
|
11
|
+
.string()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("The TableView block's name; only needed when the page holds several."),
|
|
14
|
+
...TABLE_VIEW_SETTINGS,
|
|
15
|
+
}, async ({ pageRef, block, ...settings }) => hasExprSentinel(settings)
|
|
16
|
+
? exprRefusal()
|
|
17
|
+
: run("ConfigureTableView", [
|
|
18
|
+
pageRef,
|
|
19
|
+
Object.fromEntries(Object.entries(settings).filter(([, value]) => value !== undefined)),
|
|
20
|
+
...(block === undefined ? [] : [{ block }]),
|
|
21
|
+
])),
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=builder-table-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder-table-view.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-table-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAEL,WAAW,EACX,eAAe,EACf,IAAI,GACL,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,GACf,ipBAAipB,CAAC;AAEppB,MAAM,UAAU,mBAAmB,CAAC,GAAe;IACjD,OAAO;QACL,UAAU,CACR,2BAA2B,EAC3B,IAAI,CAAC,WAAW,CAAC,EACjB;YACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sEAAsE,CACvE;YACH,GAAG,mBAAmB;SACvB,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,CACxC,eAAe,CAAC,QAAQ,CAAC;YACvB,CAAC,CAAC,WAAW,EAAE;YACf,CAAC,CAAC,GAAG,CAAC,oBAAoB,EAAE;gBACxB,OAAO;gBACP,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CACnC,CACF;gBACD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aAC5C,CAAC,CACT;KACF,CAAC;AACJ,CAAC"}
|