@openspecui/web 13.0.1 → 13.0.2

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 (71) hide show
  1. package/dist/assets/{App-C6nQouC6.js → App-BFiJJmOe.js} +107 -107
  2. package/dist/assets/App-CJAg_zBM.css +1 -0
  3. package/dist/assets/{main-CGJ5sQ3N.js → main-DP5AA7T8.js} +2 -2
  4. package/dist/assets/{trpc-Cq_wSpa5.js → trpc-CoFrOhYa.js} +1 -1
  5. package/dist/index.html +1 -1
  6. package/dist-ssg/client/.vite/ssr-manifest.json +29 -29
  7. package/dist-ssg/client/assets/CanvasRenderer-9Cqh3Omm.js +1 -0
  8. package/dist-ssg/client/assets/WebGLRenderer-BuKPvwwK.js +1 -0
  9. package/dist-ssg/client/assets/WebGPURenderer-D--aziy9.js +1 -0
  10. package/dist-ssg/client/assets/browserAll-B2xWksCP.js +1 -0
  11. package/dist-ssg/client/assets/{config-guide-presentation-DqNeQzUr.js → config-guide-presentation-BnPXaBWb.js} +1 -1
  12. package/dist-ssg/client/assets/dist--Ym0xKR0.js +1 -0
  13. package/dist-ssg/client/assets/{dist-CaeREplI.js → dist-B-VN_V_x.js} +1 -1
  14. package/dist-ssg/client/assets/{dist-CY1qnMaG.js → dist-BD-45k70.js} +1 -1
  15. package/dist-ssg/client/assets/{dist-DImGv92l.js → dist-BRAQcINV.js} +1 -1
  16. package/dist-ssg/client/assets/{dist-FrX9lO7v.js → dist-BY_UBuCJ.js} +1 -1
  17. package/dist-ssg/client/assets/{dist-Bbhzl31A.js → dist-BpGxtKw4.js} +1 -1
  18. package/dist-ssg/client/assets/{dist-DvFFLa-_.js → dist-CTLF_n4x.js} +1 -1
  19. package/dist-ssg/client/assets/dist-CWSG-_Cm.js +1 -0
  20. package/dist-ssg/client/assets/{dist-CdubN8-m.js → dist-CaJDVBYQ.js} +1 -1
  21. package/dist-ssg/client/assets/{dist-DvI6Bh6U.js → dist-CqGjG57_.js} +1 -1
  22. package/dist-ssg/client/assets/{dist-BD3jMQZ6.js → dist-UdCD0Xt7.js} +1 -1
  23. package/dist-ssg/client/assets/dist-yI5mAB5M.js +1 -0
  24. package/dist-ssg/client/assets/{ghostty-web-iJUDy0Q_.js → ghostty-web-B4UZWg1Q.js} +1 -1
  25. package/dist-ssg/client/assets/index--tFLAZQ-.css +1 -0
  26. package/dist-ssg/client/assets/{index.ssg-C1gQDtR3.js → index.ssg-DNgiMN3S.js} +19 -19
  27. package/dist-ssg/client/assets/{init-CXOzxy8a.js → init-DFr9qeU_.js} +1 -1
  28. package/dist-ssg/client/assets/{trpc-DeGTgf0N.js → trpc-DyWBkNL8.js} +1 -1
  29. package/dist-ssg/client/assets/webworkerAll-ChxVgXMo.js +1 -0
  30. package/dist-ssg/client/index.ssg.html +2 -2
  31. package/dist-ssg/server/assets/CanvasRenderer-VdoPCddE.js +3 -0
  32. package/dist-ssg/server/assets/WebGLRenderer-BGWO4Aaa.js +3 -0
  33. package/dist-ssg/server/assets/WebGPURenderer-BBiS4Qa7.js +3 -0
  34. package/dist-ssg/server/assets/{browserAll-C3aU2kkg.js → browserAll-MoEM-nXs.js} +2 -2
  35. package/dist-ssg/server/assets/{config-guide-presentation-BQdHuc5R.js → config-guide-presentation-Cji5XRfB.js} +1 -1
  36. package/dist-ssg/server/assets/{dist-uLS_wgVI.js → dist-0aQeTIoi.js} +1 -1
  37. package/dist-ssg/server/assets/{dist-CeAwBeY0.js → dist-3qCMKg-J.js} +1 -1
  38. package/dist-ssg/server/assets/{dist-DVq3OitZ.js → dist-BC_SFEy1.js} +1 -1
  39. package/dist-ssg/server/assets/{dist-C8tud7al.js → dist-Bje3KXXQ.js} +1 -1
  40. package/dist-ssg/server/assets/{dist-cd39lbM_.js → dist-BysPZ53t.js} +1 -1
  41. package/dist-ssg/server/assets/{dist-DoPtyXvU.js → dist-C8dQw205.js} +1 -1
  42. package/dist-ssg/server/assets/dist-CJQNYu8f.js +3 -0
  43. package/dist-ssg/server/assets/dist-Cby8evAB.js +3 -0
  44. package/dist-ssg/server/assets/{dist-BrgApT3v.js → dist-DBlIdFv8.js} +1 -1
  45. package/dist-ssg/server/assets/{dist-CYFz-Xe6.js → dist-DpiAsvsU.js} +1 -1
  46. package/dist-ssg/server/assets/dist-J8FQ60oq.js +3 -0
  47. package/dist-ssg/server/assets/{dist-BuA1hNQD.js → dist-KtEgkR36.js} +1 -1
  48. package/dist-ssg/server/assets/{entry-server-DOzQvxeU.js → entry-server-BqIqbfZo.js} +172 -42
  49. package/dist-ssg/server/assets/{init-Dw3wIW5D.js → init-D4SqIz1z.js} +1 -1
  50. package/dist-ssg/server/assets/trpc-ui6oSp6K.js +3 -0
  51. package/dist-ssg/server/assets/webworkerAll-V-joRC8L.js +4 -0
  52. package/dist-ssg/server/ssr-entry-manifest.json +24 -24
  53. package/package.json +3 -3
  54. package/dist/assets/App-CYwWbLgm.css +0 -1
  55. package/dist-ssg/client/assets/CanvasRenderer-Dxe-hfnN.js +0 -1
  56. package/dist-ssg/client/assets/WebGLRenderer-CUJXjtiP.js +0 -1
  57. package/dist-ssg/client/assets/WebGPURenderer-CZL-JNBq.js +0 -1
  58. package/dist-ssg/client/assets/browserAll-5wBADmKd.js +0 -1
  59. package/dist-ssg/client/assets/dist-9A8186dQ.js +0 -1
  60. package/dist-ssg/client/assets/dist-BMEQqWwb.js +0 -1
  61. package/dist-ssg/client/assets/dist-BTKdGHSA.js +0 -1
  62. package/dist-ssg/client/assets/index-CMfi0IZJ.css +0 -1
  63. package/dist-ssg/client/assets/webworkerAll-D2PWaP7M.js +0 -1
  64. package/dist-ssg/server/assets/CanvasRenderer-B1MUQY2W.js +0 -3
  65. package/dist-ssg/server/assets/WebGLRenderer-DIOoeqKv.js +0 -3
  66. package/dist-ssg/server/assets/WebGPURenderer-hzdCHpRg.js +0 -3
  67. package/dist-ssg/server/assets/dist-DQfK_0MA.js +0 -3
  68. package/dist-ssg/server/assets/dist-DhIAeIAf.js +0 -3
  69. package/dist-ssg/server/assets/dist-wVpQUanK.js +0 -3
  70. package/dist-ssg/server/assets/trpc-CE2cP14O.js +0 -3
  71. package/dist-ssg/server/assets/webworkerAll-CMJ1pR5p.js +0 -4
@@ -30912,7 +30912,7 @@ var NavController = class {
30912
30912
  this.storageKey = scopedStorageKey;
30913
30913
  this.rebindProjectScopedLayout(scopedStorageKey);
30914
30914
  }
30915
- const { trpcClient } = await import("./trpc-CE2cP14O.js");
30915
+ const { trpcClient } = await import("./trpc-ui6oSp6K.js");
30916
30916
  const remote = parsePersistedLayout(await trpcClient.kv.get.query({ key: this.storageKey }));
30917
30917
  if (remote) {
30918
30918
  if (remote.updatedAt > this.state.updatedAt) this.dispatch({
@@ -31055,7 +31055,7 @@ var NavController = class {
31055
31055
  this.cancelPersistTimer();
31056
31056
  this.persistTimer = setTimeout(() => {
31057
31057
  this.persistTimer = null;
31058
- import("./trpc-CE2cP14O.js").then(({ trpcClient }) => trpcClient.kv.set.mutate({
31058
+ import("./trpc-ui6oSp6K.js").then(({ trpcClient }) => trpcClient.kv.set.mutate({
31059
31059
  key: this.storageKey,
31060
31060
  value: {
31061
31061
  mainTabs: this.state.mainTabs,
@@ -38947,7 +38947,7 @@ function F$1(t) {
38947
38947
  //#endregion
38948
38948
  //#region ../core/src/cli-contracts/workflow.ts
38949
38949
  /**
38950
- * Orthogonal intents (updated 2026-09-12 Asia/Shanghai):
38950
+ * Orthogonal intents (updated 2026-09-26 Asia/Shanghai):
38951
38951
  * 1. Model camelCase workflow JSON independently from Store-family JSON.
38952
38952
  * 2. Preserve strict, archived, and bulk Validate plus Archive outcomes, including failure payloads.
38953
38953
  * 3. Preserve multiline requirement bodies from `show --json`.
@@ -38969,14 +38969,20 @@ function F$1(t) {
38969
38969
  * array as additive optional facts (absent when empty, never null): an entry carrying
38970
38970
  * `nested` is a namespace folder, not an actionable change; `code` stays an open string
38971
38971
  * because an in-window patch may add codes beyond `nested_change_directory`.
38972
+ * 10. Type the OpenSpec 1.13.2 Apply tracking-evidence members (`taskTrackingConfigured`
38973
+ * boolean, `unavailableTrackingFiles` `{path, reason}[]`) as additive optional success
38974
+ * members: 1.13.2 always emits the boolean while 1.13.0/1.13.1 (still admitted) emit
38975
+ * neither, so absence stays "unknown" and is never synthesized; the array is
38976
+ * absent-when-everything-is-readable and both stay verbatim evidence.
38972
38977
  *
38973
38978
  * Original request (2026-07-15): "为不同命令建立强类型适配器,不实现平行解析规则。"
38974
38979
  * Original request (2026-07-26): "展开全面的接口升级和内核升级和测试升级。"
38975
38980
  * Original request (2026-08-15): "v9的适配需要同时适配 1.8和1.9。"
38976
38981
  * Original request (2026-08-28): "直接将 0.10.0 和 0.11.0 一起适配,然后发布 v11。"
38977
- * Original request (2026-09-03): "Openspec 1.12.0 刚刚放出来,你更新一下,调查变更内容,然后开始规划适配工作,我们将用标准工作流worktree来推进"
38982
+ * Original request (2026-09-03): "Openspec 1.12.0 刚刚放出来,你更新一下,调查变更内容,然后开始规划适配工作,我们将用标准工作流worktree来推进。"
38978
38983
  * Original request (2026-09-12): "Openspec 1.13.0 释放了,你更新一下,调查变更内容,然后开始规划适配工作,我们将用标准工作流worktree来推进。让 codex 参与。"
38979
38984
  * Original request (2026-09-17): "Openspec 1.13.1 释放了…" — change-list nested/warnings projection (update-openspec-cli-1131 Slice 2).
38985
+ * Original request (2026-09-26): "Openspec 1.13.2 释放了…" — Apply tracking-evidence decode contract (update-openspec-cli-1132 Slice 2).
38980
38986
  */
38981
38987
  /**
38982
38988
  * One top-level change-list hygiene warning (OpenSpec 1.13.1 `list --json`).
@@ -39172,6 +39178,11 @@ unionType([objectType({
39172
39178
  missingArtifacts: arrayType(stringType()).optional(),
39173
39179
  missingPrerequisites: arrayType(stringType()).optional(),
39174
39180
  warnings: arrayType(stringType()).optional(),
39181
+ taskTrackingConfigured: booleanType().optional(),
39182
+ unavailableTrackingFiles: arrayType(objectType({
39183
+ path: stringType(),
39184
+ reason: stringType()
39185
+ })).optional(),
39175
39186
  instruction: stringType(),
39176
39187
  references: arrayType(CliReferenceIndexEntrySchema).optional(),
39177
39188
  context: stringType().optional(),
@@ -43399,7 +43410,7 @@ function createApplyInstructionProgress(input, trackedTaskProgress) {
43399
43410
  //#endregion
43400
43411
  //#region ../core/src/opsx-types.ts
43401
43412
  /**
43402
- * Orthogonal intents (updated 2026-09-12 Asia/Shanghai):
43413
+ * Orthogonal intents (updated 2026-09-26 Asia/Shanghai):
43403
43414
  * 1. Publish runtime schemas for final Projection Work payloads, including transformed Apply progress.
43404
43415
  * 2. Keep isPlanningComplete as the authoritative planning fact over any local tracked alias.
43405
43416
  * 3. Carry CLI status evidence, diagnostics, and per-artifact requires as typed facts.
@@ -43408,10 +43419,18 @@ function createApplyInstructionProgress(input, trackedTaskProgress) {
43408
43419
  * 6. Project the OpenSpec 1.13 Apply `warnings` and `missingPrerequisites` fields through the
43409
43420
  * input and final projection schemas verbatim: optional everywhere, never defaulted to
43410
43421
  * empty arrays, and never allowed to alter state/progress/tasks semantics.
43422
+ * 7. Project the OpenSpec 1.13.2 Apply tracking-evidence members (`taskTrackingConfigured`,
43423
+ * `unavailableTrackingFiles`) the same way: absent-when-upstream-absent (never a
43424
+ * synthesized `false` or empty array), verbatim evidence, never apply gating.
43425
+ * 8. Keep `isGlobPattern` a verbatim parity port of the pinned CLI's artifact-graph
43426
+ * recognition (OpenSpec 1.13.2, references/openspec/src/core/artifact-graph/outputs.ts):
43427
+ * original wildcards plus extglob groups and brace expansions after POSIX separator
43428
+ * normalization — watcher-granularity only, so dependency watching never forks upstream.
43411
43429
  *
43412
43430
  * Original request (2026-07-15): "为内核载荷建立强类型。"
43413
43431
  * Original request (2026-08-15): "v9的适配需要同时适配 1.8和1.9。"
43414
43432
  * Original request (2026-09-12): "Openspec 1.13.0 释放了,你更新一下,调查变更内容,然后开始规划适配工作,我们将用标准工作流worktree来推进。让 codex 参与。"
43433
+ * Original request (2026-09-26): "Openspec 1.13.2 释放了…" — tracking-evidence projection + glob-recognition watcher parity (update-openspec-cli-1132 Slice 2).
43415
43434
  */
43416
43435
  /** Runtime schema for one JSON value retained from a CLI Status stdout document. */
43417
43436
  var OpsxCliJsonValueSchema = lazyType(() => unionType([
@@ -43507,6 +43526,11 @@ var ApplyInstructionsInputSchema = objectType({
43507
43526
  missingArtifacts: arrayType(stringType()).optional(),
43508
43527
  missingPrerequisites: arrayType(stringType()).optional(),
43509
43528
  warnings: arrayType(stringType()).optional(),
43529
+ taskTrackingConfigured: booleanType().optional(),
43530
+ unavailableTrackingFiles: arrayType(objectType({
43531
+ path: stringType(),
43532
+ reason: stringType()
43533
+ })).optional(),
43510
43534
  instruction: stringType(),
43511
43535
  references: arrayType(CliReferenceIndexEntrySchema).optional(),
43512
43536
  context: stringType().optional(),
@@ -43558,6 +43582,11 @@ var ApplyInstructionsProjectionSchema = objectType({
43558
43582
  missingArtifacts: arrayType(stringType()).optional(),
43559
43583
  missingPrerequisites: arrayType(stringType()).optional(),
43560
43584
  warnings: arrayType(stringType()).optional(),
43585
+ taskTrackingConfigured: booleanType().optional(),
43586
+ unavailableTrackingFiles: arrayType(objectType({
43587
+ path: stringType(),
43588
+ reason: stringType()
43589
+ })).optional(),
43561
43590
  instruction: stringType(),
43562
43591
  references: arrayType(CliReferenceIndexEntrySchema).optional(),
43563
43592
  context: stringType().optional(),
@@ -71396,7 +71425,7 @@ var browserExt = {
71396
71425
  },
71397
71426
  test: () => true,
71398
71427
  load: async () => {
71399
- await import("./browserAll-C3aU2kkg.js");
71428
+ await import("./browserAll-MoEM-nXs.js");
71400
71429
  }
71401
71430
  };
71402
71431
  //#endregion
@@ -71409,7 +71438,7 @@ var webworkerExt = {
71409
71438
  },
71410
71439
  test: () => typeof self !== "undefined" && self.WorkerGlobalScope !== void 0,
71411
71440
  load: async () => {
71412
- await import("./webworkerAll-CMJ1pR5p.js");
71441
+ await import("./webworkerAll-V-joRC8L.js");
71413
71442
  }
71414
71443
  };
71415
71444
  //#endregion
@@ -74003,7 +74032,7 @@ async function autoDetectRenderer(options) {
74003
74032
  for (let i = 0; i < preferredOrder.length; i++) {
74004
74033
  const rendererType = preferredOrder[i];
74005
74034
  if (rendererType === "webgpu" && await isWebGPUSupported()) {
74006
- const { WebGPURenderer } = await import("./WebGPURenderer-hzdCHpRg.js");
74035
+ const { WebGPURenderer } = await import("./WebGPURenderer-BBiS4Qa7.js");
74007
74036
  RendererClass = WebGPURenderer;
74008
74037
  finalOptions = {
74009
74038
  ...options,
@@ -74011,7 +74040,7 @@ async function autoDetectRenderer(options) {
74011
74040
  };
74012
74041
  break;
74013
74042
  } else if (rendererType === "webgl" && isWebGLSupported(options.failIfMajorPerformanceCaveat ?? AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat)) {
74014
- const { WebGLRenderer } = await import("./WebGLRenderer-DIOoeqKv.js");
74043
+ const { WebGLRenderer } = await import("./WebGLRenderer-BGWO4Aaa.js");
74015
74044
  RendererClass = WebGLRenderer;
74016
74045
  finalOptions = {
74017
74046
  ...options,
@@ -74019,7 +74048,7 @@ async function autoDetectRenderer(options) {
74019
74048
  };
74020
74049
  break;
74021
74050
  } else if (rendererType === "canvas") {
74022
- const { CanvasRenderer } = await import("./CanvasRenderer-B1MUQY2W.js");
74051
+ const { CanvasRenderer } = await import("./CanvasRenderer-VdoPCddE.js");
74023
74052
  RendererClass = CanvasRenderer;
74024
74053
  finalOptions = {
74025
74054
  ...options,
@@ -97768,7 +97797,7 @@ var TerminalController = class {
97768
97797
  if (this.configPersistTimer) clearTimeout(this.configPersistTimer);
97769
97798
  this.configPersistTimer = setTimeout(() => {
97770
97799
  this.configPersistTimer = null;
97771
- import("./trpc-CE2cP14O.js").then(({ trpcClient }) => {
97800
+ import("./trpc-ui6oSp6K.js").then(({ trpcClient }) => {
97772
97801
  trpcClient.config.update.mutate({ terminal: { fontSize: this.config.fontSize } });
97773
97802
  }).catch(() => {});
97774
97803
  }, CONFIG_PERSIST_DEBOUNCE);
@@ -108329,7 +108358,7 @@ var languages = [
108329
108358
  name: "CSS",
108330
108359
  extensions: ["css"],
108331
108360
  load() {
108332
- return import("./dist-wVpQUanK.js").then((m) => m.css());
108361
+ return import("./dist-Cby8evAB.js").then((m) => m.css());
108333
108362
  }
108334
108363
  }),
108335
108364
  /* @__PURE__ */ LanguageDescription.of({
@@ -108349,7 +108378,7 @@ var languages = [
108349
108378
  "hbs"
108350
108379
  ],
108351
108380
  load() {
108352
- return import("./dist-CYFz-Xe6.js").then((m) => m.html());
108381
+ return import("./dist-DpiAsvsU.js").then((m) => m.html());
108353
108382
  }
108354
108383
  }),
108355
108384
  /* @__PURE__ */ LanguageDescription.of({
@@ -108383,7 +108412,7 @@ var languages = [
108383
108412
  "jinja2"
108384
108413
  ],
108385
108414
  load() {
108386
- return import("./dist-DoPtyXvU.js").then((m) => m.jinja());
108415
+ return import("./dist-C8dQw205.js").then((m) => m.jinja());
108387
108416
  }
108388
108417
  }),
108389
108418
  /* @__PURE__ */ LanguageDescription.of({
@@ -108391,7 +108420,7 @@ var languages = [
108391
108420
  alias: ["json5"],
108392
108421
  extensions: ["json", "map"],
108393
108422
  load() {
108394
- return import("./dist-DhIAeIAf.js").then((m) => m.json());
108423
+ return import("./dist-CJQNYu8f.js").then((m) => m.json());
108395
108424
  }
108396
108425
  }),
108397
108426
  /* @__PURE__ */ LanguageDescription.of({
@@ -108405,14 +108434,14 @@ var languages = [
108405
108434
  name: "LESS",
108406
108435
  extensions: ["less"],
108407
108436
  load() {
108408
- return import("./dist-CeAwBeY0.js").then((m) => m.less());
108437
+ return import("./dist-3qCMKg-J.js").then((m) => m.less());
108409
108438
  }
108410
108439
  }),
108411
108440
  /* @__PURE__ */ LanguageDescription.of({
108412
108441
  name: "Liquid",
108413
108442
  extensions: ["liquid"],
108414
108443
  load() {
108415
- return import("./dist-C8tud7al.js").then((m) => m.liquid());
108444
+ return import("./dist-Bje3KXXQ.js").then((m) => m.liquid());
108416
108445
  }
108417
108446
  }),
108418
108447
  /* @__PURE__ */ LanguageDescription.of({
@@ -108429,7 +108458,7 @@ var languages = [
108429
108458
  "mkd"
108430
108459
  ],
108431
108460
  load() {
108432
- return import("./dist-DVq3OitZ.js").then((m) => m.markdown());
108461
+ return import("./dist-BC_SFEy1.js").then((m) => m.markdown());
108433
108462
  }
108434
108463
  }),
108435
108464
  /* @__PURE__ */ LanguageDescription.of({
@@ -108455,7 +108484,7 @@ var languages = [
108455
108484
  "phtml"
108456
108485
  ],
108457
108486
  load() {
108458
- return import("./dist-BuA1hNQD.js").then((m) => m.php());
108487
+ return import("./dist-KtEgkR36.js").then((m) => m.php());
108459
108488
  }
108460
108489
  }),
108461
108490
  /* @__PURE__ */ LanguageDescription.of({
@@ -108495,14 +108524,14 @@ var languages = [
108495
108524
  name: "Sass",
108496
108525
  extensions: ["sass"],
108497
108526
  load() {
108498
- return import("./dist-uLS_wgVI.js").then((m) => m.sass({ indented: true }));
108527
+ return import("./dist-0aQeTIoi.js").then((m) => m.sass({ indented: true }));
108499
108528
  }
108500
108529
  }),
108501
108530
  /* @__PURE__ */ LanguageDescription.of({
108502
108531
  name: "SCSS",
108503
108532
  extensions: ["scss"],
108504
108533
  load() {
108505
- return import("./dist-uLS_wgVI.js").then((m) => m.sass());
108534
+ return import("./dist-0aQeTIoi.js").then((m) => m.sass());
108506
108535
  }
108507
108536
  }),
108508
108537
  /* @__PURE__ */ LanguageDescription.of({
@@ -108569,7 +108598,7 @@ var languages = [
108569
108598
  alias: ["yml"],
108570
108599
  extensions: ["yaml", "yml"],
108571
108600
  load() {
108572
- return import("./dist-DQfK_0MA.js").then((m) => m.yaml());
108601
+ return import("./dist-J8FQ60oq.js").then((m) => m.yaml());
108573
108602
  }
108574
108603
  }),
108575
108604
  /* @__PURE__ */ LanguageDescription.of({
@@ -109456,13 +109485,13 @@ var languages = [
109456
109485
  name: "Vue",
109457
109486
  extensions: ["vue"],
109458
109487
  load() {
109459
- return import("./dist-cd39lbM_.js").then((m) => m.vue());
109488
+ return import("./dist-BysPZ53t.js").then((m) => m.vue());
109460
109489
  }
109461
109490
  }),
109462
109491
  /* @__PURE__ */ LanguageDescription.of({
109463
109492
  name: "Angular Template",
109464
109493
  load() {
109465
- return import("./dist-BrgApT3v.js").then((m) => m.angular());
109494
+ return import("./dist-DBlIdFv8.js").then((m) => m.angular());
109466
109495
  }
109467
109496
  })
109468
109497
  ];
@@ -156255,15 +156284,31 @@ function MarkdownFilesContent({ components, files, emptyMessage, translationConf
156255
156284
  //#endregion
156256
156285
  //#region src/components/opsx/artifact-output-viewer.tsx
156257
156286
  /**
156258
- * Orthogonal intents (updated 2026-08-01 Asia/Shanghai):
156287
+ * Orthogonal intents (updated 2026-09-26 Asia/Shanghai):
156259
156288
  * 1. Render single-file and glob artifact output from the current OPSX projection.
156260
156289
  * 2. Preserve schema-provided artifact fallbacks and document translation configuration.
156261
156290
  * 3. Distinguish initial output admission, missing output, and intentionally skipped non-output.
156291
+ * 4. Classify artifact outputs with the widened OpenSpec 1.13.2 glob syntax (brace/extglob),
156292
+ * mirroring the core `isGlobPattern` owner verbatim (subpath unification is recorded debt).
156262
156293
  *
156263
156294
  * Original request (2026-07-27): "统一修复所有类似的问题(我们也没不多,各个页面都检查一下,特别是app 那边新增的页面)"
156264
- */
156295
+ * Original request (2026-09-26): "Openspec 1.13.2 释放了…" — brace/extglob outputs render as glob content (update-openspec-cli-1132 Slice 2 fold).
156296
+ */
156297
+ var EXTGLOB_RE = /[!*+?@]\([^(]*\)/u;
156298
+ var BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./u;
156299
+ function hasBraceExpansion(pattern) {
156300
+ const openings = [];
156301
+ for (let index = 0; index < pattern.length; index += 1) {
156302
+ if (pattern[index] === "{") openings.push(index);
156303
+ if (pattern[index] !== "}") continue;
156304
+ const opening = openings.pop();
156305
+ if (opening !== void 0 && BRACE_EXPANSION_SEPARATORS_RE.test(pattern.slice(opening, index))) return true;
156306
+ }
156307
+ return false;
156308
+ }
156265
156309
  function isGlobPattern(pattern) {
156266
- return pattern.includes("*") || pattern.includes("?") || pattern.includes("[");
156310
+ const normalized = pattern.replaceAll("\\", "/");
156311
+ return normalized.includes("*") || normalized.includes("?") || normalized.includes("[") || EXTGLOB_RE.test(normalized) || hasBraceExpansion(normalized);
156267
156312
  }
156268
156313
  function ArtifactOutputDocumentShell({ artifact, children }) {
156269
156314
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OpsxArtifactDocumentShell, {
@@ -170367,6 +170412,7 @@ function useChangeListContinuity(incomingChanges, containerRef) {
170367
170412
  * Original request (2026-09-12): Owner walkthrough: unify the Change display title — generic
170368
170413
  * "# Proposal" headings fall back to the change id on every surface.
170369
170414
  * Original request (2026-09-17): "Openspec 1.13.1 释放了…" — change-list nested/warnings projection (update-openspec-cli-1131 Slice 2).
170415
+ * Original request (2026-09-27): Owner walkthrough P3 adjudication — No tasks presentation for the CLI no-tasks status.
170370
170416
  */
170371
170417
  function buildStatusMap(statuses) {
170372
170418
  return new Map((statuses ?? []).map((status) => [status.changeName, status]));
@@ -170550,7 +170596,12 @@ function ChangeList() {
170550
170596
  });
170551
170597
  const cliTaskSummary = change.cliTaskSummary;
170552
170598
  const cliProgressRatio = cliTaskSummary && cliTaskSummary.totalTasks > 0 ? cliTaskSummary.completedTasks / cliTaskSummary.totalTasks : null;
170553
- const cliTaskEvidence = cliTaskSummary ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
170599
+ const cliNoTasks = cliTaskSummary?.status === "no-tasks" && cliTaskSummary.totalTasks === 0;
170600
+ const cliTaskEvidence = cliTaskSummary ? cliNoTasks ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
170601
+ className: "text-muted-foreground",
170602
+ title: "The OpenSpec CLI reports no tasks for this Change (no apply.tracks, or an empty tracked task list).",
170603
+ children: "No tasks"
170604
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
170554
170605
  title: "Task counts reported by the OpenSpec CLI for this Change.",
170555
170606
  children: [
170556
170607
  "Tasks ",
@@ -171628,7 +171679,7 @@ function EvidenceDisclosure({ title, children, summary, defaultOpen = false, cla
171628
171679
  //#endregion
171629
171680
  //#region src/components/apply-progress-notice.tsx
171630
171681
  /**
171631
- * Orthogonal intents (updated 2026-09-12 Asia/Shanghai):
171682
+ * Orthogonal intents (updated 2026-09-26 Asia/Shanghai):
171632
171683
  * 1. Attribute Apply instruction counts to the upstream Apply command.
171633
171684
  * 2. Compress agreement to one subtitle badge; keep divergence a direct blocker.
171634
171685
  * 3. Keep divergence's two objective source counts side by side with their causes.
@@ -171641,6 +171692,14 @@ function EvidenceDisclosure({ title, children, summary, defaultOpen = false, cla
171641
171692
  * semantics), including when the Apply state is already `ready`.
171642
171693
  * 7. Degrade to the previous presentation when either 1.13 field is absent — absent keys
171643
171694
  * are the upstream encoding for "none", so no empty state is ever synthesized.
171695
+ * 8. Render the OpenSpec 1.13.2 tracking evidence on the same direct plane: one amber
171696
+ * evidence line per unreadable `{path, reason}` with the same status semantics as the
171697
+ * warnings area, a compact note when the schema tracks no tasks (empty tasks are not
171698
+ * missing evidence), and nothing extra when both members are absent — absence is
171699
+ * "unknown (pre-1.13.2 CLI)", never a fabricated 0/0 or unavailable claim.
171700
+ * 9. Degrade, never hide, the subtitle badge's CLI numbers when the schema tracks no tasks:
171701
+ * `taskTrackingConfigured === false` lowers the badge's visual weight and appends the
171702
+ * qualification to its accessible name and tooltip; the numbers stay CLI-owned verbatim.
171644
171703
  *
171645
171704
  * Original request (2026-07-15): "与 tracked glob 进度分歧时各自归因展示。"
171646
171705
  * Original request (2026-07-28): supporting 6.x evidence should use Badge + Tooltip or Accordion.
@@ -171649,6 +171708,9 @@ function EvidenceDisclosure({ title, children, summary, defaultOpen = false, cla
171649
171708
  * Original request (2026-09-12): "Openspec 1.13.0 释放了,你更新一下,调查变更内容,然后开始规划适配工作,我们将用标准工作流worktree来推进。让 codex 参与。"
171650
171709
  * Original request (2026-09-12): Owner walkthrough: the always-expanded warning/build-order blocks
171651
171710
  * consumed the page; collapse them behind one summary row while keeping direct-plane discovery.
171711
+ * Original request (2026-09-26): "Openspec 1.13.2 释放了…" — tracking-evidence surface (update-openspec-cli-1132 Slice 2).
171712
+ * Original request (2026-09-27): Owner walkthrough P3 adjudication — badge/list no-tracking count
171713
+ * presentation (clarify-no-tracking-task-counts).
171652
171714
  */
171653
171715
  /**
171654
171716
  * One compact, source-attributed Apply progress badge for the Change subtitle row.
@@ -171656,11 +171718,13 @@ function EvidenceDisclosure({ title, children, summary, defaultOpen = false, cla
171656
171718
  * this stays rendered whenever instructions exist — agreement is not a reason to hide the
171657
171719
  * CLI's own count, but it needs no separate block.
171658
171720
  */
171659
- function ApplyProgressBadge({ applyInstructionProgress }) {
171721
+ function ApplyProgressBadge({ applyInstructionProgress, taskTrackingConfigured }) {
171660
171722
  const { complete, total, remaining } = applyInstructionProgress;
171723
+ const untracked = taskTrackingConfigured === false;
171661
171724
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(InformationBadge, {
171662
- ariaLabel: `Apply instructions progress ${complete} of ${total}`,
171663
- tooltip: `Progress reported by openspec instructions apply — ${complete} of ${total} tasks applied, ${remaining} remaining.`,
171725
+ ariaLabel: `Apply instructions progress ${complete} of ${total}${untracked ? "; schema tracks no tasks" : ""}`,
171726
+ tooltip: untracked ? `Progress reported by openspec instructions apply — ${complete} of ${total} tasks applied, ${remaining} remaining. The schema sets no apply.tracks, so 0 of 0 is not incomplete work.` : `Progress reported by openspec instructions apply — ${complete} of ${total} tasks applied, ${remaining} remaining.`,
171727
+ className: untracked ? "opacity-75" : void 0,
171664
171728
  children: [
171665
171729
  "Apply ",
171666
171730
  complete,
@@ -171676,16 +171740,21 @@ var GUIDANCE_DETAIL_ID = "apply-readiness-guidance-detail";
171676
171740
  * Render the Apply/tracked divergence as one direct, source-attributed blocker, plus the
171677
171741
  * OpenSpec 1.13 `warnings` and `missingPrerequisites` evidence as one collapsible summary row:
171678
171742
  * the row itself names the warning count and the build-order chain (discovery needs no hover),
171679
- * and expanding reveals the verbatim upstream evidence on the same direct plane.
171743
+ * and expanding reveals the verbatim upstream evidence on the same direct plane. The OpenSpec
171744
+ * 1.13.2 tracking evidence rides the same plane: unreadable tracking files render one amber
171745
+ * evidence line each (path + verbatim reason) and a no-tracking schema renders a compact note
171746
+ * so its empty task list is never read as missing evidence.
171680
171747
  * Returns null when none apply — the agreement case lives in the subtitle badge row via
171681
- * {@link ApplyProgressBadge}, and absent 1.13 keys render nothing.
171748
+ * {@link ApplyProgressBadge}, and absent upstream keys render nothing.
171682
171749
  */
171683
- function ApplyProgressNotice({ applyInstructionProgress, warnings, missingPrerequisites }) {
171750
+ function ApplyProgressNotice({ applyInstructionProgress, warnings, missingPrerequisites, taskTrackingConfigured, unavailableTrackingFiles }) {
171684
171751
  const divergence = applyInstructionProgress.divergence;
171685
171752
  const hasWarnings = (warnings?.length ?? 0) > 0;
171686
171753
  const hasPrerequisites = (missingPrerequisites?.length ?? 0) > 0;
171754
+ const hasUnavailableTracking = (unavailableTrackingFiles?.length ?? 0) > 0;
171755
+ const tracksNoTasks = taskTrackingConfigured === false;
171687
171756
  const [expanded, setExpanded] = (0, import_react.useState)(false);
171688
- if (!divergence && !hasWarnings && !hasPrerequisites) return null;
171757
+ if (!divergence && !hasWarnings && !hasPrerequisites && !hasUnavailableTracking && !tracksNoTasks) return null;
171689
171758
  const guidanceSummaryParts = [];
171690
171759
  if (hasWarnings) {
171691
171760
  const count = warnings.length;
@@ -171764,6 +171833,55 @@ function ApplyProgressNotice({ applyInstructionProgress, warnings, missingPrereq
171764
171833
  })]
171765
171834
  }) : null]
171766
171835
  }) : null,
171836
+ hasUnavailableTracking ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
171837
+ role: "status",
171838
+ "data-apply-notice": "tracking-unavailable",
171839
+ "aria-label": `Apply tracking evidence unavailable from ${APPLY_COMMAND_ATTRIBUTION}`,
171840
+ className: "flex min-w-0 items-start gap-2 border border-amber-300 bg-amber-50 px-3 py-2 text-xs text-amber-950 dark:border-amber-700 dark:bg-amber-950/40 dark:text-amber-100",
171841
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TriangleAlert, {
171842
+ className: "mt-0.5 h-4 w-4 shrink-0",
171843
+ "aria-hidden": "true"
171844
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
171845
+ className: "min-w-0 space-y-1",
171846
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
171847
+ className: "font-medium",
171848
+ children: ["Tracking evidence unavailable — reported by ", APPLY_COMMAND_ATTRIBUTION]
171849
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
171850
+ className: "space-y-1",
171851
+ children: unavailableTrackingFiles?.map((file) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", {
171852
+ className: "min-w-0 space-y-0.5",
171853
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
171854
+ className: "break-words rounded border border-amber-400/60 bg-amber-100/60 px-1 py-0.5 font-mono [overflow-wrap:anywhere] dark:border-amber-800 dark:bg-amber-900/40",
171855
+ children: file.path
171856
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
171857
+ className: "break-words [overflow-wrap:anywhere]",
171858
+ children: file.reason
171859
+ })]
171860
+ }, file.path))
171861
+ })]
171862
+ })]
171863
+ }) : null,
171864
+ tracksNoTasks ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
171865
+ role: "status",
171866
+ "data-apply-notice": "no-tracking",
171867
+ "aria-label": "Apply task tracking not configured",
171868
+ className: "text-muted-foreground flex min-w-0 items-center gap-2 rounded-md border px-3 py-1.5 text-xs",
171869
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Info$1, {
171870
+ className: "h-4 w-4 shrink-0",
171871
+ "aria-hidden": "true"
171872
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
171873
+ className: "min-w-0",
171874
+ children: [
171875
+ "Schema tracks no tasks (no ",
171876
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
171877
+ className: "font-mono",
171878
+ children: "apply.tracks"
171879
+ }),
171880
+ " configured) — an empty task list is not missing evidence — ",
171881
+ APPLY_COMMAND_ATTRIBUTION
171882
+ ]
171883
+ })]
171884
+ }) : null,
171767
171885
  divergence ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
171768
171886
  role: "status",
171769
171887
  "data-apply-notice": "divergence",
@@ -171820,6 +171938,7 @@ function ApplyProgressNotice({ applyInstructionProgress, warnings, missingPrereq
171820
171938
  * Owner correction (2026-08-03): unify Change scan Tooltips in the subtitle and keep failures below the Header.
171821
171939
  * Original request (2026-08-15): Owner walkthrough: merge Apply progress into the subtitle badge row.
171822
171940
  * Original request (2026-08-15): 刷新/解析中的 lifecycle 锁收敛为副标题行内的 shiny 徽章 + Tooltip。
171941
+ * Original request (2026-09-27): Owner walkthrough P3 adjudication — taskTrackingConfigured passthrough to the apply badge.
171823
171942
  */
171824
171943
  function summarizeReferences(references) {
171825
171944
  return references.reduce((counts, reference) => {
@@ -171840,7 +171959,7 @@ function referenceErrorLabels(references) {
171840
171959
  });
171841
171960
  }
171842
171961
  /** Compact source-attributed facts that share the Change Header subtitle. */
171843
- function ChangeContextSummary({ status, referenceEvidence, applyInstructionProgress, statusRefreshing = null, rootChecking = null }) {
171962
+ function ChangeContextSummary({ status, referenceEvidence, applyInstructionProgress, taskTrackingConfigured, statusRefreshing = null, rootChecking = null }) {
171844
171963
  const provenance = status.provenance;
171845
171964
  const references = referenceEvidence.state === "unavailable" ? null : referenceEvidence.references;
171846
171965
  const referenceCounts = references ? summarizeReferences(references) : null;
@@ -171866,7 +171985,10 @@ function ChangeContextSummary({ status, referenceEvidence, applyInstructionProgr
171866
171985
  " artifacts"
171867
171986
  ]
171868
171987
  }),
171869
- applyInstructionProgress ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ApplyProgressBadge, { applyInstructionProgress }) : null,
171988
+ applyInstructionProgress ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ApplyProgressBadge, {
171989
+ applyInstructionProgress,
171990
+ taskTrackingConfigured
171991
+ }) : null,
171870
171992
  provenance.kind === "static" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InformationBadge, {
171871
171993
  ariaLabel: "Static Change context has no live backend provenance",
171872
171994
  tooltip: "CLI Change context is unavailable in this static snapshot.",
@@ -173856,7 +173978,7 @@ function RootActionNotice({ state }) {
173856
173978
  //#endregion
173857
173979
  //#region src/routes/change-view.tsx
173858
173980
  /**
173859
- * Orthogonal intents (updated 2026-09-12 Asia/Shanghai):
173981
+ * Orthogonal intents (updated 2026-09-26 Asia/Shanghai):
173860
173982
  * 1. Render schema-aware change artifacts and source files while retaining terminal status errors.
173861
173983
  * 2. Dispatch change workflows through routed compose/verify surfaces and the shared Operator launcher.
173862
173984
  * 3. Lock every change workflow action behind current Root Context and Status projection authority.
@@ -173864,6 +173986,9 @@ function RootActionNotice({ state }) {
173864
173986
  * 5. Keep compact Change facts in subtitle badges while routing complete CLI evidence through a dedicated tab.
173865
173987
  * 6. Mount the container-responsive list-detail Evidence workspace as the sole Evidence tab surface.
173866
173988
  * 7. Mount OpenSpec 1.13 Apply warnings and the build-order chain on the direct status plane.
173989
+ * 8. Mount OpenSpec 1.13.2 Apply tracking evidence on the same plane: unreadable tracking
173990
+ * files and no-tracking schemas (`taskTrackingConfigured === false`) mount the status
173991
+ * region and reach the notice, while absent members keep the pre-1.13.2 presentation.
173867
173992
  *
173868
173993
  * Original request (2026-07-15): "Root-dependent actions remain locked until root selection succeeds."
173869
173994
  * Review request (2026-07-23): "代码已经提交,开始review。如果有问题,那么可更新change。"
@@ -173881,6 +174006,8 @@ function RootActionNotice({ state }) {
173881
174006
  * headings fall back to the change id) and collapse Apply readiness guidance into one summary row.
173882
174007
  * — the status region gains the OpenSpec 1.13 Apply `warnings` and `missingPrerequisites`
173883
174008
  * direct-plane evidence beside the existing divergence notice.
174009
+ * Original request (2026-09-26): "Openspec 1.13.2 释放了…" — tracking-evidence direct-plane mounting (update-openspec-cli-1132 Slice 2).
174010
+ * Original request (2026-09-27): Owner walkthrough P3 adjudication — badge receives taskTrackingConfigured.
173884
174011
  */
173885
174012
  function ChangeView() {
173886
174013
  const { changeId } = useParams({ from: "/changes/$changeId" });
@@ -173963,7 +174090,7 @@ function ChangeView() {
173963
174090
  })
173964
174091
  }] : [], [referenceEvidence, status]);
173965
174092
  const hasReferenceFailures = referenceEvidence.state !== "unavailable" && referenceEvidence.references.some((reference) => reference.status.some((diagnostic) => diagnostic.severity === "error"));
173966
- const hasDirectStatus = Boolean(error) || rootAction.status === "blocked" || hasReferenceFailures || Boolean(applyInstructions?.applyInstructionProgress.divergence) || (applyInstructions?.warnings?.length ?? 0) > 0 || (applyInstructions?.missingPrerequisites?.length ?? 0) > 0;
174093
+ const hasDirectStatus = Boolean(error) || rootAction.status === "blocked" || hasReferenceFailures || Boolean(applyInstructions?.applyInstructionProgress.divergence) || (applyInstructions?.warnings?.length ?? 0) > 0 || (applyInstructions?.missingPrerequisites?.length ?? 0) > 0 || (applyInstructions?.unavailableTrackingFiles?.length ?? 0) > 0 || applyInstructions?.taskTrackingConfigured === false;
173967
174094
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OpsxEntityDetailView, {
173968
174095
  entityId: changeId,
173969
174096
  sharedFamily: "changes",
@@ -173975,6 +174102,7 @@ function ChangeView() {
173975
174102
  status,
173976
174103
  referenceEvidence,
173977
174104
  applyInstructionProgress: applyInstructions?.applyInstructionProgress ?? null,
174105
+ taskTrackingConfigured: applyInstructions?.taskTrackingConfigured,
173978
174106
  statusRefreshing: statusCurrent ? null : {
173979
174107
  label: "Status refreshing",
173980
174108
  message: statusAuthorityMessage ?? ""
@@ -174041,7 +174169,9 @@ function ChangeView() {
174041
174169
  applyInstructions ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ApplyProgressNotice, {
174042
174170
  applyInstructionProgress: applyInstructions.applyInstructionProgress,
174043
174171
  warnings: applyInstructions.warnings,
174044
- missingPrerequisites: applyInstructions.missingPrerequisites
174172
+ missingPrerequisites: applyInstructions.missingPrerequisites,
174173
+ taskTrackingConfigured: applyInstructions.taskTrackingConfigured,
174174
+ unavailableTrackingFiles: applyInstructions.unavailableTrackingFiles
174045
174175
  }) : null
174046
174176
  ]
174047
174177
  }) : null
@@ -174082,7 +174212,7 @@ var CONFIG_GUIDE_STAGE_META = {
174082
174212
  //#region src/components/config/config-guide.tsx
174083
174213
  var ConfigGuideContext = (0, import_react.createContext)(null);
174084
174214
  (0, import_react.lazy)(async () => {
174085
- return { default: (await import("./config-guide-presentation-BQdHuc5R.js")).ConfigGuidePresentationLayer };
174215
+ return { default: (await import("./config-guide-presentation-Cji5XRfB.js")).ConfigGuidePresentationLayer };
174086
174216
  });
174087
174217
  /** Access the root-owned adaptive Guide runtime. */
174088
174218
  function useConfigGuide() {
@@ -1,5 +1,5 @@
1
1
  import { it as extensions } from "./Geometry-jQ4l8GtP.js";
2
- import { M as FilterPipe, j as FilterSystem } from "./entry-server-DOzQvxeU.js";
2
+ import { M as FilterPipe, j as FilterSystem } from "./entry-server-BqIqbfZo.js";
3
3
  //#region ../../node_modules/.pnpm/pixi.js@8.16.0/node_modules/pixi.js/lib/filters/init.mjs
4
4
  extensions.add(FilterSystem);
5
5
  extensions.add(FilterPipe);
@@ -0,0 +1,3 @@
1
+ import "./jsx-runtime-CQL-l9BP.js";
2
+ import { Nt as trpcClient } from "./entry-server-BqIqbfZo.js";
3
+ export { trpcClient };
@@ -0,0 +1,4 @@
1
+ import "./Geometry-jQ4l8GtP.js";
2
+ import "./entry-server-BqIqbfZo.js";
3
+ import "./init-D4SqIz1z.js";
4
+ export {};