@openspecui/core 3.6.1 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/document-translation-CEI09yZe.mjs +13 -0
  2. package/dist/document-translation-CuCbRCNb.d.mts +22 -0
  3. package/dist/document-translation.d.mts +2 -0
  4. package/dist/document-translation.mjs +3 -0
  5. package/dist/hosted-app.d.mts +1 -1
  6. package/dist/hosted-app.mjs +1 -1
  7. package/dist/index.d.mts +63 -443
  8. package/dist/index.mjs +47 -62
  9. package/dist/markdown-facts.d.mts +1 -1
  10. package/dist/markdown-facts.mjs +1 -1
  11. package/dist/{markdown-reading-D36W693c.d.mts → markdown-reading-BC6uFgx0.d.mts} +10 -2
  12. package/dist/{markdown-reading-CrchEfoW.mjs → markdown-reading-CsL1q84q.mjs} +23 -4
  13. package/dist/markdown-reading.d.mts +3 -3
  14. package/dist/markdown-reading.mjs +3 -3
  15. package/dist/{notifications-CCV2bgWG.d.mts → notifications-CbKmEdCU.d.mts} +9 -9
  16. package/dist/{notifications-fD-V5hyP.mjs → notifications-DXOoOJ3m.mjs} +2 -2
  17. package/dist/notifications.d.mts +2 -2
  18. package/dist/notifications.mjs +3 -3
  19. package/dist/{openspec-annotations-CJmYcfAu.d.mts → openspec-annotations-DKP1Uuho.d.mts} +2 -2
  20. package/dist/{openspec-annotations-BMy9nWUe.mjs → openspec-annotations-D_xQqQOB.mjs} +2 -2
  21. package/dist/openspec-annotations.d.mts +3 -3
  22. package/dist/openspec-annotations.mjs +3 -3
  23. package/dist/openspec-projection-Co3CUAHe.d.mts +52 -0
  24. package/dist/{openspec-projection-DWqBxedv.mjs → openspec-projection-DLGD1JFD.mjs} +2 -2
  25. package/dist/openspec-projection.d.mts +5 -4
  26. package/dist/openspec-projection.mjs +4 -4
  27. package/dist/opsx-display-path.d.mts +1 -1
  28. package/dist/opsx-display-path.mjs +1 -1
  29. package/dist/opsx-entity-B_Od4N3r.mjs +144 -0
  30. package/dist/opsx-entity-Cz89hbt3.d.mts +453 -0
  31. package/dist/opsx-entity.d.mts +3 -0
  32. package/dist/opsx-entity.mjs +3 -0
  33. package/dist/opsx-schema-detail-Bh-aNaSk.mjs +114 -0
  34. package/dist/opsx-schema-detail-CuDl2xjZ.d.mts +12 -0
  35. package/dist/opsx-schema-detail.d.mts +4 -0
  36. package/dist/opsx-schema-detail.mjs +3 -0
  37. package/dist/{openspec-projection-DmB448No.d.mts → schemas-q7tGvvxx.d.mts} +35 -84
  38. package/dist/{sounds-B0sH3QwE.d.mts → sounds-BORGLPIt.d.mts} +5 -5
  39. package/dist/sounds.d.mts +1 -1
  40. package/dist/sounds.mjs +1 -1
  41. package/dist/{terminal-audio-UEv3j655.mjs → terminal-audio-BiQ9qJJW.mjs} +1 -1
  42. package/dist/{terminal-audio-qSc6nZUI.d.mts → terminal-audio-Dmi6lR7o.d.mts} +2 -2
  43. package/dist/terminal-audio.d.mts +2 -2
  44. package/dist/terminal-audio.mjs +2 -2
  45. package/dist/terminal-control.d.mts +2 -2
  46. package/dist/terminal-control.mjs +1 -1
  47. package/dist/{terminal-invocation-BCqjtd4p.d.mts → terminal-invocation-C733ofmf.d.mts} +36 -36
  48. package/dist/terminal-invocation.d.mts +1 -1
  49. package/dist/terminal-invocation.mjs +1 -1
  50. package/dist/terminal-theme.d.mts +1 -1
  51. package/dist/terminal-theme.mjs +1 -1
  52. package/package.json +15 -3
  53. /package/dist/{hosted-app-DFFffbJc.mjs → hosted-app-Bl5W6LWQ.mjs} +0 -0
  54. /package/dist/{hosted-app-DZrYivji.d.mts → hosted-app-DHrXW3jc.d.mts} +0 -0
  55. /package/dist/{markdown-facts-BmSmZmpB.mjs → markdown-facts-BFqXdPfN.mjs} +0 -0
  56. /package/dist/{markdown-facts-f3kXnqXb.d.mts → markdown-facts-DxElzSsp.d.mts} +0 -0
  57. /package/dist/{opsx-display-path-D4KLYRXQ.mjs → opsx-display-path-BHEPZsJx.mjs} +0 -0
  58. /package/dist/{opsx-display-path-CkV9sq_j.d.mts → opsx-display-path-BKUYCqwP.d.mts} +0 -0
  59. /package/dist/{sounds-BzNKMW05.mjs → sounds-Ctm3QEtf.mjs} +0 -0
  60. /package/dist/{terminal-control-Bxois59k.mjs → terminal-control-CMkG-o9C.mjs} +0 -0
  61. /package/dist/{terminal-invocation-BRCuSBjE.mjs → terminal-invocation-CX1LDM89.mjs} +0 -0
  62. /package/dist/{terminal-theme-CIv3YMfi.mjs → terminal-theme-BOGPIiVm.mjs} +0 -0
  63. /package/dist/{terminal-theme-lPZGfVA_.d.mts → terminal-theme-DdhVuegL.d.mts} +0 -0
package/dist/index.mjs CHANGED
@@ -1,15 +1,18 @@
1
- import { n as toMarkdownFactKind, t as parseMarkdownFacts } from "./markdown-facts-BmSmZmpB.mjs";
2
- import { a as getMarkdownAnnotationsForFact, c as getMarkdownHeadingFacts, i as getMarkdownAnnotation, l as trimMarkdownSlice, n as createMarkdownReadingDocument, o as getMarkdownFactSpan, r as createMarkdownReadingDocumentFromFacts, s as getMarkdownHeadingEnd, t as buildMarkdownParentMap } from "./markdown-reading-CrchEfoW.mjs";
3
- import { a as getOpenSpecAnnotationsForFact, i as getOpenSpecAnnotation, n as annotateOpenSpecMarkdown, o as openSpecAnnotationRules, r as builtinOpenSpecReadingPlugin, t as annotateOpenSpecFacts } from "./openspec-annotations-BMy9nWUe.mjs";
4
- 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-DWqBxedv.mjs";
5
- 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-BzNKMW05.mjs";
6
- import { n as terminalNotificationEventToPublishInput, t as TerminalControlParser } from "./terminal-control-Bxois59k.mjs";
7
- 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-fD-V5hyP.mjs";
8
- import { n as TERMINAL_BELL_SOUND_VALUES, r as TerminalBellSoundSchema, t as TERMINAL_BELL_SOUND_OPTIONS } from "./terminal-audio-UEv3j655.mjs";
9
- 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-CIv3YMfi.mjs";
10
- 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-DFFffbJc.mjs";
11
- import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-D4KLYRXQ.mjs";
12
- import { a as TerminalInvocationSettingsSchema, c as TerminalSpawnCommandSchema, f as quoteTerminalShellArg, g as resolveTerminalShellDefaults, h as renderTerminalSpawnCommandLine, i as TerminalCommandFieldSchema, n as TERMINAL_COMMAND_FIELD_TYPE_VALUES, o as TerminalShellProfileSchema, p as renderTerminalCommandArgs, r as TERMINAL_SHELL_QUOTE_STYLE_VALUES, s as TerminalShellQuoteStyleSchema, t as BUILTIN_TERMINAL_SPAWN_COMMANDS, u as getTerminalCommandDefaultValues } from "./terminal-invocation-BRCuSBjE.mjs";
1
+ import { a as normalizeOpsxEntityPath, c as parseOpsxEntityMetadata, i as isOpsxGlobPattern, n as getOpsxEntityMetadataPath, o as opsxGlobToRegex, r as getOpsxEntityRootRelativePath, s as opsxPathMatchesPattern, t as buildOpsxEntityDetail } from "./opsx-entity-B_Od4N3r.mjs";
2
+ import { n as toMarkdownFactKind, t as parseMarkdownFacts } from "./markdown-facts-BFqXdPfN.mjs";
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-CsL1q84q.mjs";
4
+ import { a as getOpenSpecAnnotationsForFact, i as getOpenSpecAnnotation, n as annotateOpenSpecMarkdown, o as openSpecAnnotationRules, r as builtinOpenSpecReadingPlugin, t as annotateOpenSpecFacts } from "./openspec-annotations-D_xQqQOB.mjs";
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-DLGD1JFD.mjs";
6
+ import { n as DocumentTranslationConfigSchema, r as DocumentTranslationDisplayModeSchema, t as DOCUMENT_TRANSLATION_DISPLAY_MODES } from "./document-translation-CEI09yZe.mjs";
7
+ 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-Ctm3QEtf.mjs";
8
+ import { n as terminalNotificationEventToPublishInput, t as TerminalControlParser } from "./terminal-control-CMkG-o9C.mjs";
9
+ 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-DXOoOJ3m.mjs";
10
+ import { n as TERMINAL_BELL_SOUND_VALUES, r as TerminalBellSoundSchema, t as TERMINAL_BELL_SOUND_OPTIONS } from "./terminal-audio-BiQ9qJJW.mjs";
11
+ 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-BOGPIiVm.mjs";
12
+ 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-Bl5W6LWQ.mjs";
13
+ import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-BHEPZsJx.mjs";
14
+ import { a as TerminalInvocationSettingsSchema, c as TerminalSpawnCommandSchema, f as quoteTerminalShellArg, g as resolveTerminalShellDefaults, h as renderTerminalSpawnCommandLine, i as TerminalCommandFieldSchema, n as TERMINAL_COMMAND_FIELD_TYPE_VALUES, o as TerminalShellProfileSchema, p as renderTerminalCommandArgs, r as TERMINAL_SHELL_QUOTE_STYLE_VALUES, s as TerminalShellQuoteStyleSchema, t as BUILTIN_TERMINAL_SPAWN_COMMANDS, u as getTerminalCommandDefaultValues } from "./terminal-invocation-CX1LDM89.mjs";
15
+ import { t as parseOpsxSchemaDetail } from "./opsx-schema-detail-Bh-aNaSk.mjs";
13
16
  import { mkdir, readFile, rename, writeFile } from "fs/promises";
14
17
  import { dirname, join } from "path";
15
18
  import { AsyncLocalStorage } from "node:async_hooks";
@@ -22,7 +25,6 @@ import { watch } from "fs";
22
25
  import { exec, execFile, spawn } from "child_process";
23
26
  import { promisify } from "util";
24
27
  import { homedir } from "node:os";
25
- import { parse } from "yaml";
26
28
 
27
29
  //#region src/parser.ts
28
30
  const SCENARIO_STEP_PATTERN = new RegExp(`^\\s*[-*+]\\s+(?:\\*\\*)?(${[
@@ -1449,12 +1451,11 @@ var OpenSpecAdapter = class {
1449
1451
  async listArchivedChangesWithMeta() {
1450
1452
  const ids = await this.listArchivedChanges();
1451
1453
  return (await Promise.all(ids.map(async (id) => {
1452
- const change = await this.readArchivedChange(id);
1453
1454
  const archiveDir = join(this.archiveDir, id);
1454
1455
  const timeInfo = await this.getFileTimeInfo(archiveDir);
1455
1456
  return {
1456
1457
  id,
1457
- name: change?.name ?? id,
1458
+ name: id,
1458
1459
  createdAt: timeInfo?.createdAt ?? 0,
1459
1460
  updatedAt: timeInfo?.updatedAt ?? 0
1460
1461
  };
@@ -1504,6 +1505,20 @@ var OpenSpecAdapter = class {
1504
1505
  const archiveRoot = join(this.archiveDir, changeId);
1505
1506
  return this.readFilesUnderRoot(archiveRoot);
1506
1507
  }
1508
+ async readEntityDetail(stage, id, options = {}) {
1509
+ const root = stage === "change" ? join(this.changesDir, id) : join(this.archiveDir, id);
1510
+ const files = await this.readFilesUnderRoot(root);
1511
+ if (files.length === 0) {
1512
+ if (!(await reactiveStat(root))?.isDirectory) return null;
1513
+ }
1514
+ return buildOpsxEntityDetail({
1515
+ stage,
1516
+ id,
1517
+ files,
1518
+ schemas: options.schemas,
1519
+ schemaDiagnostics: options.schemaDiagnostics
1520
+ });
1521
+ }
1507
1522
  async readFilesUnderRoot(root) {
1508
1523
  if (!(await reactiveStat(root))?.isDirectory) return [];
1509
1524
  return (await this.collectChangeFiles(root, root)).sort((a, b) => {
@@ -2512,7 +2527,8 @@ const OpenSpecUIConfigSchema = z.object({
2512
2527
  terminal: TerminalConfigSchema.default(TerminalConfigSchema.parse({})),
2513
2528
  dashboard: DashboardConfigSchema.default(DashboardConfigSchema.parse({})),
2514
2529
  git: GitConfigSchema.default(GitConfigSchema.parse({})),
2515
- notifications: NotificationSettingsSchema.default(NotificationSettingsSchema.parse({}))
2530
+ notifications: NotificationSettingsSchema.default(NotificationSettingsSchema.parse({})),
2531
+ translation: DocumentTranslationConfigSchema.default(DocumentTranslationConfigSchema.parse({}))
2516
2532
  });
2517
2533
  /** 默认配置(静态,用于测试和类型) */
2518
2534
  const DEFAULT_CONFIG = {
@@ -2524,7 +2540,8 @@ const DEFAULT_CONFIG = {
2524
2540
  terminal: TerminalConfigSchema.parse({}),
2525
2541
  dashboard: DashboardConfigSchema.parse({}),
2526
2542
  git: GitConfigSchema.parse({}),
2527
- notifications: NotificationSettingsSchema.parse({})
2543
+ notifications: NotificationSettingsSchema.parse({}),
2544
+ translation: DocumentTranslationConfigSchema.parse({})
2528
2545
  };
2529
2546
  function areStringArraysEqual(left, right) {
2530
2547
  if (left === right) return true;
@@ -2591,6 +2608,11 @@ function toPersistedConfig(config, options = {}) {
2591
2608
  if (config.notifications.volume !== DEFAULT_CONFIG.notifications.volume) notifications.volume = config.notifications.volume;
2592
2609
  if (config.notifications.systemNotificationsEnabled !== DEFAULT_CONFIG.notifications.systemNotificationsEnabled) notifications.systemNotificationsEnabled = config.notifications.systemNotificationsEnabled;
2593
2610
  if (hasOwnEntries(notifications)) persisted.notifications = notifications;
2611
+ const translation = {};
2612
+ if (config.translation.enabled !== DEFAULT_CONFIG.translation.enabled) translation.enabled = config.translation.enabled;
2613
+ if (config.translation.targetLanguage !== DEFAULT_CONFIG.translation.targetLanguage) translation.targetLanguage = config.translation.targetLanguage;
2614
+ if (config.translation.displayMode !== DEFAULT_CONFIG.translation.displayMode) translation.displayMode = config.translation.displayMode;
2615
+ if (hasOwnEntries(translation)) persisted.translation = translation;
2594
2616
  return persisted;
2595
2617
  }
2596
2618
  function isPersistedConfigEmpty(config) {
@@ -2689,6 +2711,10 @@ var ConfigManager = class {
2689
2711
  notifications: {
2690
2712
  ...current.notifications,
2691
2713
  ...config.notifications
2714
+ },
2715
+ translation: {
2716
+ ...current.translation,
2717
+ ...config.translation
2692
2718
  }
2693
2719
  });
2694
2720
  if (isPersistedConfigEmpty(persisted) && !fileExists) return;
@@ -4361,7 +4387,7 @@ var OpsxKernel = class {
4361
4387
  const schemaPath = join$1(this.getSchemaResolution(name).path, "schema.yaml");
4362
4388
  const content = await reactiveReadFile(schemaPath);
4363
4389
  if (!content) throw new Error(`schema.yaml not found at ${schemaPath}`);
4364
- return parseSchemaYamlInline(content);
4390
+ return parseSchemaYamlInline(content, name, schemaPath);
4365
4391
  }
4366
4392
  async fetchSchemaFiles(name) {
4367
4393
  await touchOpsxProjectDeps(this.projectDir);
@@ -4488,49 +4514,8 @@ var OpsxKernel = class {
4488
4514
  return ctrl.signal;
4489
4515
  }
4490
4516
  };
4491
- const SchemaYamlArtifactSchema = z.object({
4492
- id: z.string(),
4493
- generates: z.string(),
4494
- description: z.string().optional(),
4495
- template: z.string().optional(),
4496
- instruction: z.string().optional(),
4497
- requires: z.array(z.string()).optional()
4498
- });
4499
- const SchemaYamlSchema = z.object({
4500
- name: z.string(),
4501
- version: z.union([z.string(), z.number()]).optional(),
4502
- description: z.string().optional(),
4503
- artifacts: z.array(SchemaYamlArtifactSchema),
4504
- apply: z.object({
4505
- requires: z.array(z.string()).optional(),
4506
- tracks: z.string().optional(),
4507
- instruction: z.string().optional()
4508
- }).optional()
4509
- });
4510
- function parseSchemaYamlInline(content) {
4511
- const raw = parse(content);
4512
- const parsed = SchemaYamlSchema.safeParse(raw);
4513
- if (!parsed.success) throw new Error(`Invalid schema.yaml: ${parsed.error.message}`);
4514
- const { artifacts, apply, name, description, version } = parsed.data;
4515
- const detail = {
4516
- name,
4517
- description,
4518
- version,
4519
- artifacts: artifacts.map((artifact) => ({
4520
- id: artifact.id,
4521
- outputPath: artifact.generates,
4522
- description: artifact.description,
4523
- template: artifact.template,
4524
- instruction: artifact.instruction,
4525
- requires: artifact.requires ?? []
4526
- })),
4527
- applyRequires: apply?.requires ?? [],
4528
- applyTracks: apply?.tracks,
4529
- applyInstruction: apply?.instruction
4530
- };
4531
- const validated = SchemaDetailSchema.safeParse(detail);
4532
- if (!validated.success) throw new Error(`Invalid schema detail: ${validated.error.message}`);
4533
- return validated.data;
4517
+ function parseSchemaYamlInline(content, fallbackName, path) {
4518
+ return parseOpsxSchemaDetail(content, fallbackName, { path }).detail;
4534
4519
  }
4535
4520
 
4536
4521
  //#endregion
@@ -4690,4 +4675,4 @@ const PtyServerMessageSchema = z.discriminatedUnion("type", [
4690
4675
  ]);
4691
4676
 
4692
4677
  //#endregion
4693
- export { AI_TOOLS, ApplyInstructionsContextFilesSchema, ApplyInstructionsSchema, ApplyTaskSchema, ArtifactInstructionsSchema, ArtifactStatusSchema, BUILTIN_SOUND_IDS, BUILTIN_SOUND_OPTIONS, BUILTIN_TERMINAL_SPAWN_COMMANDS, 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_NOTIFICATION_SOUND_ID, DEFAULT_TERMINAL_DARK_THEME, DEFAULT_TERMINAL_LIGHT_THEME, DEFAULT_TERMINAL_THEME_MODE, DashboardConfigSchema, DeltaOperationType, DeltaSchema, DeltaSpecSchema, DependencyInfoSchema, GitConfigSchema, HOSTED_SHELL_PROTOCOL_VERSION, LEGACY_SOUND_ID_MAP, MarkdownParser, NOTIFICATION_SOUND_OPTIONS, NOTIFICATION_SOUND_VALUES, NotificationActionSchema, NotificationGroupKeySchema, NotificationPublishInputSchema, NotificationRecordSchema, NotificationSettingsSchema, NotificationSoundSchema, NotificationSourceSchema, OFFICIAL_APP_BASE_URL, OPENSPECUI_HOOKS_VERSION, OPEN_SPEC_READING_SECTIONS_PROJECTION_ID, OPEN_SPEC_SPEC_PROJECTION_ID, OPSX_AGENT_INVOCATION_MODE_VALUES, OpenSpecAdapter, OpenSpecUIConfigSchema, 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, SILENT_SOUND_ID, ScenarioStepKeywordSchema, ScenarioStepSchema, SchemaArtifactSchema, SchemaDetailSchema, SchemaInfoSchema, SchemaResolutionSchema, 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, TaskSchema, TemplatesSchema, TerminalBellSoundSchema, TerminalCommandFieldSchema, TerminalConfigSchema, TerminalControlParser, TerminalInvocationSettingsSchema, TerminalNotificationParser, TerminalRendererEngineSchema, TerminalShellProfileSchema, TerminalShellQuoteStyleSchema, TerminalSpawnCommandSchema, TerminalThemeModeSchema, TerminalThemeSchema, VIRTUAL_PROJECT_DIRNAME, Validator, acquireWatcher, annotateOpenSpecFacts, annotateOpenSpecMarkdown, buildCliRunnerCandidates, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, buildMarkdownParentMap, builtinOpenSpecReadingPlugin, clearCache, closeAllProjectWatchers, closeAllWatchers, contextStorage, createCleanCliEnv, createFileChangeObservable, createMarkdownReadingDocument, createMarkdownReadingDocumentFromFacts, createOpenSpecReadingPlugin, customHashFromSoundId, getActiveWatcherCount, getAllToolIds, getAllTools, getAvailableToolIds, getAvailableTools, getBuiltinSoundUrl, getCacheSize, getConfiguredTools, getDefaultCliCommand, getDefaultCliCommandString, getDetectedProjectTools, getMarkdownAnnotation, getMarkdownAnnotationsForFact, getMarkdownFactSpan, getMarkdownHeadingEnd, getMarkdownHeadingFacts, getNotificationGroupKey, getNotificationGroupLabel, getOpenSpecAnnotation, getOpenSpecAnnotationsForFact, getOpenSpecProjectionAnnotation, getOpenSpecReadingSections, getProjectWatcher, getTerminalCommandDefaultValues, getToolById, getToolInitStates, getWatchedProjectDir, getWatcherRuntimeStatus, groupNotifications, initWatcherPool, isGlobPattern, isHostedBackendHealthResponse, isSupportedEmbeddedUiUrl, isTerminalRendererEngine, isToolConfigured, isWatcherPoolInitialized, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, normalizeLegacySoundId, openSpecAnnotationRules, parseCliCommand, parseMarkdownFacts, parseOpenSpecMarkdownToSpec, projectAnnotatedOpenSpecToSpec, projectOpenSpecMarkdown, quoteTerminalShellArg, reactiveExists, reactiveReadDir, reactiveReadFile, reactiveStat, renderTerminalCommandArgs, renderTerminalSpawnCommandLine, resolveHostedAppBaseUrl, resolveTerminalShellDefaults, sniffGlobalCli, soundIdFromCustomHash, subscribeWatcherRuntimeStatus, terminalNotificationEventToPublishInput, toMarkdownFactKind, toOpsxDisplayPath, trimMarkdownSlice };
4678
+ export { AI_TOOLS, ApplyInstructionsContextFilesSchema, ApplyInstructionsSchema, ApplyTaskSchema, ArtifactInstructionsSchema, ArtifactStatusSchema, BUILTIN_SOUND_IDS, BUILTIN_SOUND_OPTIONS, BUILTIN_TERMINAL_SPAWN_COMMANDS, 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_NOTIFICATION_SOUND_ID, DEFAULT_TERMINAL_DARK_THEME, DEFAULT_TERMINAL_LIGHT_THEME, DEFAULT_TERMINAL_THEME_MODE, DOCUMENT_TRANSLATION_DISPLAY_MODES, DashboardConfigSchema, DeltaOperationType, DeltaSchema, DeltaSpecSchema, DependencyInfoSchema, DocumentTranslationConfigSchema, DocumentTranslationDisplayModeSchema, GitConfigSchema, HOSTED_SHELL_PROTOCOL_VERSION, LEGACY_SOUND_ID_MAP, MarkdownParser, MarkdownReadingPluginRegistry, NOTIFICATION_SOUND_OPTIONS, NOTIFICATION_SOUND_VALUES, NotificationActionSchema, NotificationGroupKeySchema, NotificationPublishInputSchema, NotificationRecordSchema, NotificationSettingsSchema, NotificationSoundSchema, NotificationSourceSchema, OFFICIAL_APP_BASE_URL, OPENSPECUI_HOOKS_VERSION, OPEN_SPEC_READING_SECTIONS_PROJECTION_ID, OPEN_SPEC_SPEC_PROJECTION_ID, OPSX_AGENT_INVOCATION_MODE_VALUES, OpenSpecAdapter, OpenSpecUIConfigSchema, 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, SILENT_SOUND_ID, ScenarioStepKeywordSchema, ScenarioStepSchema, SchemaArtifactSchema, SchemaDetailSchema, SchemaInfoSchema, SchemaResolutionSchema, 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, TaskSchema, TemplatesSchema, TerminalBellSoundSchema, TerminalCommandFieldSchema, TerminalConfigSchema, TerminalControlParser, TerminalInvocationSettingsSchema, TerminalNotificationParser, TerminalRendererEngineSchema, TerminalShellProfileSchema, TerminalShellQuoteStyleSchema, TerminalSpawnCommandSchema, TerminalThemeModeSchema, TerminalThemeSchema, VIRTUAL_PROJECT_DIRNAME, Validator, acquireWatcher, annotateOpenSpecFacts, annotateOpenSpecMarkdown, buildCliRunnerCandidates, buildEmbeddedUiLaunchUrl, buildHostedLaunchUrl, buildMarkdownParentMap, buildOpsxEntityDetail, builtinOpenSpecReadingPlugin, clearCache, closeAllProjectWatchers, closeAllWatchers, contextStorage, createCleanCliEnv, createFileChangeObservable, createMarkdownReadingDocument, createMarkdownReadingDocumentFromFacts, createOpenSpecReadingPlugin, customHashFromSoundId, getActiveWatcherCount, getAllToolIds, getAllTools, getAvailableToolIds, getAvailableTools, getBuiltinSoundUrl, getCacheSize, getConfiguredTools, getDefaultCliCommand, getDefaultCliCommandString, getDetectedProjectTools, getMarkdownAnnotation, getMarkdownAnnotationsForFact, getMarkdownFactSpan, getMarkdownHeadingEnd, getMarkdownHeadingFacts, getNotificationGroupKey, getNotificationGroupLabel, getOpenSpecAnnotation, getOpenSpecAnnotationsForFact, getOpenSpecProjectionAnnotation, getOpenSpecReadingSections, getOpsxEntityMetadataPath, getOpsxEntityRootRelativePath, getProjectWatcher, getTerminalCommandDefaultValues, getToolById, getToolInitStates, getWatchedProjectDir, getWatcherRuntimeStatus, groupNotifications, initWatcherPool, isGlobPattern, isHostedBackendHealthResponse, isOpsxGlobPattern, isSupportedEmbeddedUiUrl, isTerminalRendererEngine, isToolConfigured, isWatcherPoolInitialized, normalizeEmbeddedUiUrl, normalizeHostedAppBaseUrl, normalizeLegacySoundId, normalizeOpsxEntityPath, openSpecAnnotationRules, opsxGlobToRegex, opsxPathMatchesPattern, parseCliCommand, parseMarkdownFacts, parseOpenSpecMarkdownToSpec, parseOpsxEntityMetadata, parseOpsxSchemaDetail, projectAnnotatedOpenSpecToSpec, projectOpenSpecMarkdown, quoteTerminalShellArg, reactiveExists, reactiveReadDir, reactiveReadFile, reactiveStat, renderTerminalCommandArgs, renderTerminalSpawnCommandLine, resolveHostedAppBaseUrl, resolveTerminalShellDefaults, sniffGlobalCli, sortMarkdownReadingPlugins, soundIdFromCustomHash, subscribeWatcherRuntimeStatus, terminalNotificationEventToPublishInput, toMarkdownFactKind, toOpsxDisplayPath, trimMarkdownSlice };
@@ -1,2 +1,2 @@
1
- import { a as MarkdownSourceRange, i as MarkdownSourcePoint, n as MarkdownFactKind, o as parseMarkdownFacts, r as MarkdownFactsDocument, s as toMarkdownFactKind, t as MarkdownFact } from "./markdown-facts-f3kXnqXb.mjs";
1
+ import { a as MarkdownSourceRange, i as MarkdownSourcePoint, n as MarkdownFactKind, o as parseMarkdownFacts, r as MarkdownFactsDocument, s as toMarkdownFactKind, t as MarkdownFact } from "./markdown-facts-DxElzSsp.mjs";
2
2
  export { MarkdownFact, MarkdownFactKind, MarkdownFactsDocument, MarkdownSourcePoint, MarkdownSourceRange, parseMarkdownFacts, toMarkdownFactKind };
@@ -1,3 +1,3 @@
1
- import { n as toMarkdownFactKind, t as parseMarkdownFacts } from "./markdown-facts-BmSmZmpB.mjs";
1
+ import { n as toMarkdownFactKind, t as parseMarkdownFacts } from "./markdown-facts-BFqXdPfN.mjs";
2
2
 
3
3
  export { parseMarkdownFacts, toMarkdownFactKind };
@@ -1,4 +1,4 @@
1
- import { r as MarkdownFactsDocument, t as MarkdownFact } from "./markdown-facts-f3kXnqXb.mjs";
1
+ import { r as MarkdownFactsDocument, t as MarkdownFact } from "./markdown-facts-DxElzSsp.mjs";
2
2
 
3
3
  //#region src/markdown-reading.d.ts
4
4
  type MarkdownAnnotationConfidence = 'strong' | 'weak';
@@ -48,6 +48,7 @@ interface MarkdownProjectionRule<Output = unknown> {
48
48
  }
49
49
  interface MarkdownReadingPlugin {
50
50
  id: string;
51
+ order?: number;
51
52
  annotationRules?: readonly MarkdownAnnotationRule[];
52
53
  projectionRules?: readonly MarkdownProjectionRule[];
53
54
  }
@@ -59,6 +60,13 @@ interface MarkdownFactSpan {
59
60
  start: number;
60
61
  end: number;
61
62
  }
63
+ declare class MarkdownReadingPluginRegistry {
64
+ private plugins;
65
+ constructor(plugins?: readonly MarkdownReadingPlugin[]);
66
+ register(plugin: MarkdownReadingPlugin): void;
67
+ resolve(): MarkdownReadingPlugin[];
68
+ }
69
+ declare function sortMarkdownReadingPlugins(plugins: readonly MarkdownReadingPlugin[]): MarkdownReadingPlugin[];
62
70
  declare function createMarkdownReadingDocument(sourceMarkdown: string, plugins?: readonly MarkdownReadingPlugin[]): MarkdownReadingDocument;
63
71
  declare function createMarkdownReadingDocumentFromFacts(factsDocument: MarkdownFactsDocument, plugins?: readonly MarkdownReadingPlugin[]): MarkdownReadingDocument;
64
72
  declare function getMarkdownFactSpan(fact: MarkdownFact): MarkdownFactSpan | undefined;
@@ -71,4 +79,4 @@ declare function getMarkdownAnnotationsForFact(annotations: readonly MarkdownAnn
71
79
  declare function getMarkdownAnnotation(annotations: readonly MarkdownAnnotation[], factId: string, kind: string): MarkdownAnnotation | undefined;
72
80
  declare function buildMarkdownParentMap(facts: readonly MarkdownFact[]): Map<string, MarkdownFact>;
73
81
  //#endregion
74
- export { getMarkdownFactSpan as _, MarkdownAnnotationRule as a, trimMarkdownSlice as b, MarkdownProjectionRule as c, MarkdownReadingPlugin as d, buildMarkdownParentMap as f, getMarkdownAnnotationsForFact as g, getMarkdownAnnotation as h, MarkdownAnnotationInput as i, MarkdownReadingDocument as l, createMarkdownReadingDocumentFromFacts as m, MarkdownAnnotationConfidence as n, MarkdownFactSpan as o, createMarkdownReadingDocument as p, MarkdownAnnotationContext as r, MarkdownProjectionContext as s, MarkdownAnnotation as t, MarkdownReadingLookup as u, getMarkdownHeadingEnd as v, getMarkdownHeadingFacts as y };
82
+ export { trimMarkdownSlice as S, getMarkdownAnnotationsForFact as _, MarkdownAnnotationRule as a, getMarkdownHeadingFacts as b, MarkdownProjectionRule as c, MarkdownReadingPlugin as d, MarkdownReadingPluginRegistry as f, getMarkdownAnnotation as g, createMarkdownReadingDocumentFromFacts as h, MarkdownAnnotationInput as i, MarkdownReadingDocument as l, createMarkdownReadingDocument as m, MarkdownAnnotationConfidence as n, MarkdownFactSpan as o, buildMarkdownParentMap as p, MarkdownAnnotationContext as r, MarkdownProjectionContext as s, MarkdownAnnotation as t, MarkdownReadingLookup as u, getMarkdownFactSpan as v, sortMarkdownReadingPlugins as x, getMarkdownHeadingEnd as y };
@@ -1,13 +1,32 @@
1
- import { t as parseMarkdownFacts } from "./markdown-facts-BmSmZmpB.mjs";
1
+ import { t as parseMarkdownFacts } from "./markdown-facts-BFqXdPfN.mjs";
2
2
 
3
3
  //#region src/markdown-reading.ts
4
+ var MarkdownReadingPluginRegistry = class {
5
+ plugins = /* @__PURE__ */ new Map();
6
+ constructor(plugins = []) {
7
+ for (const plugin of plugins) this.register(plugin);
8
+ }
9
+ register(plugin) {
10
+ this.plugins.set(plugin.id, plugin);
11
+ }
12
+ resolve() {
13
+ return sortMarkdownReadingPlugins(Array.from(this.plugins.values()));
14
+ }
15
+ };
16
+ function sortMarkdownReadingPlugins(plugins) {
17
+ return [...plugins].sort((left, right) => {
18
+ const orderDiff = (left.order ?? 0) - (right.order ?? 0);
19
+ return orderDiff === 0 ? left.id.localeCompare(right.id) : orderDiff;
20
+ });
21
+ }
4
22
  function createMarkdownReadingDocument(sourceMarkdown, plugins = []) {
5
23
  return createMarkdownReadingDocumentFromFacts(parseMarkdownFacts(sourceMarkdown), plugins);
6
24
  }
7
25
  function createMarkdownReadingDocumentFromFacts(factsDocument, plugins = []) {
26
+ const orderedPlugins = sortMarkdownReadingPlugins(plugins);
8
27
  const lookup = createLookup(factsDocument);
9
28
  const annotations = [];
10
- for (const rule of plugins.flatMap((plugin) => plugin.annotationRules ?? [])) {
29
+ for (const rule of orderedPlugins.flatMap((plugin) => plugin.annotationRules ?? [])) {
11
30
  const context = createAnnotationContext(lookup, annotations);
12
31
  for (const input of rule.annotate(context)) annotations.push({
13
32
  id: `${rule.id}:${annotations.length + 1}`,
@@ -21,7 +40,7 @@ function createMarkdownReadingDocumentFromFacts(factsDocument, plugins = []) {
21
40
  });
22
41
  }
23
42
  const projections = {};
24
- for (const rule of plugins.flatMap((plugin) => plugin.projectionRules ?? [])) {
43
+ for (const rule of orderedPlugins.flatMap((plugin) => plugin.projectionRules ?? [])) {
25
44
  const context = createProjectionContext(lookup, annotations, projections);
26
45
  const output = rule.project(context);
27
46
  if (output !== void 0) projections[rule.id] = output;
@@ -101,4 +120,4 @@ function createProjectionContext(lookup, annotations, projections) {
101
120
  }
102
121
 
103
122
  //#endregion
104
- export { getMarkdownAnnotationsForFact as a, getMarkdownHeadingFacts as c, getMarkdownAnnotation as i, trimMarkdownSlice as l, createMarkdownReadingDocument as n, getMarkdownFactSpan as o, createMarkdownReadingDocumentFromFacts as r, getMarkdownHeadingEnd as s, buildMarkdownParentMap as t };
123
+ export { getMarkdownAnnotation as a, getMarkdownHeadingEnd as c, trimMarkdownSlice as d, createMarkdownReadingDocumentFromFacts as i, getMarkdownHeadingFacts as l, buildMarkdownParentMap as n, getMarkdownAnnotationsForFact as o, createMarkdownReadingDocument as r, getMarkdownFactSpan as s, MarkdownReadingPluginRegistry as t, sortMarkdownReadingPlugins as u };
@@ -1,3 +1,3 @@
1
- import "./markdown-facts-f3kXnqXb.mjs";
2
- import { _ as getMarkdownFactSpan, a as MarkdownAnnotationRule, b as trimMarkdownSlice, c as MarkdownProjectionRule, d as MarkdownReadingPlugin, f as buildMarkdownParentMap, g as getMarkdownAnnotationsForFact, h as getMarkdownAnnotation, i as MarkdownAnnotationInput, l as MarkdownReadingDocument, m as createMarkdownReadingDocumentFromFacts, n as MarkdownAnnotationConfidence, o as MarkdownFactSpan, p as createMarkdownReadingDocument, r as MarkdownAnnotationContext, s as MarkdownProjectionContext, t as MarkdownAnnotation, u as MarkdownReadingLookup, v as getMarkdownHeadingEnd, y as getMarkdownHeadingFacts } from "./markdown-reading-D36W693c.mjs";
3
- export { MarkdownAnnotation, MarkdownAnnotationConfidence, MarkdownAnnotationContext, MarkdownAnnotationInput, MarkdownAnnotationRule, MarkdownFactSpan, MarkdownProjectionContext, MarkdownProjectionRule, MarkdownReadingDocument, MarkdownReadingLookup, MarkdownReadingPlugin, buildMarkdownParentMap, createMarkdownReadingDocument, createMarkdownReadingDocumentFromFacts, getMarkdownAnnotation, getMarkdownAnnotationsForFact, getMarkdownFactSpan, getMarkdownHeadingEnd, getMarkdownHeadingFacts, trimMarkdownSlice };
1
+ import "./markdown-facts-DxElzSsp.mjs";
2
+ import { S as trimMarkdownSlice, _ as getMarkdownAnnotationsForFact, a as MarkdownAnnotationRule, b as getMarkdownHeadingFacts, c as MarkdownProjectionRule, d as MarkdownReadingPlugin, f as MarkdownReadingPluginRegistry, g as getMarkdownAnnotation, h as createMarkdownReadingDocumentFromFacts, i as MarkdownAnnotationInput, l as MarkdownReadingDocument, m as createMarkdownReadingDocument, n as MarkdownAnnotationConfidence, o as MarkdownFactSpan, p as buildMarkdownParentMap, r as MarkdownAnnotationContext, s as MarkdownProjectionContext, t as MarkdownAnnotation, u as MarkdownReadingLookup, v as getMarkdownFactSpan, x as sortMarkdownReadingPlugins, y as getMarkdownHeadingEnd } from "./markdown-reading-BC6uFgx0.mjs";
3
+ export { MarkdownAnnotation, MarkdownAnnotationConfidence, MarkdownAnnotationContext, MarkdownAnnotationInput, MarkdownAnnotationRule, MarkdownFactSpan, MarkdownProjectionContext, MarkdownProjectionRule, MarkdownReadingDocument, MarkdownReadingLookup, MarkdownReadingPlugin, MarkdownReadingPluginRegistry, buildMarkdownParentMap, createMarkdownReadingDocument, createMarkdownReadingDocumentFromFacts, getMarkdownAnnotation, getMarkdownAnnotationsForFact, getMarkdownFactSpan, getMarkdownHeadingEnd, getMarkdownHeadingFacts, sortMarkdownReadingPlugins, trimMarkdownSlice };
@@ -1,4 +1,4 @@
1
- import "./markdown-facts-BmSmZmpB.mjs";
2
- import { a as getMarkdownAnnotationsForFact, c as getMarkdownHeadingFacts, i as getMarkdownAnnotation, l as trimMarkdownSlice, n as createMarkdownReadingDocument, o as getMarkdownFactSpan, r as createMarkdownReadingDocumentFromFacts, s as getMarkdownHeadingEnd, t as buildMarkdownParentMap } from "./markdown-reading-CrchEfoW.mjs";
1
+ import "./markdown-facts-BFqXdPfN.mjs";
2
+ 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-CsL1q84q.mjs";
3
3
 
4
- export { buildMarkdownParentMap, createMarkdownReadingDocument, createMarkdownReadingDocumentFromFacts, getMarkdownAnnotation, getMarkdownAnnotationsForFact, getMarkdownFactSpan, getMarkdownHeadingEnd, getMarkdownHeadingFacts, trimMarkdownSlice };
4
+ export { MarkdownReadingPluginRegistry, buildMarkdownParentMap, createMarkdownReadingDocument, createMarkdownReadingDocumentFromFacts, getMarkdownAnnotation, getMarkdownAnnotationsForFact, getMarkdownFactSpan, getMarkdownHeadingEnd, getMarkdownHeadingFacts, sortMarkdownReadingPlugins, trimMarkdownSlice };
@@ -1,4 +1,4 @@
1
- import { x as SoundId } from "./sounds-B0sH3QwE.mjs";
1
+ import { x as SoundId } from "./sounds-BORGLPIt.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/terminal-control.d.ts
@@ -54,18 +54,18 @@ declare function terminalNotificationEventToPublishInput(input: {
54
54
  //#endregion
55
55
  //#region src/notifications.d.ts
56
56
  declare const NOTIFICATION_SOUND_VALUES: readonly ["silent", "soft", "clear", "pulse"];
57
- declare const NotificationSoundSchema: z.ZodEffects<z.ZodUnion<[z.ZodLiteral<"silent">, z.ZodEnum<["builtin:Basso", "builtin:Blow", "builtin:Bottle", "builtin:Frog", "builtin:Funk", "builtin:Glass", "builtin:Hero", "builtin:Morse", "builtin:Ping", "builtin:Pop", "builtin:Purr", "builtin:Sosumi", "builtin:Submarine", "builtin:Tink"]>, z.ZodType<`custom:${string}`, z.ZodTypeDef, `custom:${string}`>]>, "silent" | "builtin:Tink" | "builtin:Blow" | "builtin:Basso" | "builtin:Bottle" | "builtin:Frog" | "builtin:Funk" | "builtin:Glass" | "builtin:Hero" | "builtin:Morse" | "builtin:Ping" | "builtin:Pop" | "builtin:Purr" | "builtin:Sosumi" | "builtin:Submarine" | `custom:${string}`, unknown>;
57
+ declare const NotificationSoundSchema: z.ZodEffects<z.ZodUnion<[z.ZodLiteral<"silent">, z.ZodEnum<["builtin:Basso", "builtin:Blow", "builtin:Bottle", "builtin:Frog", "builtin:Funk", "builtin:Glass", "builtin:Hero", "builtin:Morse", "builtin:Ping", "builtin:Pop", "builtin:Purr", "builtin:Sosumi", "builtin:Submarine", "builtin:Tink"]>, z.ZodType<`custom:${string}`, z.ZodTypeDef, `custom:${string}`>]>, "silent" | "builtin:Basso" | "builtin:Blow" | "builtin:Bottle" | "builtin:Frog" | "builtin:Funk" | "builtin:Glass" | "builtin:Hero" | "builtin:Morse" | "builtin:Ping" | "builtin:Pop" | "builtin:Purr" | "builtin:Sosumi" | "builtin:Submarine" | "builtin:Tink" | `custom:${string}`, unknown>;
58
58
  type NotificationSound = SoundId;
59
59
  declare const NOTIFICATION_SOUND_OPTIONS: readonly {
60
60
  id: NotificationSound;
61
61
  label: string;
62
62
  }[];
63
63
  declare const NotificationSettingsSchema: z.ZodObject<{
64
- sound: z.ZodDefault<z.ZodEffects<z.ZodUnion<[z.ZodLiteral<"silent">, z.ZodEnum<["builtin:Basso", "builtin:Blow", "builtin:Bottle", "builtin:Frog", "builtin:Funk", "builtin:Glass", "builtin:Hero", "builtin:Morse", "builtin:Ping", "builtin:Pop", "builtin:Purr", "builtin:Sosumi", "builtin:Submarine", "builtin:Tink"]>, z.ZodType<`custom:${string}`, z.ZodTypeDef, `custom:${string}`>]>, "silent" | "builtin:Tink" | "builtin:Blow" | "builtin:Basso" | "builtin:Bottle" | "builtin:Frog" | "builtin:Funk" | "builtin:Glass" | "builtin:Hero" | "builtin:Morse" | "builtin:Ping" | "builtin:Pop" | "builtin:Purr" | "builtin:Sosumi" | "builtin:Submarine" | `custom:${string}`, unknown>>;
64
+ sound: z.ZodDefault<z.ZodEffects<z.ZodUnion<[z.ZodLiteral<"silent">, z.ZodEnum<["builtin:Basso", "builtin:Blow", "builtin:Bottle", "builtin:Frog", "builtin:Funk", "builtin:Glass", "builtin:Hero", "builtin:Morse", "builtin:Ping", "builtin:Pop", "builtin:Purr", "builtin:Sosumi", "builtin:Submarine", "builtin:Tink"]>, z.ZodType<`custom:${string}`, z.ZodTypeDef, `custom:${string}`>]>, "silent" | "builtin:Basso" | "builtin:Blow" | "builtin:Bottle" | "builtin:Frog" | "builtin:Funk" | "builtin:Glass" | "builtin:Hero" | "builtin:Morse" | "builtin:Ping" | "builtin:Pop" | "builtin:Purr" | "builtin:Sosumi" | "builtin:Submarine" | "builtin:Tink" | `custom:${string}`, unknown>>;
65
65
  volume: z.ZodDefault<z.ZodNumber>;
66
66
  systemNotificationsEnabled: z.ZodDefault<z.ZodBoolean>;
67
67
  }, "strip", z.ZodTypeAny, {
68
- sound: "silent" | "builtin:Tink" | "builtin:Blow" | "builtin:Basso" | "builtin:Bottle" | "builtin:Frog" | "builtin:Funk" | "builtin:Glass" | "builtin:Hero" | "builtin:Morse" | "builtin:Ping" | "builtin:Pop" | "builtin:Purr" | "builtin:Sosumi" | "builtin:Submarine" | `custom:${string}`;
68
+ sound: "silent" | "builtin:Basso" | "builtin:Blow" | "builtin:Bottle" | "builtin:Frog" | "builtin:Funk" | "builtin:Glass" | "builtin:Hero" | "builtin:Morse" | "builtin:Ping" | "builtin:Pop" | "builtin:Purr" | "builtin:Sosumi" | "builtin:Submarine" | "builtin:Tink" | `custom:${string}`;
69
69
  volume: number;
70
70
  systemNotificationsEnabled: boolean;
71
71
  }, {
@@ -325,7 +325,6 @@ declare const NotificationPublishInputSchema: z.ZodObject<{
325
325
  groupId: string;
326
326
  title?: string | undefined;
327
327
  };
328
- createdAt?: number | undefined;
329
328
  body?: string | undefined;
330
329
  actions?: ({
331
330
  type: "terminal.focus";
@@ -341,6 +340,7 @@ declare const NotificationPublishInputSchema: z.ZodObject<{
341
340
  label?: string | undefined;
342
341
  })[] | undefined;
343
342
  level?: "info" | "success" | "warning" | "error" | undefined;
343
+ createdAt?: number | undefined;
344
344
  }>;
345
345
  type NotificationPublishInput = z.infer<typeof NotificationPublishInputSchema>;
346
346
  declare const NotificationRecordSchema: z.ZodObject<{
@@ -446,8 +446,6 @@ declare const NotificationRecordSchema: z.ZodObject<{
446
446
  createdAt: z.ZodNumber;
447
447
  groupKey: z.ZodString;
448
448
  }, "strip", z.ZodTypeAny, {
449
- id: string;
450
- createdAt: number;
451
449
  title: string;
452
450
  body: string;
453
451
  source: {
@@ -481,10 +479,10 @@ declare const NotificationRecordSchema: z.ZodObject<{
481
479
  };
482
480
  })[];
483
481
  level: "info" | "success" | "warning" | "error";
482
+ createdAt: number;
483
+ id: string;
484
484
  groupKey: string;
485
485
  }, {
486
- id: string;
487
- createdAt: number;
488
486
  title: string;
489
487
  source: {
490
488
  type: "terminal";
@@ -503,6 +501,8 @@ declare const NotificationRecordSchema: z.ZodObject<{
503
501
  groupId: string;
504
502
  title?: string | undefined;
505
503
  };
504
+ createdAt: number;
505
+ id: string;
506
506
  groupKey: string;
507
507
  body?: string | undefined;
508
508
  actions?: ({
@@ -1,5 +1,5 @@
1
- import { g as SoundVolumeSchema, m as SoundConfigIdSchema, u as DEFAULT_NOTIFICATION_SOUND_ID } from "./sounds-BzNKMW05.mjs";
2
- import { t as TerminalControlParser } from "./terminal-control-Bxois59k.mjs";
1
+ import { g as SoundVolumeSchema, m as SoundConfigIdSchema, u as DEFAULT_NOTIFICATION_SOUND_ID } from "./sounds-Ctm3QEtf.mjs";
2
+ import { t as TerminalControlParser } from "./terminal-control-CMkG-o9C.mjs";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/notifications.ts
@@ -1,3 +1,3 @@
1
- import "./sounds-B0sH3QwE.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-CCV2bgWG.mjs";
1
+ import "./sounds-BORGLPIt.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-CbKmEdCU.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,5 +1,5 @@
1
- import "./sounds-BzNKMW05.mjs";
2
- import { n as terminalNotificationEventToPublishInput, t as TerminalControlParser } from "./terminal-control-Bxois59k.mjs";
3
- import { a as NotificationPublishInputSchema, c as NotificationSoundSchema, d as aggregateNotifications, f as getNotificationAggregateKey, 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-fD-V5hyP.mjs";
1
+ import "./sounds-Ctm3QEtf.mjs";
2
+ import { n as terminalNotificationEventToPublishInput, t as TerminalControlParser } from "./terminal-control-CMkG-o9C.mjs";
3
+ import { a as NotificationPublishInputSchema, c as NotificationSoundSchema, d as aggregateNotifications, f as getNotificationAggregateKey, 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-DXOoOJ3m.mjs";
4
4
 
5
5
  export { NOTIFICATION_SOUND_OPTIONS, NOTIFICATION_SOUND_VALUES, NotificationActionSchema, NotificationGroupKeySchema, NotificationPublishInputSchema, NotificationRecordSchema, NotificationSettingsSchema, NotificationSoundSchema, NotificationSourceSchema, TerminalControlParser, TerminalNotificationParser, aggregateNotifications, getNotificationAggregateKey, getNotificationGroupKey, getNotificationGroupLabel, groupNotifications, terminalNotificationEventToPublishInput };
@@ -1,5 +1,5 @@
1
- import { r as MarkdownFactsDocument } from "./markdown-facts-f3kXnqXb.mjs";
2
- import { a as MarkdownAnnotationRule, d as MarkdownReadingPlugin, l as MarkdownReadingDocument, n as MarkdownAnnotationConfidence, t as MarkdownAnnotation } from "./markdown-reading-D36W693c.mjs";
1
+ import { r as MarkdownFactsDocument } from "./markdown-facts-DxElzSsp.mjs";
2
+ import { a as MarkdownAnnotationRule, d as MarkdownReadingPlugin, l as MarkdownReadingDocument, n as MarkdownAnnotationConfidence, t as MarkdownAnnotation } from "./markdown-reading-BC6uFgx0.mjs";
3
3
 
4
4
  //#region src/openspec-annotations.d.ts
5
5
  type OpenSpecSemanticKind = 'document-title' | 'purpose-section' | 'requirements-section' | 'requirement' | 'scenario' | 'scenario-step' | 'keyword';
@@ -1,5 +1,5 @@
1
- import { t as parseMarkdownFacts } from "./markdown-facts-BmSmZmpB.mjs";
2
- import { c as getMarkdownHeadingFacts, o as getMarkdownFactSpan, r as createMarkdownReadingDocumentFromFacts, s as getMarkdownHeadingEnd } from "./markdown-reading-CrchEfoW.mjs";
1
+ import { t as parseMarkdownFacts } from "./markdown-facts-BFqXdPfN.mjs";
2
+ import { c as getMarkdownHeadingEnd, i as createMarkdownReadingDocumentFromFacts, l as getMarkdownHeadingFacts, s as getMarkdownFactSpan } from "./markdown-reading-CsL1q84q.mjs";
3
3
 
4
4
  //#region src/openspec-annotations.ts
5
5
  const OPEN_SPEC_ANNOTATION_RULES = {
@@ -1,4 +1,4 @@
1
- import "./markdown-facts-f3kXnqXb.mjs";
2
- import "./markdown-reading-D36W693c.mjs";
3
- import { a as OpenSpecKeyword, c as OpenSpecScenarioStepKeyword, d as annotateOpenSpecMarkdown, f as builtinOpenSpecReadingPlugin, h as openSpecAnnotationRules, i as OpenSpecAnnotationMetadata, l as OpenSpecSemanticKind, m as getOpenSpecAnnotationsForFact, n as OpenSpecAnnotation, o as OpenSpecKeywordRole, p as getOpenSpecAnnotation, r as OpenSpecAnnotationConfidence, s as OpenSpecRequirementKeyword, t as AnnotatedOpenSpecDocument, u as annotateOpenSpecFacts } from "./openspec-annotations-CJmYcfAu.mjs";
1
+ import "./markdown-facts-DxElzSsp.mjs";
2
+ import "./markdown-reading-BC6uFgx0.mjs";
3
+ import { a as OpenSpecKeyword, c as OpenSpecScenarioStepKeyword, d as annotateOpenSpecMarkdown, f as builtinOpenSpecReadingPlugin, h as openSpecAnnotationRules, i as OpenSpecAnnotationMetadata, l as OpenSpecSemanticKind, m as getOpenSpecAnnotationsForFact, n as OpenSpecAnnotation, o as OpenSpecKeywordRole, p as getOpenSpecAnnotation, r as OpenSpecAnnotationConfidence, s as OpenSpecRequirementKeyword, t as AnnotatedOpenSpecDocument, u as annotateOpenSpecFacts } from "./openspec-annotations-DKP1Uuho.mjs";
4
4
  export { AnnotatedOpenSpecDocument, OpenSpecAnnotation, OpenSpecAnnotationConfidence, OpenSpecAnnotationMetadata, OpenSpecKeyword, OpenSpecKeywordRole, OpenSpecRequirementKeyword, OpenSpecScenarioStepKeyword, OpenSpecSemanticKind, annotateOpenSpecFacts, annotateOpenSpecMarkdown, builtinOpenSpecReadingPlugin, getOpenSpecAnnotation, getOpenSpecAnnotationsForFact, openSpecAnnotationRules };
@@ -1,5 +1,5 @@
1
- import "./markdown-facts-BmSmZmpB.mjs";
2
- import "./markdown-reading-CrchEfoW.mjs";
3
- import { a as getOpenSpecAnnotationsForFact, i as getOpenSpecAnnotation, n as annotateOpenSpecMarkdown, o as openSpecAnnotationRules, r as builtinOpenSpecReadingPlugin, t as annotateOpenSpecFacts } from "./openspec-annotations-BMy9nWUe.mjs";
1
+ import "./markdown-facts-BFqXdPfN.mjs";
2
+ import "./markdown-reading-CsL1q84q.mjs";
3
+ import { a as getOpenSpecAnnotationsForFact, i as getOpenSpecAnnotation, n as annotateOpenSpecMarkdown, o as openSpecAnnotationRules, r as builtinOpenSpecReadingPlugin, t as annotateOpenSpecFacts } from "./openspec-annotations-D_xQqQOB.mjs";
4
4
 
5
5
  export { annotateOpenSpecFacts, annotateOpenSpecMarkdown, builtinOpenSpecReadingPlugin, getOpenSpecAnnotation, getOpenSpecAnnotationsForFact, openSpecAnnotationRules };
@@ -0,0 +1,52 @@
1
+ import { g as Spec } from "./schemas-q7tGvvxx.mjs";
2
+ import { d as MarkdownReadingPlugin, l as MarkdownReadingDocument } from "./markdown-reading-BC6uFgx0.mjs";
3
+ import { n as OpenSpecAnnotation, t as AnnotatedOpenSpecDocument } from "./openspec-annotations-DKP1Uuho.mjs";
4
+
5
+ //#region src/openspec-projection.d.ts
6
+ declare const OPEN_SPEC_SPEC_PROJECTION_ID = "openspec.projection.spec.v2";
7
+ declare const OPEN_SPEC_READING_SECTIONS_PROJECTION_ID = "openspec.projection.reading-sections.v2";
8
+ type SpecSectionKind = 'overview' | 'requirements' | 'other';
9
+ interface OpenSpecProjectionOptions {
10
+ specId: string;
11
+ }
12
+ interface OpenSpecHeadingSection {
13
+ id: string;
14
+ title: string;
15
+ kind: SpecSectionKind;
16
+ factId: string;
17
+ start: number;
18
+ end: number;
19
+ }
20
+ interface OpenSpecRequirementBlock {
21
+ id: string;
22
+ title: string;
23
+ factId: string;
24
+ start: number;
25
+ end: number;
26
+ scenarios: OpenSpecScenarioBlock[];
27
+ }
28
+ interface OpenSpecScenarioBlock {
29
+ title: string;
30
+ factId: string;
31
+ start: number;
32
+ end: number;
33
+ }
34
+ interface OpenSpecReadingSectionsProjection {
35
+ sections: OpenSpecHeadingSection[];
36
+ requirements: OpenSpecRequirementBlock[];
37
+ }
38
+ interface ProjectedOpenSpecDocument extends MarkdownReadingDocument {
39
+ annotations: OpenSpecAnnotation[];
40
+ projections: MarkdownReadingDocument['projections'] & {
41
+ [OPEN_SPEC_SPEC_PROJECTION_ID]?: Spec;
42
+ [OPEN_SPEC_READING_SECTIONS_PROJECTION_ID]?: OpenSpecReadingSectionsProjection;
43
+ };
44
+ }
45
+ declare function createOpenSpecReadingPlugin(options: OpenSpecProjectionOptions): MarkdownReadingPlugin;
46
+ declare function parseOpenSpecMarkdownToSpec(specId: string, content: string): Spec;
47
+ declare function projectOpenSpecMarkdown(sourceMarkdown: string, options: OpenSpecProjectionOptions, plugins?: readonly MarkdownReadingPlugin[]): ProjectedOpenSpecDocument;
48
+ declare function projectAnnotatedOpenSpecToSpec(specId: string, document: AnnotatedOpenSpecDocument): Spec;
49
+ declare function getOpenSpecReadingSections(document: Pick<MarkdownReadingDocument, 'facts' | 'annotations' | 'sourceMarkdown'>): OpenSpecReadingSectionsProjection;
50
+ declare function getOpenSpecProjectionAnnotation(annotations: readonly OpenSpecAnnotation[], factId: string, kind: OpenSpecAnnotation['kind']): OpenSpecAnnotation | undefined;
51
+ //#endregion
52
+ export { OpenSpecReadingSectionsProjection as a, ProjectedOpenSpecDocument as c, getOpenSpecReadingSections as d, parseOpenSpecMarkdownToSpec as f, OpenSpecProjectionOptions as i, createOpenSpecReadingPlugin as l, projectOpenSpecMarkdown as m, OPEN_SPEC_SPEC_PROJECTION_ID as n, OpenSpecRequirementBlock as o, projectAnnotatedOpenSpecToSpec as p, OpenSpecHeadingSection as r, OpenSpecScenarioBlock as s, OPEN_SPEC_READING_SECTIONS_PROJECTION_ID as t, getOpenSpecProjectionAnnotation as u };
@@ -1,5 +1,5 @@
1
- import { c as getMarkdownHeadingFacts, l as trimMarkdownSlice, n as createMarkdownReadingDocument, o as getMarkdownFactSpan, s as getMarkdownHeadingEnd } from "./markdown-reading-CrchEfoW.mjs";
2
- import { r as builtinOpenSpecReadingPlugin } from "./openspec-annotations-BMy9nWUe.mjs";
1
+ import { c as getMarkdownHeadingEnd, d as trimMarkdownSlice, l as getMarkdownHeadingFacts, r as createMarkdownReadingDocument, s as getMarkdownFactSpan } from "./markdown-reading-CsL1q84q.mjs";
2
+ import { r as builtinOpenSpecReadingPlugin } from "./openspec-annotations-D_xQqQOB.mjs";
3
3
 
4
4
  //#region src/openspec-projection.ts
5
5
  const OPEN_SPEC_SPEC_PROJECTION_ID = "openspec.projection.spec.v2";
@@ -1,5 +1,6 @@
1
- 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-DmB448No.mjs";
2
- import "./markdown-facts-f3kXnqXb.mjs";
3
- import "./markdown-reading-D36W693c.mjs";
4
- import "./openspec-annotations-CJmYcfAu.mjs";
1
+ import "./schemas-q7tGvvxx.mjs";
2
+ import "./markdown-facts-DxElzSsp.mjs";
3
+ import "./markdown-reading-BC6uFgx0.mjs";
4
+ import "./openspec-annotations-DKP1Uuho.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-Co3CUAHe.mjs";
5
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,6 +1,6 @@
1
- import "./markdown-facts-BmSmZmpB.mjs";
2
- import "./markdown-reading-CrchEfoW.mjs";
3
- import "./openspec-annotations-BMy9nWUe.mjs";
4
- 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-DWqBxedv.mjs";
1
+ import "./markdown-facts-BFqXdPfN.mjs";
2
+ import "./markdown-reading-CsL1q84q.mjs";
3
+ import "./openspec-annotations-D_xQqQOB.mjs";
4
+ 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-DLGD1JFD.mjs";
5
5
 
6
6
  export { OPEN_SPEC_READING_SECTIONS_PROJECTION_ID, OPEN_SPEC_SPEC_PROJECTION_ID, createOpenSpecReadingPlugin, getOpenSpecProjectionAnnotation, getOpenSpecReadingSections, parseOpenSpecMarkdownToSpec, projectAnnotatedOpenSpecToSpec, projectOpenSpecMarkdown };
@@ -1,2 +1,2 @@
1
- import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-CkV9sq_j.mjs";
1
+ import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-BKUYCqwP.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-D4KLYRXQ.mjs";
1
+ import { n as toOpsxDisplayPath, t as VIRTUAL_PROJECT_DIRNAME } from "./opsx-display-path-BHEPZsJx.mjs";
2
2
 
3
3
  export { VIRTUAL_PROJECT_DIRNAME, toOpsxDisplayPath };