@openspecui/core 3.11.4 → 3.11.6

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 (29) hide show
  1. package/dist/{document-translation-B3QRXIXx.mjs → document-translation-B6VWf7ll.mjs} +26 -2
  2. package/dist/{document-translation-QMSrWNT-.d.mts → document-translation-DhFREeHW.d.mts} +254 -52
  3. package/dist/document-translation.d.mts +2 -2
  4. package/dist/document-translation.mjs +3 -3
  5. package/dist/index.d.mts +334 -103
  6. package/dist/index.mjs +120 -93
  7. package/dist/{local-download-profiles-DHF9dW4e.d.mts → local-download-profiles-DIVr0mFh.d.mts} +1 -1
  8. package/dist/local-download-profiles.d.mts +2 -2
  9. package/dist/{notifications-D9yMeQqN.d.mts → notifications-DiY78-k4.d.mts} +3 -3
  10. package/dist/notifications.d.mts +2 -2
  11. package/dist/{openspec-projection-e-sOj4vr.d.mts → openspec-projection-CmxjMsxS.d.mts} +1 -1
  12. package/dist/openspec-projection.d.mts +2 -2
  13. package/dist/{opsx-entity-C89YFQNB.d.mts → opsx-entity-CRa2u1j3.d.mts} +9 -9
  14. package/dist/opsx-entity.d.mts +2 -2
  15. package/dist/{opsx-schema-detail-DIscOp9f.d.mts → opsx-schema-detail-aVlqvbro.d.mts} +1 -1
  16. package/dist/opsx-schema-detail.d.mts +3 -3
  17. package/dist/{schemas-B6ZBedD4.d.mts → schemas-Dp8-Wm-X.d.mts} +16 -16
  18. package/dist/{sounds-BjSZxrQO.d.mts → sounds-DIvZfWxA.d.mts} +4 -4
  19. package/dist/sounds.d.mts +1 -1
  20. package/dist/{terminal-audio-6x0ceNBw.d.mts → terminal-audio-DkjquHlQ.d.mts} +1 -1
  21. package/dist/terminal-audio.d.mts +2 -2
  22. package/dist/terminal-control.d.mts +2 -2
  23. package/dist/{terminal-invocation-C2e1WSWM.d.mts → terminal-invocation-B3js0mEF.d.mts} +32 -32
  24. package/dist/terminal-invocation.d.mts +1 -1
  25. package/dist/{translator-jn94xmWZ.d.mts → translator-CS7MsNZp.d.mts} +297 -122
  26. package/dist/{translator-B98pejVa.mjs → translator-Cx9j32Og.mjs} +31 -1
  27. package/dist/translator.d.mts +2 -2
  28. package/dist/translator.mjs +2 -2
  29. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -3,8 +3,8 @@ import { n as toMarkdownFactKind, t as parseMarkdownFacts } from "./markdown-fac
3
3
  import { a as getMarkdownAnnotation, c as getMarkdownHeadingEnd, d as trimMarkdownSlice, i as createMarkdownReadingDocumentFromFacts, l as getMarkdownHeadingFacts, n as buildMarkdownParentMap, o as getMarkdownAnnotationsForFact, r as createMarkdownReadingDocument, s as getMarkdownFactSpan, t as MarkdownReadingPluginRegistry, u as sortMarkdownReadingPlugins } from "./markdown-reading-DSlcirYV.mjs";
4
4
  import { a as getOpenSpecAnnotationsForFact, i as getOpenSpecAnnotation, n as annotateOpenSpecMarkdown, o as openSpecAnnotationRules, r as builtinOpenSpecReadingPlugin, t as annotateOpenSpecFacts } from "./openspec-annotations-dNJentSE.mjs";
5
5
  import { a as getOpenSpecReadingSections, c as projectOpenSpecMarkdown, i as getOpenSpecProjectionAnnotation, n as OPEN_SPEC_SPEC_PROJECTION_ID, o as parseOpenSpecMarkdownToSpec, r as createOpenSpecReadingPlugin, s as projectAnnotatedOpenSpecToSpec, t as OPEN_SPEC_READING_SECTIONS_PROJECTION_ID } from "./openspec-projection-yqwKIKnp.mjs";
6
- import { A as TranslationEngineInstallLogEventSchema, B as createTranslationEngineLifecycleStatus, C as TranslationDownloadGroupPlanSchema, D as TranslationEngineDependencyStatusSchema, E as TranslationEngineDependencyStateSchema, F as TranslationEngineRuntimeStatusSchema, G as isManagedLocalTranslationEngineId, H as getTranslationEngineLifecycleMessage, I as TranslationLocalCt2SettingsSchema, J as shouldShowTranslationEngineInstallGate, K as isTranslationEngineDependencyReady, L as TranslationLocalLlamaSettingsSchema, M as TranslationEngineLifecycleEventSchema, N as TranslationEngineLifecycleStatusSchema, O as TranslationEngineGlobalSettingsSchema, P as TranslationEngineRuntimeStateSchema, R as TranslationLocalSettingsSchema, S as TranslationDownloadFilePlanSchema, T as TranslationEngineAssetStatusSchema, U as getTranslationEngineManifest, V as getManagedLocalTranslationEngineManifest, W as isDirectionalManagedLocalTranslationEngineId, X as normalizeBatchTranslationError, Y as isBatchTranslationAbort, Z as runControlledTranslationTask, _ as SERVICE_TRANSLATION_ENGINE_IDS, a as LocalModelAssetLogSchema, b as TRANSLATION_ENGINE_MANIFESTS, c as LocalModelDownloadStatusSchema, d as LocalModelProfileLoadStateSchema, f as LocalModelProfileManifestFileSchema, g as ManagedLocalCatalogSourceSchema, h as LocalModelProfileStatusSchema, i as DEFAULT_TRANSLATION_ENGINE_ID, j as TranslationEngineInstallLogStreamSchema, k as TranslationEngineIdSchema, l as LocalModelLifecycleFileStateSchema, m as LocalModelProfileManifestSchema, n as BatchTranslateInputSchema, o as LocalModelAssetPlanSnapshotSchema, p as LocalModelProfileManifestGroupSchema, q as isTranslationEngineRuntimeReady, s as LocalModelAssetStateSchema, t as BatchTranslateEventSchema, u as LocalModelLifecycleGroupStateSchema, v as ServiceTranslationEngineIdSchema, w as TranslationEngineAssetStateSchema, x as TRANSLATOR_CONTRACT_VERSION, y as TRANSLATION_ENGINE_IDS, z as TranslationOpenAISettingsSchema } from "./translator-B98pejVa.mjs";
7
- import { a as MAX_TRANSLATION_CACHE_ENTRY_LIMIT, c as TranslationCacheEntrySchema, d as TranslationCacheStatsSchema, f as TranslationCacheWriteInputSchema, i as DocumentTranslationDisplayModeSchema, l as TranslationCacheReadInputSchema, n as DOCUMENT_TRANSLATION_DISPLAY_MODES, o as MIN_TRANSLATION_CACHE_ENTRY_LIMIT, p as TranslationEngineProjectSettingsSchema, r as DocumentTranslationConfigSchema, s as TRANSLATION_CACHE_POLICY_VERSION, t as DEFAULT_TRANSLATION_CACHE_ENTRY_LIMIT, u as TranslationCacheSettingsSchema } from "./document-translation-B3QRXIXx.mjs";
6
+ import { $ as shouldShowTranslationEngineInstallGate, A as TranslationEngineIdSchema, B as TranslationLocalLlamaSettingsUpdateSchema, C as TranslationDownloadGroupPlanSchema, D as TranslationEngineDependencyStatusSchema, E as TranslationEngineDependencyStateSchema, F as TranslationEngineRuntimeStateSchema, G as createTranslationEngineLifecycleStatus, H as TranslationLocalSettingsUpdateSchema, I as TranslationEngineRuntimeStatusSchema, J as getTranslationEngineManifest, K as getManagedLocalTranslationEngineManifest, L as TranslationLocalCt2SettingsSchema, M as TranslationEngineInstallLogStreamSchema, N as TranslationEngineLifecycleEventSchema, O as TranslationEngineGlobalSettingsSchema, P as TranslationEngineLifecycleStatusSchema, Q as isTranslationEngineRuntimeReady, R as TranslationLocalCt2SettingsUpdateSchema, S as TranslationDownloadFilePlanSchema, T as TranslationEngineAssetStatusSchema, U as TranslationOpenAISettingsSchema, V as TranslationLocalSettingsSchema, W as TranslationOpenAISettingsUpdateSchema, X as isManagedLocalTranslationEngineId, Y as isDirectionalManagedLocalTranslationEngineId, Z as isTranslationEngineDependencyReady, _ as SERVICE_TRANSLATION_ENGINE_IDS, a as LocalModelAssetLogSchema, b as TRANSLATION_ENGINE_MANIFESTS, c as LocalModelDownloadStatusSchema, d as LocalModelProfileLoadStateSchema, et as isBatchTranslationAbort, f as LocalModelProfileManifestFileSchema, g as ManagedLocalCatalogSourceSchema, h as LocalModelProfileStatusSchema, i as DEFAULT_TRANSLATION_ENGINE_ID, j as TranslationEngineInstallLogEventSchema, k as TranslationEngineGlobalSettingsUpdateSchema, l as LocalModelLifecycleFileStateSchema, m as LocalModelProfileManifestSchema, n as BatchTranslateInputSchema, nt as runControlledTranslationTask, o as LocalModelAssetPlanSnapshotSchema, p as LocalModelProfileManifestGroupSchema, q as getTranslationEngineLifecycleMessage, s as LocalModelAssetStateSchema, t as BatchTranslateEventSchema, tt as normalizeBatchTranslationError, u as LocalModelLifecycleGroupStateSchema, v as ServiceTranslationEngineIdSchema, w as TranslationEngineAssetStateSchema, x as TRANSLATOR_CONTRACT_VERSION, y as TRANSLATION_ENGINE_IDS, z as TranslationLocalLlamaSettingsSchema } from "./translator-Cx9j32Og.mjs";
7
+ import { a as DocumentTranslationDisplayModeSchema, c as TRANSLATION_CACHE_POLICY_VERSION, d as TranslationCacheSettingsSchema, f as TranslationCacheSettingsUpdateSchema, g as TranslationEngineProjectSettingsUpdateSchema, h as TranslationEngineProjectSettingsSchema, i as DocumentTranslationConfigUpdateSchema, l as TranslationCacheEntrySchema, m as TranslationCacheWriteInputSchema, n as DOCUMENT_TRANSLATION_DISPLAY_MODES, o as MAX_TRANSLATION_CACHE_ENTRY_LIMIT, p as TranslationCacheStatsSchema, r as DocumentTranslationConfigSchema, s as MIN_TRANSLATION_CACHE_ENTRY_LIMIT, t as DEFAULT_TRANSLATION_CACHE_ENTRY_LIMIT, u as TranslationCacheReadInputSchema } from "./document-translation-B6VWf7ll.mjs";
8
8
  import { _ as customHashFromSoundId, a as CustomSoundHashSchema, b as soundIdFromCustomHash, c as CustomSoundMetadataSchema, f as LEGACY_SOUND_ID_MAP, g as SoundVolumeSchema, h as SoundIdSchema, i as CUSTOM_SOUND_ADD_VALUE, l as DEFAULT_BELL_SOUND_ID, m as SoundConfigIdSchema, n as BUILTIN_SOUND_OPTIONS, o as CustomSoundIdSchema, p as SILENT_SOUND_ID, r as BuiltinSoundIdSchema, s as CustomSoundMetadataFileSchema, t as BUILTIN_SOUND_IDS, u as DEFAULT_NOTIFICATION_SOUND_ID, v as getBuiltinSoundUrl, y as normalizeLegacySoundId } from "./sounds-50cYk5b0.mjs";
9
9
  import { n as terminalNotificationEventToPublishInput, t as TerminalControlParser } from "./terminal-control-CYZhk7FM.mjs";
10
10
  import { a as NotificationPublishInputSchema, c as NotificationSoundSchema, h as groupNotifications, i as NotificationGroupKeySchema, l as NotificationSourceSchema, m as getNotificationGroupLabel, n as NOTIFICATION_SOUND_VALUES, o as NotificationRecordSchema, p as getNotificationGroupKey, r as NotificationActionSchema, s as NotificationSettingsSchema, t as NOTIFICATION_SOUND_OPTIONS, u as TerminalNotificationParser } from "./notifications-Xs9VPFWD.mjs";
@@ -3078,6 +3078,7 @@ var ConfigManager = class {
3078
3078
  projectDir;
3079
3079
  resolvedRunner = null;
3080
3080
  resolvingRunnerPromise = null;
3081
+ writeChain = Promise.resolve();
3081
3082
  constructor(projectDir) {
3082
3083
  this.projectDir = projectDir;
3083
3084
  this.configPath = join(projectDir, "openspec", ".openspecui.json");
@@ -3114,71 +3115,78 @@ var ConfigManager = class {
3114
3115
  * 会触发文件监听,自动更新订阅者。
3115
3116
  */
3116
3117
  async writeConfig(config) {
3117
- const currentContent = await reactiveReadFile(this.configPath);
3118
- const fileExists = currentContent !== null;
3119
- const current = this.parseConfigContent(currentContent);
3120
- const nextCli = { ...current.cli };
3121
- if (config.cli && Object.prototype.hasOwnProperty.call(config.cli, "command")) {
3122
- const trimmed = config.cli.command?.trim();
3123
- if (trimmed) nextCli.command = trimmed;
3124
- else {
3125
- delete nextCli.command;
3126
- delete nextCli.args;
3127
- }
3128
- }
3129
- if (config.cli && Object.prototype.hasOwnProperty.call(config.cli, "args")) {
3130
- const args = (config.cli.args ?? []).map((arg) => arg.trim()).filter(Boolean);
3131
- if (args.length > 0) nextCli.args = args;
3132
- else delete nextCli.args;
3133
- }
3134
- if (!nextCli.command) delete nextCli.args;
3135
- const persisted = toPersistedConfig({
3136
- ...current,
3137
- cli: nextCli,
3138
- theme: config.theme ?? current.theme,
3139
- codeEditor: {
3140
- ...current.codeEditor,
3141
- ...config.codeEditor
3142
- },
3143
- appBaseUrl: config.appBaseUrl ?? current.appBaseUrl,
3144
- opsx: {
3145
- ...current.opsx,
3146
- ...config.opsx
3147
- },
3148
- terminal: {
3149
- ...current.terminal,
3150
- ...config.terminal
3151
- },
3152
- dashboard: {
3153
- ...current.dashboard,
3154
- ...config.dashboard
3155
- },
3156
- git: {
3157
- ...current.git,
3158
- ...config.git
3159
- },
3160
- notifications: {
3161
- ...current.notifications,
3162
- ...config.notifications
3163
- },
3164
- translation: {
3165
- ...current.translation,
3166
- ...config.translation,
3167
- engines: {
3168
- local: mergeNullablePatch$1(current.translation.engines.local, config.translation?.engines?.local),
3169
- localCt2: mergeNullablePatch$1(current.translation.engines.localCt2, config.translation?.engines?.localCt2),
3170
- localLlama: mergeNullablePatch$1(current.translation.engines.localLlama, config.translation?.engines?.localLlama),
3171
- openai: mergeNullablePatch$1(current.translation.engines.openai, config.translation?.engines?.openai)
3118
+ return this.enqueueWrite(async () => {
3119
+ const currentContent = await reactiveReadFile(this.configPath);
3120
+ const fileExists = currentContent !== null;
3121
+ const current = this.parseConfigContent(currentContent);
3122
+ const nextCli = { ...current.cli };
3123
+ if (config.cli && Object.prototype.hasOwnProperty.call(config.cli, "command")) {
3124
+ const trimmed = config.cli.command?.trim();
3125
+ if (trimmed) nextCli.command = trimmed;
3126
+ else {
3127
+ delete nextCli.command;
3128
+ delete nextCli.args;
3172
3129
  }
3173
3130
  }
3131
+ if (config.cli && Object.prototype.hasOwnProperty.call(config.cli, "args")) {
3132
+ const args = (config.cli.args ?? []).map((arg) => arg.trim()).filter(Boolean);
3133
+ if (args.length > 0) nextCli.args = args;
3134
+ else delete nextCli.args;
3135
+ }
3136
+ if (!nextCli.command) delete nextCli.args;
3137
+ const persisted = toPersistedConfig({
3138
+ ...current,
3139
+ cli: nextCli,
3140
+ theme: config.theme ?? current.theme,
3141
+ codeEditor: {
3142
+ ...current.codeEditor,
3143
+ ...config.codeEditor
3144
+ },
3145
+ appBaseUrl: config.appBaseUrl ?? current.appBaseUrl,
3146
+ opsx: {
3147
+ ...current.opsx,
3148
+ ...config.opsx
3149
+ },
3150
+ terminal: {
3151
+ ...current.terminal,
3152
+ ...config.terminal
3153
+ },
3154
+ dashboard: {
3155
+ ...current.dashboard,
3156
+ ...config.dashboard
3157
+ },
3158
+ git: {
3159
+ ...current.git,
3160
+ ...config.git
3161
+ },
3162
+ notifications: {
3163
+ ...current.notifications,
3164
+ ...config.notifications
3165
+ },
3166
+ translation: {
3167
+ ...current.translation,
3168
+ ...config.translation,
3169
+ engines: {
3170
+ local: mergeNullablePatch$1(current.translation.engines.local, config.translation?.engines?.local),
3171
+ localCt2: mergeNullablePatch$1(current.translation.engines.localCt2, config.translation?.engines?.localCt2),
3172
+ localLlama: mergeNullablePatch$1(current.translation.engines.localLlama, config.translation?.engines?.localLlama),
3173
+ openai: mergeNullablePatch$1(current.translation.engines.openai, config.translation?.engines?.openai)
3174
+ }
3175
+ }
3176
+ });
3177
+ if (isPersistedConfigEmpty(persisted) && !fileExists) return;
3178
+ const serialized = isPersistedConfigEmpty(persisted) ? "{}" : JSON.stringify(persisted, null, 2);
3179
+ if (currentContent === serialized) return;
3180
+ await mkdir(dirname(this.configPath), { recursive: true });
3181
+ await writeFile(this.configPath, serialized, "utf-8");
3182
+ updateReactiveFileCache(this.configPath, serialized);
3183
+ this.invalidateResolvedCliRunner();
3174
3184
  });
3175
- if (isPersistedConfigEmpty(persisted) && !fileExists) return;
3176
- const serialized = isPersistedConfigEmpty(persisted) ? "{}" : JSON.stringify(persisted, null, 2);
3177
- if (currentContent === serialized) return;
3178
- await mkdir(dirname(this.configPath), { recursive: true });
3179
- await writeFile(this.configPath, serialized, "utf-8");
3180
- updateReactiveFileCache(this.configPath, serialized);
3181
- this.invalidateResolvedCliRunner();
3185
+ }
3186
+ enqueueWrite(operation) {
3187
+ const run = this.writeChain.then(operation, operation);
3188
+ this.writeChain = run.then(() => void 0, () => void 0);
3189
+ return run;
3182
3190
  }
3183
3191
  async resolveDefaultCliCommandParts() {
3184
3192
  return (await resolveCliRunner(buildCliRunnerCandidates({ userAgent: process.env.npm_config_user_agent }).filter((candidate) => candidate.id !== "configured"), this.projectDir, createCleanCliEnv())).commandParts;
@@ -3302,11 +3310,22 @@ const DocumentTranslationGlobalSettingsSchema = z.object({
3302
3310
  displayMode: DocumentTranslationDisplayModeSchema.default("direct"),
3303
3311
  cacheEnabled: z.boolean().default(false)
3304
3312
  });
3313
+ const DocumentTranslationGlobalSettingsUpdateSchema = z.object({
3314
+ enabled: z.boolean().optional(),
3315
+ targetLanguage: z.string().min(1).optional(),
3316
+ displayMode: DocumentTranslationDisplayModeSchema.optional(),
3317
+ cacheEnabled: z.boolean().optional()
3318
+ });
3305
3319
  const OpenSpecUIGlobalSettingsSchema = z.object({
3306
3320
  translation: DocumentTranslationGlobalSettingsSchema.default(DocumentTranslationGlobalSettingsSchema.parse({})),
3307
3321
  translationCache: TranslationCacheSettingsSchema.default(TranslationCacheSettingsSchema.parse({})),
3308
3322
  translationEngines: TranslationEngineGlobalSettingsSchema.default(TranslationEngineGlobalSettingsSchema.parse({}))
3309
3323
  });
3324
+ const OpenSpecUIGlobalSettingsUpdateSchema = z.object({
3325
+ translation: DocumentTranslationGlobalSettingsUpdateSchema.optional(),
3326
+ translationCache: TranslationCacheSettingsUpdateSchema.optional(),
3327
+ translationEngines: TranslationEngineGlobalSettingsUpdateSchema.optional()
3328
+ });
3310
3329
  const DEFAULT_GLOBAL_SETTINGS = OpenSpecUIGlobalSettingsSchema.parse({});
3311
3330
  const PERSISTED_GLOBAL_SETTINGS_SANITIZE_RULES = [
3312
3331
  {
@@ -3448,6 +3467,7 @@ function isPersistedGlobalSettingsEmpty(settings) {
3448
3467
  */
3449
3468
  var GlobalSettingsManager = class {
3450
3469
  settingsPath;
3470
+ writeChain = Promise.resolve();
3451
3471
  constructor(settingsPath = getDefaultGlobalSettingsPath()) {
3452
3472
  this.settingsPath = settingsPath;
3453
3473
  }
@@ -3472,34 +3492,41 @@ var GlobalSettingsManager = class {
3472
3492
  return this.parseSettingsContent(content);
3473
3493
  }
3474
3494
  async writeSettings(update) {
3475
- const currentContent = await reactiveReadFile(this.settingsPath);
3476
- const fileExists = currentContent !== null;
3477
- const current = this.parseSettingsContent(currentContent);
3478
- const persisted = toPersistedGlobalSettings(OpenSpecUIGlobalSettingsSchema.parse({
3479
- ...current,
3480
- translation: {
3481
- ...current.translation,
3482
- ...update.translation
3483
- },
3484
- translationCache: {
3485
- ...current.translationCache,
3486
- ...update.translationCache
3487
- },
3488
- translationEngines: {
3489
- ...current.translationEngines,
3490
- engineId: update.translationEngines?.engineId ?? current.translationEngines.engineId,
3491
- openai: mergeNullablePatch(current.translationEngines.openai, update.translationEngines?.openai),
3492
- local: mergeNullablePatch(current.translationEngines.local, update.translationEngines?.local),
3493
- localCt2: mergeNullablePatch(current.translationEngines.localCt2, update.translationEngines?.localCt2),
3494
- localLlama: mergeNullablePatch(current.translationEngines.localLlama, update.translationEngines?.localLlama)
3495
- }
3496
- }));
3497
- if (isPersistedGlobalSettingsEmpty(persisted) && !fileExists) return;
3498
- const serialized = isPersistedGlobalSettingsEmpty(persisted) ? "{}" : JSON.stringify(persisted, null, 2);
3499
- if (currentContent === serialized) return;
3500
- await mkdir$1(dirname$1(this.settingsPath), { recursive: true });
3501
- await writeFile$1(this.settingsPath, serialized, "utf-8");
3502
- updateReactiveFileCache(this.settingsPath, serialized);
3495
+ return this.enqueueWrite(async () => {
3496
+ const currentContent = await reactiveReadFile(this.settingsPath);
3497
+ const fileExists = currentContent !== null;
3498
+ const current = this.parseSettingsContent(currentContent);
3499
+ const persisted = toPersistedGlobalSettings(OpenSpecUIGlobalSettingsSchema.parse({
3500
+ ...current,
3501
+ translation: {
3502
+ ...current.translation,
3503
+ ...update.translation
3504
+ },
3505
+ translationCache: {
3506
+ ...current.translationCache,
3507
+ ...update.translationCache
3508
+ },
3509
+ translationEngines: {
3510
+ ...current.translationEngines,
3511
+ engineId: update.translationEngines?.engineId ?? current.translationEngines.engineId,
3512
+ openai: mergeNullablePatch(current.translationEngines.openai, update.translationEngines?.openai),
3513
+ local: mergeNullablePatch(current.translationEngines.local, update.translationEngines?.local),
3514
+ localCt2: mergeNullablePatch(current.translationEngines.localCt2, update.translationEngines?.localCt2),
3515
+ localLlama: mergeNullablePatch(current.translationEngines.localLlama, update.translationEngines?.localLlama)
3516
+ }
3517
+ }));
3518
+ if (isPersistedGlobalSettingsEmpty(persisted) && !fileExists) return;
3519
+ const serialized = isPersistedGlobalSettingsEmpty(persisted) ? "{}" : JSON.stringify(persisted, null, 2);
3520
+ if (currentContent === serialized) return;
3521
+ await mkdir$1(dirname$1(this.settingsPath), { recursive: true });
3522
+ await writeFile$1(this.settingsPath, serialized, "utf-8");
3523
+ updateReactiveFileCache(this.settingsPath, serialized);
3524
+ });
3525
+ }
3526
+ enqueueWrite(operation) {
3527
+ const run = this.writeChain.then(operation, operation);
3528
+ this.writeChain = run.then(() => void 0, () => void 0);
3529
+ return run;
3503
3530
  }
3504
3531
  };
3505
3532
 
@@ -5542,4 +5569,4 @@ const PtyServerMessageSchema = z.discriminatedUnion("type", [
5542
5569
  ]);
5543
5570
 
5544
5571
  //#endregion
5545
- export { AI_TOOLS, ApplyInstructionsContextFilesSchema, ApplyInstructionsSchema, ApplyTaskSchema, ArtifactInstructionsSchema, ArtifactStatusSchema, BUILTIN_SOUND_IDS, BUILTIN_SOUND_OPTIONS, BUILTIN_TERMINAL_SPAWN_COMMANDS, BatchTranslateEventSchema, BatchTranslateInputSchema, BuiltinSoundIdSchema, CODE_EDITOR_THEME_VALUES, CUSTOM_SOUND_ADD_VALUE, ChangeFileSchema, ChangeSchema, ChangeStatusSchema, CliExecutor, CodeEditorThemeSchema, ConfigManager, CustomSoundHashSchema, CustomSoundIdSchema, CustomSoundMetadataFileSchema, CustomSoundMetadataSchema, DASHBOARD_METRIC_KEYS, DEFAULT_BELL_SOUND_ID, DEFAULT_CONFIG, DEFAULT_GIT_DIFF_EAGER_LINE_BUDGET, DEFAULT_GLOBAL_SETTINGS, DEFAULT_NOTIFICATION_SOUND_ID, DEFAULT_TERMINAL_DARK_THEME, DEFAULT_TERMINAL_LIGHT_THEME, DEFAULT_TERMINAL_THEME_MODE, DEFAULT_TRANSLATION_CACHE_ENTRY_LIMIT, DEFAULT_TRANSLATION_ENGINE_ID, DOCUMENT_TRANSLATION_DISPLAY_MODES, DashboardConfigSchema, DeltaOperationType, DeltaSchema, DeltaSpecSchema, DependencyInfoSchema, DocumentTranslationConfigSchema, DocumentTranslationDisplayModeSchema, FILE_PREVIEW_KINDS, GitConfigSchema, GlobalSettingsManager, HOSTED_SHELL_PROTOCOL_VERSION, LEGACY_SOUND_ID_MAP, LOCAL_MODEL_PROFILE_DEFINITIONS, LocalModelAssetLogSchema, LocalModelAssetPlanSnapshotSchema, LocalModelAssetStateSchema, LocalModelDownloadStatusSchema, LocalModelLifecycleFileStateSchema, LocalModelLifecycleGroupStateSchema, LocalModelProfileLoadStateSchema, LocalModelProfileManifestFileSchema, LocalModelProfileManifestGroupSchema, LocalModelProfileManifestSchema, LocalModelProfileStatusSchema, MAX_TRANSLATION_CACHE_ENTRY_LIMIT, MIN_TRANSLATION_CACHE_ENTRY_LIMIT, ManagedLocalCatalogSourceSchema, MarkdownParser, MarkdownReadingPluginRegistry, NOTIFICATION_SOUND_OPTIONS, NOTIFICATION_SOUND_VALUES, NotificationActionSchema, NotificationGroupKeySchema, NotificationPublishInputSchema, NotificationRecordSchema, NotificationSettingsSchema, NotificationSoundSchema, NotificationSourceSchema, OFFICIAL_APP_BASE_URL, OPENSPECUI_HOOKS_VERSION, OPENSPECUI_RUNTIME_CAPABILITIES, OPEN_SPEC_READING_SECTIONS_PROJECTION_ID, OPEN_SPEC_SPEC_PROJECTION_ID, OPSX_AGENT_INVOCATION_MODE_VALUES, OpenSpecAdapter, OpenSpecUIConfigSchema, OpenSpecUIGlobalSettingsSchema, OpenSpecWatcher, OpsxAgentInvocationModeSchema, OpsxConfigSchema, OpsxKernel, ProjectWatcher, PtyAttachMessageSchema, PtyBellResponseSchema, PtyBufferResponseSchema, PtyClientMessageSchema, PtyCloseMessageSchema, PtyCreateMessageSchema, PtyCreatedResponseSchema, PtyErrorCodeSchema, PtyErrorResponseSchema, PtyExitResponseSchema, PtyInputMessageSchema, PtyListMessageSchema, PtyListResponseSchema, PtyOutputResponseSchema, PtyPlatformSchema, PtyProcessTitleResponseSchema, PtyResizeMessageSchema, PtyServerMessageSchema, PtyTitleResponseSchema, ReactiveContext, ReactiveState, RequirementSchema, SERVICE_TRANSLATION_ENGINE_IDS, SILENT_SOUND_ID, ScenarioStepKeywordSchema, ScenarioStepSchema, SchemaArtifactSchema, SchemaDetailSchema, SchemaInfoSchema, SchemaResolutionSchema, ServiceTranslationEngineIdSchema, SoundConfigIdSchema, SoundIdSchema, SpecSchema, TERMINAL_BELL_SOUND_OPTIONS, TERMINAL_BELL_SOUND_VALUES, TERMINAL_COMMAND_FIELD_TYPE_VALUES, TERMINAL_SHELL_QUOTE_STYLE_VALUES, TERMINAL_THEME_MODE_VALUES, TERMINAL_THEME_VALUES, TOOL_WORKFLOW_TO_SKILL_DIR, TRANSLATION_CACHE_POLICY_VERSION, TRANSLATION_ENGINE_IDS, TRANSLATION_ENGINE_MANIFESTS, TRANSLATOR_CONTRACT_VERSION, TaskSchema, TemplatesSchema, TerminalBellSoundSchema, TerminalCommandFieldSchema, TerminalConfigSchema, TerminalControlParser, TerminalInvocationSettingsSchema, TerminalNotificationParser, TerminalRendererEngineSchema, TerminalShellProfileSchema, TerminalShellQuoteStyleSchema, TerminalSpawnCommandSchema, TerminalThemeModeSchema, TerminalThemeSchema, TranslationCacheEntrySchema, TranslationCacheReadInputSchema, TranslationCacheSettingsSchema, TranslationCacheStatsSchema, TranslationCacheWriteInputSchema, TranslationDownloadFilePlanSchema, TranslationDownloadGroupPlanSchema, TranslationEngineAssetStateSchema, TranslationEngineAssetStatusSchema, TranslationEngineDependencyStateSchema, TranslationEngineDependencyStatusSchema, TranslationEngineGlobalSettingsSchema, TranslationEngineIdSchema, TranslationEngineInstallLogEventSchema, TranslationEngineInstallLogStreamSchema, TranslationEngineLifecycleEventSchema, TranslationEngineLifecycleStatusSchema, TranslationEngineProjectSettingsSchema, TranslationEngineRuntimeStateSchema, TranslationEngineRuntimeStatusSchema, TranslationLocalCt2SettingsSchema, TranslationLocalLlamaSettingsSchema, TranslationLocalSettingsSchema, TranslationOpenAISettingsSchema, VIRTUAL_PROJECT_DIRNAME, Validator, acquireWatcher, annotateOpenSpecFacts, annotateOpenSpecMarkdown, buildBackendHealthPayload, buildCliRunnerCandidates, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, buildLocalDownloadPlanFromRepositoryFiles, buildLocalDownloadPlanFromRuntimeProfileFiles, buildMarkdownParentMap, buildOpsxEntityDetail, buildRuntimePackageInstallCommand, builtinOpenSpecReadingPlugin, checkLocalDirectionalModelLanguagePair, clearCache, closeAllProjectWatchers, closeAllWatchers, contextStorage, createCleanCliEnv, createFileChangeObservable, createMarkdownReadingDocument, createMarkdownReadingDocumentFromFacts, createOpenSpecReadingPlugin, createTranslationEngineLifecycleStatus, customHashFromSoundId, detectRuntimePackageManager, getActiveWatcherCount, getAllToolIds, getAllTools, getAvailableToolIds, getAvailableTools, getBuiltinSoundUrl, getCacheSize, getConfiguredTools, getDefaultCliCommand, getDefaultCliCommandString, getDefaultGlobalSettingsPath, getDetectedProjectTools, getManagedLocalTranslationEngineManifest, getMarkdownAnnotation, getMarkdownAnnotationsForFact, getMarkdownFactSpan, getMarkdownHeadingEnd, getMarkdownHeadingFacts, getNotificationGroupKey, getNotificationGroupLabel, getOpenSpecAnnotation, getOpenSpecAnnotationsForFact, getOpenSpecProjectionAnnotation, getOpenSpecReadingSections, getOpsxEntityMetadataPath, getOpsxEntityRootRelativePath, getProjectWatcher, getTerminalCommandDefaultValues, getToolById, getToolInitStates, getTranslationEngineLifecycleMessage, getTranslationEngineManifest, getWatchedProjectDir, getWatcherRuntimeStatus, groupNotifications, inferFileMime, inferFilePreviewKind, inferLocalDirectionalModelLanguagePair, initWatcherPool, isBackendHealthRuntimeMetadata, isBatchTranslationAbort, isDirectionalManagedLocalTranslationEngineId, isGlobPattern, isHostedBackendHealthResponse, isManagedLocalTranslationEngineId, isOpsxGlobPattern, isPreviewableFile, isSupportedEmbeddedUiUrl, isTerminalRendererEngine, isTextLikeFile, isTextLikeMime, isToolConfigured, isTranslationEngineDependencyReady, isTranslationEngineRuntimeReady, isWatcherPoolInitialized, normalizeBatchTranslationError, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, normalizeLegacySoundId, normalizeOpsxEntityPath, openSpecAnnotationRules, opsxGlobToRegex, opsxPathMatchesPattern, parseCliCommand, parseMarkdownFacts, parseOpenSpecMarkdownToSpec, parseOpsxEntityMetadata, parseOpsxSchemaDetail, projectAnnotatedOpenSpecToSpec, projectOpenSpecMarkdown, quoteTerminalShellArg, reactiveExists, reactiveReadDir, reactiveReadFile, reactiveStat, renderTerminalCommandArgs, renderTerminalSpawnCommandLine, resolveHostedAppBaseUrl, resolveRuntimePackageInstallStrategy, resolveTerminalShellDefaults, runControlledTranslationTask, selectLocalDownloadGroup, shouldShowTranslationEngineInstallGate, sniffGlobalCli, sortMarkdownReadingPlugins, soundIdFromCustomHash, subscribeWatcherRuntimeStatus, terminalNotificationEventToPublishInput, toMarkdownFactKind, toOpsxDisplayPath, toPersistedGlobalSettings, trimMarkdownSlice };
5572
+ export { AI_TOOLS, ApplyInstructionsContextFilesSchema, ApplyInstructionsSchema, ApplyTaskSchema, ArtifactInstructionsSchema, ArtifactStatusSchema, BUILTIN_SOUND_IDS, BUILTIN_SOUND_OPTIONS, BUILTIN_TERMINAL_SPAWN_COMMANDS, BatchTranslateEventSchema, BatchTranslateInputSchema, BuiltinSoundIdSchema, CODE_EDITOR_THEME_VALUES, CUSTOM_SOUND_ADD_VALUE, ChangeFileSchema, ChangeSchema, ChangeStatusSchema, CliExecutor, CodeEditorThemeSchema, ConfigManager, CustomSoundHashSchema, CustomSoundIdSchema, CustomSoundMetadataFileSchema, CustomSoundMetadataSchema, DASHBOARD_METRIC_KEYS, DEFAULT_BELL_SOUND_ID, DEFAULT_CONFIG, DEFAULT_GIT_DIFF_EAGER_LINE_BUDGET, DEFAULT_GLOBAL_SETTINGS, DEFAULT_NOTIFICATION_SOUND_ID, DEFAULT_TERMINAL_DARK_THEME, DEFAULT_TERMINAL_LIGHT_THEME, DEFAULT_TERMINAL_THEME_MODE, DEFAULT_TRANSLATION_CACHE_ENTRY_LIMIT, DEFAULT_TRANSLATION_ENGINE_ID, DOCUMENT_TRANSLATION_DISPLAY_MODES, DashboardConfigSchema, DeltaOperationType, DeltaSchema, DeltaSpecSchema, DependencyInfoSchema, DocumentTranslationConfigSchema, DocumentTranslationConfigUpdateSchema, DocumentTranslationDisplayModeSchema, DocumentTranslationGlobalSettingsUpdateSchema, FILE_PREVIEW_KINDS, GitConfigSchema, GlobalSettingsManager, HOSTED_SHELL_PROTOCOL_VERSION, LEGACY_SOUND_ID_MAP, LOCAL_MODEL_PROFILE_DEFINITIONS, LocalModelAssetLogSchema, LocalModelAssetPlanSnapshotSchema, LocalModelAssetStateSchema, LocalModelDownloadStatusSchema, LocalModelLifecycleFileStateSchema, LocalModelLifecycleGroupStateSchema, LocalModelProfileLoadStateSchema, LocalModelProfileManifestFileSchema, LocalModelProfileManifestGroupSchema, LocalModelProfileManifestSchema, LocalModelProfileStatusSchema, MAX_TRANSLATION_CACHE_ENTRY_LIMIT, MIN_TRANSLATION_CACHE_ENTRY_LIMIT, ManagedLocalCatalogSourceSchema, MarkdownParser, MarkdownReadingPluginRegistry, NOTIFICATION_SOUND_OPTIONS, NOTIFICATION_SOUND_VALUES, NotificationActionSchema, NotificationGroupKeySchema, NotificationPublishInputSchema, NotificationRecordSchema, NotificationSettingsSchema, NotificationSoundSchema, NotificationSourceSchema, OFFICIAL_APP_BASE_URL, OPENSPECUI_HOOKS_VERSION, OPENSPECUI_RUNTIME_CAPABILITIES, OPEN_SPEC_READING_SECTIONS_PROJECTION_ID, OPEN_SPEC_SPEC_PROJECTION_ID, OPSX_AGENT_INVOCATION_MODE_VALUES, OpenSpecAdapter, OpenSpecUIConfigSchema, OpenSpecUIGlobalSettingsSchema, OpenSpecUIGlobalSettingsUpdateSchema, OpenSpecWatcher, OpsxAgentInvocationModeSchema, OpsxConfigSchema, OpsxKernel, ProjectWatcher, PtyAttachMessageSchema, PtyBellResponseSchema, PtyBufferResponseSchema, PtyClientMessageSchema, PtyCloseMessageSchema, PtyCreateMessageSchema, PtyCreatedResponseSchema, PtyErrorCodeSchema, PtyErrorResponseSchema, PtyExitResponseSchema, PtyInputMessageSchema, PtyListMessageSchema, PtyListResponseSchema, PtyOutputResponseSchema, PtyPlatformSchema, PtyProcessTitleResponseSchema, PtyResizeMessageSchema, PtyServerMessageSchema, PtyTitleResponseSchema, ReactiveContext, ReactiveState, RequirementSchema, SERVICE_TRANSLATION_ENGINE_IDS, SILENT_SOUND_ID, ScenarioStepKeywordSchema, ScenarioStepSchema, SchemaArtifactSchema, SchemaDetailSchema, SchemaInfoSchema, SchemaResolutionSchema, ServiceTranslationEngineIdSchema, SoundConfigIdSchema, SoundIdSchema, SpecSchema, TERMINAL_BELL_SOUND_OPTIONS, TERMINAL_BELL_SOUND_VALUES, TERMINAL_COMMAND_FIELD_TYPE_VALUES, TERMINAL_SHELL_QUOTE_STYLE_VALUES, TERMINAL_THEME_MODE_VALUES, TERMINAL_THEME_VALUES, TOOL_WORKFLOW_TO_SKILL_DIR, TRANSLATION_CACHE_POLICY_VERSION, TRANSLATION_ENGINE_IDS, TRANSLATION_ENGINE_MANIFESTS, TRANSLATOR_CONTRACT_VERSION, TaskSchema, TemplatesSchema, TerminalBellSoundSchema, TerminalCommandFieldSchema, TerminalConfigSchema, TerminalControlParser, TerminalInvocationSettingsSchema, TerminalNotificationParser, TerminalRendererEngineSchema, TerminalShellProfileSchema, TerminalShellQuoteStyleSchema, TerminalSpawnCommandSchema, TerminalThemeModeSchema, TerminalThemeSchema, TranslationCacheEntrySchema, TranslationCacheReadInputSchema, TranslationCacheSettingsSchema, TranslationCacheSettingsUpdateSchema, TranslationCacheStatsSchema, TranslationCacheWriteInputSchema, TranslationDownloadFilePlanSchema, TranslationDownloadGroupPlanSchema, TranslationEngineAssetStateSchema, TranslationEngineAssetStatusSchema, TranslationEngineDependencyStateSchema, TranslationEngineDependencyStatusSchema, TranslationEngineGlobalSettingsSchema, TranslationEngineGlobalSettingsUpdateSchema, TranslationEngineIdSchema, TranslationEngineInstallLogEventSchema, TranslationEngineInstallLogStreamSchema, TranslationEngineLifecycleEventSchema, TranslationEngineLifecycleStatusSchema, TranslationEngineProjectSettingsSchema, TranslationEngineProjectSettingsUpdateSchema, TranslationEngineRuntimeStateSchema, TranslationEngineRuntimeStatusSchema, TranslationLocalCt2SettingsSchema, TranslationLocalCt2SettingsUpdateSchema, TranslationLocalLlamaSettingsSchema, TranslationLocalLlamaSettingsUpdateSchema, TranslationLocalSettingsSchema, TranslationLocalSettingsUpdateSchema, TranslationOpenAISettingsSchema, TranslationOpenAISettingsUpdateSchema, VIRTUAL_PROJECT_DIRNAME, Validator, acquireWatcher, annotateOpenSpecFacts, annotateOpenSpecMarkdown, buildBackendHealthPayload, buildCliRunnerCandidates, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, buildLocalDownloadPlanFromRepositoryFiles, buildLocalDownloadPlanFromRuntimeProfileFiles, buildMarkdownParentMap, buildOpsxEntityDetail, buildRuntimePackageInstallCommand, builtinOpenSpecReadingPlugin, checkLocalDirectionalModelLanguagePair, clearCache, closeAllProjectWatchers, closeAllWatchers, contextStorage, createCleanCliEnv, createFileChangeObservable, createMarkdownReadingDocument, createMarkdownReadingDocumentFromFacts, createOpenSpecReadingPlugin, createTranslationEngineLifecycleStatus, customHashFromSoundId, detectRuntimePackageManager, getActiveWatcherCount, getAllToolIds, getAllTools, getAvailableToolIds, getAvailableTools, getBuiltinSoundUrl, getCacheSize, getConfiguredTools, getDefaultCliCommand, getDefaultCliCommandString, getDefaultGlobalSettingsPath, getDetectedProjectTools, getManagedLocalTranslationEngineManifest, getMarkdownAnnotation, getMarkdownAnnotationsForFact, getMarkdownFactSpan, getMarkdownHeadingEnd, getMarkdownHeadingFacts, getNotificationGroupKey, getNotificationGroupLabel, getOpenSpecAnnotation, getOpenSpecAnnotationsForFact, getOpenSpecProjectionAnnotation, getOpenSpecReadingSections, getOpsxEntityMetadataPath, getOpsxEntityRootRelativePath, getProjectWatcher, getTerminalCommandDefaultValues, getToolById, getToolInitStates, getTranslationEngineLifecycleMessage, getTranslationEngineManifest, getWatchedProjectDir, getWatcherRuntimeStatus, groupNotifications, inferFileMime, inferFilePreviewKind, inferLocalDirectionalModelLanguagePair, initWatcherPool, isBackendHealthRuntimeMetadata, isBatchTranslationAbort, isDirectionalManagedLocalTranslationEngineId, isGlobPattern, isHostedBackendHealthResponse, isManagedLocalTranslationEngineId, isOpsxGlobPattern, isPreviewableFile, isSupportedEmbeddedUiUrl, isTerminalRendererEngine, isTextLikeFile, isTextLikeMime, isToolConfigured, isTranslationEngineDependencyReady, isTranslationEngineRuntimeReady, isWatcherPoolInitialized, normalizeBatchTranslationError, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, normalizeLegacySoundId, normalizeOpsxEntityPath, openSpecAnnotationRules, opsxGlobToRegex, opsxPathMatchesPattern, parseCliCommand, parseMarkdownFacts, parseOpenSpecMarkdownToSpec, parseOpsxEntityMetadata, parseOpsxSchemaDetail, projectAnnotatedOpenSpecToSpec, projectOpenSpecMarkdown, quoteTerminalShellArg, reactiveExists, reactiveReadDir, reactiveReadFile, reactiveStat, renderTerminalCommandArgs, renderTerminalSpawnCommandLine, resolveHostedAppBaseUrl, resolveRuntimePackageInstallStrategy, resolveTerminalShellDefaults, runControlledTranslationTask, selectLocalDownloadGroup, shouldShowTranslationEngineInstallGate, sniffGlobalCli, sortMarkdownReadingPlugins, soundIdFromCustomHash, subscribeWatcherRuntimeStatus, terminalNotificationEventToPublishInput, toMarkdownFactKind, toOpsxDisplayPath, toPersistedGlobalSettings, trimMarkdownSlice };
@@ -1,4 +1,4 @@
1
- import { G as TranslationDownloadGroupPlan, Pt as TranslationModelDownloadPlan } from "./translator-jn94xmWZ.mjs";
1
+ import { G as TranslationDownloadGroupPlan, Rt as TranslationModelDownloadPlan } from "./translator-CS7MsNZp.mjs";
2
2
 
3
3
  //#region src/local-download-profiles.d.ts
4
4
  declare const LOCAL_MODEL_PROFILE_DEFINITIONS: readonly [{
@@ -1,3 +1,3 @@
1
- import "./translator-jn94xmWZ.mjs";
2
- import { a as buildLocalDownloadPlanFromRepositoryFiles, i as LocalRuntimeProfileFiles, n as LocalModelProfileId, o as buildLocalDownloadPlanFromRuntimeProfileFiles, r as LocalRepositoryFile, s as selectLocalDownloadGroup, t as LOCAL_MODEL_PROFILE_DEFINITIONS } from "./local-download-profiles-DHF9dW4e.mjs";
1
+ import "./translator-CS7MsNZp.mjs";
2
+ import { a as buildLocalDownloadPlanFromRepositoryFiles, i as LocalRuntimeProfileFiles, n as LocalModelProfileId, o as buildLocalDownloadPlanFromRuntimeProfileFiles, r as LocalRepositoryFile, s as selectLocalDownloadGroup, t as LOCAL_MODEL_PROFILE_DEFINITIONS } from "./local-download-profiles-DIVr0mFh.mjs";
3
3
  export { LOCAL_MODEL_PROFILE_DEFINITIONS, LocalModelProfileId, LocalRepositoryFile, LocalRuntimeProfileFiles, buildLocalDownloadPlanFromRepositoryFiles, buildLocalDownloadPlanFromRuntimeProfileFiles, selectLocalDownloadGroup };
@@ -1,4 +1,4 @@
1
- import { x as SoundId } from "./sounds-BjSZxrQO.mjs";
1
+ import { x as SoundId } from "./sounds-DIvZfWxA.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/terminal-control.d.ts
@@ -446,6 +446,7 @@ declare const NotificationRecordSchema: z.ZodObject<{
446
446
  createdAt: z.ZodNumber;
447
447
  groupKey: z.ZodString;
448
448
  }, "strip", z.ZodTypeAny, {
449
+ createdAt: number;
449
450
  id: string;
450
451
  source: {
451
452
  type: "terminal";
@@ -464,7 +465,6 @@ declare const NotificationRecordSchema: z.ZodObject<{
464
465
  groupId: string;
465
466
  title?: string | undefined;
466
467
  };
467
- createdAt: number;
468
468
  title: string;
469
469
  body: string;
470
470
  actions: ({
@@ -483,6 +483,7 @@ declare const NotificationRecordSchema: z.ZodObject<{
483
483
  level: "error" | "info" | "success" | "warning";
484
484
  groupKey: string;
485
485
  }, {
486
+ createdAt: number;
486
487
  id: string;
487
488
  source: {
488
489
  type: "terminal";
@@ -501,7 +502,6 @@ declare const NotificationRecordSchema: z.ZodObject<{
501
502
  groupId: string;
502
503
  title?: string | undefined;
503
504
  };
504
- createdAt: number;
505
505
  title: string;
506
506
  groupKey: string;
507
507
  body?: string | undefined;
@@ -1,3 +1,3 @@
1
- import "./sounds-BjSZxrQO.mjs";
2
- import { C as getNotificationAggregateKey, E as groupNotifications, P as terminalNotificationEventToPublishInput, S as aggregateNotifications, T as getNotificationGroupLabel, _ as NotificationSource, a as NotificationAggregate, b as TerminalNotificationParseResult, c as NotificationGroupKeySchema, d as NotificationRecord, f as NotificationRecordSchema, g as NotificationSoundSchema, h as NotificationSound, i as NotificationActionSchema, k as TerminalControlParser, l as NotificationPublishInput, m as NotificationSettingsSchema, n as NOTIFICATION_SOUND_VALUES, o as NotificationGroup, p as NotificationSettings, r as NotificationAction, s as NotificationGroupKey, t as NOTIFICATION_SOUND_OPTIONS, u as NotificationPublishInputSchema, v as NotificationSourceSchema, w as getNotificationGroupKey, x as TerminalNotificationParser, y as TerminalNotificationEvent } from "./notifications-D9yMeQqN.mjs";
1
+ import "./sounds-DIvZfWxA.mjs";
2
+ import { C as getNotificationAggregateKey, E as groupNotifications, P as terminalNotificationEventToPublishInput, S as aggregateNotifications, T as getNotificationGroupLabel, _ as NotificationSource, a as NotificationAggregate, b as TerminalNotificationParseResult, c as NotificationGroupKeySchema, d as NotificationRecord, f as NotificationRecordSchema, g as NotificationSoundSchema, h as NotificationSound, i as NotificationActionSchema, k as TerminalControlParser, l as NotificationPublishInput, m as NotificationSettingsSchema, n as NOTIFICATION_SOUND_VALUES, o as NotificationGroup, p as NotificationSettings, r as NotificationAction, s as NotificationGroupKey, t as NOTIFICATION_SOUND_OPTIONS, u as NotificationPublishInputSchema, v as NotificationSourceSchema, w as getNotificationGroupKey, x as TerminalNotificationParser, y as TerminalNotificationEvent } from "./notifications-DiY78-k4.mjs";
3
3
  export { NOTIFICATION_SOUND_OPTIONS, NOTIFICATION_SOUND_VALUES, NotificationAction, NotificationActionSchema, NotificationAggregate, NotificationGroup, NotificationGroupKey, NotificationGroupKeySchema, NotificationPublishInput, NotificationPublishInputSchema, NotificationRecord, NotificationRecordSchema, NotificationSettings, NotificationSettingsSchema, NotificationSound, NotificationSoundSchema, NotificationSource, NotificationSourceSchema, TerminalControlParser, TerminalNotificationEvent, TerminalNotificationParseResult, TerminalNotificationParser, aggregateNotifications, getNotificationAggregateKey, getNotificationGroupKey, getNotificationGroupLabel, groupNotifications, terminalNotificationEventToPublishInput };
@@ -1,4 +1,4 @@
1
- import { g as Spec } from "./schemas-B6ZBedD4.mjs";
1
+ import { g as Spec } from "./schemas-Dp8-Wm-X.mjs";
2
2
  import { d as MarkdownReadingPlugin, l as MarkdownReadingDocument } from "./markdown-reading-BaHZTf5f.mjs";
3
3
  import { n as OpenSpecAnnotation, t as AnnotatedOpenSpecDocument } from "./openspec-annotations-DYyP_HQh.mjs";
4
4
 
@@ -1,6 +1,6 @@
1
- import "./schemas-B6ZBedD4.mjs";
1
+ import "./schemas-Dp8-Wm-X.mjs";
2
2
  import "./markdown-facts-DempqdIX.mjs";
3
3
  import "./markdown-reading-BaHZTf5f.mjs";
4
4
  import "./openspec-annotations-DYyP_HQh.mjs";
5
- import { a as OpenSpecReadingSectionsProjection, c as ProjectedOpenSpecDocument, d as getOpenSpecReadingSections, f as parseOpenSpecMarkdownToSpec, i as OpenSpecProjectionOptions, l as createOpenSpecReadingPlugin, m as projectOpenSpecMarkdown, n as OPEN_SPEC_SPEC_PROJECTION_ID, o as OpenSpecRequirementBlock, p as projectAnnotatedOpenSpecToSpec, r as OpenSpecHeadingSection, s as OpenSpecScenarioBlock, t as OPEN_SPEC_READING_SECTIONS_PROJECTION_ID, u as getOpenSpecProjectionAnnotation } from "./openspec-projection-e-sOj4vr.mjs";
5
+ import { a as OpenSpecReadingSectionsProjection, c as ProjectedOpenSpecDocument, d as getOpenSpecReadingSections, f as parseOpenSpecMarkdownToSpec, i as OpenSpecProjectionOptions, l as createOpenSpecReadingPlugin, m as projectOpenSpecMarkdown, n as OPEN_SPEC_SPEC_PROJECTION_ID, o as OpenSpecRequirementBlock, p as projectAnnotatedOpenSpecToSpec, r as OpenSpecHeadingSection, s as OpenSpecScenarioBlock, t as OPEN_SPEC_READING_SECTIONS_PROJECTION_ID, u as getOpenSpecProjectionAnnotation } from "./openspec-projection-CmxjMsxS.mjs";
6
6
  export { OPEN_SPEC_READING_SECTIONS_PROJECTION_ID, OPEN_SPEC_SPEC_PROJECTION_ID, OpenSpecHeadingSection, OpenSpecProjectionOptions, OpenSpecReadingSectionsProjection, OpenSpecRequirementBlock, OpenSpecScenarioBlock, ProjectedOpenSpecDocument, createOpenSpecReadingPlugin, getOpenSpecProjectionAnnotation, getOpenSpecReadingSections, parseOpenSpecMarkdownToSpec, projectAnnotatedOpenSpecToSpec, projectOpenSpecMarkdown };
@@ -1,4 +1,4 @@
1
- import { n as ChangeFile } from "./schemas-B6ZBedD4.mjs";
1
+ import { n as ChangeFile } from "./schemas-Dp8-Wm-X.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/opsx-types.d.ts
@@ -147,15 +147,15 @@ declare const ApplyInstructionsSchema: z.ZodObject<{
147
147
  remaining: number;
148
148
  };
149
149
  state: "ready" | "blocked" | "all_done";
150
- changeName: string;
151
- schemaName: string;
152
- changeDir: string;
153
- contextFiles: Record<string, string[]>;
154
150
  tasks: {
155
151
  id: string;
156
152
  description: string;
157
153
  done: boolean;
158
154
  }[];
155
+ changeName: string;
156
+ schemaName: string;
157
+ changeDir: string;
158
+ contextFiles: Record<string, string[]>;
159
159
  instruction: string;
160
160
  missingArtifacts?: string[] | undefined;
161
161
  }, {
@@ -165,15 +165,15 @@ declare const ApplyInstructionsSchema: z.ZodObject<{
165
165
  remaining: number;
166
166
  };
167
167
  state: "ready" | "blocked" | "all_done";
168
- changeName: string;
169
- schemaName: string;
170
- changeDir: string;
171
- contextFiles: Record<string, string | string[]>;
172
168
  tasks: {
173
169
  id: string;
174
170
  description: string;
175
171
  done: boolean;
176
172
  }[];
173
+ changeName: string;
174
+ schemaName: string;
175
+ changeDir: string;
176
+ contextFiles: Record<string, string | string[]>;
177
177
  instruction: string;
178
178
  missingArtifacts?: string[] | undefined;
179
179
  }>;
@@ -1,3 +1,3 @@
1
- import { a as OpsxEntityFile, c as buildOpsxEntityDetail, d as isOpsxGlobPattern, f as normalizeOpsxEntityPath, h as parseOpsxEntityMetadata, i as OpsxEntityDiagnostic, l as getOpsxEntityMetadataPath, m as opsxPathMatchesPattern, n as OpsxEntityArtifactFile, o as OpsxEntityReadOptions, p as opsxGlobToRegex, r as OpsxEntityDetail, s as OpsxEntityStage, t as OpsxEntityArtifact, u as getOpsxEntityRootRelativePath } from "./opsx-entity-C89YFQNB.mjs";
2
- import "./schemas-B6ZBedD4.mjs";
1
+ import { a as OpsxEntityFile, c as buildOpsxEntityDetail, d as isOpsxGlobPattern, f as normalizeOpsxEntityPath, h as parseOpsxEntityMetadata, i as OpsxEntityDiagnostic, l as getOpsxEntityMetadataPath, m as opsxPathMatchesPattern, n as OpsxEntityArtifactFile, o as OpsxEntityReadOptions, p as opsxGlobToRegex, r as OpsxEntityDetail, s as OpsxEntityStage, t as OpsxEntityArtifact, u as getOpsxEntityRootRelativePath } from "./opsx-entity-CRa2u1j3.mjs";
2
+ import "./schemas-Dp8-Wm-X.mjs";
3
3
  export { OpsxEntityArtifact, OpsxEntityArtifactFile, OpsxEntityDetail, OpsxEntityDiagnostic, OpsxEntityFile, OpsxEntityReadOptions, OpsxEntityStage, buildOpsxEntityDetail, getOpsxEntityMetadataPath, getOpsxEntityRootRelativePath, isOpsxGlobPattern, normalizeOpsxEntityPath, opsxGlobToRegex, opsxPathMatchesPattern, parseOpsxEntityMetadata };
@@ -1,4 +1,4 @@
1
- import { i as OpsxEntityDiagnostic, j as SchemaDetail } from "./opsx-entity-C89YFQNB.mjs";
1
+ import { i as OpsxEntityDiagnostic, j as SchemaDetail } from "./opsx-entity-CRa2u1j3.mjs";
2
2
 
3
3
  //#region src/opsx-schema-detail.d.ts
4
4
  interface ParsedOpsxSchemaDetail {
@@ -1,4 +1,4 @@
1
- import "./opsx-entity-C89YFQNB.mjs";
2
- import "./schemas-B6ZBedD4.mjs";
3
- import { n as parseOpsxSchemaDetail, t as ParsedOpsxSchemaDetail } from "./opsx-schema-detail-DIscOp9f.mjs";
1
+ import "./opsx-entity-CRa2u1j3.mjs";
2
+ import "./schemas-Dp8-Wm-X.mjs";
3
+ import { n as parseOpsxSchemaDetail, t as ParsedOpsxSchemaDetail } from "./opsx-schema-detail-aVlqvbro.mjs";
4
4
  export { ParsedOpsxSchemaDetail, parseOpsxSchemaDetail };
@@ -933,11 +933,11 @@ declare const ChangeSchema: z.ZodObject<{
933
933
  total: z.ZodNumber;
934
934
  completed: z.ZodNumber;
935
935
  }, "strip", z.ZodTypeAny, {
936
- total: number;
937
936
  completed: number;
938
- }, {
939
937
  total: number;
938
+ }, {
940
939
  completed: number;
940
+ total: number;
941
941
  }>;
942
942
  /** Optional design.md content */
943
943
  design: z.ZodOptional<z.ZodString>;
@@ -968,16 +968,10 @@ declare const ChangeSchema: z.ZodObject<{
968
968
  }, "strip", z.ZodTypeAny, {
969
969
  id: string;
970
970
  progress: {
971
- total: number;
972
971
  completed: number;
972
+ total: number;
973
973
  };
974
974
  name: string;
975
- tasks: {
976
- id: string;
977
- text: string;
978
- completed: boolean;
979
- section?: string | undefined;
980
- }[];
981
975
  why: string;
982
976
  whatChanges: string;
983
977
  deltas: {
@@ -1021,6 +1015,12 @@ declare const ChangeSchema: z.ZodObject<{
1021
1015
  to: string;
1022
1016
  } | undefined;
1023
1017
  }[];
1018
+ tasks: {
1019
+ id: string;
1020
+ text: string;
1021
+ completed: boolean;
1022
+ section?: string | undefined;
1023
+ }[];
1024
1024
  metadata?: {
1025
1025
  version: string;
1026
1026
  format: "openspec-change";
@@ -1033,16 +1033,10 @@ declare const ChangeSchema: z.ZodObject<{
1033
1033
  }, {
1034
1034
  id: string;
1035
1035
  progress: {
1036
- total: number;
1037
1036
  completed: number;
1037
+ total: number;
1038
1038
  };
1039
1039
  name: string;
1040
- tasks: {
1041
- id: string;
1042
- text: string;
1043
- completed: boolean;
1044
- section?: string | undefined;
1045
- }[];
1046
1040
  why: string;
1047
1041
  whatChanges: string;
1048
1042
  deltas: {
@@ -1086,6 +1080,12 @@ declare const ChangeSchema: z.ZodObject<{
1086
1080
  to: string;
1087
1081
  } | undefined;
1088
1082
  }[];
1083
+ tasks: {
1084
+ id: string;
1085
+ text: string;
1086
+ completed: boolean;
1087
+ section?: string | undefined;
1088
+ }[];
1089
1089
  metadata?: {
1090
1090
  version?: string | undefined;
1091
1091
  format?: "openspec-change" | undefined;
@@ -41,19 +41,19 @@ declare const CustomSoundMetadataSchema: z.ZodObject<{
41
41
  createdAt: z.ZodNumber;
42
42
  updatedAt: z.ZodNumber;
43
43
  }, "strip", z.ZodTypeAny, {
44
+ createdAt: number;
44
45
  id: string;
45
46
  updatedAt: number;
46
47
  name: string;
47
48
  mime: string;
48
49
  size: number;
49
- createdAt: number;
50
50
  }, {
51
+ createdAt: number;
51
52
  id: string;
52
53
  updatedAt: number;
53
54
  name: string;
54
55
  mime: string;
55
56
  size: number;
56
- createdAt: number;
57
57
  }>;
58
58
  type CustomSoundMetadata = z.infer<typeof CustomSoundMetadataSchema>;
59
59
  declare const CustomSoundMetadataFileSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -64,19 +64,19 @@ declare const CustomSoundMetadataFileSchema: z.ZodRecord<z.ZodString, z.ZodObjec
64
64
  createdAt: z.ZodNumber;
65
65
  updatedAt: z.ZodNumber;
66
66
  }, "strip", z.ZodTypeAny, {
67
+ createdAt: number;
67
68
  id: string;
68
69
  updatedAt: number;
69
70
  name: string;
70
71
  mime: string;
71
72
  size: number;
72
- createdAt: number;
73
73
  }, {
74
+ createdAt: number;
74
75
  id: string;
75
76
  updatedAt: number;
76
77
  name: string;
77
78
  mime: string;
78
79
  size: number;
79
- createdAt: number;
80
80
  }>>;
81
81
  type CustomSoundMetadataFile = z.infer<typeof CustomSoundMetadataFileSchema>;
82
82
  declare function soundIdFromCustomHash(hash: CustomSoundHash): CustomSoundId;
package/dist/sounds.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { C as SoundVolume, D as normalizeLegacySoundId, E as getBuiltinSoundUrl, O as soundIdFromCustomHash, S as SoundIdSchema, T as customHashFromSoundId, _ as DEFAULT_SOUND_VOLUME, a as BuiltinSoundOption, b as SoundConfigIdSchema, c as CustomSoundHashSchema, d as CustomSoundMetadata, f as CustomSoundMetadataFile, g as DEFAULT_NOTIFICATION_SOUND_ID, h as DEFAULT_BELL_SOUND_ID, i as BuiltinSoundIdSchema, l as CustomSoundId, m as CustomSoundMetadataSchema, n as BUILTIN_SOUND_OPTIONS, o as CUSTOM_SOUND_ADD_VALUE, p as CustomSoundMetadataFileSchema, r as BuiltinSoundId, s as CustomSoundHash, t as BUILTIN_SOUND_IDS, u as CustomSoundIdSchema, v as LEGACY_SOUND_ID_MAP, w as SoundVolumeSchema, x as SoundId, y as SILENT_SOUND_ID } from "./sounds-BjSZxrQO.mjs";
1
+ import { C as SoundVolume, D as normalizeLegacySoundId, E as getBuiltinSoundUrl, O as soundIdFromCustomHash, S as SoundIdSchema, T as customHashFromSoundId, _ as DEFAULT_SOUND_VOLUME, a as BuiltinSoundOption, b as SoundConfigIdSchema, c as CustomSoundHashSchema, d as CustomSoundMetadata, f as CustomSoundMetadataFile, g as DEFAULT_NOTIFICATION_SOUND_ID, h as DEFAULT_BELL_SOUND_ID, i as BuiltinSoundIdSchema, l as CustomSoundId, m as CustomSoundMetadataSchema, n as BUILTIN_SOUND_OPTIONS, o as CUSTOM_SOUND_ADD_VALUE, p as CustomSoundMetadataFileSchema, r as BuiltinSoundId, s as CustomSoundHash, t as BUILTIN_SOUND_IDS, u as CustomSoundIdSchema, v as LEGACY_SOUND_ID_MAP, w as SoundVolumeSchema, x as SoundId, y as SILENT_SOUND_ID } from "./sounds-DIvZfWxA.mjs";
2
2
  export { BUILTIN_SOUND_IDS, BUILTIN_SOUND_OPTIONS, BuiltinSoundId, BuiltinSoundIdSchema, BuiltinSoundOption, CUSTOM_SOUND_ADD_VALUE, CustomSoundHash, CustomSoundHashSchema, CustomSoundId, CustomSoundIdSchema, CustomSoundMetadata, CustomSoundMetadataFile, CustomSoundMetadataFileSchema, CustomSoundMetadataSchema, DEFAULT_BELL_SOUND_ID, DEFAULT_NOTIFICATION_SOUND_ID, DEFAULT_SOUND_VOLUME, LEGACY_SOUND_ID_MAP, SILENT_SOUND_ID, SoundConfigIdSchema, SoundId, SoundIdSchema, SoundVolume, SoundVolumeSchema, customHashFromSoundId, getBuiltinSoundUrl, normalizeLegacySoundId, soundIdFromCustomHash };
@@ -1,4 +1,4 @@
1
- import { x as SoundId } from "./sounds-BjSZxrQO.mjs";
1
+ import { x as SoundId } from "./sounds-DIvZfWxA.mjs";
2
2
  import * as zod0 from "zod";
3
3
 
4
4
  //#region src/terminal-audio.d.ts
@@ -1,3 +1,3 @@
1
- import "./sounds-BjSZxrQO.mjs";
2
- import { i as TerminalBellSoundSchema, n as TERMINAL_BELL_SOUND_VALUES, r as TerminalBellSound, t as TERMINAL_BELL_SOUND_OPTIONS } from "./terminal-audio-6x0ceNBw.mjs";
1
+ import "./sounds-DIvZfWxA.mjs";
2
+ import { i as TerminalBellSoundSchema, n as TERMINAL_BELL_SOUND_VALUES, r as TerminalBellSound, t as TERMINAL_BELL_SOUND_OPTIONS } from "./terminal-audio-DkjquHlQ.mjs";
3
3
  export { TERMINAL_BELL_SOUND_OPTIONS, TERMINAL_BELL_SOUND_VALUES, TerminalBellSound, TerminalBellSoundSchema };
@@ -1,3 +1,3 @@
1
- import "./sounds-BjSZxrQO.mjs";
2
- import { A as TerminalNotificationProtocol, D as TerminalControlEvent, M as TerminalPromptState, N as TerminalTitleTarget, O as TerminalControlParseResult, P as terminalNotificationEventToPublishInput, j as TerminalProgressState, k as TerminalControlParser } from "./notifications-D9yMeQqN.mjs";
1
+ import "./sounds-DIvZfWxA.mjs";
2
+ import { A as TerminalNotificationProtocol, D as TerminalControlEvent, M as TerminalPromptState, N as TerminalTitleTarget, O as TerminalControlParseResult, P as terminalNotificationEventToPublishInput, j as TerminalProgressState, k as TerminalControlParser } from "./notifications-DiY78-k4.mjs";
3
3
  export { TerminalControlEvent, TerminalControlParseResult, TerminalControlParser, TerminalNotificationProtocol, TerminalProgressState, TerminalPromptState, TerminalTitleTarget, terminalNotificationEventToPublishInput };