@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
|
@@ -8,7 +8,21 @@ export interface BuilderToolsDeps {
|
|
|
8
8
|
export declare function buildBuilderTools(deps: BuilderToolsDeps): (import("../define-tool.js").AnyMcpToolDefinition | import("../define-tool.js").McpToolDefinition<{
|
|
9
9
|
resourceType: z.ZodOptional<z.ZodString>;
|
|
10
10
|
}> | import("../define-tool.js").McpToolDefinition<{
|
|
11
|
+
name: z.ZodString;
|
|
12
|
+
resource: z.ZodString;
|
|
13
|
+
template: z.ZodString;
|
|
14
|
+
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
15
|
+
response: z.ZodOptional<z.ZodEnum<{
|
|
16
|
+
value: "value";
|
|
17
|
+
items: "items";
|
|
18
|
+
series: "series";
|
|
19
|
+
card: "card";
|
|
20
|
+
}>>;
|
|
21
|
+
compare: z.ZodOptional<z.ZodBoolean>;
|
|
22
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
11
23
|
page: z.ZodString;
|
|
24
|
+
}> | import("../define-tool.js").McpToolDefinition<{
|
|
25
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
12
26
|
name: z.ZodString;
|
|
13
27
|
resource: z.ZodString;
|
|
14
28
|
template: z.ZodString;
|
|
@@ -19,6 +33,7 @@ export declare function buildBuilderTools(deps: BuilderToolsDeps): (import("../d
|
|
|
19
33
|
series: "series";
|
|
20
34
|
card: "card";
|
|
21
35
|
}>>;
|
|
36
|
+
compare: z.ZodOptional<z.ZodBoolean>;
|
|
22
37
|
endpoint: z.ZodOptional<z.ZodString>;
|
|
23
38
|
}> | import("../define-tool.js").McpToolDefinition<{
|
|
24
39
|
query: z.ZodString;
|
|
@@ -32,10 +47,129 @@ export declare function buildBuilderTools(deps: BuilderToolsDeps): (import("../d
|
|
|
32
47
|
series: "series";
|
|
33
48
|
card: "card";
|
|
34
49
|
}>>;
|
|
50
|
+
compare: z.ZodOptional<z.ZodBoolean>;
|
|
35
51
|
endpoint: z.ZodOptional<z.ZodString>;
|
|
36
52
|
}, z.core.$strip>;
|
|
37
53
|
}> | import("../define-tool.js").McpToolDefinition<{
|
|
38
54
|
query: z.ZodString;
|
|
55
|
+
}> | import("../define-tool.js").McpToolDefinition<{
|
|
56
|
+
pageRef: z.ZodOptional<z.ZodString>;
|
|
57
|
+
create: z.ZodOptional<z.ZodObject<{
|
|
58
|
+
name: z.ZodString;
|
|
59
|
+
displayName: z.ZodString;
|
|
60
|
+
category: z.ZodString;
|
|
61
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
62
|
+
description: z.ZodOptional<z.ZodString>;
|
|
63
|
+
order: z.ZodOptional<z.ZodNumber>;
|
|
64
|
+
module: z.ZodOptional<z.ZodString>;
|
|
65
|
+
}, z.core.$strip>>;
|
|
66
|
+
parent: z.ZodOptional<z.ZodString>;
|
|
67
|
+
placement: z.ZodOptional<z.ZodObject<{
|
|
68
|
+
before: z.ZodOptional<z.ZodString>;
|
|
69
|
+
after: z.ZodOptional<z.ZodString>;
|
|
70
|
+
}, z.core.$strip>>;
|
|
71
|
+
blocks: z.ZodArray<z.ZodType<import("./builder-compose.js").ComposeBlockInput, unknown, z.core.$ZodTypeInternals<import("./builder-compose.js").ComposeBlockInput, unknown>>>;
|
|
72
|
+
preview: z.ZodOptional<z.ZodBoolean>;
|
|
73
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
74
|
+
}> | import("../define-tool.js").McpToolDefinition<{
|
|
75
|
+
kanban: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
76
|
+
groupBy: z.ZodString;
|
|
77
|
+
draggable: z.ZodOptional<z.ZodBoolean>;
|
|
78
|
+
}, z.core.$strip>>>;
|
|
79
|
+
grouped: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
80
|
+
groupBy: z.ZodString;
|
|
81
|
+
by: z.ZodOptional<z.ZodEnum<{
|
|
82
|
+
value: "value";
|
|
83
|
+
day: "day";
|
|
84
|
+
week: "week";
|
|
85
|
+
}>>;
|
|
86
|
+
collapsible: z.ZodOptional<z.ZodBoolean>;
|
|
87
|
+
count: z.ZodOptional<z.ZodBoolean>;
|
|
88
|
+
}, z.core.$strip>>>;
|
|
89
|
+
cards: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
90
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
91
|
+
}, z.core.$strip>>>;
|
|
92
|
+
defaultDisplay: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
93
|
+
table: "table";
|
|
94
|
+
kanban: "kanban";
|
|
95
|
+
cards: "cards";
|
|
96
|
+
grouped: "grouped";
|
|
97
|
+
}>>>;
|
|
98
|
+
views: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
99
|
+
items: z.ZodArray<z.ZodObject<{
|
|
100
|
+
id: z.ZodString;
|
|
101
|
+
label: z.ZodString;
|
|
102
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
103
|
+
count: z.ZodOptional<z.ZodBoolean>;
|
|
104
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
105
|
+
column: z.ZodString;
|
|
106
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
107
|
+
is: "is";
|
|
108
|
+
is_not: "is_not";
|
|
109
|
+
include: "include";
|
|
110
|
+
exclude: "exclude";
|
|
111
|
+
contains: "contains";
|
|
112
|
+
not_contains: "not_contains";
|
|
113
|
+
greater_than: "greater_than";
|
|
114
|
+
less_than: "less_than";
|
|
115
|
+
greater_than_or_equal_to: "greater_than_or_equal_to";
|
|
116
|
+
less_than_or_equal_to: "less_than_or_equal_to";
|
|
117
|
+
is_empty: "is_empty";
|
|
118
|
+
is_not_empty: "is_not_empty";
|
|
119
|
+
}>>;
|
|
120
|
+
value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
121
|
+
}, z.core.$strip>>>;
|
|
122
|
+
search: z.ZodOptional<z.ZodString>;
|
|
123
|
+
sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
124
|
+
column: z.ZodString;
|
|
125
|
+
desc: z.ZodOptional<z.ZodBoolean>;
|
|
126
|
+
}, z.core.$strip>>>;
|
|
127
|
+
columns: z.ZodOptional<z.ZodObject<{
|
|
128
|
+
visible: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
129
|
+
hidden: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
130
|
+
order: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
131
|
+
}, z.core.$strip>>;
|
|
132
|
+
display: z.ZodOptional<z.ZodEnum<{
|
|
133
|
+
table: "table";
|
|
134
|
+
kanban: "kanban";
|
|
135
|
+
cards: "cards";
|
|
136
|
+
grouped: "grouped";
|
|
137
|
+
}>>;
|
|
138
|
+
density: z.ZodOptional<z.ZodEnum<{
|
|
139
|
+
default: "default";
|
|
140
|
+
compact: "compact";
|
|
141
|
+
}>>;
|
|
142
|
+
}, z.core.$strip>>;
|
|
143
|
+
layout: z.ZodOptional<z.ZodEnum<{
|
|
144
|
+
tabs: "tabs";
|
|
145
|
+
strip: "strip";
|
|
146
|
+
menu: "menu";
|
|
147
|
+
}>>;
|
|
148
|
+
defaultView: z.ZodOptional<z.ZodString>;
|
|
149
|
+
userViews: z.ZodOptional<z.ZodBoolean>;
|
|
150
|
+
}, z.core.$strip>>>;
|
|
151
|
+
footer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
152
|
+
summary: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
153
|
+
label: z.ZodString;
|
|
154
|
+
op: z.ZodEnum<{
|
|
155
|
+
count: "count";
|
|
156
|
+
sum: "sum";
|
|
157
|
+
}>;
|
|
158
|
+
field: z.ZodOptional<z.ZodString>;
|
|
159
|
+
where: z.ZodOptional<z.ZodObject<{
|
|
160
|
+
column: z.ZodString;
|
|
161
|
+
op: z.ZodEnum<{
|
|
162
|
+
in: "in";
|
|
163
|
+
equals: "equals";
|
|
164
|
+
notEquals: "notEquals";
|
|
165
|
+
notIn: "notIn";
|
|
166
|
+
}>;
|
|
167
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>;
|
|
168
|
+
}, z.core.$strip>>;
|
|
169
|
+
}, z.core.$strip>>>;
|
|
170
|
+
}, z.core.$strip>>>;
|
|
171
|
+
pageRef: z.ZodString;
|
|
172
|
+
block: z.ZodOptional<z.ZodString>;
|
|
39
173
|
}> | import("../define-tool.js").McpToolDefinition<{
|
|
40
174
|
blocks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
41
175
|
dataTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -117,9 +251,9 @@ export declare function buildBuilderTools(deps: BuilderToolsDeps): (import("../d
|
|
|
117
251
|
}, z.core.$strip>]>>;
|
|
118
252
|
routes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
119
253
|
edit: "edit";
|
|
254
|
+
create: "create";
|
|
120
255
|
list: "list";
|
|
121
256
|
get: "get";
|
|
122
|
-
create: "create";
|
|
123
257
|
delete: "delete";
|
|
124
258
|
select: "select";
|
|
125
259
|
archive: "archive";
|
|
@@ -2,7 +2,9 @@ import { z } from "zod";
|
|
|
2
2
|
import { BUILDER_REF_NOTE } from "../../prompts/builder.js";
|
|
3
3
|
import { defineTool } from "../define-tool.js";
|
|
4
4
|
import { exprRefusal, hasExprSentinel, note, } from "./builder-expr.js";
|
|
5
|
+
import { buildComposeTools } from "./builder-compose.js";
|
|
5
6
|
import { buildQueryTools } from "./builder-queries.js";
|
|
7
|
+
import { buildTableViewTools } from "./builder-table-view.js";
|
|
6
8
|
import { gateBuilderTools } from "./builder-gate.js";
|
|
7
9
|
import { buildProjectTools, opResult, TARGET_MODULE, } from "./builder-project.js";
|
|
8
10
|
import { summarizeCatalog } from "./builder-catalog.js";
|
|
@@ -86,6 +88,8 @@ function buildUngatedBuilderTools(deps) {
|
|
|
86
88
|
buildCatalogTool(deps.builderClient),
|
|
87
89
|
...buildPageTools(run),
|
|
88
90
|
...buildBlockTools(run),
|
|
91
|
+
...buildTableViewTools(run),
|
|
92
|
+
...buildComposeTools(run),
|
|
89
93
|
...buildResourceTools(run),
|
|
90
94
|
...buildQueryTools(run),
|
|
91
95
|
...buildProjectTools(deps.builderClient, deps.gate),
|
|
@@ -106,12 +110,21 @@ function buildPageTools(run) {
|
|
|
106
110
|
name: z.string(),
|
|
107
111
|
displayName: z.string(),
|
|
108
112
|
category: z.string(),
|
|
109
|
-
icon: z
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
icon: z
|
|
114
|
+
.string()
|
|
115
|
+
.optional()
|
|
116
|
+
.describe("An icon name such as `i-ph-chart-line`."),
|
|
117
|
+
order: z
|
|
118
|
+
.number()
|
|
119
|
+
.optional()
|
|
120
|
+
.describe("Sorts the page among its category's pages, lowest first, then by title. Pages the Connect mapping writes take 100, so a dashboard takes 0 to come first in the menu."),
|
|
121
|
+
description: z
|
|
122
|
+
.string()
|
|
123
|
+
.optional()
|
|
124
|
+
.describe("What the page is for, in a sentence."),
|
|
112
125
|
module: TARGET_MODULE,
|
|
113
126
|
}, (input) => run("CreatePage", [input])),
|
|
114
|
-
defineTool("BuilderConfigurePage", note("Updates a page's metadata
|
|
127
|
+
defineTool("BuilderConfigurePage", note("Updates a page's metadata: displayName, icon, order (lowest first, then by title; a dashboard takes 0, mapped table pages 100), description. Works on pages BuilderMapResources wrote too."), { pageRef: z.string(), patch: CONFIG }, async ({ pageRef, patch }) => hasExprSentinel(patch)
|
|
115
128
|
? exprRefusal()
|
|
116
129
|
: run("ConfigurePage", [pageRef, patch])),
|
|
117
130
|
defineTool("BuilderDeletePage", note("Deletes a page file and removes its barrel import."), { pageRef: z.string() }, ({ pageRef }) => run("DeletePage", [pageRef])),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { NAVIGATE_RESULT_COMPLETED_SUFFIX, NAVIGATE_RESULT_LANDED_PREFIX, NAVIGATE_RESULT_PREFIX, NAVIGATE_RESULT_TIMEOUT_SUFFIX, NAVIGATE_SUGGESTION_LIMIT, NAVIGATE_TOOL_DESCRIPTION, NAVIGATE_TOOL_NAME, NAVIGATE_UNKNOWN_ROUTE_HINT, NAVIGATE_UNKNOWN_ROUTE_PREFIX, NAVIGATE_UNKNOWN_ROUTE_SUFFIX, } from "../../constants/mcp.js";
|
|
3
3
|
import { NAVIGATE_TIMEOUT_MS } from "../../constants/timing.js";
|
|
4
|
+
import { describeBlocks, summarizeBlocks, } from "../../pages/block-health.js";
|
|
4
5
|
import { isKnownRoute } from "../../pages/route-match.js";
|
|
5
6
|
import { EVENT_TYPES } from "../../protocol/events.js";
|
|
6
7
|
import { defineTool } from "../define-tool.js";
|
|
@@ -40,17 +41,23 @@ function buildResultText(targetPath, isCompleted, landedOn) {
|
|
|
40
41
|
: NAVIGATE_RESULT_TIMEOUT_SUFFIX;
|
|
41
42
|
return `${NAVIGATE_RESULT_PREFIX}${targetPath}${suffix}${NAVIGATE_RESULT_LANDED_PREFIX}${landedOn.path}`;
|
|
42
43
|
}
|
|
43
|
-
function buildContent(targetPath, isCompleted, landedOn) {
|
|
44
|
+
function buildContent(targetPath, isCompleted, landedOn, blocks) {
|
|
45
|
+
const message = buildResultText(targetPath, isCompleted, landedOn);
|
|
44
46
|
return textContent(JSON.stringify({
|
|
45
47
|
ok: true,
|
|
46
48
|
data: {
|
|
47
49
|
path: targetPath,
|
|
48
50
|
navigation: isCompleted ? "completed" : "timeout",
|
|
49
51
|
currentPage: landedOn,
|
|
52
|
+
blocks: blocks ?? undefined,
|
|
50
53
|
},
|
|
51
|
-
message:
|
|
54
|
+
message: blocks === null ? message : `${message}. ${describeBlocks(blocks)}`,
|
|
52
55
|
}));
|
|
53
56
|
}
|
|
57
|
+
async function awaitBlockHealth(landing) {
|
|
58
|
+
const report = await landing?.blocks;
|
|
59
|
+
return report ? summarizeBlocks(report) : null;
|
|
60
|
+
}
|
|
54
61
|
export function buildNavigateToPageTool(deps) {
|
|
55
62
|
return defineTool(NAVIGATE_TOOL_NAME, NAVIGATE_TOOL_DESCRIPTION, INPUT_SCHEMA, async ({ path: targetPath }) => {
|
|
56
63
|
const knownRoutes = await safeKnownRoutes(deps.registry);
|
|
@@ -59,8 +66,9 @@ export function buildNavigateToPageTool(deps) {
|
|
|
59
66
|
}
|
|
60
67
|
const waitPromise = deps.navigationCompleter.waitFor(targetPath, NAVIGATE_TIMEOUT_MS);
|
|
61
68
|
deps.sendToHost(buildNavigationEvent(targetPath));
|
|
62
|
-
const
|
|
63
|
-
|
|
69
|
+
const landing = await waitPromise;
|
|
70
|
+
const blocks = await awaitBlockHealth(landing);
|
|
71
|
+
return buildContent(targetPath, landing !== null, deps.getCurrentPage(), blocks);
|
|
64
72
|
});
|
|
65
73
|
}
|
|
66
74
|
//# sourceMappingURL=navigate-to-page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate-to-page.js","sourceRoot":"","sources":["../../../src/mcp/tools/navigate-to-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EAClB,2BAA2B,EAC3B,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"navigate-to-page.js","sourceRoot":"","sources":["../../../src/mcp/tools/navigate-to-page.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PageBlocksReport } from "../server/navigation-completer.js";
|
|
2
|
+
export interface BlockRef {
|
|
3
|
+
path?: string;
|
|
4
|
+
type: string;
|
|
5
|
+
}
|
|
6
|
+
export interface BlockHealth {
|
|
7
|
+
checked: number;
|
|
8
|
+
settled: boolean;
|
|
9
|
+
empty: BlockRef[];
|
|
10
|
+
error: BlockRef[];
|
|
11
|
+
loading: BlockRef[];
|
|
12
|
+
}
|
|
13
|
+
export declare function summarizeBlocks(report: PageBlocksReport): BlockHealth | null;
|
|
14
|
+
export declare function describeBlocks(health: BlockHealth): string;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
const PATH_SEPARATOR = ".";
|
|
2
|
+
function isDescendantOf(path, ancestor) {
|
|
3
|
+
return path.startsWith(`${ancestor}${PATH_SEPARATOR}`);
|
|
4
|
+
}
|
|
5
|
+
function withoutNested(blocks, state) {
|
|
6
|
+
const reasons = blocks.filter((block) => block.state === "empty" || block.state === "error");
|
|
7
|
+
return blocks
|
|
8
|
+
.filter((block) => block.state === state)
|
|
9
|
+
.filter((block) => block.path === undefined ||
|
|
10
|
+
!reasons.some((other) => other.path !== undefined &&
|
|
11
|
+
other.path !== block.path &&
|
|
12
|
+
isDescendantOf(block.path ?? "", other.path)))
|
|
13
|
+
.map(({ path, type }) => (path === undefined ? { type } : { path, type }));
|
|
14
|
+
}
|
|
15
|
+
export function summarizeBlocks(report) {
|
|
16
|
+
if (report.checked === 0)
|
|
17
|
+
return null;
|
|
18
|
+
return {
|
|
19
|
+
checked: report.checked,
|
|
20
|
+
settled: report.status === "settled",
|
|
21
|
+
empty: withoutNested(report.blocks, "empty"),
|
|
22
|
+
error: withoutNested(report.blocks, "error"),
|
|
23
|
+
loading: withoutNested(report.blocks, "loading"),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function name(block) {
|
|
27
|
+
return block.path === undefined
|
|
28
|
+
? block.type
|
|
29
|
+
: `${block.path} (${block.type})`;
|
|
30
|
+
}
|
|
31
|
+
function list(blocks) {
|
|
32
|
+
return blocks.map(name).join(", ");
|
|
33
|
+
}
|
|
34
|
+
const EMPTY_HINT = "An empty chart, KPI or list means its query or its binding is wrong (an empty table can be legitimate).";
|
|
35
|
+
const FIX_HINT = "Fix them, or say why they are empty, before reporting the page as done.";
|
|
36
|
+
export function describeBlocks(health) {
|
|
37
|
+
const problems = health.empty.length + health.error.length;
|
|
38
|
+
const parts = [];
|
|
39
|
+
if (problems === 0 && health.loading.length === 0) {
|
|
40
|
+
return `Block check: all ${health.checked} data blocks rendered with data.`;
|
|
41
|
+
}
|
|
42
|
+
if (problems > 0) {
|
|
43
|
+
parts.push(`Block check: ${problems} of ${health.checked} data blocks show no data.`);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
parts.push(`Block check: ${health.checked} data blocks on the page.`);
|
|
47
|
+
}
|
|
48
|
+
if (health.empty.length > 0)
|
|
49
|
+
parts.push(`Empty: ${list(health.empty)}.`);
|
|
50
|
+
if (health.error.length > 0) {
|
|
51
|
+
parts.push(`Failed to load: ${list(health.error)}.`);
|
|
52
|
+
}
|
|
53
|
+
if (health.loading.length > 0) {
|
|
54
|
+
parts.push(`Still loading when the check ended: ${list(health.loading)}.`);
|
|
55
|
+
}
|
|
56
|
+
if (problems > 0)
|
|
57
|
+
parts.push(EMPTY_HINT, FIX_HINT);
|
|
58
|
+
return parts.join(" ");
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=block-health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-health.js","sourceRoot":"","sources":["../../src/pages/block-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SYSTEM_PROMPT_TEMPLATE = "You are the development assistant for an Antelope project.\n\nProject: {{name}}\nWorking directory: {{hostProjectRoot}}\nAntelope modules present: {{antelopeModules}}\n\nFollow the conventions documented in the project's CLAUDE.md.\n\nWhen you need a decision or clarification from the user, call AskUser with multiple-choice options and wait for their answer instead of asking in prose \u2014 the user answers it with interactive buttons in the chat. When the choice is visual (how a block will look, a DMS block versus a custom one), show the candidates with PreviewBlocks first, then ask.\n\nYou are running inside a live browser overlay: the user is viewing a DMS page while chatting with you. Each of your turns begins with a <host-context> block reporting live session state \u2014 the page their browser is displaying right now and your active generation mode. The page is its route, its title, and its source file as resolved from the pages registry; the title or the file reads \"unknown\" when it could not be determined, so then look the file up yourself instead of guessing. That block is the single source of truth for both: it refreshes every turn and reflects navigation by either you or the user and any mode change, so trust it over your memory. GetCurrentPage returns the live page on demand. Use your host tools to keep what the user sees in sync with the changes you make.\n\nEditing pages \u2014 follow this loop whatever your mode, whenever a change affects a rendered page (skip it only for changes that touch no rendered page, e.g. backend-only or config edits):\n1. Determine which page(s) the change affects and work ONE page at a time. Before you create or change the first page, load the dms-best-practices skill and your mode's skill (dms-ai-code-mode in CODE, dms-builder-safe in SAFE).\n2. Before changing a page, make sure the host is displaying it: call NavigateToPage to it (it reports whether navigation completed and echoes the page the host landed on). Prefer the page the user is already on \u2014 <host-context> tells you where that is \u2014 if it is impacted. For a BRAND-NEW page, create the empty page first, then NavigateToPage to it immediately \u2014 before adding any blocks or content \u2014 so the user watches it fill in. Never build a page out to completion in the background and navigate only at the end.\n3. Make the change through your mode's mechanism (below) while the host is on the page; it hot-reloads and highlights the freshly-rendered nodes.\n4. Verify before moving on: if the page still looks wrong after the reload, call QueryLogs. Then repeat from step 2 for the next impacted page.\n\nGeneration modes \u2014 you work through exactly one, and the active one is reported each turn in <host-context>:\n- CODE: full code access \u2014 you may write and edit any files to build or reshape pages, including custom components and logic beyond the Builder's blocks. The Builder (\"Builder\u2026\") MCP tools are available when they fit, but you are not restricted to them. Making a change: first call FindPagesUsing for each file you intend to edit to map it to the pages that render it, and group your edits by page; after editing a module's source, run Typecheck on that module and fix every reported error before the page is done \u2014 a non-compiling edit makes the host reload fail and the page 404.\n- SAFE: you act ONLY through the Builder (\"Builder\u2026\") MCP tools; raw file edits (Write/Edit/Bash) are blocked. Follow the dms-builder-safe skill, which carries the workflow and the vocabulary; the tools' own descriptions carry their arguments. Every op is atomic and typecheck-gated: on typecheck_failed nothing was written \u2014 read the diagnostics, fix the config, retry.\n Reach for the right mechanism:\n - a page's layout and content \u2014 the block tools, after BuilderCatalog;\n - the data layer a table or form needs \u2014 the resource tools (they emit a Database Table + a DataAPI at /api/<name>);\n - showing that resource on a page \u2014 BuilderAddBlock a controller-leading block (catalog `controllerArg: true`, e.g. TableView) with `controller` set to the resource ref;\n -
|
|
1
|
+
export declare const SYSTEM_PROMPT_TEMPLATE = "You are the development assistant for an Antelope project.\n\nProject: {{name}}\nWorking directory: {{hostProjectRoot}}\nAntelope modules present: {{antelopeModules}}\n\nFollow the conventions documented in the project's CLAUDE.md.\n\nWhen you need a decision or clarification from the user, call AskUser with multiple-choice options and wait for their answer instead of asking in prose \u2014 the user answers it with interactive buttons in the chat. When the choice is visual (how a block will look, a DMS block versus a custom one), show the candidates with PreviewBlocks first, then ask.\n\nYou are running inside a live browser overlay: the user is viewing a DMS page while chatting with you. Each of your turns begins with a <host-context> block reporting live session state \u2014 the page their browser is displaying right now and your active generation mode. The page is its route, its title, and its source file as resolved from the pages registry; the title or the file reads \"unknown\" when it could not be determined, so then look the file up yourself instead of guessing. That block is the single source of truth for both: it refreshes every turn and reflects navigation by either you or the user and any mode change, so trust it over your memory. GetCurrentPage returns the live page on demand. Use your host tools to keep what the user sees in sync with the changes you make.\n\nEditing pages \u2014 follow this loop whatever your mode, whenever a change affects a rendered page (skip it only for changes that touch no rendered page, e.g. backend-only or config edits):\n1. Determine which page(s) the change affects and work ONE page at a time. Before you create or change the first page, load the dms-best-practices skill and your mode's skill (dms-ai-code-mode in CODE, dms-builder-safe in SAFE), and the dms-page-design skill when the page shows data: KPIs, charts or tables.\n2. Before changing a page, make sure the host is displaying it: call NavigateToPage to it (it reports whether navigation completed and echoes the page the host landed on). Prefer the page the user is already on \u2014 <host-context> tells you where that is \u2014 if it is impacted. For a BRAND-NEW page, create the empty page first, then NavigateToPage to it immediately \u2014 before adding any blocks or content \u2014 so the user watches it fill in. Never build a page out to completion in the background and navigate only at the end.\n3. Make the change through your mode's mechanism (below) while the host is on the page; it hot-reloads and highlights the freshly-rendered nodes.\n4. Verify before moving on: if the page still looks wrong after the reload, call QueryLogs. Then repeat from step 2 for the next impacted page.\n\nGeneration modes \u2014 you work through exactly one, and the active one is reported each turn in <host-context>:\n- CODE: full code access \u2014 you may write and edit any files to build or reshape pages, including custom components and logic beyond the Builder's blocks. The Builder (\"Builder\u2026\") MCP tools are available when they fit, but you are not restricted to them. Making a change: first call FindPagesUsing for each file you intend to edit to map it to the pages that render it, and group your edits by page; after editing a module's source, run Typecheck on that module and fix every reported error before the page is done \u2014 a non-compiling edit makes the host reload fail and the page 404.\n- SAFE: you act ONLY through the Builder (\"Builder\u2026\") MCP tools; raw file edits (Write/Edit/Bash) are blocked. Follow the dms-builder-safe skill, which carries the workflow and the vocabulary; the tools' own descriptions carry their arguments. Every op is atomic and typecheck-gated: on typecheck_failed nothing was written \u2014 read the diagnostics, fix the config, retry.\n Reach for the right mechanism:\n - a page's layout and content \u2014 the block tools, after BuilderCatalog;\n - the data layer a table or form needs \u2014 the resource tools (they emit a Database Table + a DataAPI at /api/<name>);\n - showing that resource on a page \u2014 BuilderAddBlock a controller-leading block (catalog `controllerArg: true`, e.g. TableView) with `controller` set to the resource ref;\n - computed data rather than rows, e.g. a KpiCard's sum or a chart's series \u2014 the DataAPI cannot serve it: add a query (BuilderQueryTemplates, BuilderPreviewQuery, then BuilderAddQuery with the `response` the block reads) and pass the `route` it returns as the block's `fetchUrl`;\n - naming a generated resource class inside config \u2014 a `$ref` value, which is validated and allowed here, never `$expr`.\n - a config field the catalog marks `x-component`, such as a chart card's `chart` \u2014 a nested block value, `{ \"$block\": { \"type\": \"ChartArea\", \"config\": {\u2026} } }`, with a type from BuilderCatalog.\n The boundary: on opaque_target or unsupported, explain the limitation and ask permission to switch to Code mode for that step; never attempt a raw edit.\n\nResolving a page's URL: routes are computed by the backend (category chain + slug, with a /modules prefix for module pages), so you CANNOT derive a page's URL from its filename. Always call ListPages to look up a page's real route (its `path`) before navigating, and pass that exact path to NavigateToPage. The moment you create a NEW page \u2014 before adding any blocks or content to it \u2014 call ListPages with refresh:true so the freshly-registered page appears, then NavigateToPage to its `path` so the user watches it build live; do not keep populating a page in the background and navigate only once it is finished.\nNever guess or construct a URL.\n";
|
|
@@ -10,9 +10,10 @@ const SAFE_MODE_DESCRIPTION = `you act ONLY through the Builder ("Builder…") M
|
|
|
10
10
|
- a page's layout and content — the block tools, after BuilderCatalog;
|
|
11
11
|
- the data layer a table or form needs — the resource tools (they emit a Database Table + a DataAPI at /api/<name>);
|
|
12
12
|
- showing that resource on a page — BuilderAddBlock a controller-leading block (catalog \`controllerArg: true\`, e.g. TableView) with \`controller\` set to the resource ref;
|
|
13
|
-
-
|
|
13
|
+
- computed data rather than rows, e.g. a KpiCard's sum or a chart's series — the DataAPI cannot serve it: add a query (BuilderQueryTemplates, BuilderPreviewQuery, then BuilderAddQuery with the \`response\` the block reads) and pass the \`route\` it returns as the block's \`fetchUrl\`;
|
|
14
14
|
- naming a generated resource class inside config — a \`$ref\` value, which is validated and allowed here, never \`$expr\`.
|
|
15
|
-
|
|
15
|
+
- a config field the catalog marks \`x-component\`, such as a chart card's \`chart\` — a nested block value, \`{ "$block": { "type": "ChartArea", "config": {…} } }\`, with a type from BuilderCatalog.
|
|
16
|
+
The boundary: on opaque_target or unsupported, explain the limitation and ask permission to switch to Code mode for that step; never attempt a raw edit.`;
|
|
16
17
|
export const SYSTEM_PROMPT_TEMPLATE = `You are the development assistant for an Antelope project.
|
|
17
18
|
|
|
18
19
|
Project: ${SYSTEM_PROMPT_TOKEN_NAME}
|
|
@@ -26,7 +27,7 @@ When you need a decision or clarification from the user, call ${ASK_USER_TOOL_NA
|
|
|
26
27
|
You are running inside a live browser overlay: the user is viewing a DMS page while chatting with you. Each of your turns begins with a ${HOST_CONTEXT_OPEN} block reporting live session state — the page their browser is displaying right now and your active generation mode. The page is its route, its title, and its source file as resolved from the pages registry; the title or the file reads "unknown" when it could not be determined, so then look the file up yourself instead of guessing. That block is the single source of truth for both: it refreshes every turn and reflects navigation by either you or the user and any mode change, so trust it over your memory. ${GET_CURRENT_PAGE_TOOL_NAME} returns the live page on demand. Use your host tools to keep what the user sees in sync with the changes you make.
|
|
27
28
|
|
|
28
29
|
Editing pages — follow this loop whatever your mode, whenever a change affects a rendered page (skip it only for changes that touch no rendered page, e.g. backend-only or config edits):
|
|
29
|
-
1. Determine which page(s) the change affects and work ONE page at a time. Before you create or change the first page, load the dms-best-practices skill and your mode's skill (dms-ai-code-mode in CODE, dms-builder-safe in SAFE).
|
|
30
|
+
1. Determine which page(s) the change affects and work ONE page at a time. Before you create or change the first page, load the dms-best-practices skill and your mode's skill (dms-ai-code-mode in CODE, dms-builder-safe in SAFE), and the dms-page-design skill when the page shows data: KPIs, charts or tables.
|
|
30
31
|
2. Before changing a page, make sure the host is displaying it: call ${NAVIGATE_TOOL_NAME} to it (it reports whether navigation completed and echoes the page the host landed on). Prefer the page the user is already on — ${HOST_CONTEXT_OPEN} tells you where that is — if it is impacted. For a BRAND-NEW page, create the empty page first, then ${NAVIGATE_TOOL_NAME} to it immediately — before adding any blocks or content — so the user watches it fill in. Never build a page out to completion in the background and navigate only at the end.
|
|
31
32
|
3. Make the change through your mode's mechanism (below) while the host is on the page; it hot-reloads and highlights the freshly-rendered nodes.
|
|
32
33
|
4. Verify before moving on: if the page still looks wrong after the reload, call ${QUERY_LOGS_TOOL_NAME}. Then repeat from step 2 for the next impacted page.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/prompts/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,6BAA6B,EAC7B,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAgBhE,MAAM,qBAAqB,GAAG,qRAAqR,oBAAoB,+IAA+I,mBAAmB,0IAA0I,CAAC;AAEpnB,MAAM,qBAAqB,GAAG
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/prompts/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,6BAA6B,EAC7B,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAgBhE,MAAM,qBAAqB,GAAG,qRAAqR,oBAAoB,+IAA+I,mBAAmB,0IAA0I,CAAC;AAEpnB,MAAM,qBAAqB,GAAG;;;;;;;;2JAQ6H,CAAC;AAE5J,MAAM,CAAC,MAAM,sBAAsB,GAAG;;WAE3B,wBAAwB;qBACd,6BAA6B;4BACtB,2BAA2B;;;;gEAIS,kBAAkB,+PAA+P,wBAAwB;;0IAE/N,iBAAiB,kgBAAkgB,0BAA0B;;;;uEAIhnB,kBAAkB,qIAAqI,iBAAiB,yGAAyG,kBAAkB;;mFAEvR,oBAAoB;;+FAER,iBAAiB;UACtG,qBAAqB;UACrB,qBAAqB;;gMAEiK,oBAAoB,iGAAiG,kBAAkB,yFAAyF,oBAAoB,mEAAmE,kBAAkB;;CAExgB,CAAC"}
|