deepspace 0.19.5 → 0.21.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 (43) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/{chunk-A7UFIOWO.js → chunk-KDCDRHBA.js} +7 -2
  3. package/dist/chunk-KDCDRHBA.js.map +1 -0
  4. package/dist/cli.js +219 -94
  5. package/dist/cli.js.map +1 -1
  6. package/dist/documentation-client-core.d.ts +3 -2
  7. package/dist/documentation-client-core.js +1 -1
  8. package/dist/documentation-default-renderer.cjs +48 -48
  9. package/dist/documentation-react.d.ts +2 -1
  10. package/dist/documentation-react.js +1 -1
  11. package/dist/documentation-runtime.js +7 -7
  12. package/dist/documentation-server-core.d.ts +3 -2
  13. package/dist/documentation-server-core.js +1 -1
  14. package/dist/documentation.d.ts +40 -12
  15. package/dist/documentation.js +40 -7
  16. package/dist/documentation.js.map +1 -1
  17. package/dist/index.d.ts +225 -21
  18. package/dist/index.js +262 -112
  19. package/dist/index.js.map +1 -1
  20. package/dist/{public-CFAj1hL2.d.ts → public-DenQ1TsZ.d.ts} +36 -11
  21. package/dist/server.d.ts +46 -29
  22. package/dist/server.js +1041 -254
  23. package/dist/server.js.map +1 -1
  24. package/dist/testing-mcp.d.ts +69 -0
  25. package/dist/testing-mcp.js +99 -0
  26. package/dist/testing-mcp.js.map +1 -0
  27. package/dist/testing.d.ts +17 -20
  28. package/dist/testing.js +47 -25
  29. package/dist/testing.js.map +1 -1
  30. package/dist/worker.d.ts +73 -32
  31. package/dist/worker.js +1094 -244
  32. package/dist/worker.js.map +1 -1
  33. package/features/ai-chat/feature.json +2 -2
  34. package/features/ai-chat/src/AiChatPage.tsx +56 -21
  35. package/features/ai-chat/src/ChatPanel.tsx +33 -10
  36. package/features/ai-chat/src/__tests__/ChatPanel.lifecycle.test.tsx +156 -0
  37. package/features/cron/src/CronLogPage.tsx +107 -69
  38. package/features/file-attachments/feature.json +2 -1
  39. package/features/file-manager/feature.json +2 -1
  40. package/features/file-manager/src/FileManagerPage.tsx +227 -194
  41. package/features/integration-test/src/IntegrationTestPage.tsx +54 -34
  42. package/package.json +5 -1
  43. package/dist/chunk-A7UFIOWO.js.map +0 -1
@@ -1,6 +1,7 @@
1
- import { D as DocumentationRuntimeData, a as DocumentationPageComponent, b as DocumentationSiteComponent } from './public-CFAj1hL2.js';
2
- export { A as Accordion, c as AccordionGroup, C as Card, d as CodeGroup, e as DefaultDocumentation, f as DocumentationApp, g as DocumentationAppProps, h as DocumentationContent, i as DocumentationSiteProps, I as Info, N as Note, S as Step, j as Steps, T as Tab, k as Tabs, l as Tip, W as Warning } from './public-CFAj1hL2.js';
1
+ import { D as DocumentationRuntimeData, a as DocumentationPageComponent, b as DocumentationSiteComponent } from './public-DenQ1TsZ.js';
2
+ export { A as Accordion, c as AccordionGroup, C as Card, d as CodeGroup, e as DefaultDocumentation, f as DocumentationApp, g as DocumentationAppProps, h as DocumentationContent, i as DocumentationSiteProps, I as Info, N as Note, S as Step, j as Steps, T as Tab, k as Tabs, l as Tip, W as Warning } from './public-DenQ1TsZ.js';
3
3
  import 'react';
4
+ import 'zod';
4
5
 
5
6
  declare function renderDocumentation({ data, Page, Site, }: {
6
7
  data: DocumentationRuntimeData;
@@ -14,7 +14,7 @@ import {
14
14
  Tabs,
15
15
  Tip,
16
16
  Warning
17
- } from "./chunk-A7UFIOWO.js";
17
+ } from "./chunk-KDCDRHBA.js";
18
18
 
19
19
  // src/documentation/runtime/server.tsx
20
20
  import { createElement } from "react";
@@ -1,3 +1,24 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const themeObjectSchema: z.ZodObject<{
4
+ accent: z.ZodOptional<z.ZodString>;
5
+ accentDark: z.ZodOptional<z.ZodString>;
6
+ background: z.ZodOptional<z.ZodString>;
7
+ density: z.ZodOptional<z.ZodEnum<{
8
+ comfortable: "comfortable";
9
+ compact: "compact";
10
+ }>>;
11
+ logo: z.ZodOptional<z.ZodString>;
12
+ logoDark: z.ZodOptional<z.ZodString>;
13
+ favicon: z.ZodOptional<z.ZodString>;
14
+ defaultMode: z.ZodOptional<z.ZodEnum<{
15
+ light: "light";
16
+ dark: "dark";
17
+ system: "system";
18
+ }>>;
19
+ strictMode: z.ZodOptional<z.ZodBoolean>;
20
+ }, z.core.$strip>;
21
+
1
22
  declare const DOCUMENTATION_CONFIG_FILE = "documentation.json";
2
23
  declare const DOCUMENTATION_MANIFEST_VERSION = 2;
3
24
  type DocumentationAssistantAccess = 'disabled' | 'public' | 'authenticated';
@@ -11,11 +32,21 @@ interface DocumentationFontConfig {
11
32
  source?: string;
12
33
  format?: string;
13
34
  }
14
- interface DocumentationThemeConfig {
15
- preset?: string;
16
- accent?: string;
17
- accentDark?: string;
18
- background?: string;
35
+ /**
36
+ * The `theme` object as authored in documentation.json — exactly the keys
37
+ * the config schema accepts under `theme.*`, derived from that schema so
38
+ * the two can never drift. Everything else (fonts, background decoration,
39
+ * styling, logo href) is configured through the Mintlify-style top-level
40
+ * keys and only exists on the resolved theme.
41
+ */
42
+ type DocumentationThemeConfig = z.infer<typeof themeObjectSchema>;
43
+ /**
44
+ * The fully resolved theme after config loading merges `theme.*` with the
45
+ * Mintlify top-level keys (`colors`, `logo`, `favicon`, `appearance`,
46
+ * `background`, `fonts`, `styling`). This is what the template and runtime
47
+ * consume; it is an output shape, never accepted as `theme.*` input.
48
+ */
49
+ interface ResolvedDocumentationTheme extends DocumentationThemeConfig {
19
50
  backgroundDark?: string;
20
51
  backgroundDecoration?: 'none' | 'gradient' | 'grid';
21
52
  bodyFont?: DocumentationFontConfig;
@@ -23,12 +54,7 @@ interface DocumentationThemeConfig {
23
54
  monoFont?: DocumentationFontConfig;
24
55
  codeBlockMode?: 'dark' | 'system';
25
56
  eyebrowStyle?: 'section' | 'breadcrumbs' | 'none';
26
- logo?: string;
27
- logoDark?: string;
28
57
  logoHref?: string;
29
- favicon?: string;
30
- defaultMode?: 'light' | 'dark' | 'system';
31
- strictMode?: boolean;
32
58
  }
33
59
  interface DocumentationLinkConfig {
34
60
  label: string;
@@ -85,7 +111,7 @@ interface DocumentationConfig {
85
111
  url?: string;
86
112
  /** Explicit custom hostnames that mount this documentation at `/`. */
87
113
  domains: string[];
88
- theme: DocumentationThemeConfig;
114
+ theme: ResolvedDocumentationTheme;
89
115
  navigation?: DocumentationNavigationItem[];
90
116
  links: DocumentationLinkConfig[];
91
117
  footer: DocumentationLinkConfig[];
@@ -200,6 +226,8 @@ interface DocumentationBuildManifest {
200
226
  version: typeof DOCUMENTATION_MANIFEST_VERSION;
201
227
  sourceHash: string;
202
228
  outputHash: string;
229
+ /** Version of the `deepspace` package that compiled this output. */
230
+ sdkVersion: string;
203
231
  name: string;
204
232
  pageCount: number;
205
233
  /** Authored pages plus configured redirect entry points. */
@@ -364,4 +392,4 @@ declare function deepSpaceDocumentation(): {
364
392
  configureServer(server: DocumentationViteServer): void;
365
393
  };
366
394
 
367
- export { AGENT_SKILLS_SCHEMA, type BuildDocumentationOptions, DEFAULT_DOCUMENTATION_CONTEXTUAL_ACTIONS, DEFAULT_DOCUMENTATION_OPENAPI_EXAMPLES, DOCUMENTATION_CONFIG_FILE, DOCUMENTATION_CONTEXTUAL_ACTIONS, DOCUMENTATION_MANIFEST_VERSION, DOCUMENTATION_OPENAPI_SAMPLE_LANGUAGES, type DocumentationAssistantAccess, type DocumentationAssistantChunk, type DocumentationAssistantConfig, type DocumentationBuildManifest, type DocumentationBuildResult, type DocumentationConfig, type DocumentationContextualAction, type DocumentationContextualConfig, type DocumentationDiagnostic, DocumentationError, type DocumentationFontConfig, type DocumentationFrontmatter, type DocumentationGraph, type DocumentationHeading, type DocumentationLinkConfig, type DocumentationMcpAccess, type DocumentationMcpConfig, type DocumentationNavGroup, type DocumentationNavigationGroup, type DocumentationNavigationItem, type DocumentationNavigationLink, type DocumentationNavigationNode, type DocumentationNavigationPage, type DocumentationOpenApiCodeSample, type DocumentationOpenApiConfig, type DocumentationOpenApiExamplesConfig, type DocumentationOpenApiOperation, type DocumentationOpenApiParameter, type DocumentationOpenApiResponse, type DocumentationOpenApiSampleDefaults, type DocumentationOpenApiSampleLanguage, type DocumentationPage, type DocumentationRuntimeData, type DocumentationRuntimePage, type DocumentationRuntimePageLink, type DocumentationRuntimeRouteData, type DocumentationRuntimeRouteDocument, type DocumentationSearchEntry, type DocumentationSeoConfig, type DocumentationSkillArtifacts, type DocumentationThemeConfig, type DocumentationValidationResult, type LoadedDocumentationConfig, buildDocumentation, createDocumentationSkillArtifacts, deepSpaceDocumentation, documentationSkillName, htmlToText, loadDocumentationConfig, normalizeRoute, parseFrontmatter, parseMarkdown, routeFromRelativePath, slugify, validateDocumentation };
395
+ export { AGENT_SKILLS_SCHEMA, type BuildDocumentationOptions, DEFAULT_DOCUMENTATION_CONTEXTUAL_ACTIONS, DEFAULT_DOCUMENTATION_OPENAPI_EXAMPLES, DOCUMENTATION_CONFIG_FILE, DOCUMENTATION_CONTEXTUAL_ACTIONS, DOCUMENTATION_MANIFEST_VERSION, DOCUMENTATION_OPENAPI_SAMPLE_LANGUAGES, type DocumentationAssistantAccess, type DocumentationAssistantChunk, type DocumentationAssistantConfig, type DocumentationBuildManifest, type DocumentationBuildResult, type DocumentationConfig, type DocumentationContextualAction, type DocumentationContextualConfig, type DocumentationDiagnostic, DocumentationError, type DocumentationFontConfig, type DocumentationFrontmatter, type DocumentationGraph, type DocumentationHeading, type DocumentationLinkConfig, type DocumentationMcpAccess, type DocumentationMcpConfig, type DocumentationNavGroup, type DocumentationNavigationGroup, type DocumentationNavigationItem, type DocumentationNavigationLink, type DocumentationNavigationNode, type DocumentationNavigationPage, type DocumentationOpenApiCodeSample, type DocumentationOpenApiConfig, type DocumentationOpenApiExamplesConfig, type DocumentationOpenApiOperation, type DocumentationOpenApiParameter, type DocumentationOpenApiResponse, type DocumentationOpenApiSampleDefaults, type DocumentationOpenApiSampleLanguage, type DocumentationPage, type DocumentationRuntimeData, type DocumentationRuntimePage, type DocumentationRuntimePageLink, type DocumentationRuntimeRouteData, type DocumentationRuntimeRouteDocument, type DocumentationSearchEntry, type DocumentationSeoConfig, type DocumentationSkillArtifacts, type DocumentationThemeConfig, type DocumentationValidationResult, type LoadedDocumentationConfig, type ResolvedDocumentationTheme, buildDocumentation, createDocumentationSkillArtifacts, deepSpaceDocumentation, documentationSkillName, htmlToText, loadDocumentationConfig, normalizeRoute, parseFrontmatter, parseMarkdown, routeFromRelativePath, slugify, validateDocumentation };
@@ -3,6 +3,9 @@ import { buildSync as buildSync3 } from "esbuild";
3
3
  import { readFileSync as readFileSync7 } from "fs";
4
4
  import { resolve as resolve7 } from "path";
5
5
 
6
+ // package.json
7
+ var version = "0.21.0";
8
+
6
9
  // src/documentation/markdown.ts
7
10
  import hljs from "highlight.js/lib/core";
8
11
  import bash from "highlight.js/lib/languages/bash";
@@ -889,15 +892,17 @@ var openapiItemSchema = z.union([
889
892
  })
890
893
  ]);
891
894
  var themeObjectSchema = z.object({
892
- preset: z.string().trim().min(1).optional(),
893
895
  accent: z.string().trim().optional(),
894
896
  accentDark: z.string().trim().optional(),
895
897
  background: z.string().trim().optional(),
898
+ density: z.enum(["comfortable", "compact"]).optional(),
896
899
  logo: z.string().trim().optional(),
897
900
  logoDark: z.string().trim().optional(),
898
901
  favicon: z.string().trim().optional(),
899
- defaultMode: z.enum(["light", "dark", "system"]).optional()
902
+ defaultMode: z.enum(["light", "dark", "system"]).optional(),
903
+ strictMode: z.boolean().optional()
900
904
  });
905
+ var THEME_CONFIG_KEYS = new Set(Object.keys(themeObjectSchema.shape));
901
906
  var fontSpecSchema = z.union([
902
907
  z.string().trim().min(1).transform((family) => ({ family })),
903
908
  z.object({
@@ -1192,8 +1197,20 @@ function loadDocumentationConfig(appDir) {
1192
1197
  });
1193
1198
  }
1194
1199
  }
1200
+ const rawTheme = input.theme;
1201
+ if (rawTheme && typeof rawTheme === "object" && !Array.isArray(rawTheme)) {
1202
+ for (const key of Object.keys(rawTheme)) {
1203
+ if (!THEME_CONFIG_KEYS.has(key)) {
1204
+ warnings.push({
1205
+ code: "unsupported_config_key",
1206
+ message: `Unsupported theme configuration key 'theme.${key}' was ignored`,
1207
+ file: configPath
1208
+ });
1209
+ }
1210
+ }
1211
+ }
1195
1212
  }
1196
- const themeInput = typeof data.theme === "string" ? { preset: data.theme } : data.theme;
1213
+ const themeInput = typeof data.theme === "string" ? {} : data.theme;
1197
1214
  if (typeof data.theme === "string") {
1198
1215
  warnings.push({
1199
1216
  code: "mintlify_theme_normalized",
@@ -1248,7 +1265,7 @@ function loadDocumentationConfig(appDir) {
1248
1265
  logoHref: logo?.href,
1249
1266
  favicon: themeInput.favicon ?? data.favicon,
1250
1267
  defaultMode: data.appearance?.default ?? themeInput.defaultMode,
1251
- strictMode: data.appearance?.strict
1268
+ strictMode: themeInput.strictMode ?? data.appearance?.strict
1252
1269
  },
1253
1270
  navigation,
1254
1271
  links: data.links.length > 0 ? data.links : navbarLinks,
@@ -3097,6 +3114,10 @@ var DOCUMENTATION_BASE_CSS = String.raw`
3097
3114
  --documentation-glass-bg: color-mix(in srgb, var(--documentation-surface-raised) 86%, transparent);
3098
3115
  --documentation-glass-border: color-mix(in srgb, var(--documentation-border-strong) 90%, var(--documentation-accent));
3099
3116
  --documentation-glass-highlight: rgba(255, 255, 255, .6);
3117
+ --documentation-font-size: 17px;
3118
+ --documentation-line-height: 1.65;
3119
+ --documentation-content-width: 720px;
3120
+ --documentation-reader-pad: 62px 52px 96px;
3100
3121
  --documentation-header-height: 66px;
3101
3122
  --documentation-sidebar-width: 292px;
3102
3123
  --documentation-assistant-width: 420px;
@@ -3133,9 +3154,20 @@ var DOCUMENTATION_BASE_CSS = String.raw`
3133
3154
  color-scheme: dark;
3134
3155
  }
3135
3156
 
3157
+ /* theme.density, stamped by the template as data-density. Compact reworks the
3158
+ * whole reading measure through the tokens alone so no layout rule forks. */
3159
+ :root[data-density="compact"] {
3160
+ --documentation-font-size: 15px;
3161
+ --documentation-line-height: 1.6;
3162
+ --documentation-content-width: 680px;
3163
+ --documentation-reader-pad: 44px 44px 80px;
3164
+ --documentation-header-height: 58px;
3165
+ --documentation-sidebar-width: 264px;
3166
+ }
3167
+
3136
3168
  * { box-sizing: border-box; }
3137
3169
  html { scroll-behavior: smooth; scroll-padding-top: 96px; scrollbar-gutter: stable; }
3138
- body { margin: 0; background: var(--documentation-brand-bg); color: var(--documentation-text); font-family: var(--documentation-font-body); font-size: 17px; line-height: 1.65; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
3170
+ body { margin: 0; background: var(--documentation-brand-bg); color: var(--documentation-text); font-family: var(--documentation-font-body); font-size: var(--documentation-font-size); line-height: var(--documentation-line-height); text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
3139
3171
  :root[data-background-decoration="gradient"] body { background-image: radial-gradient(circle at 58% 7%, color-mix(in srgb, var(--documentation-accent) 7%, transparent), transparent 32%); background-attachment: fixed; }
3140
3172
  :root[data-background-decoration="grid"] body { background-image: linear-gradient(color-mix(in srgb, var(--documentation-border) 26%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--documentation-border) 26%, transparent) 1px, transparent 1px); background-attachment: fixed; background-size: 32px 32px; }
3141
3173
  body:has(.documentation-modal-layer), body:has(.documentation-mobile-nav) { overflow: hidden; }
@@ -3164,7 +3196,7 @@ button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visib
3164
3196
  // src/documentation/runtime/styles/content.ts
3165
3197
  var DOCUMENTATION_CONTENT_CSS = String.raw`
3166
3198
  .documentation-main { min-width: 0; margin-left: var(--documentation-sidebar-width); margin-right: 0; transition: margin-right .24s ease; }
3167
- .documentation-reader-grid { display: grid; grid-template-columns: minmax(0, 720px) 250px; justify-content: center; gap: 70px; width: 100%; padding: 62px 52px 96px; }
3199
+ .documentation-reader-grid { display: grid; grid-template-columns: minmax(0, var(--documentation-content-width)) 250px; justify-content: center; gap: 70px; width: 100%; padding: var(--documentation-reader-pad); }
3168
3200
  .documentation-reader-column { display: flex; min-width: 0; min-height: calc(100vh - var(--documentation-header-height) - 158px); flex-direction: column; }
3169
3201
  .documentation-article { display: flex; min-width: 0; flex: 1; flex-direction: column; }
3170
3202
  .documentation-breadcrumbs { display: none; align-items: center; gap: 5px; margin-bottom: 24px; color: var(--documentation-muted); font-size: 13px; }
@@ -3640,7 +3672,7 @@ function renderPage(options, assets = {}, runtime = createPageRuntime(options))
3640
3672
  const assetRoot = documentationPublicPath(options.basePath, "/assets");
3641
3673
  const favicon = theme.favicon ?? documentationPublicPath(options.basePath, "/assets/favicon.svg");
3642
3674
  return `<!doctype html>
3643
- <html lang="en" data-theme-mode="${defaultMode}" data-theme-strict="${theme.strictMode ? "true" : "false"}" data-code-mode="${theme.codeBlockMode ?? "dark"}" data-background-decoration="${theme.backgroundDecoration ?? "none"}" data-eyebrow-style="${theme.eyebrowStyle ?? "section"}">
3675
+ <html lang="en" data-theme-mode="${defaultMode}" data-theme-strict="${theme.strictMode ? "true" : "false"}" data-code-mode="${theme.codeBlockMode ?? "dark"}" data-density="${theme.density ?? "comfortable"}" data-background-decoration="${theme.backgroundDecoration ?? "none"}" data-eyebrow-style="${theme.eyebrowStyle ?? "section"}">
3644
3676
  <head>
3645
3677
  <meta charset="utf-8">
3646
3678
  <meta name="viewport" content="width=device-width, initial-scale=1">
@@ -3938,6 +3970,7 @@ function buildDocumentation(options) {
3938
3970
  version: DOCUMENTATION_MANIFEST_VERSION,
3939
3971
  sourceHash: validation.graph.sourceHash,
3940
3972
  outputHash,
3973
+ sdkVersion: version,
3941
3974
  name: validation.graph.config.name,
3942
3975
  pageCount: validation.graph.pages.length,
3943
3976
  routes: [