@openspecui/core 3.1.1 → 3.2.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.
@@ -1,2 +1,2 @@
1
- import { a as buildHostedLaunchUrl, c as normalizeEmbeddedUiUrl, i as buildEmbeddedUiLaunchUrl, l as normalizeHostedAppBaseUrl, n as HostedBackendHealthResponse, o as isHostedBackendHealthResponse, r as OFFICIAL_APP_BASE_URL, s as isSupportedEmbeddedUiUrl, t as HOSTED_SHELL_PROTOCOL_VERSION, u as resolveHostedAppBaseUrl } from "./hosted-app-B6b6fAYZ.mjs";
1
+ import { a as buildHostedLaunchUrl, c as normalizeEmbeddedUiUrl, i as buildEmbeddedUiLaunchUrl, l as normalizeHostedAppBaseUrl, n as HostedBackendHealthResponse, o as isHostedBackendHealthResponse, r as OFFICIAL_APP_BASE_URL, s as isSupportedEmbeddedUiUrl, t as HOSTED_SHELL_PROTOCOL_VERSION, u as resolveHostedAppBaseUrl } from "./hosted-app-BTvoFBMY.mjs";
2
2
  export { HOSTED_SHELL_PROTOCOL_VERSION, HostedBackendHealthResponse, OFFICIAL_APP_BASE_URL, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, isHostedBackendHealthResponse, isSupportedEmbeddedUiUrl, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, resolveHostedAppBaseUrl };
@@ -1,3 +1,3 @@
1
- import { a as isHostedBackendHealthResponse, c as normalizeHostedAppBaseUrl, i as buildHostedLaunchUrl, l as resolveHostedAppBaseUrl, n as OFFICIAL_APP_BASE_URL, o as isSupportedEmbeddedUiUrl, r as buildEmbeddedUiLaunchUrl, s as normalizeEmbeddedUiUrl, t as HOSTED_SHELL_PROTOCOL_VERSION } from "./hosted-app-RXZDSUtU.mjs";
1
+ import { a as isHostedBackendHealthResponse, c as normalizeHostedAppBaseUrl, i as buildHostedLaunchUrl, l as resolveHostedAppBaseUrl, n as OFFICIAL_APP_BASE_URL, o as isSupportedEmbeddedUiUrl, r as buildEmbeddedUiLaunchUrl, s as normalizeEmbeddedUiUrl, t as HOSTED_SHELL_PROTOCOL_VERSION } from "./hosted-app-DAtQMMt1.mjs";
2
2
 
3
3
  export { HOSTED_SHELL_PROTOCOL_VERSION, OFFICIAL_APP_BASE_URL, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, isHostedBackendHealthResponse, isSupportedEmbeddedUiUrl, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, resolveHostedAppBaseUrl };
package/dist/index.d.mts CHANGED
@@ -1,5 +1,6 @@
1
- import { a as buildHostedLaunchUrl, c as normalizeEmbeddedUiUrl, i as buildEmbeddedUiLaunchUrl, l as normalizeHostedAppBaseUrl, n as HostedBackendHealthResponse, o as isHostedBackendHealthResponse, r as OFFICIAL_APP_BASE_URL, s as isSupportedEmbeddedUiUrl, t as HOSTED_SHELL_PROTOCOL_VERSION, u as resolveHostedAppBaseUrl } from "./hosted-app-B6b6fAYZ.mjs";
2
- import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-C1H1ryBL.mjs";
1
+ import { a as buildHostedLaunchUrl, c as normalizeEmbeddedUiUrl, i as buildEmbeddedUiLaunchUrl, l as normalizeHostedAppBaseUrl, n as HostedBackendHealthResponse, o as isHostedBackendHealthResponse, r as OFFICIAL_APP_BASE_URL, s as isSupportedEmbeddedUiUrl, t as HOSTED_SHELL_PROTOCOL_VERSION, u as resolveHostedAppBaseUrl } from "./hosted-app-BTvoFBMY.mjs";
2
+ import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-Bs-P2sK2.mjs";
3
+ import { a as TERMINAL_THEME_VALUES, i as TERMINAL_THEME_MODE_VALUES, n as DEFAULT_TERMINAL_LIGHT_THEME, r as DEFAULT_TERMINAL_THEME_MODE, t as DEFAULT_TERMINAL_DARK_THEME } from "./terminal-theme-BxBl5NsA.mjs";
3
4
  import { AsyncLocalStorage } from "node:async_hooks";
4
5
  import { z } from "zod";
5
6
  import { EventEmitter } from "events";
@@ -19,13 +20,13 @@ declare const ChangeFileSchema: z.ZodObject<{
19
20
  /** Optional byte size for files */
20
21
  size: z.ZodOptional<z.ZodNumber>;
21
22
  }, "strip", z.ZodTypeAny, {
22
- type: "file" | "directory";
23
23
  path: string;
24
+ type: "file" | "directory";
24
25
  content?: string | undefined;
25
26
  size?: number | undefined;
26
27
  }, {
27
- type: "file" | "directory";
28
28
  path: string;
29
+ type: "file" | "directory";
29
30
  content?: string | undefined;
30
31
  size?: number | undefined;
31
32
  }>;
@@ -1329,6 +1330,10 @@ declare const CODE_EDITOR_THEME_VALUES: readonly ["github", "material", "vscode"
1329
1330
  declare const OPSX_AGENT_INVOCATION_MODE_VALUES: readonly ["compose", "command"];
1330
1331
  declare const TerminalRendererEngineSchema: z.ZodEnum<["xterm", "ghostty"]>;
1331
1332
  type TerminalRendererEngine = z.infer<typeof TerminalRendererEngineSchema>;
1333
+ declare const TerminalThemeModeSchema: z.ZodEnum<["app", "light", "dark", "system"]>;
1334
+ type TerminalThemeMode = z.infer<typeof TerminalThemeModeSchema>;
1335
+ declare const TerminalThemeSchema: z.ZodEnum<["default-light", "default-dark", "monokai", "nord", "solarized-light", "solarized-dark"]>;
1336
+ type TerminalThemeId = z.infer<typeof TerminalThemeSchema>;
1332
1337
  declare const OpsxAgentInvocationModeSchema: z.ZodEnum<["compose", "command"]>;
1333
1338
  type OpsxAgentInvocationMode = z.infer<typeof OpsxAgentInvocationModeSchema>;
1334
1339
  declare const CodeEditorThemeSchema: z.ZodEnum<["github", "material", "vscode", "tokyo", "gruvbox", "monokai", "nord"]>;
@@ -1405,6 +1410,9 @@ declare const TerminalConfigSchema: z.ZodObject<{
1405
1410
  cursorBlink: z.ZodDefault<z.ZodBoolean>;
1406
1411
  cursorStyle: z.ZodDefault<z.ZodEnum<["block", "underline", "bar"]>>;
1407
1412
  scrollback: z.ZodDefault<z.ZodNumber>;
1413
+ useTheme: z.ZodDefault<z.ZodEnum<["app", "light", "dark", "system"]>>;
1414
+ lightTheme: z.ZodDefault<z.ZodEnum<["default-light", "default-dark", "monokai", "nord", "solarized-light", "solarized-dark"]>>;
1415
+ darkTheme: z.ZodDefault<z.ZodEnum<["default-light", "default-dark", "monokai", "nord", "solarized-light", "solarized-dark"]>>;
1408
1416
  rendererEngine: z.ZodDefault<z.ZodString>;
1409
1417
  }, "strip", z.ZodTypeAny, {
1410
1418
  fontSize: number;
@@ -1412,6 +1420,9 @@ declare const TerminalConfigSchema: z.ZodObject<{
1412
1420
  cursorBlink: boolean;
1413
1421
  cursorStyle: "block" | "underline" | "bar";
1414
1422
  scrollback: number;
1423
+ useTheme: "app" | "light" | "dark" | "system";
1424
+ lightTheme: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark";
1425
+ darkTheme: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark";
1415
1426
  rendererEngine: string;
1416
1427
  }, {
1417
1428
  fontSize?: number | undefined;
@@ -1419,6 +1430,9 @@ declare const TerminalConfigSchema: z.ZodObject<{
1419
1430
  cursorBlink?: boolean | undefined;
1420
1431
  cursorStyle?: "block" | "underline" | "bar" | undefined;
1421
1432
  scrollback?: number | undefined;
1433
+ useTheme?: "app" | "light" | "dark" | "system" | undefined;
1434
+ lightTheme?: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark" | undefined;
1435
+ darkTheme?: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark" | undefined;
1422
1436
  rendererEngine?: string | undefined;
1423
1437
  }>;
1424
1438
  type TerminalConfig = z.infer<typeof TerminalConfigSchema>;
@@ -1472,9 +1486,9 @@ declare const OpenSpecUIConfigSchema: z.ZodObject<{
1472
1486
  codeEditor: z.ZodDefault<z.ZodObject<{
1473
1487
  theme: z.ZodDefault<z.ZodEnum<["github", "material", "vscode", "tokyo", "gruvbox", "monokai", "nord"]>>;
1474
1488
  }, "strip", z.ZodTypeAny, {
1475
- theme: "github" | "material" | "vscode" | "tokyo" | "gruvbox" | "monokai" | "nord";
1489
+ theme: "monokai" | "nord" | "github" | "material" | "vscode" | "tokyo" | "gruvbox";
1476
1490
  }, {
1477
- theme?: "github" | "material" | "vscode" | "tokyo" | "gruvbox" | "monokai" | "nord" | undefined;
1491
+ theme?: "monokai" | "nord" | "github" | "material" | "vscode" | "tokyo" | "gruvbox" | undefined;
1478
1492
  }>>;
1479
1493
  /** Hosted app 基础 URL(空字符串表示使用官方默认值) */
1480
1494
  appBaseUrl: z.ZodDefault<z.ZodString>;
@@ -1493,6 +1507,9 @@ declare const OpenSpecUIConfigSchema: z.ZodObject<{
1493
1507
  cursorBlink: z.ZodDefault<z.ZodBoolean>;
1494
1508
  cursorStyle: z.ZodDefault<z.ZodEnum<["block", "underline", "bar"]>>;
1495
1509
  scrollback: z.ZodDefault<z.ZodNumber>;
1510
+ useTheme: z.ZodDefault<z.ZodEnum<["app", "light", "dark", "system"]>>;
1511
+ lightTheme: z.ZodDefault<z.ZodEnum<["default-light", "default-dark", "monokai", "nord", "solarized-light", "solarized-dark"]>>;
1512
+ darkTheme: z.ZodDefault<z.ZodEnum<["default-light", "default-dark", "monokai", "nord", "solarized-light", "solarized-dark"]>>;
1496
1513
  rendererEngine: z.ZodDefault<z.ZodString>;
1497
1514
  }, "strip", z.ZodTypeAny, {
1498
1515
  fontSize: number;
@@ -1500,6 +1517,9 @@ declare const OpenSpecUIConfigSchema: z.ZodObject<{
1500
1517
  cursorBlink: boolean;
1501
1518
  cursorStyle: "block" | "underline" | "bar";
1502
1519
  scrollback: number;
1520
+ useTheme: "app" | "light" | "dark" | "system";
1521
+ lightTheme: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark";
1522
+ darkTheme: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark";
1503
1523
  rendererEngine: string;
1504
1524
  }, {
1505
1525
  fontSize?: number | undefined;
@@ -1507,6 +1527,9 @@ declare const OpenSpecUIConfigSchema: z.ZodObject<{
1507
1527
  cursorBlink?: boolean | undefined;
1508
1528
  cursorStyle?: "block" | "underline" | "bar" | undefined;
1509
1529
  scrollback?: number | undefined;
1530
+ useTheme?: "app" | "light" | "dark" | "system" | undefined;
1531
+ lightTheme?: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark" | undefined;
1532
+ darkTheme?: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark" | undefined;
1510
1533
  rendererEngine?: string | undefined;
1511
1534
  }>>;
1512
1535
  /** Dashboard 配置 */
@@ -1532,7 +1555,7 @@ declare const OpenSpecUIConfigSchema: z.ZodObject<{
1532
1555
  args?: string[] | undefined;
1533
1556
  };
1534
1557
  codeEditor: {
1535
- theme: "github" | "material" | "vscode" | "tokyo" | "gruvbox" | "monokai" | "nord";
1558
+ theme: "monokai" | "nord" | "github" | "material" | "vscode" | "tokyo" | "gruvbox";
1536
1559
  };
1537
1560
  appBaseUrl: string;
1538
1561
  opsx: {
@@ -1544,6 +1567,9 @@ declare const OpenSpecUIConfigSchema: z.ZodObject<{
1544
1567
  cursorBlink: boolean;
1545
1568
  cursorStyle: "block" | "underline" | "bar";
1546
1569
  scrollback: number;
1570
+ useTheme: "app" | "light" | "dark" | "system";
1571
+ lightTheme: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark";
1572
+ darkTheme: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark";
1547
1573
  rendererEngine: string;
1548
1574
  };
1549
1575
  dashboard: {
@@ -1559,7 +1585,7 @@ declare const OpenSpecUIConfigSchema: z.ZodObject<{
1559
1585
  args?: string[] | undefined;
1560
1586
  } | undefined;
1561
1587
  codeEditor?: {
1562
- theme?: "github" | "material" | "vscode" | "tokyo" | "gruvbox" | "monokai" | "nord" | undefined;
1588
+ theme?: "monokai" | "nord" | "github" | "material" | "vscode" | "tokyo" | "gruvbox" | undefined;
1563
1589
  } | undefined;
1564
1590
  appBaseUrl?: string | undefined;
1565
1591
  opsx?: {
@@ -1571,6 +1597,9 @@ declare const OpenSpecUIConfigSchema: z.ZodObject<{
1571
1597
  cursorBlink?: boolean | undefined;
1572
1598
  cursorStyle?: "block" | "underline" | "bar" | undefined;
1573
1599
  scrollback?: number | undefined;
1600
+ useTheme?: "app" | "light" | "dark" | "system" | undefined;
1601
+ lightTheme?: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark" | undefined;
1602
+ darkTheme?: "default-light" | "default-dark" | "monokai" | "nord" | "solarized-light" | "solarized-dark" | undefined;
1574
1603
  rendererEngine?: string | undefined;
1575
1604
  } | undefined;
1576
1605
  dashboard?: {
@@ -1983,14 +2012,14 @@ declare const ArtifactStatusSchema: z.ZodObject<{
1983
2012
  missingDeps: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1984
2013
  relativePath: z.ZodOptional<z.ZodString>;
1985
2014
  }, "strip", z.ZodTypeAny, {
1986
- status: "done" | "ready" | "blocked";
1987
2015
  id: string;
2016
+ status: "done" | "ready" | "blocked";
1988
2017
  outputPath: string;
1989
2018
  missingDeps?: string[] | undefined;
1990
2019
  relativePath?: string | undefined;
1991
2020
  }, {
1992
- status: "done" | "ready" | "blocked";
1993
2021
  id: string;
2022
+ status: "done" | "ready" | "blocked";
1994
2023
  outputPath: string;
1995
2024
  missingDeps?: string[] | undefined;
1996
2025
  relativePath?: string | undefined;
@@ -2008,14 +2037,14 @@ declare const ChangeStatusSchema: z.ZodObject<{
2008
2037
  missingDeps: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2009
2038
  relativePath: z.ZodOptional<z.ZodString>;
2010
2039
  }, "strip", z.ZodTypeAny, {
2011
- status: "done" | "ready" | "blocked";
2012
2040
  id: string;
2041
+ status: "done" | "ready" | "blocked";
2013
2042
  outputPath: string;
2014
2043
  missingDeps?: string[] | undefined;
2015
2044
  relativePath?: string | undefined;
2016
2045
  }, {
2017
- status: "done" | "ready" | "blocked";
2018
2046
  id: string;
2047
+ status: "done" | "ready" | "blocked";
2019
2048
  outputPath: string;
2020
2049
  missingDeps?: string[] | undefined;
2021
2050
  relativePath?: string | undefined;
@@ -2026,8 +2055,8 @@ declare const ChangeStatusSchema: z.ZodObject<{
2026
2055
  isComplete: boolean;
2027
2056
  applyRequires: string[];
2028
2057
  artifacts: {
2029
- status: "done" | "ready" | "blocked";
2030
2058
  id: string;
2059
+ status: "done" | "ready" | "blocked";
2031
2060
  outputPath: string;
2032
2061
  missingDeps?: string[] | undefined;
2033
2062
  relativePath?: string | undefined;
@@ -2038,8 +2067,8 @@ declare const ChangeStatusSchema: z.ZodObject<{
2038
2067
  isComplete: boolean;
2039
2068
  applyRequires: string[];
2040
2069
  artifacts: {
2041
- status: "done" | "ready" | "blocked";
2042
2070
  id: string;
2071
+ status: "done" | "ready" | "blocked";
2043
2072
  outputPath: string;
2044
2073
  missingDeps?: string[] | undefined;
2045
2074
  relativePath?: string | undefined;
@@ -2052,13 +2081,13 @@ declare const DependencyInfoSchema: z.ZodObject<{
2052
2081
  path: z.ZodString;
2053
2082
  description: z.ZodString;
2054
2083
  }, "strip", z.ZodTypeAny, {
2055
- path: string;
2056
2084
  id: string;
2085
+ path: string;
2057
2086
  description: string;
2058
2087
  done: boolean;
2059
2088
  }, {
2060
- path: string;
2061
2089
  id: string;
2090
+ path: string;
2062
2091
  description: string;
2063
2092
  done: boolean;
2064
2093
  }>;
@@ -2167,13 +2196,13 @@ declare const ArtifactInstructionsSchema: z.ZodObject<{
2167
2196
  path: z.ZodString;
2168
2197
  description: z.ZodString;
2169
2198
  }, "strip", z.ZodTypeAny, {
2170
- path: string;
2171
2199
  id: string;
2200
+ path: string;
2172
2201
  description: string;
2173
2202
  done: boolean;
2174
2203
  }, {
2175
- path: string;
2176
2204
  id: string;
2205
+ path: string;
2177
2206
  description: string;
2178
2207
  done: boolean;
2179
2208
  }>, "many">;
@@ -2187,8 +2216,8 @@ declare const ArtifactInstructionsSchema: z.ZodObject<{
2187
2216
  artifactId: string;
2188
2217
  template: string;
2189
2218
  dependencies: {
2190
- path: string;
2191
2219
  id: string;
2220
+ path: string;
2192
2221
  description: string;
2193
2222
  done: boolean;
2194
2223
  }[];
@@ -2205,8 +2234,8 @@ declare const ArtifactInstructionsSchema: z.ZodObject<{
2205
2234
  artifactId: string;
2206
2235
  template: string;
2207
2236
  dependencies: {
2208
- path: string;
2209
2237
  id: string;
2238
+ path: string;
2210
2239
  description: string;
2211
2240
  done: boolean;
2212
2241
  }[];
@@ -2252,8 +2281,8 @@ declare const SchemaResolutionSchema: z.ZodObject<{
2252
2281
  displayPath?: string | undefined;
2253
2282
  }>, "many">;
2254
2283
  }, "strip", z.ZodTypeAny, {
2255
- path: string;
2256
2284
  name: string;
2285
+ path: string;
2257
2286
  source: "project" | "user" | "package";
2258
2287
  shadows: {
2259
2288
  path: string;
@@ -2262,8 +2291,8 @@ declare const SchemaResolutionSchema: z.ZodObject<{
2262
2291
  }[];
2263
2292
  displayPath?: string | undefined;
2264
2293
  }, {
2265
- path: string;
2266
2294
  name: string;
2295
+ path: string;
2267
2296
  source: "project" | "user" | "package";
2268
2297
  shadows: {
2269
2298
  path: string;
@@ -2692,22 +2721,22 @@ declare const PtySessionInfoSchema: z.ZodObject<{
2692
2721
  closeTip: z.ZodOptional<z.ZodString>;
2693
2722
  closeCallbackUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
2694
2723
  }, "strip", z.ZodTypeAny, {
2724
+ id: string;
2695
2725
  command: string;
2696
2726
  args: string[];
2697
2727
  platform: "windows" | "macos" | "common";
2698
2728
  exitCode: number | null;
2699
2729
  title: string;
2700
- id: string;
2701
2730
  isExited: boolean;
2702
2731
  closeTip?: string | undefined;
2703
2732
  closeCallbackUrl?: string | Record<string, string> | undefined;
2704
2733
  }, {
2734
+ id: string;
2705
2735
  command: string;
2706
2736
  args: string[];
2707
2737
  platform: "windows" | "macos" | "common";
2708
2738
  exitCode: number | null;
2709
2739
  title: string;
2710
- id: string;
2711
2740
  isExited: boolean;
2712
2741
  closeTip?: string | undefined;
2713
2742
  closeCallbackUrl?: string | Record<string, string> | undefined;
@@ -2968,22 +2997,22 @@ declare const PtyListResponseSchema: z.ZodObject<{
2968
2997
  closeTip: z.ZodOptional<z.ZodString>;
2969
2998
  closeCallbackUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
2970
2999
  }, "strip", z.ZodTypeAny, {
3000
+ id: string;
2971
3001
  command: string;
2972
3002
  args: string[];
2973
3003
  platform: "windows" | "macos" | "common";
2974
3004
  exitCode: number | null;
2975
3005
  title: string;
2976
- id: string;
2977
3006
  isExited: boolean;
2978
3007
  closeTip?: string | undefined;
2979
3008
  closeCallbackUrl?: string | Record<string, string> | undefined;
2980
3009
  }, {
3010
+ id: string;
2981
3011
  command: string;
2982
3012
  args: string[];
2983
3013
  platform: "windows" | "macos" | "common";
2984
3014
  exitCode: number | null;
2985
3015
  title: string;
2986
- id: string;
2987
3016
  isExited: boolean;
2988
3017
  closeTip?: string | undefined;
2989
3018
  closeCallbackUrl?: string | Record<string, string> | undefined;
@@ -2991,12 +3020,12 @@ declare const PtyListResponseSchema: z.ZodObject<{
2991
3020
  }, "strip", z.ZodTypeAny, {
2992
3021
  type: "list";
2993
3022
  sessions: {
3023
+ id: string;
2994
3024
  command: string;
2995
3025
  args: string[];
2996
3026
  platform: "windows" | "macos" | "common";
2997
3027
  exitCode: number | null;
2998
3028
  title: string;
2999
- id: string;
3000
3029
  isExited: boolean;
3001
3030
  closeTip?: string | undefined;
3002
3031
  closeCallbackUrl?: string | Record<string, string> | undefined;
@@ -3004,12 +3033,12 @@ declare const PtyListResponseSchema: z.ZodObject<{
3004
3033
  }, {
3005
3034
  type: "list";
3006
3035
  sessions: {
3036
+ id: string;
3007
3037
  command: string;
3008
3038
  args: string[];
3009
3039
  platform: "windows" | "macos" | "common";
3010
3040
  exitCode: number | null;
3011
3041
  title: string;
3012
- id: string;
3013
3042
  isExited: boolean;
3014
3043
  closeTip?: string | undefined;
3015
3044
  closeCallbackUrl?: string | Record<string, string> | undefined;
@@ -3022,14 +3051,14 @@ declare const PtyErrorResponseSchema: z.ZodObject<{
3022
3051
  message: z.ZodString;
3023
3052
  sessionId: z.ZodOptional<z.ZodString>;
3024
3053
  }, "strip", z.ZodTypeAny, {
3025
- type: "error";
3026
3054
  code: "INVALID_JSON" | "INVALID_MESSAGE" | "SESSION_NOT_FOUND" | "PTY_CREATE_FAILED";
3027
3055
  message: string;
3056
+ type: "error";
3028
3057
  sessionId?: string | undefined;
3029
3058
  }, {
3030
- type: "error";
3031
3059
  code: "INVALID_JSON" | "INVALID_MESSAGE" | "SESSION_NOT_FOUND" | "PTY_CREATE_FAILED";
3032
3060
  message: string;
3061
+ type: "error";
3033
3062
  sessionId?: string | undefined;
3034
3063
  }>;
3035
3064
  declare const PtyServerMessageSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
@@ -3108,22 +3137,22 @@ declare const PtyServerMessageSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObje
3108
3137
  closeTip: z.ZodOptional<z.ZodString>;
3109
3138
  closeCallbackUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
3110
3139
  }, "strip", z.ZodTypeAny, {
3140
+ id: string;
3111
3141
  command: string;
3112
3142
  args: string[];
3113
3143
  platform: "windows" | "macos" | "common";
3114
3144
  exitCode: number | null;
3115
3145
  title: string;
3116
- id: string;
3117
3146
  isExited: boolean;
3118
3147
  closeTip?: string | undefined;
3119
3148
  closeCallbackUrl?: string | Record<string, string> | undefined;
3120
3149
  }, {
3150
+ id: string;
3121
3151
  command: string;
3122
3152
  args: string[];
3123
3153
  platform: "windows" | "macos" | "common";
3124
3154
  exitCode: number | null;
3125
3155
  title: string;
3126
- id: string;
3127
3156
  isExited: boolean;
3128
3157
  closeTip?: string | undefined;
3129
3158
  closeCallbackUrl?: string | Record<string, string> | undefined;
@@ -3131,12 +3160,12 @@ declare const PtyServerMessageSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObje
3131
3160
  }, "strip", z.ZodTypeAny, {
3132
3161
  type: "list";
3133
3162
  sessions: {
3163
+ id: string;
3134
3164
  command: string;
3135
3165
  args: string[];
3136
3166
  platform: "windows" | "macos" | "common";
3137
3167
  exitCode: number | null;
3138
3168
  title: string;
3139
- id: string;
3140
3169
  isExited: boolean;
3141
3170
  closeTip?: string | undefined;
3142
3171
  closeCallbackUrl?: string | Record<string, string> | undefined;
@@ -3144,12 +3173,12 @@ declare const PtyServerMessageSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObje
3144
3173
  }, {
3145
3174
  type: "list";
3146
3175
  sessions: {
3176
+ id: string;
3147
3177
  command: string;
3148
3178
  args: string[];
3149
3179
  platform: "windows" | "macos" | "common";
3150
3180
  exitCode: number | null;
3151
3181
  title: string;
3152
- id: string;
3153
3182
  isExited: boolean;
3154
3183
  closeTip?: string | undefined;
3155
3184
  closeCallbackUrl?: string | Record<string, string> | undefined;
@@ -3160,14 +3189,14 @@ declare const PtyServerMessageSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObje
3160
3189
  message: z.ZodString;
3161
3190
  sessionId: z.ZodOptional<z.ZodString>;
3162
3191
  }, "strip", z.ZodTypeAny, {
3163
- type: "error";
3164
3192
  code: "INVALID_JSON" | "INVALID_MESSAGE" | "SESSION_NOT_FOUND" | "PTY_CREATE_FAILED";
3165
3193
  message: string;
3194
+ type: "error";
3166
3195
  sessionId?: string | undefined;
3167
3196
  }, {
3168
- type: "error";
3169
3197
  code: "INVALID_JSON" | "INVALID_MESSAGE" | "SESSION_NOT_FOUND" | "PTY_CREATE_FAILED";
3170
3198
  message: string;
3199
+ type: "error";
3171
3200
  sessionId?: string | undefined;
3172
3201
  }>]>;
3173
3202
  type PtyClientMessage = z.infer<typeof PtyClientMessageSchema>;
@@ -3175,4 +3204,4 @@ type PtyServerMessage = z.infer<typeof PtyServerMessageSchema>;
3175
3204
  type PtySessionInfo = z.infer<typeof PtySessionInfoSchema>;
3176
3205
  type PtyPlatform = z.infer<typeof PtyPlatformSchema>;
3177
3206
  //#endregion
3178
- export { type AIToolOption, AI_TOOLS, type ApplyInstructions, ApplyInstructionsContextFilesSchema, ApplyInstructionsSchema, type ApplyTask, ApplyTaskSchema, type ArchiveMeta, type ArtifactInstructions, ArtifactInstructionsSchema, type ArtifactStatus, ArtifactStatusSchema, CODE_EDITOR_THEME_VALUES, type Change, type ChangeFile, ChangeFileSchema, type ChangeMeta, ChangeSchema, type ChangeStatus, ChangeStatusSchema, CliExecutor, type CliResult, type CliRunnerAttempt, type CliSniffResult, type CliStreamEvent, type CodeEditorTheme, CodeEditorThemeSchema, ConfigManager, DASHBOARD_METRIC_KEYS, DEFAULT_CONFIG, DEFAULT_GIT_DIFF_EAGER_LINE_BUDGET, type DashboardCardAvailability, type DashboardConfig, DashboardConfigSchema, type DashboardGitCommitEntry, type DashboardGitDiffStats, type DashboardGitEntry, type DashboardGitSnapshot, type DashboardGitUncommittedEntry, type DashboardGitWorktree, type DashboardMetricKey, type DashboardOverview, type DashboardSummary, type DashboardTrendKind, type DashboardTrendMeta, type DashboardTrendPoint, type DashboardTriColorTrendPoint, type Delta, type DeltaOperation, DeltaOperationType, DeltaSchema, type DeltaSpec, DeltaSpecSchema, type DependencyInfo, DependencyInfoSchema, type ExportSnapshot, type FileChangeEvent, type FileChangeType, type GitConfig, GitConfigSchema, type GitEntriesPage, type GitEntryCursor, type GitEntryDetail, type GitEntryFileDiff, type GitEntryFilePatch, type GitEntryFileSource, type GitEntryFileSummary, type GitEntryFiles, type GitEntryPatch, type GitEntrySelector, type GitEntryShell, type GitFileChangeType, type GitPatchFile, type GitPatchState, type GitWorktreeHandoff, type GitWorktreeOverview, type GitWorktreeSummary, HOSTED_SHELL_PROTOCOL_VERSION, type HostedBackendHealthResponse, MarkdownParser, OFFICIAL_APP_BASE_URL, OPSX_AGENT_INVOCATION_MODE_VALUES, OpenSpecAdapter, type OpenSpecUIConfig, OpenSpecUIConfigSchema, type OpenSpecUIConfigUpdate, OpenSpecWatcher, type OpsxAgentInvocationMode, OpsxAgentInvocationModeSchema, type OpsxConfig, OpsxConfigSchema, OpsxKernel, type PathCallback, type ProjectRecoveryStatus, type ProjectResidencyEvictionReason, type ProjectResidencyStatus, ProjectWatcher, type ProjectWatcherReinitializeReason, type ProjectWatcherRuntimeStatus, type ProjectWatcherRuntimeStatusListener, PtyAttachMessageSchema, PtyBufferResponseSchema, type PtyClientMessage, PtyClientMessageSchema, PtyCloseMessageSchema, PtyCreateMessageSchema, PtyCreatedResponseSchema, PtyErrorCodeSchema, PtyErrorResponseSchema, PtyExitResponseSchema, PtyInputMessageSchema, PtyListMessageSchema, PtyListResponseSchema, PtyOutputResponseSchema, type PtyPlatform, PtyPlatformSchema, PtyResizeMessageSchema, type PtyServerMessage, PtyServerMessageSchema, type PtySessionInfo, PtyTitleResponseSchema, ReactiveContext, ReactiveState, type ReactiveStateOptions, type Requirement, RequirementSchema, type ResolvedCliRunner, type SchemaArtifact, SchemaArtifactSchema, type SchemaDetail, SchemaDetailSchema, type SchemaInfo, SchemaInfoSchema, type SchemaResolution, SchemaResolutionSchema, type Spec, type SpecMeta, SpecSchema, TOOL_WORKFLOW_TO_SKILL_DIR, type Task, TaskSchema, type TemplateContentMap, type TemplatesMap, TemplatesSchema, type TerminalConfig, TerminalConfigSchema, type TerminalRendererEngine, TerminalRendererEngineSchema, type ToolConfig, type ToolInitDelivery, type ToolInitState, type ToolInitStatus, type ToolWorkflowId, VIRTUAL_PROJECT_DIRNAME, type ValidationIssue, type ValidationResult, Validator, type WatchEvent, type WatchEventType, type WatcherRuntimeStatus, acquireWatcher, buildCliRunnerCandidates, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, clearCache, closeAllProjectWatchers, closeAllWatchers, contextStorage, createCleanCliEnv, createFileChangeObservable, getActiveWatcherCount, getAllToolIds, getAllTools, getAvailableToolIds, getAvailableTools, getCacheSize, getConfiguredTools, getDefaultCliCommand, getDefaultCliCommandString, getDetectedProjectTools, getProjectWatcher, getToolById, getToolInitStates, getWatchedProjectDir, getWatcherRuntimeStatus, initWatcherPool, isGlobPattern, isHostedBackendHealthResponse, isSupportedEmbeddedUiUrl, isTerminalRendererEngine, isToolConfigured, isWatcherPoolInitialized, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, parseCliCommand, reactiveExists, reactiveReadDir, reactiveReadFile, reactiveStat, resolveHostedAppBaseUrl, sniffGlobalCli, subscribeWatcherRuntimeStatus, toOpsxDisplayPath };
3207
+ export { type AIToolOption, AI_TOOLS, type ApplyInstructions, ApplyInstructionsContextFilesSchema, ApplyInstructionsSchema, type ApplyTask, ApplyTaskSchema, type ArchiveMeta, type ArtifactInstructions, ArtifactInstructionsSchema, type ArtifactStatus, ArtifactStatusSchema, CODE_EDITOR_THEME_VALUES, type Change, type ChangeFile, ChangeFileSchema, type ChangeMeta, ChangeSchema, type ChangeStatus, ChangeStatusSchema, CliExecutor, type CliResult, type CliRunnerAttempt, type CliSniffResult, type CliStreamEvent, type CodeEditorTheme, CodeEditorThemeSchema, ConfigManager, DASHBOARD_METRIC_KEYS, DEFAULT_CONFIG, DEFAULT_GIT_DIFF_EAGER_LINE_BUDGET, DEFAULT_TERMINAL_DARK_THEME, DEFAULT_TERMINAL_LIGHT_THEME, DEFAULT_TERMINAL_THEME_MODE, type DashboardCardAvailability, type DashboardConfig, DashboardConfigSchema, type DashboardGitCommitEntry, type DashboardGitDiffStats, type DashboardGitEntry, type DashboardGitSnapshot, type DashboardGitUncommittedEntry, type DashboardGitWorktree, type DashboardMetricKey, type DashboardOverview, type DashboardSummary, type DashboardTrendKind, type DashboardTrendMeta, type DashboardTrendPoint, type DashboardTriColorTrendPoint, type Delta, type DeltaOperation, DeltaOperationType, DeltaSchema, type DeltaSpec, DeltaSpecSchema, type DependencyInfo, DependencyInfoSchema, type ExportSnapshot, type FileChangeEvent, type FileChangeType, type GitConfig, GitConfigSchema, type GitEntriesPage, type GitEntryCursor, type GitEntryDetail, type GitEntryFileDiff, type GitEntryFilePatch, type GitEntryFileSource, type GitEntryFileSummary, type GitEntryFiles, type GitEntryPatch, type GitEntrySelector, type GitEntryShell, type GitFileChangeType, type GitPatchFile, type GitPatchState, type GitWorktreeHandoff, type GitWorktreeOverview, type GitWorktreeSummary, HOSTED_SHELL_PROTOCOL_VERSION, type HostedBackendHealthResponse, MarkdownParser, OFFICIAL_APP_BASE_URL, OPSX_AGENT_INVOCATION_MODE_VALUES, OpenSpecAdapter, type OpenSpecUIConfig, OpenSpecUIConfigSchema, type OpenSpecUIConfigUpdate, OpenSpecWatcher, type OpsxAgentInvocationMode, OpsxAgentInvocationModeSchema, type OpsxConfig, OpsxConfigSchema, OpsxKernel, type PathCallback, type ProjectRecoveryStatus, type ProjectResidencyEvictionReason, type ProjectResidencyStatus, ProjectWatcher, type ProjectWatcherReinitializeReason, type ProjectWatcherRuntimeStatus, type ProjectWatcherRuntimeStatusListener, PtyAttachMessageSchema, PtyBufferResponseSchema, type PtyClientMessage, PtyClientMessageSchema, PtyCloseMessageSchema, PtyCreateMessageSchema, PtyCreatedResponseSchema, PtyErrorCodeSchema, PtyErrorResponseSchema, PtyExitResponseSchema, PtyInputMessageSchema, PtyListMessageSchema, PtyListResponseSchema, PtyOutputResponseSchema, type PtyPlatform, PtyPlatformSchema, PtyResizeMessageSchema, type PtyServerMessage, PtyServerMessageSchema, type PtySessionInfo, PtyTitleResponseSchema, ReactiveContext, ReactiveState, type ReactiveStateOptions, type Requirement, RequirementSchema, type ResolvedCliRunner, type SchemaArtifact, SchemaArtifactSchema, type SchemaDetail, SchemaDetailSchema, type SchemaInfo, SchemaInfoSchema, type SchemaResolution, SchemaResolutionSchema, type Spec, type SpecMeta, SpecSchema, TERMINAL_THEME_MODE_VALUES, TERMINAL_THEME_VALUES, TOOL_WORKFLOW_TO_SKILL_DIR, type Task, TaskSchema, type TemplateContentMap, type TemplatesMap, TemplatesSchema, type TerminalConfig, TerminalConfigSchema, type TerminalRendererEngine, TerminalRendererEngineSchema, type TerminalThemeId, type TerminalThemeMode, TerminalThemeModeSchema, TerminalThemeSchema, type ToolConfig, type ToolInitDelivery, type ToolInitState, type ToolInitStatus, type ToolWorkflowId, VIRTUAL_PROJECT_DIRNAME, type ValidationIssue, type ValidationResult, Validator, type WatchEvent, type WatchEventType, type WatcherRuntimeStatus, acquireWatcher, buildCliRunnerCandidates, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, clearCache, closeAllProjectWatchers, closeAllWatchers, contextStorage, createCleanCliEnv, createFileChangeObservable, getActiveWatcherCount, getAllToolIds, getAllTools, getAvailableToolIds, getAvailableTools, getCacheSize, getConfiguredTools, getDefaultCliCommand, getDefaultCliCommandString, getDetectedProjectTools, getProjectWatcher, getToolById, getToolInitStates, getWatchedProjectDir, getWatcherRuntimeStatus, initWatcherPool, isGlobPattern, isHostedBackendHealthResponse, isSupportedEmbeddedUiUrl, isTerminalRendererEngine, isToolConfigured, isWatcherPoolInitialized, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, parseCliCommand, reactiveExists, reactiveReadDir, reactiveReadFile, reactiveStat, resolveHostedAppBaseUrl, sniffGlobalCli, subscribeWatcherRuntimeStatus, toOpsxDisplayPath };
package/dist/index.mjs CHANGED
@@ -1,5 +1,6 @@
1
- import { a as isHostedBackendHealthResponse, c as normalizeHostedAppBaseUrl, i as buildHostedLaunchUrl, l as resolveHostedAppBaseUrl, n as OFFICIAL_APP_BASE_URL, o as isSupportedEmbeddedUiUrl, r as buildEmbeddedUiLaunchUrl, s as normalizeEmbeddedUiUrl, t as HOSTED_SHELL_PROTOCOL_VERSION } from "./hosted-app-RXZDSUtU.mjs";
2
- import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-Cja3Bt1P.mjs";
1
+ import { a as TERMINAL_THEME_VALUES, i as TERMINAL_THEME_MODE_VALUES, n as DEFAULT_TERMINAL_LIGHT_THEME, r as DEFAULT_TERMINAL_THEME_MODE, t as DEFAULT_TERMINAL_DARK_THEME } from "./terminal-theme-B-mkZOey.mjs";
2
+ import { a as isHostedBackendHealthResponse, c as normalizeHostedAppBaseUrl, i as buildHostedLaunchUrl, l as resolveHostedAppBaseUrl, n as OFFICIAL_APP_BASE_URL, o as isSupportedEmbeddedUiUrl, r as buildEmbeddedUiLaunchUrl, s as normalizeEmbeddedUiUrl, t as HOSTED_SHELL_PROTOCOL_VERSION } from "./hosted-app-DAtQMMt1.mjs";
3
+ import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-DDr9O-4r.mjs";
3
4
  import { mkdir, readFile, rename, writeFile } from "fs/promises";
4
5
  import { dirname, join } from "path";
5
6
  import { AsyncLocalStorage } from "node:async_hooks";
@@ -2119,6 +2120,8 @@ const CODE_EDITOR_THEME_VALUES = [
2119
2120
  const TERMINAL_RENDERER_ENGINE_VALUES = ["xterm", "ghostty"];
2120
2121
  const OPSX_AGENT_INVOCATION_MODE_VALUES = ["compose", "command"];
2121
2122
  const TerminalRendererEngineSchema = z.enum(TERMINAL_RENDERER_ENGINE_VALUES);
2123
+ const TerminalThemeModeSchema = z.enum(TERMINAL_THEME_MODE_VALUES);
2124
+ const TerminalThemeSchema = z.enum(TERMINAL_THEME_VALUES);
2122
2125
  const OpsxAgentInvocationModeSchema = z.enum(OPSX_AGENT_INVOCATION_MODE_VALUES);
2123
2126
  const CodeEditorThemeSchema = z.enum(CODE_EDITOR_THEME_VALUES);
2124
2127
  function isTerminalRendererEngine(value) {
@@ -2491,6 +2494,9 @@ const TerminalConfigSchema = z.object({
2491
2494
  cursorBlink: z.boolean().default(true),
2492
2495
  cursorStyle: z.enum(CURSOR_STYLE_VALUES).default("block"),
2493
2496
  scrollback: z.number().min(0).max(1e5).default(1e3),
2497
+ useTheme: TerminalThemeModeSchema.default(DEFAULT_TERMINAL_THEME_MODE),
2498
+ lightTheme: TerminalThemeSchema.default(DEFAULT_TERMINAL_LIGHT_THEME),
2499
+ darkTheme: TerminalThemeSchema.default(DEFAULT_TERMINAL_DARK_THEME),
2494
2500
  rendererEngine: z.string().default("xterm")
2495
2501
  });
2496
2502
  const DashboardConfigSchema = z.object({ trendPointLimit: z.number().int().min(20).max(500).default(100) });
@@ -2574,6 +2580,9 @@ function toPersistedConfig(config, options = {}) {
2574
2580
  if (config.terminal.cursorBlink !== DEFAULT_CONFIG.terminal.cursorBlink) terminal.cursorBlink = config.terminal.cursorBlink;
2575
2581
  if (config.terminal.cursorStyle !== DEFAULT_CONFIG.terminal.cursorStyle) terminal.cursorStyle = config.terminal.cursorStyle;
2576
2582
  if (config.terminal.scrollback !== DEFAULT_CONFIG.terminal.scrollback) terminal.scrollback = config.terminal.scrollback;
2583
+ if (config.terminal.useTheme !== DEFAULT_CONFIG.terminal.useTheme) terminal.useTheme = config.terminal.useTheme;
2584
+ if (config.terminal.lightTheme !== DEFAULT_CONFIG.terminal.lightTheme) terminal.lightTheme = config.terminal.lightTheme;
2585
+ if (config.terminal.darkTheme !== DEFAULT_CONFIG.terminal.darkTheme) terminal.darkTheme = config.terminal.darkTheme;
2577
2586
  if (config.terminal.rendererEngine !== DEFAULT_CONFIG.terminal.rendererEngine) terminal.rendererEngine = config.terminal.rendererEngine;
2578
2587
  if (hasOwnEntries(terminal)) persisted.terminal = terminal;
2579
2588
  const dashboard = {};
@@ -3873,6 +3882,17 @@ async function readEntriesUnderRoot(root) {
3873
3882
  };
3874
3883
  return collectEntries(root);
3875
3884
  }
3885
+ function splitRelativePathSegments(path) {
3886
+ return path.replace(/\\/g, "/").split("/").filter(Boolean);
3887
+ }
3888
+ function getGlobStaticPrefix(outputPath) {
3889
+ const normalizedPath = outputPath.replace(/\\/g, "/");
3890
+ const firstGlobIndex = normalizedPath.search(/[*?[]/);
3891
+ if (firstGlobIndex === -1) return normalizedPath;
3892
+ const staticPrefix = normalizedPath.slice(0, firstGlobIndex);
3893
+ const lastSlashIndex = staticPrefix.lastIndexOf("/");
3894
+ return lastSlashIndex === -1 ? "" : staticPrefix.slice(0, lastSlashIndex);
3895
+ }
3876
3896
  async function readGlobArtifactFiles(projectDir, changeId, outputPath) {
3877
3897
  return (await readEntriesUnderRoot(join$1(projectDir, "openspec", "changes", changeId))).filter((entry) => entry.type === "file" && matchesGlob(entry.path, outputPath)).map((entry) => ({
3878
3898
  path: entry.path,
@@ -3900,6 +3920,34 @@ async function touchOpsxChangeDeps(projectDir, changeId) {
3900
3920
  await reactiveReadDir(changeDir, { includeHidden: true });
3901
3921
  await reactiveReadFile(join$1(changeDir, ".openspec.yaml"));
3902
3922
  }
3923
+ async function touchDirectoryPathDeps(rootDir, relativePath) {
3924
+ let currentPath = rootDir;
3925
+ for (const segment of splitRelativePathSegments(relativePath)) {
3926
+ currentPath = join$1(currentPath, segment);
3927
+ await reactiveExists(currentPath);
3928
+ }
3929
+ }
3930
+ async function touchDirectoryTree(rootDir) {
3931
+ if (!(await reactiveStat(rootDir))?.isDirectory) return;
3932
+ const entries = await reactiveReadDir(rootDir, { includeHidden: true });
3933
+ await Promise.all(entries.map(async (entryName) => {
3934
+ const entryPath = join$1(rootDir, entryName);
3935
+ if ((await reactiveStat(entryPath))?.isDirectory) await touchDirectoryTree(entryPath);
3936
+ }));
3937
+ }
3938
+ async function touchArtifactOutputDeps(projectDir, changeId, outputPath) {
3939
+ const changeDir = join$1(projectDir, "openspec", "changes", changeId);
3940
+ const normalizedOutputPath = outputPath.replace(/\\/g, "/");
3941
+ if (isGlobPattern(normalizedOutputPath)) {
3942
+ const staticPrefix = getGlobStaticPrefix(normalizedOutputPath);
3943
+ if (staticPrefix) await touchDirectoryPathDeps(changeDir, staticPrefix);
3944
+ await touchDirectoryTree(staticPrefix ? join$1(changeDir, staticPrefix) : changeDir);
3945
+ return;
3946
+ }
3947
+ const parentPath = splitRelativePathSegments(normalizedOutputPath).slice(0, -1).join("/");
3948
+ if (parentPath) await touchDirectoryPathDeps(changeDir, parentPath);
3949
+ await reactiveExists(join$1(changeDir, normalizedOutputPath));
3950
+ }
3903
3951
  var OpsxKernel = class {
3904
3952
  projectDir;
3905
3953
  cliExecutor;
@@ -4237,7 +4285,10 @@ var OpsxKernel = class {
4237
4285
  if (!result.success) throw new Error(result.stderr || `openspec status failed (exit ${result.exitCode ?? "null"})`);
4238
4286
  const status = parseCliJson(result.stdout, ChangeStatusSchema, "openspec status");
4239
4287
  const changeRelDir = `openspec/changes/${changeId}`;
4240
- for (const artifact of status.artifacts) artifact.relativePath = `${changeRelDir}/${artifact.outputPath}`;
4288
+ for (const artifact of status.artifacts) {
4289
+ artifact.relativePath = `${changeRelDir}/${artifact.outputPath}`;
4290
+ await touchArtifactOutputDeps(this.projectDir, changeId, artifact.outputPath);
4291
+ }
4241
4292
  return status;
4242
4293
  }
4243
4294
  async fetchStatusList() {
@@ -4587,4 +4638,4 @@ const PtyServerMessageSchema = z.discriminatedUnion("type", [
4587
4638
  ]);
4588
4639
 
4589
4640
  //#endregion
4590
- export { AI_TOOLS, ApplyInstructionsContextFilesSchema, ApplyInstructionsSchema, ApplyTaskSchema, ArtifactInstructionsSchema, ArtifactStatusSchema, CODE_EDITOR_THEME_VALUES, ChangeFileSchema, ChangeSchema, ChangeStatusSchema, CliExecutor, CodeEditorThemeSchema, ConfigManager, DASHBOARD_METRIC_KEYS, DEFAULT_CONFIG, DEFAULT_GIT_DIFF_EAGER_LINE_BUDGET, DashboardConfigSchema, DeltaOperationType, DeltaSchema, DeltaSpecSchema, DependencyInfoSchema, GitConfigSchema, HOSTED_SHELL_PROTOCOL_VERSION, MarkdownParser, OFFICIAL_APP_BASE_URL, OPSX_AGENT_INVOCATION_MODE_VALUES, OpenSpecAdapter, OpenSpecUIConfigSchema, OpenSpecWatcher, OpsxAgentInvocationModeSchema, OpsxConfigSchema, OpsxKernel, ProjectWatcher, PtyAttachMessageSchema, PtyBufferResponseSchema, PtyClientMessageSchema, PtyCloseMessageSchema, PtyCreateMessageSchema, PtyCreatedResponseSchema, PtyErrorCodeSchema, PtyErrorResponseSchema, PtyExitResponseSchema, PtyInputMessageSchema, PtyListMessageSchema, PtyListResponseSchema, PtyOutputResponseSchema, PtyPlatformSchema, PtyResizeMessageSchema, PtyServerMessageSchema, PtyTitleResponseSchema, ReactiveContext, ReactiveState, RequirementSchema, SchemaArtifactSchema, SchemaDetailSchema, SchemaInfoSchema, SchemaResolutionSchema, SpecSchema, TOOL_WORKFLOW_TO_SKILL_DIR, TaskSchema, TemplatesSchema, TerminalConfigSchema, TerminalRendererEngineSchema, VIRTUAL_PROJECT_DIRNAME, Validator, acquireWatcher, buildCliRunnerCandidates, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, clearCache, closeAllProjectWatchers, closeAllWatchers, contextStorage, createCleanCliEnv, createFileChangeObservable, getActiveWatcherCount, getAllToolIds, getAllTools, getAvailableToolIds, getAvailableTools, getCacheSize, getConfiguredTools, getDefaultCliCommand, getDefaultCliCommandString, getDetectedProjectTools, getProjectWatcher, getToolById, getToolInitStates, getWatchedProjectDir, getWatcherRuntimeStatus, initWatcherPool, isGlobPattern, isHostedBackendHealthResponse, isSupportedEmbeddedUiUrl, isTerminalRendererEngine, isToolConfigured, isWatcherPoolInitialized, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, parseCliCommand, reactiveExists, reactiveReadDir, reactiveReadFile, reactiveStat, resolveHostedAppBaseUrl, sniffGlobalCli, subscribeWatcherRuntimeStatus, toOpsxDisplayPath };
4641
+ export { AI_TOOLS, ApplyInstructionsContextFilesSchema, ApplyInstructionsSchema, ApplyTaskSchema, ArtifactInstructionsSchema, ArtifactStatusSchema, CODE_EDITOR_THEME_VALUES, ChangeFileSchema, ChangeSchema, ChangeStatusSchema, CliExecutor, CodeEditorThemeSchema, ConfigManager, DASHBOARD_METRIC_KEYS, DEFAULT_CONFIG, DEFAULT_GIT_DIFF_EAGER_LINE_BUDGET, DEFAULT_TERMINAL_DARK_THEME, DEFAULT_TERMINAL_LIGHT_THEME, DEFAULT_TERMINAL_THEME_MODE, DashboardConfigSchema, DeltaOperationType, DeltaSchema, DeltaSpecSchema, DependencyInfoSchema, GitConfigSchema, HOSTED_SHELL_PROTOCOL_VERSION, MarkdownParser, OFFICIAL_APP_BASE_URL, OPSX_AGENT_INVOCATION_MODE_VALUES, OpenSpecAdapter, OpenSpecUIConfigSchema, OpenSpecWatcher, OpsxAgentInvocationModeSchema, OpsxConfigSchema, OpsxKernel, ProjectWatcher, PtyAttachMessageSchema, PtyBufferResponseSchema, PtyClientMessageSchema, PtyCloseMessageSchema, PtyCreateMessageSchema, PtyCreatedResponseSchema, PtyErrorCodeSchema, PtyErrorResponseSchema, PtyExitResponseSchema, PtyInputMessageSchema, PtyListMessageSchema, PtyListResponseSchema, PtyOutputResponseSchema, PtyPlatformSchema, PtyResizeMessageSchema, PtyServerMessageSchema, PtyTitleResponseSchema, ReactiveContext, ReactiveState, RequirementSchema, SchemaArtifactSchema, SchemaDetailSchema, SchemaInfoSchema, SchemaResolutionSchema, SpecSchema, TERMINAL_THEME_MODE_VALUES, TERMINAL_THEME_VALUES, TOOL_WORKFLOW_TO_SKILL_DIR, TaskSchema, TemplatesSchema, TerminalConfigSchema, TerminalRendererEngineSchema, TerminalThemeModeSchema, TerminalThemeSchema, VIRTUAL_PROJECT_DIRNAME, Validator, acquireWatcher, buildCliRunnerCandidates, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, clearCache, closeAllProjectWatchers, closeAllWatchers, contextStorage, createCleanCliEnv, createFileChangeObservable, getActiveWatcherCount, getAllToolIds, getAllTools, getAvailableToolIds, getAvailableTools, getCacheSize, getConfiguredTools, getDefaultCliCommand, getDefaultCliCommandString, getDetectedProjectTools, getProjectWatcher, getToolById, getToolInitStates, getWatchedProjectDir, getWatcherRuntimeStatus, initWatcherPool, isGlobPattern, isHostedBackendHealthResponse, isSupportedEmbeddedUiUrl, isTerminalRendererEngine, isToolConfigured, isWatcherPoolInitialized, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, parseCliCommand, reactiveExists, reactiveReadDir, reactiveReadFile, reactiveStat, resolveHostedAppBaseUrl, sniffGlobalCli, subscribeWatcherRuntimeStatus, toOpsxDisplayPath };
@@ -1,2 +1,2 @@
1
- import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-C1H1ryBL.mjs";
1
+ import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-Bs-P2sK2.mjs";
2
2
  export { VIRTUAL_PROJECT_DIRNAME, toOpsxDisplayPath };
@@ -1,3 +1,3 @@
1
- import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-Cja3Bt1P.mjs";
1
+ import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-DDr9O-4r.mjs";
2
2
 
3
3
  export { VIRTUAL_PROJECT_DIRNAME, toOpsxDisplayPath };
@@ -0,0 +1,27 @@
1
+ //#region src/terminal-theme.ts
2
+ /**
3
+ * Browser-safe terminal theme constants.
4
+ *
5
+ * Keep this module free of Node/runtime-specific imports so web packages can
6
+ * consume the same terminal theme law via a dedicated subpath export.
7
+ */
8
+ const TERMINAL_THEME_MODE_VALUES = [
9
+ "app",
10
+ "light",
11
+ "dark",
12
+ "system"
13
+ ];
14
+ const TERMINAL_THEME_VALUES = [
15
+ "default-light",
16
+ "default-dark",
17
+ "monokai",
18
+ "nord",
19
+ "solarized-light",
20
+ "solarized-dark"
21
+ ];
22
+ const DEFAULT_TERMINAL_THEME_MODE = "app";
23
+ const DEFAULT_TERMINAL_LIGHT_THEME = "default-light";
24
+ const DEFAULT_TERMINAL_DARK_THEME = "default-dark";
25
+
26
+ //#endregion
27
+ export { TERMINAL_THEME_VALUES as a, TERMINAL_THEME_MODE_VALUES as i, DEFAULT_TERMINAL_LIGHT_THEME as n, DEFAULT_TERMINAL_THEME_MODE as r, DEFAULT_TERMINAL_DARK_THEME as t };
@@ -0,0 +1,16 @@
1
+ //#region src/terminal-theme.d.ts
2
+ /**
3
+ * Browser-safe terminal theme constants.
4
+ *
5
+ * Keep this module free of Node/runtime-specific imports so web packages can
6
+ * consume the same terminal theme law via a dedicated subpath export.
7
+ */
8
+ declare const TERMINAL_THEME_MODE_VALUES: readonly ["app", "light", "dark", "system"];
9
+ type TerminalThemeMode = (typeof TERMINAL_THEME_MODE_VALUES)[number];
10
+ declare const TERMINAL_THEME_VALUES: readonly ["default-light", "default-dark", "monokai", "nord", "solarized-light", "solarized-dark"];
11
+ type TerminalThemeId = (typeof TERMINAL_THEME_VALUES)[number];
12
+ declare const DEFAULT_TERMINAL_THEME_MODE: TerminalThemeMode;
13
+ declare const DEFAULT_TERMINAL_LIGHT_THEME: TerminalThemeId;
14
+ declare const DEFAULT_TERMINAL_DARK_THEME: TerminalThemeId;
15
+ //#endregion
16
+ export { TERMINAL_THEME_VALUES as a, TERMINAL_THEME_MODE_VALUES as i, DEFAULT_TERMINAL_LIGHT_THEME as n, TerminalThemeId as o, DEFAULT_TERMINAL_THEME_MODE as r, TerminalThemeMode as s, DEFAULT_TERMINAL_DARK_THEME as t };
@@ -0,0 +1,2 @@
1
+ import { a as TERMINAL_THEME_VALUES, i as TERMINAL_THEME_MODE_VALUES, n as DEFAULT_TERMINAL_LIGHT_THEME, o as TerminalThemeId, r as DEFAULT_TERMINAL_THEME_MODE, s as TerminalThemeMode, t as DEFAULT_TERMINAL_DARK_THEME } from "./terminal-theme-BxBl5NsA.mjs";
2
+ export { DEFAULT_TERMINAL_DARK_THEME, DEFAULT_TERMINAL_LIGHT_THEME, DEFAULT_TERMINAL_THEME_MODE, TERMINAL_THEME_MODE_VALUES, TERMINAL_THEME_VALUES, TerminalThemeId, TerminalThemeMode };
@@ -0,0 +1,3 @@
1
+ import { a as TERMINAL_THEME_VALUES, i as TERMINAL_THEME_MODE_VALUES, n as DEFAULT_TERMINAL_LIGHT_THEME, r as DEFAULT_TERMINAL_THEME_MODE, t as DEFAULT_TERMINAL_DARK_THEME } from "./terminal-theme-B-mkZOey.mjs";
2
+
3
+ export { DEFAULT_TERMINAL_DARK_THEME, DEFAULT_TERMINAL_LIGHT_THEME, DEFAULT_TERMINAL_THEME_MODE, TERMINAL_THEME_MODE_VALUES, TERMINAL_THEME_VALUES };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openspecui/core",
3
- "version": "3.1.1",
3
+ "version": "3.2.0",
4
4
  "description": "Core OpenSpec adapter and parser",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",
@@ -25,14 +25,18 @@
25
25
  "./opsx-display-path": {
26
26
  "import": "./dist/opsx-display-path.mjs",
27
27
  "types": "./dist/opsx-display-path.d.mts"
28
+ },
29
+ "./terminal-theme": {
30
+ "import": "./dist/terminal-theme.mjs",
31
+ "types": "./dist/terminal-theme.d.mts"
28
32
  }
29
33
  },
30
34
  "files": [
31
35
  "dist"
32
36
  ],
33
37
  "scripts": {
34
- "build": "tsdown src/index.ts src/dashboard-display.ts src/opsx-display-path.ts src/hosted-app.ts src/openspec-compat.ts --format esm --dts",
35
- "dev": "tsdown src/index.ts src/dashboard-display.ts src/opsx-display-path.ts src/hosted-app.ts src/openspec-compat.ts --format esm --dts --watch",
38
+ "build": "tsdown src/index.ts src/dashboard-display.ts src/opsx-display-path.ts src/hosted-app.ts src/openspec-compat.ts src/terminal-theme.ts --format esm --dts",
39
+ "dev": "tsdown src/index.ts src/dashboard-display.ts src/opsx-display-path.ts src/hosted-app.ts src/openspec-compat.ts src/terminal-theme.ts --format esm --dts --watch",
36
40
  "test": "vitest run",
37
41
  "test:watch": "vitest",
38
42
  "typecheck": "tsc --noEmit"