@antelopejs/dms-ai 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/README.md +17 -7
  2. package/dist/lifecycle/skill-sources.js +17 -17
  3. package/dist/lifecycle/skill-sources.js.map +1 -1
  4. package/dist/pages/settings/availability.js.map +1 -1
  5. package/dist/pages/settings/sections.js +10 -0
  6. package/dist/pages/settings/sections.js.map +1 -1
  7. package/dist/routes/builder.d.ts +7 -1
  8. package/dist/routes/builder.js +3 -0
  9. package/dist/routes/builder.js.map +1 -1
  10. package/dist/routes/changes.d.ts +5 -4
  11. package/dist/routes/changes.js.map +1 -1
  12. package/dist/routes/codex-account.d.ts +3 -2
  13. package/dist/routes/codex-account.js.map +1 -1
  14. package/dist/routes/sidecar-results.d.ts +2 -2
  15. package/dist/routes/sidecar-results.js.map +1 -1
  16. package/dist/routes/status.js.map +1 -1
  17. package/dist/sidecar/http-client.js +3 -1
  18. package/dist/sidecar/http-client.js.map +1 -1
  19. package/dist/sidecar/index.d.ts +1 -0
  20. package/dist/sidecar/index.js +1 -0
  21. package/dist/sidecar/index.js.map +1 -1
  22. package/dist/sidecar/json-body.d.ts +4 -0
  23. package/dist/sidecar/json-body.js +33 -0
  24. package/dist/sidecar/json-body.js.map +1 -0
  25. package/dist/sidecar/settings-values.d.ts +5 -2
  26. package/dist/sidecar/settings-values.js.map +1 -1
  27. package/dist/vocabulary/tools.js +3 -0
  28. package/dist/vocabulary/tools.js.map +1 -1
  29. package/frontend-vue/app/chat/components/ChatView.vue +38 -37
  30. package/frontend-vue/app/chat/components/NoticeCard.vue +16 -0
  31. package/frontend-vue/app/chat/components/PanelHeader.vue +2 -6
  32. package/frontend-vue/app/chat/composables/conversation-events.ts +4 -0
  33. package/frontend-vue/app/chat/composables/useConversation.ts +6 -0
  34. package/frontend-vue/app/chat/types/protocol.ts +9 -1
  35. package/frontend-vue/app/chat/utils/status-label.ts +50 -0
  36. package/frontend-vue/app/chat/utils/tool-lexicon.ts +16 -0
  37. package/frontend-vue/app/components/SkillDetail.vue +1 -1
  38. package/frontend-vue/app/plugins/ai.client.ts +2 -2
  39. package/frontend-vue/app/runtime/assistant-actions.ts +4 -2
  40. package/frontend-vue/app/runtime/assistant-session.ts +5 -1
  41. package/frontend-vue/app/runtime/block-health.ts +135 -0
  42. package/frontend-vue/app/runtime/constants.ts +1 -0
  43. package/frontend-vue/app/runtime/navigation-complete.ts +47 -6
  44. package/frontend-vue/app/runtime/panel-intents.ts +6 -2
  45. package/frontend-vue/app/views/ChangeSetPanel.vue +1 -1
  46. package/frontend-vue/app/views/composables/useAiData.ts +10 -18
  47. package/frontend-vue/app/views/composables/useChangeSetActions.ts +5 -15
  48. package/frontend-vue/app/views/constants.ts +1 -1
  49. package/frontend-vue/app/views/types.ts +1 -1
  50. package/frontend-vue/build/backend-boundary.ts +54 -21
  51. package/frontend-vue/i18n/locales/dms-ai-pages-en-GB.json +7 -0
  52. package/frontend-vue/i18n/locales/dms-ai-pages-fr-FR.json +7 -0
  53. package/frontend-vue/i18n/locales/dms-ai-panel-en-GB.json +6 -1
  54. package/frontend-vue/i18n/locales/dms-ai-panel-fr-FR.json +6 -1
  55. package/frontend-vue/tests/assistant-actions.test.ts +37 -0
  56. package/frontend-vue/tests/block-health.test.ts +142 -0
  57. package/frontend-vue/tests/chat/conversation-events.test.ts +34 -0
  58. package/frontend-vue/tests/chat/tool-lexicon.test.ts +1 -0
  59. package/frontend-vue/tests/navigation.test.ts +67 -2
  60. package/frontend-vue/tests/support/api-error-presenter.ts +28 -0
  61. package/frontend-vue/tests/support/panel-harness.ts +2 -2
  62. package/frontend-vue/tests/views/api-data-reads.test.ts +2 -0
  63. package/frontend-vue/tests/views/api-error-presentation.test.ts +89 -0
  64. package/package.json +7 -6
  65. package/sidecar/dist/agent/provider.d.ts +5 -0
  66. package/sidecar/dist/agent/runner.d.ts +5 -0
  67. package/sidecar/dist/agent/runner.js +2 -0
  68. package/sidecar/dist/agent/runner.js.map +1 -1
  69. package/sidecar/dist/builder/builder-client.js +2 -2
  70. package/sidecar/dist/builder/builder-client.js.map +1 -1
  71. package/sidecar/dist/constants/builder.d.ts +2 -1
  72. package/sidecar/dist/constants/builder.js +12 -0
  73. package/sidecar/dist/constants/builder.js.map +1 -1
  74. package/sidecar/dist/constants/claude.d.ts +2 -0
  75. package/sidecar/dist/constants/claude.js +2 -0
  76. package/sidecar/dist/constants/claude.js.map +1 -1
  77. package/sidecar/dist/constants/mcp.d.ts +1 -1
  78. package/sidecar/dist/constants/mcp.js +1 -1
  79. package/sidecar/dist/constants/mcp.js.map +1 -1
  80. package/sidecar/dist/constants/native-binary.d.ts +5 -2
  81. package/sidecar/dist/constants/native-binary.js +5 -2
  82. package/sidecar/dist/constants/native-binary.js.map +1 -1
  83. package/sidecar/dist/constants/settings.d.ts +1 -0
  84. package/sidecar/dist/constants/settings.js +2 -0
  85. package/sidecar/dist/constants/settings.js.map +1 -1
  86. package/sidecar/dist/constants/timing.d.ts +1 -0
  87. package/sidecar/dist/constants/timing.js +1 -0
  88. package/sidecar/dist/constants/timing.js.map +1 -1
  89. package/sidecar/dist/constants/tool-kinds.js +1 -0
  90. package/sidecar/dist/constants/tool-kinds.js.map +1 -1
  91. package/sidecar/dist/logs/logs-client.js +2 -1
  92. package/sidecar/dist/logs/logs-client.js.map +1 -1
  93. package/sidecar/dist/logs/types.d.ts +2 -1
  94. package/sidecar/dist/mcp/define-tool.d.ts +1 -1
  95. package/sidecar/dist/mcp/define-tool.js.map +1 -1
  96. package/sidecar/dist/mcp/tools/builder-compose.d.ts +51 -0
  97. package/sidecar/dist/mcp/tools/builder-compose.js +96 -0
  98. package/sidecar/dist/mcp/tools/builder-compose.js.map +1 -0
  99. package/sidecar/dist/mcp/tools/builder-expr.d.ts +5 -0
  100. package/sidecar/dist/mcp/tools/builder-expr.js +25 -0
  101. package/sidecar/dist/mcp/tools/builder-expr.js.map +1 -0
  102. package/sidecar/dist/mcp/tools/builder-gate.js +2 -2
  103. package/sidecar/dist/mcp/tools/builder-gate.js.map +1 -1
  104. package/sidecar/dist/mcp/tools/builder-project.js +54 -1
  105. package/sidecar/dist/mcp/tools/builder-project.js.map +1 -1
  106. package/sidecar/dist/mcp/tools/builder-queries.d.ts +65 -0
  107. package/sidecar/dist/mcp/tools/builder-queries.js +73 -0
  108. package/sidecar/dist/mcp/tools/builder-queries.js.map +1 -0
  109. package/sidecar/dist/mcp/tools/builder-table-view-schema.d.ts +99 -0
  110. package/sidecar/dist/mcp/tools/builder-table-view-schema.js +118 -0
  111. package/sidecar/dist/mcp/tools/builder-table-view-schema.js.map +1 -0
  112. package/sidecar/dist/mcp/tools/builder-table-view.d.ts +102 -0
  113. package/sidecar/dist/mcp/tools/builder-table-view.js +24 -0
  114. package/sidecar/dist/mcp/tools/builder-table-view.js.map +1 -0
  115. package/sidecar/dist/mcp/tools/builder.d.ts +166 -20
  116. package/sidecar/dist/mcp/tools/builder.js +20 -73
  117. package/sidecar/dist/mcp/tools/builder.js.map +1 -1
  118. package/sidecar/dist/mcp/tools/navigate-to-page.js +12 -4
  119. package/sidecar/dist/mcp/tools/navigate-to-page.js.map +1 -1
  120. package/sidecar/dist/mcp/types.d.ts +2 -1
  121. package/sidecar/dist/pages/block-health.d.ts +14 -0
  122. package/sidecar/dist/pages/block-health.js +60 -0
  123. package/sidecar/dist/pages/block-health.js.map +1 -0
  124. package/sidecar/dist/prompts/agent.d.ts +1 -1
  125. package/sidecar/dist/prompts/agent.js +4 -3
  126. package/sidecar/dist/prompts/agent.js.map +1 -1
  127. package/sidecar/dist/protocol/events.d.ts +43 -0
  128. package/sidecar/dist/protocol/events.js +10 -0
  129. package/sidecar/dist/protocol/events.js.map +1 -1
  130. package/sidecar/dist/protocol/json.d.ts +4 -0
  131. package/sidecar/dist/protocol/json.js +29 -0
  132. package/sidecar/dist/protocol/json.js.map +1 -1
  133. package/sidecar/dist/protocol/messages.d.ts +57 -0
  134. package/sidecar/dist/protocol/messages.js +22 -0
  135. package/sidecar/dist/protocol/messages.js.map +1 -1
  136. package/sidecar/dist/providers/claude/config.d.ts +20 -3
  137. package/sidecar/dist/providers/claude/config.js +17 -5
  138. package/sidecar/dist/providers/claude/config.js.map +1 -1
  139. package/sidecar/dist/providers/claude/model-fallback.d.ts +9 -0
  140. package/sidecar/dist/providers/claude/model-fallback.js +37 -0
  141. package/sidecar/dist/providers/claude/model-fallback.js.map +1 -0
  142. package/sidecar/dist/providers/claude/provider.js +23 -22
  143. package/sidecar/dist/providers/claude/provider.js.map +1 -1
  144. package/sidecar/dist/providers/claude/resolve-binary.js +18 -13
  145. package/sidecar/dist/providers/claude/resolve-binary.js.map +1 -1
  146. package/sidecar/dist/providers/claude/session-stream.d.ts +23 -0
  147. package/sidecar/dist/providers/claude/session-stream.js +58 -0
  148. package/sidecar/dist/providers/claude/session-stream.js.map +1 -0
  149. package/sidecar/dist/server/chat-events.d.ts +16 -3
  150. package/sidecar/dist/server/chat-events.js +1 -0
  151. package/sidecar/dist/server/chat-events.js.map +1 -1
  152. package/sidecar/dist/server/http-io.d.ts +2 -1
  153. package/sidecar/dist/server/http-io.js.map +1 -1
  154. package/sidecar/dist/server/http-routes.js +4 -7
  155. package/sidecar/dist/server/http-routes.js.map +1 -1
  156. package/sidecar/dist/server/navigation-completer.d.ts +15 -2
  157. package/sidecar/dist/server/navigation-completer.js +42 -41
  158. package/sidecar/dist/server/navigation-completer.js.map +1 -1
  159. package/sidecar/dist/server/permission-events.d.ts +8 -4
  160. package/sidecar/dist/server/permission-events.js.map +1 -1
  161. package/sidecar/dist/server/routing.js +15 -2
  162. package/sidecar/dist/server/routing.js.map +1 -1
  163. package/sidecar/dist/server/safety-net.js +2 -2
  164. package/sidecar/dist/server/safety-net.js.map +1 -1
  165. package/sidecar/dist/server/tool-calls.d.ts +13 -4
  166. package/sidecar/dist/server/tool-calls.js.map +1 -1
  167. package/sidecar/dist/server/turns.d.ts +16 -2
  168. package/sidecar/dist/server/turns.js +13 -3
  169. package/sidecar/dist/server/turns.js.map +1 -1
  170. package/sidecar/dist/state/change-sets.js +4 -1
  171. package/sidecar/dist/state/change-sets.js.map +1 -1
  172. package/sidecar/dist/state/conversations.d.ts +1 -0
  173. package/sidecar/dist/state/conversations.js +8 -0
  174. package/sidecar/dist/state/conversations.js.map +1 -1
  175. package/sidecar/dist/state/settings-store.d.ts +1 -0
  176. package/sidecar/dist/state/settings-store.js +1 -0
  177. package/sidecar/dist/state/settings-store.js.map +1 -1
  178. package/sidecar/dist/state/settings-types.d.ts +1 -0
  179. package/sidecar/dist/state/store.js +8 -2
  180. package/sidecar/dist/state/store.js.map +1 -1
  181. package/sidecar/dist/state/types.d.ts +8 -1
  182. package/sidecar/dist/state/types.js.map +1 -1
  183. package/sidecar/package.json +2 -2
  184. package/skills/dms-ai/SKILL.md +1 -1
  185. package/skills/dms-builder-safe/REFERENCE.md +5 -6
  186. package/skills/dms-builder-safe/SKILL.md +12 -10
  187. package/skills/dms-external-database/REFERENCE.md +20 -8
  188. package/skills/dms-external-database/SKILL.md +64 -18
  189. package/skills/dms-page-design/SKILL.md +192 -0
  190. package/skills/dms-page-design/cases.json +57 -0
@@ -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: buildResultText(targetPath, isCompleted, landedOn),
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 isCompleted = await waitPromise;
63
- return buildContent(targetPath, isCompleted, deps.getCurrentPage());
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;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAA2B,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGhF,OAAO,EAAE,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AASnE,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAW,CAAC;AAEnD,SAAS,oBAAoB,CAAC,UAAkB;IAC9C,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,qBAAqB;QACvC,IAAI,EAAE,UAAU;KACjB,CAAC;AACJ,CAAC;AAMD,KAAK,UAAU,eAAe,CAAC,QAAwB;IACrD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAAkB,EAClB,WAAqB;IAErB,OAAO,GAAG,6BAA6B,GAAG,UAAU,GAAG,6BAA6B,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,2BAA2B,EAAE,CAAC;AAChJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,UAAkB,EAClB,WAAqB;IAErB,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;IACpE,OAAO,WAAW,CAChB,IAAI,CAAC,SAAS,CAAC;QACb,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE;QAC/D,OAAO,EAAE,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC;KACxD,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,UAAkB,EAClB,WAAoB,EACpB,QAAqB;IAErB,MAAM,MAAM,GAAG,WAAW;QACxB,CAAC,CAAC,gCAAgC;QAClC,CAAC,CAAC,8BAA8B,CAAC;IACnC,OAAO,GAAG,sBAAsB,GAAG,UAAU,GAAG,MAAM,GAAG,6BAA6B,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3G,CAAC;AAED,SAAS,YAAY,CACnB,UAAkB,EAClB,WAAoB,EACpB,QAAqB;IAErB,OAAO,WAAW,CAChB,IAAI,CAAC,SAAS,CAAC;QACb,EAAE,EAAE,IAAI;QACR,IAAI,EAAE;YACJ,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACjD,WAAW,EAAE,QAAQ;SACtB;QACD,OAAO,EAAE,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;KAC5D,CAAC,CACH,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,uBAAuB,CAAC,IAAwB;IAC9D,OAAO,UAAU,CACf,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAoB,EAAE,EAAE;QAC/C,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;YACrE,OAAO,wBAAwB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAClD,UAAU,EACV,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC;QACtC,OAAO,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACtE,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"navigate-to-page.js","sourceRoot":"","sources":["../../../src/mcp/tools/navigate-to-page.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
2
  import type { QuestionAnswers, QuestionRequest } from "../agent/question-bus.js";
2
3
  import type { BuilderClient } from "../builder/builder-client.js";
3
4
  import type { DatabaseClient } from "../database/database-client.js";
@@ -34,5 +35,5 @@ export interface AiMcpServerDeps extends AiMcpServerStaticDeps {
34
35
  export interface AiMcpServer {
35
36
  type: typeof MCP_SERVER_TYPE_SDK;
36
37
  name: string;
37
- instance: unknown;
38
+ instance: McpServer;
38
39
  }
@@ -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 - a computed number rather than rows, e.g. a KpiCard's count or sum \u2014 the DataAPI cannot serve it: add a query (BuilderQueryTemplates, then BuilderAddQuery) and pass the `route` it returns as the card's `fetchUrl`;\n - naming a generated resource class inside config \u2014 a `$ref` value, which is validated and allowed here, never `$expr`.\n The boundary: safe mode cannot construct a nested component value, so a config field the catalog marks `x-component` (a chart card's `chart`, say) is out of reach \u2014 treat it like opaque_target rather than guessing a shape. On opaque_target, unsupported, or an `x-component` field, 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";
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
- - a computed number rather than rows, e.g. a KpiCard's count or sum — the DataAPI cannot serve it: add a query (BuilderQueryTemplates, then BuilderAddQuery) and pass the \`route\` it returns as the card's \`fetchUrl\`;
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
- The boundary: safe mode cannot construct a nested component value, so a config field the catalog marks \`x-component\` (a chart card's \`chart\`, say) is out of reach — treat it like opaque_target rather than guessing a shape. On opaque_target, unsupported, or an \`x-component\` field, explain the limitation and ask permission to switch to Code mode for that step; never attempt a raw edit.`;
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;;;;;;;2YAO6W,CAAC;AAE5Y,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"}
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"}
@@ -143,6 +143,12 @@ export declare const FullAutoEndedNoticeSchema: z.ZodObject<{
143
143
  kind: z.ZodLiteral<"full_auto_ended">;
144
144
  timestampMs: z.ZodNumber;
145
145
  }, z.core.$strip>;
146
+ export declare const ModelFallbackNoticeSchema: z.ZodObject<{
147
+ kind: z.ZodLiteral<"model_fallback">;
148
+ requestedModel: z.ZodString;
149
+ usedModel: z.ZodString;
150
+ timestampMs: z.ZodNumber;
151
+ }, z.core.$strip>;
146
152
  export declare const NoticeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
147
153
  kind: z.ZodLiteral<"autofix">;
148
154
  attempt: z.ZodNumber;
@@ -161,6 +167,11 @@ export declare const NoticeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
161
167
  }, z.core.$strip>, z.ZodObject<{
162
168
  kind: z.ZodLiteral<"full_auto_ended">;
163
169
  timestampMs: z.ZodNumber;
170
+ }, z.core.$strip>, z.ZodObject<{
171
+ kind: z.ZodLiteral<"model_fallback">;
172
+ requestedModel: z.ZodString;
173
+ usedModel: z.ZodString;
174
+ timestampMs: z.ZodNumber;
164
175
  }, z.core.$strip>], "kind">;
165
176
  export declare const QuestionAnswerRecordSchema: z.ZodObject<{
166
177
  header: z.ZodString;
@@ -283,6 +294,11 @@ export declare const ConversationSnapshotMessage: z.ZodObject<{
283
294
  }, z.core.$strip>, z.ZodObject<{
284
295
  kind: z.ZodLiteral<"full_auto_ended">;
285
296
  timestampMs: z.ZodNumber;
297
+ }, z.core.$strip>, z.ZodObject<{
298
+ kind: z.ZodLiteral<"model_fallback">;
299
+ requestedModel: z.ZodString;
300
+ usedModel: z.ZodString;
301
+ timestampMs: z.ZodNumber;
286
302
  }, z.core.$strip>], "kind">>;
287
303
  answers: z.ZodOptional<z.ZodArray<z.ZodObject<{
288
304
  header: z.ZodString;
@@ -508,6 +524,11 @@ export declare const ConversationSnapshotEvent: z.ZodObject<{
508
524
  }, z.core.$strip>, z.ZodObject<{
509
525
  kind: z.ZodLiteral<"full_auto_ended">;
510
526
  timestampMs: z.ZodNumber;
527
+ }, z.core.$strip>, z.ZodObject<{
528
+ kind: z.ZodLiteral<"model_fallback">;
529
+ requestedModel: z.ZodString;
530
+ usedModel: z.ZodString;
531
+ timestampMs: z.ZodNumber;
511
532
  }, z.core.$strip>], "kind">>;
512
533
  answers: z.ZodOptional<z.ZodArray<z.ZodObject<{
513
534
  header: z.ZodString;
@@ -643,6 +664,7 @@ export declare const ConversationSnapshotEvent: z.ZodObject<{
643
664
  }, z.core.$strip>>;
644
665
  }, z.core.$strip>;
645
666
  totalTokens: z.ZodNumber;
667
+ model: z.ZodOptional<z.ZodString>;
646
668
  }, z.core.$strip>;
647
669
  export declare const ConversationSummarySchema: z.ZodObject<{
648
670
  id: z.ZodString;
@@ -705,6 +727,7 @@ export declare const AppSettingsSchema: z.ZodObject<{
705
727
  medium: "medium";
706
728
  high: "high";
707
729
  }>;
730
+ claudeModel: z.ZodDefault<z.ZodString>;
708
731
  generationMode: z.ZodEnum<{
709
732
  safe: "safe";
710
733
  vibe: "vibe";
@@ -745,6 +768,7 @@ export declare const SettingsUpdateEvent: z.ZodObject<{
745
768
  medium: "medium";
746
769
  high: "high";
747
770
  }>;
771
+ claudeModel: z.ZodDefault<z.ZodString>;
748
772
  generationMode: z.ZodEnum<{
749
773
  safe: "safe";
750
774
  vibe: "vibe";
@@ -1070,6 +1094,11 @@ export declare const NoticeEvent: z.ZodObject<{
1070
1094
  }, z.core.$strip>, z.ZodObject<{
1071
1095
  kind: z.ZodLiteral<"full_auto_ended">;
1072
1096
  timestampMs: z.ZodNumber;
1097
+ }, z.core.$strip>, z.ZodObject<{
1098
+ kind: z.ZodLiteral<"model_fallback">;
1099
+ requestedModel: z.ZodString;
1100
+ usedModel: z.ZodString;
1101
+ timestampMs: z.ZodNumber;
1073
1102
  }, z.core.$strip>], "kind">;
1074
1103
  }, z.core.$strip>;
1075
1104
  export declare const ChangeSetEvent: z.ZodObject<{
@@ -1123,6 +1152,7 @@ export declare const UsageEvent: z.ZodObject<{
1123
1152
  type: z.ZodLiteral<"usage">;
1124
1153
  conversationId: z.ZodString;
1125
1154
  totalTokens: z.ZodNumber;
1155
+ model: z.ZodOptional<z.ZodString>;
1126
1156
  }, z.core.$strip>;
1127
1157
  export declare const HostCommandNavigateEvent: z.ZodObject<{
1128
1158
  type: z.ZodLiteral<"host_command_navigate">;
@@ -1268,6 +1298,11 @@ export declare const AnyServerEvent: z.ZodDiscriminatedUnion<[z.ZodObject<{
1268
1298
  }, z.core.$strip>, z.ZodObject<{
1269
1299
  kind: z.ZodLiteral<"full_auto_ended">;
1270
1300
  timestampMs: z.ZodNumber;
1301
+ }, z.core.$strip>, z.ZodObject<{
1302
+ kind: z.ZodLiteral<"model_fallback">;
1303
+ requestedModel: z.ZodString;
1304
+ usedModel: z.ZodString;
1305
+ timestampMs: z.ZodNumber;
1271
1306
  }, z.core.$strip>], "kind">>;
1272
1307
  answers: z.ZodOptional<z.ZodArray<z.ZodObject<{
1273
1308
  header: z.ZodString;
@@ -1403,6 +1438,7 @@ export declare const AnyServerEvent: z.ZodDiscriminatedUnion<[z.ZodObject<{
1403
1438
  }, z.core.$strip>>;
1404
1439
  }, z.core.$strip>;
1405
1440
  totalTokens: z.ZodNumber;
1441
+ model: z.ZodOptional<z.ZodString>;
1406
1442
  }, z.core.$strip>, z.ZodObject<{
1407
1443
  type: z.ZodLiteral<"conversation_list">;
1408
1444
  conversations: z.ZodArray<z.ZodObject<{
@@ -1444,6 +1480,7 @@ export declare const AnyServerEvent: z.ZodDiscriminatedUnion<[z.ZodObject<{
1444
1480
  medium: "medium";
1445
1481
  high: "high";
1446
1482
  }>;
1483
+ claudeModel: z.ZodDefault<z.ZodString>;
1447
1484
  generationMode: z.ZodEnum<{
1448
1485
  safe: "safe";
1449
1486
  vibe: "vibe";
@@ -1659,6 +1696,11 @@ export declare const AnyServerEvent: z.ZodDiscriminatedUnion<[z.ZodObject<{
1659
1696
  }, z.core.$strip>, z.ZodObject<{
1660
1697
  kind: z.ZodLiteral<"full_auto_ended">;
1661
1698
  timestampMs: z.ZodNumber;
1699
+ }, z.core.$strip>, z.ZodObject<{
1700
+ kind: z.ZodLiteral<"model_fallback">;
1701
+ requestedModel: z.ZodString;
1702
+ usedModel: z.ZodString;
1703
+ timestampMs: z.ZodNumber;
1662
1704
  }, z.core.$strip>], "kind">;
1663
1705
  }, z.core.$strip>, z.ZodObject<{
1664
1706
  type: z.ZodLiteral<"change_set">;
@@ -1710,6 +1752,7 @@ export declare const AnyServerEvent: z.ZodDiscriminatedUnion<[z.ZodObject<{
1710
1752
  type: z.ZodLiteral<"usage">;
1711
1753
  conversationId: z.ZodString;
1712
1754
  totalTokens: z.ZodNumber;
1755
+ model: z.ZodOptional<z.ZodString>;
1713
1756
  }, z.core.$strip>, z.ZodObject<{
1714
1757
  type: z.ZodLiteral<"block_preview">;
1715
1758
  conversationId: z.ZodString;
@@ -110,11 +110,18 @@ export const FullAutoEndedNoticeSchema = z.object({
110
110
  kind: z.literal("full_auto_ended"),
111
111
  timestampMs: z.number(),
112
112
  });
113
+ export const ModelFallbackNoticeSchema = z.object({
114
+ kind: z.literal("model_fallback"),
115
+ requestedModel: z.string(),
116
+ usedModel: z.string(),
117
+ timestampMs: z.number(),
118
+ });
113
119
  export const NoticeSchema = z.discriminatedUnion("kind", [
114
120
  AutoFixNoticeSchema,
115
121
  PermissionExpiredNoticeSchema,
116
122
  QuestionSkippedNoticeSchema,
117
123
  FullAutoEndedNoticeSchema,
124
+ ModelFallbackNoticeSchema,
118
125
  ]);
119
126
  export const QuestionAnswerRecordSchema = z.object({
120
127
  header: z.string(),
@@ -192,6 +199,7 @@ export const ConversationSnapshotEvent = z.object({
192
199
  changeSets: z.array(ChangeSetSummarySchema),
193
200
  mode: ConversationModeSchema,
194
201
  totalTokens: z.number(),
202
+ model: z.string().optional(),
195
203
  });
196
204
  export const ConversationSummarySchema = z.object({
197
205
  id: z.string(),
@@ -216,6 +224,7 @@ export const AppSettingsSchema = z.object({
216
224
  provider: z.enum(PROVIDER_NAMES),
217
225
  mode: z.enum(CHAT_MODES),
218
226
  thinking: z.enum(THINKING_LEVELS),
227
+ claudeModel: z.string().default(DEFAULT_SETTINGS.claudeModel),
219
228
  generationMode: z.enum(GENERATION_MODES),
220
229
  allowLocalSkills: z.boolean(),
221
230
  alwaysAskDependencies: z
@@ -372,6 +381,7 @@ export const UsageEvent = z.object({
372
381
  type: z.literal(EVENT_TYPES.USAGE),
373
382
  conversationId: z.string(),
374
383
  totalTokens: z.number(),
384
+ model: z.string().optional(),
375
385
  });
376
386
  export const HostCommandNavigateEvent = z.object({
377
387
  type: z.literal(EVENT_TYPES.HOST_COMMAND_NAVIGATE),
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/protocol/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/protocol/events.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,8 @@ import { z } from "zod";
2
2
  export type JsonValue = number | string | boolean | null | JsonValue[] | {
3
3
  [key: string]: JsonValue | undefined;
4
4
  };
5
+ export type Serializable<T> = unknown extends T ? T : T extends string | number | boolean | null | undefined ? T : T extends (...args: never[]) => void ? never : T extends readonly (infer Item)[] ? readonly Serializable<Item>[] : T extends object ? {
6
+ [Key in keyof T]: Serializable<T[Key]>;
7
+ } : never;
5
8
  export declare const JsonValueSchema: z.ZodType<JsonValue>;
9
+ export declare function isJsonValue(value: unknown): value is JsonValue;
@@ -1,3 +1,32 @@
1
1
  import { z } from "zod";
2
2
  export const JsonValueSchema = z.json();
3
+ function isScalar(node) {
4
+ return (node === null ||
5
+ typeof node === "string" ||
6
+ typeof node === "number" ||
7
+ typeof node === "boolean");
8
+ }
9
+ function isPlainObject(node) {
10
+ return (node !== null &&
11
+ typeof node === "object" &&
12
+ Object.getPrototypeOf(node) === Object.prototype);
13
+ }
14
+ export function isJsonValue(value) {
15
+ const pending = [value];
16
+ while (pending.length > 0) {
17
+ const node = pending.pop();
18
+ if (Array.isArray(node)) {
19
+ for (const item of node)
20
+ pending.push(item);
21
+ }
22
+ else if (isPlainObject(node)) {
23
+ for (const member of Object.values(node))
24
+ pending.push(member);
25
+ }
26
+ else if (!isScalar(node)) {
27
+ return false;
28
+ }
29
+ }
30
+ return true;
31
+ }
3
32
  //# sourceMappingURL=json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/protocol/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,MAAM,CAAC,MAAM,eAAe,GAAyB,CAAC,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/protocol/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,MAAM,CAAC,MAAM,eAAe,GAAyB,CAAC,CAAC,IAAI,EAAE,CAAC;AAE9D,SAAS,QAAQ,CAAC,IAAa;IAC7B,OAAO,CACL,IAAI,KAAK,IAAI;QACb,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,IAAI,KAAK,SAAS,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,OAAO,CACL,IAAI,KAAK,IAAI;QACb,OAAO,IAAI,KAAK,QAAQ;QACxB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,CACjD,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,OAAO,GAAc,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}