openplanr 2.2641.2 → 3.0.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 (110) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cli/commands/doctor.d.ts.map +1 -1
  3. package/dist/cli/commands/doctor.js +19 -4
  4. package/dist/cli/commands/doctor.js.map +1 -1
  5. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  6. package/dist/cli/commands/upgrade.js +12 -10
  7. package/dist/cli/commands/upgrade.js.map +1 -1
  8. package/dist/cli/error-boundary.d.ts.map +1 -1
  9. package/dist/cli/error-boundary.js +2 -1
  10. package/dist/cli/error-boundary.js.map +1 -1
  11. package/dist/dashboard/.vite/manifest.json +1 -1
  12. package/dist/dashboard/assets/{index-DI_TKz9J.js → index-Csby7_ur.js} +2 -2
  13. package/dist/dashboard/assets/{index-DI_TKz9J.js.map → index-Csby7_ur.js.map} +1 -1
  14. package/dist/dashboard/dashboard-manifest.json +8 -8
  15. package/dist/dashboard/index.html +1 -1
  16. package/dist/services/runtime-change-summary.d.ts +4 -0
  17. package/dist/services/runtime-change-summary.d.ts.map +1 -1
  18. package/dist/services/runtime-change-summary.js +7 -0
  19. package/dist/services/runtime-change-summary.js.map +1 -1
  20. package/dist/services/runtime-manager/doctor.js +1 -1
  21. package/dist/services/runtime-manager/doctor.js.map +1 -1
  22. package/dist/services/runtime-manager/runtime-package.d.ts +15 -0
  23. package/dist/services/runtime-manager/runtime-package.d.ts.map +1 -1
  24. package/dist/services/runtime-manager/runtime-package.js +50 -10
  25. package/dist/services/runtime-manager/runtime-package.js.map +1 -1
  26. package/dist/services/runtime-manager-service.d.ts +11 -0
  27. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  28. package/dist/services/runtime-manager-service.js +88 -16
  29. package/dist/services/runtime-manager-service.js.map +1 -1
  30. package/dist/services/upgrade-report.d.ts +2 -2
  31. package/dist/services/upgrade-report.d.ts.map +1 -1
  32. package/dist/services/upgrade-report.js +11 -2
  33. package/dist/services/upgrade-report.js.map +1 -1
  34. package/dist/services/upgrade-service.d.ts +8 -2
  35. package/dist/services/upgrade-service.d.ts.map +1 -1
  36. package/dist/services/upgrade-service.js +44 -12
  37. package/dist/services/upgrade-service.js.map +1 -1
  38. package/docs/CLI.md +4 -1
  39. package/docs/TROUBLESHOOTING.md +9 -6
  40. package/install.ps1 +3 -3
  41. package/install.sh +3 -3
  42. package/lib/host-packages/adapter-registry.json +5 -5
  43. package/lib/host-packages/capability-map.json +1 -1
  44. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  45. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +2 -2
  46. package/lib/host-packages/claude/openplanr/.openplanr-content.json +21 -21
  47. package/lib/host-packages/claude/openplanr/README.md +1 -1
  48. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  49. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  50. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +14 -4
  51. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +14 -5
  52. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +28 -0
  53. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +105 -27
  54. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +6 -6
  55. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  56. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  57. package/lib/host-packages/claude/openplanr/skills/delegate/SKILL.md +1 -1
  58. package/lib/host-packages/claude/openplanr/skills/delegate/references/capsule-contract.md +1 -1
  59. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-preparation.mjs +3 -3
  60. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +1 -1
  61. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +1 -1
  62. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +1 -1
  63. package/lib/host-packages/claude/openplanr/skills/doctor/SKILL.md +4 -1
  64. package/lib/host-packages/claude/openplanr/skills/doctor/references/upgrade.md +8 -0
  65. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +2 -2
  66. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +20 -20
  67. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  68. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/capsule-contract.md +1 -1
  69. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-preparation.mjs +3 -3
  70. package/lib/host-packages/cursor/openplanr/rules/planr-delegate.mdc +1 -1
  71. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +1 -1
  72. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +1 -1
  73. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +1 -1
  74. package/lib/host-packages/cursor/openplanr/rules/planr-doctor/references/upgrade.md +8 -0
  75. package/lib/host-packages/cursor/openplanr/rules/planr-doctor.mdc +4 -1
  76. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +2 -2
  77. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  78. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  79. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +14 -4
  80. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +14 -5
  81. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +28 -0
  82. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +105 -27
  83. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +6 -6
  84. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  85. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  86. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  87. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  88. package/lib/host-packages/openai/openplanr/.openplanr-content.json +20 -20
  89. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  90. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  91. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +14 -4
  92. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +14 -5
  93. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +28 -0
  94. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +105 -27
  95. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +6 -6
  96. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  97. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  98. package/lib/host-packages/openai/openplanr/skills/delegate/SKILL.md +1 -1
  99. package/lib/host-packages/openai/openplanr/skills/delegate/references/capsule-contract.md +1 -1
  100. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-preparation.mjs +3 -3
  101. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +1 -1
  102. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +1 -1
  103. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +1 -1
  104. package/lib/host-packages/openai/openplanr/skills/doctor/SKILL.md +4 -1
  105. package/lib/host-packages/openai/openplanr/skills/doctor/references/upgrade.md +8 -0
  106. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +2 -2
  107. package/lib/node-runtime.d.mts +1 -1
  108. package/lib/node-runtime.mjs +2 -7
  109. package/package.json +4 -5
  110. package/bin/planr.js +0 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 7dba887: `openplanr` versions return to plain SemVer from 3.0.0: patch releases for fixes, minor releases for features and major releases for breaking changes. Releases 2.2639.0 to 2.2641.x were numbered `<major>.<YYWW>.<n>` by release week. Version checks such as `openplanr upgrade` compare versions numerically, so 3.0.0 is newer than every 2.x release.
8
+ - 625c09f: Drop Node.js 20, which reached end of life in April 2026. This is a breaking CLI change: `openplanr` now requires Node.js `^22.13.0 || >=23.5.0`, and the pipeline and Protocol require Node.js 22.13.0 or later.
9
+
10
+ Run `node -v` to check your version. If it reports v20, or a 22 release below 22.13, install Node.js 24 LTS or Node.js 22.13 or later, then rerun the installer or `npm install --global openplanr`.
11
+
12
+ On Node.js 20 the install scripts stop before installing anything with `E_NODE_VERSION: OpenPlanr requires Node.js ^22.13.0 || >=23.5.0; found v20.x.y.` `npm install --global openplanr` only warns about the engines range, and `openplanr` then stops before loading anything with `E_NODE_VERSION: OpenPlanr requires Node.js ^22.13.0 || >=23.5.0; found 20.x.y.` `openplanr-pipeline doctor` fails its Node.js check with `Node 20.x.y does not satisfy engines.node >=22.13.0`, and the delegate skill's probe reports that Node 22 or later is required.
13
+ - a2f5967: Remove the `planr` and `planr-pipeline` commands. They were kept for one release after the rename to `openplanr`; this is a breaking change for anything that still runs them.
14
+
15
+ Replace `planr <command>` with `openplanr <command>` or the short alias `opr <command>`, and `planr-pipeline <command>` with `openplanr-pipeline <command>`, in scripts, shell aliases and CI. Upgrading with `openplanr upgrade apply`, the installer or `npm install --global openplanr` removes the old `planr` and `planr-pipeline` links. Then run `openplanr doctor`: if it reports installed skills or rules that still run `planr`, rerun `openplanr setup` for the hosts it names, or update the plugin, and restart the agent. The `planr` npm package is a different product; don't install it to restore the old command.
16
+
17
+ Skill names such as `/planr:plan`, the `planr` plugin, the `planr-pipeline` npm package and the `.planr/` folder are unchanged.
18
+
19
+ ### Patch Changes
20
+
21
+ - 7038c01: Keep Studio view controls centered in their workspace and actions usable on narrow screens and with enlarged text. Shared dialogs, drawers and menus preserve keyboard focus, while changing views retains prototype state, camera position and annotation drafts.
22
+ - 50fb215: The plan skill now ends with the host's ship command, `/planr:ship T-NNN` in Claude Code, `$planr:ship T-NNN` in Codex or the `planr-ship` rule in Cursor, instead of `/planr-ship` and `$planr-ship`. The pipeline's plan procedures point to `/planr:plan` instead of the retired `planr spec decompose` command.
23
+ - 9c72b57: The Claude plugin's documentation link points to the OpenPlanr docs at https://openplanr.dev/docs instead of the getting-started guide on GitHub.
24
+ - 2ed98ac: After a CLI upgrade, `openplanr upgrade status` reports `agents-behind` instead of `incompatible` when only your coding agents need updating, and lists the commands to run. When a file in an installed runtime package was edited, `openplanr runtime update` and `openplanr setup` name the file and stop, and `openplanr doctor --fix` restores the package from the CLI after you confirm, backing up the changed files first; `upgrade status` points there instead of at a step that would fail. Error messages keep relative paths such as `skills/delegate/scripts/context.mjs` intact.
25
+
3
26
  ## 2.2641.2
4
27
 
5
28
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,QA8DzE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmLzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,QA8DzE"}
@@ -16,6 +16,7 @@ async function previewRepairs(projectDir, cliVersion, diagnosis) {
16
16
  preserveExistingScopes: !isOpenPlanrHome(projectDir),
17
17
  skillMode: installed.find((entry) => entry.runtime === 'codex')?.skillMode,
18
18
  replaceManaged: true,
19
+ restoreRuntimePackages: true,
19
20
  };
20
21
  const integrations = setupOptions.runtimes?.length
21
22
  ? await applySetup({ ...setupOptions, dryRun: true })
@@ -59,9 +60,14 @@ async function applyRepairs(preview, setupOptions, integrations) {
59
60
  if (preview.homeCleanup.length)
60
61
  await cleanupHomeProjectInstall();
61
62
  if (!integrations)
62
- return false;
63
+ return { restartRequired: false };
63
64
  const applied = await applySetup(setupOptions);
64
- return applied.restartRequired ?? false;
65
+ return {
66
+ restartRequired: applied.restartRequired ?? false,
67
+ ...(applied.runtimePackageRestores?.length && applied.backupDir
68
+ ? { packageBackupDir: applied.backupDir }
69
+ : {}),
70
+ };
65
71
  }
66
72
  function hasIntegrationRepairs(preview) {
67
73
  return (Boolean(preview?.actions.some((item) => item.operation !== 'unchanged')) ||
@@ -106,12 +112,21 @@ async function repairInstallation(projectDir, cliVersion, diagnosis, { json, yes
106
112
  logger.warn('Repairs were not applied; rerun with --yes after reviewing the preview.');
107
113
  return untouched;
108
114
  }
109
- const restartRequired = await applyRepairs(repairPreview, setupOptions, integrationRepairs);
115
+ const { restartRequired, packageBackupDir } = await applyRepairs(repairPreview, setupOptions, integrationRepairs);
110
116
  const result = await runtimeDoctor(projectDir, { commandRoots });
117
+ if (!json && packageBackupDir) {
118
+ logger.info(`Your changed runtime package files are saved in ${packageBackupDir}.`);
119
+ }
111
120
  if (!json && restartRequired) {
112
121
  logger.warn('Restart the affected coding agent to reload its plugin and skill list.');
113
122
  }
114
- return { ...result, repairPreview, repairsApplied: true, restartRequired };
123
+ return {
124
+ ...result,
125
+ repairPreview,
126
+ repairsApplied: true,
127
+ restartRequired,
128
+ ...(packageBackupDir ? { packageBackupDir } : {}),
129
+ };
115
130
  }
116
131
  function printDiagnosis(result) {
117
132
  logger.heading('OpenPlanr doctor');
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,QAoH3E"}
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,QAsH3E"}
@@ -2,7 +2,7 @@ import { isNonInteractive } from '../../services/interactive-state.js';
2
2
  import { runPendingMigrations } from '../../services/migration-registry.js';
3
3
  import { promptConfirm } from '../../services/prompt-service.js';
4
4
  import { printNextSteps, printReconciliationStatus, printUpgradeReport, } from '../../services/upgrade-report.js';
5
- import { executeCliHalfUpgrade, planCliUpgrade, reconcileInstalledTuple, upgradeNextSteps, } from '../../services/upgrade-service.js';
5
+ import { executeCliHalfUpgrade, planCliUpgrade, reconcileInstalledTuple, upgradeNextSteps, withAgentNextSteps, } from '../../services/upgrade-service.js';
6
6
  import { CLI_COMMAND } from '../../utils/constants.js';
7
7
  import { display, logger } from '../../utils/logger.js';
8
8
  /**
@@ -16,12 +16,12 @@ export function registerUpgradeCommand(program, _cliVersion) {
16
16
  .description('Reconcile the installed OpenPlanr tuple against the published compatible set');
17
17
  upgrade
18
18
  .command('status')
19
- .description('Report whether the installed tuple is aligned, upgradable, or incompatible')
19
+ .description('Report whether the CLI and coding agents are aligned, behind, or incompatible')
20
20
  .option('--json', 'machine-readable output', false)
21
21
  .action(async (opts) => {
22
22
  const projectDir = program.opts().projectDir;
23
- const result = await reconcileInstalledTuple(projectDir);
24
23
  const nextSteps = await upgradeNextSteps(projectDir);
24
+ const result = withAgentNextSteps(await reconcileInstalledTuple(projectDir), nextSteps);
25
25
  if (opts.json) {
26
26
  display.line(JSON.stringify({ ...result, nextSteps }));
27
27
  }
@@ -40,7 +40,7 @@ export function registerUpgradeCommand(program, _cliVersion) {
40
40
  display.keyValue('Published host package', result.published.skills.version);
41
41
  display.keyValue('Published pipeline', result.published.pipeline.version);
42
42
  }
43
- printReconciliationStatus(result);
43
+ printReconciliationStatus(result, nextSteps);
44
44
  if (nextSteps.length > 0)
45
45
  printNextSteps(nextSteps);
46
46
  }
@@ -62,25 +62,27 @@ export function registerUpgradeCommand(program, _cliVersion) {
62
62
  const notes = opts.notes;
63
63
  const reconciliation = await reconcileInstalledTuple(projectDir);
64
64
  const plan = planCliUpgrade(reconciliation);
65
- // Nothing for the CLI to install. The coding agents can still trail it, which is
66
- // what an incompatible tuple with a current CLI means, so their commands are listed.
65
+ // Nothing for the CLI to install. The coding agents can still trail it, so their
66
+ // commands are listed.
67
67
  if (!plan.proceed || !plan.targetCliVersion) {
68
68
  const nextSteps = await upgradeNextSteps(projectDir);
69
+ const current = withAgentNextSteps(reconciliation, nextSteps);
70
+ const reason = planCliUpgrade(current).reason;
69
71
  if (opts.json) {
70
72
  display.line(JSON.stringify({
71
73
  applied: false,
72
- reason: plan.reason,
74
+ reason,
73
75
  nextSteps,
74
76
  pluginHalfCommands: nextSteps.map((step) => step.command),
75
- reconciliation,
77
+ reconciliation: current,
76
78
  }));
77
79
  }
78
80
  else {
79
- logger.info(plan.reason);
81
+ logger.info(reason);
80
82
  if (nextSteps.length > 0)
81
83
  printNextSteps(nextSteps);
82
84
  }
83
- if (reconciliation.status === 'incompatible')
85
+ if (current.status === 'incompatible')
84
86
  process.exitCode = 1;
85
87
  return;
86
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/cli/error-boundary.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE,CAAC;AAUF,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;gBAG1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO;IAS1E,MAAM,IAAI,kBAAkB;CAS7B;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,QAAQ,GAAE,QAAQ,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAM,GAC3D,kBAAkB,CAqFpB"}
1
+ {"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/cli/error-boundary.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE,CAAC;AAWF,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;gBAG1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO;IAS1E,MAAM,IAAI,kBAAkB;CAS7B;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,QAAQ,GAAE,QAAQ,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAM,GAC3D,kBAAkB,CAqFpB"}
@@ -11,9 +11,10 @@ const SYSTEM_CODES = new Set([
11
11
  const MAX_PUBLIC_TEXT = 1_000;
12
12
  function boundedPublicText(value, fallback) {
13
13
  const source = typeof value === 'string' && value.trim() ? value.trim() : fallback;
14
+ // Only absolute paths are private; a relative path such as `skills/x.mjs` stays readable.
14
15
  return source
15
16
  .split(/\n\s*at\s/u, 1)[0]
16
- .replace(/(?:[A-Za-z]:\\|\/)(?:[^\s"'`,:]+[\\/])*[^\s"'`,:]*/gu, '<path>')
17
+ .replace(/(?<![\w.~@-])(?:[A-Za-z]:\\|\/)(?:[^\s"'`,:]+[\\/])*[^\s"'`,:]*/gu, '<path>')
17
18
  .slice(0, MAX_PUBLIC_TEXT);
18
19
  }
19
20
  export class CliBoundaryError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"error-boundary.js","sourceRoot":"","sources":["../../src/cli/error-boundary.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,8DAA8D,CAAC;AACnF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AACH,MAAM,eAAe,GAAG,KAAK,CAAC;AAW9B,SAAS,iBAAiB,CAAC,KAAc,EAAE,QAAgB;IACzD,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnF,OAAO,MAAM;SACV,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB,OAAO,CAAC,sDAAsD,EAAE,QAAQ,CAAC;SACzE,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,IAAI,CAAS;IACb,QAAQ,CAAU;IAClB,OAAO,CAAY;IAE5B,YACE,IAAY,EACZ,OAAe,EACf,UAAsE,EAAE;QAExE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAClC,KAAc,EACd,WAA0D,EAAE;IAE5D,MAAM,MAAM,GACV,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzC,CAAC,CAAE,KAYC;QACJ,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,QAAQ,GAAG,OAAO,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACjF,MAAM,SAAS,GACb,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC/C,CAAC,CAAE,QAAoC;QACvC,CAAC,CAAE,EAA8B,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9E,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACjF,CAAC;IACF,MAAM,aAAa,GACjB,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ;QACjC,OAAO,MAAM,EAAE,IAAI,KAAK,QAAQ;QAChC,OAAO,MAAM,EAAE,OAAO,KAAK,QAAQ;QACnC,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,kBAAkB,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,iBAAiB,CAC/B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EACnE,QAAQ,CAAC,OAAO,IAAI,kCAAkC,CACvD,CAAC;IACF,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,GAAG,IAAI,MAAM,EAAE,QAAQ,CAAC;IAC9E,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE,OAAO,CAAC;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACvC,CAAC,CAAC,UAAU;aACP,MAAM,CACL,CAAC,KAAc,EAAmB,EAAE,CAClC,OAAO,KAAK,KAAK,QAAQ,IAAI,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CACvE;aACA,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE,OAAO,CAAC;IACxD,MAAM,YAAY,GAChB,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ;QACnD,CAAC,CAAE,UAAsC;QACzC,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;QAC5D,CAAC,CAAC,YAAY,CAAC,WAAW;QAC1B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,YAAY,CAAC,MAAM;YACrB,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,WAAW,GAAG,cAAc;SAC/B,OAAO,CAAC,CAAC,UAAU,EAAyD,EAAE;QAC7E,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,UAAqC,CAAC;QACpD,IACE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC9B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC9B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;YAEhC,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACvF,OAAO;YACL;gBACE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC7B,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC;aACjE;SACF,CAAC;IACJ,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,OAAO;QACL,EAAE,EAAE,KAAK;QACT,IAAI;QACJ,OAAO;QACP,GAAG,CAAC,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,EAAE;YAC3D,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,aAAa,EAAE,6BAA6B,CAAC,EAAE;YAC/E,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"error-boundary.js","sourceRoot":"","sources":["../../src/cli/error-boundary.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@
44
44
  "src": "../../../node_modules/@fontsource-variable/geist/files/geist-vietnamese-wght-normal.woff2"
45
45
  },
46
46
  "index.html": {
47
- "file": "assets/index-DI_TKz9J.js",
47
+ "file": "assets/index-Csby7_ur.js",
48
48
  "name": "index",
49
49
  "src": "index.html",
50
50
  "isEntry": true,
@@ -553,5 +553,5 @@ Error generating stack: `+d.message+`
553
553
  `),C=(b=I.find(S=>S.startsWith("event:")))==null?void 0:b.slice(6).trim(),O=I.filter(S=>S.startsWith("data:")).map(S=>S.slice(5).trimStart()).join(`
554
554
  `);O&&e.reconciler.ingestSseFrame(O,C),x=m.indexOf(`
555
555
 
556
- `)}if(w.done){if(m.trim())return he("$","Planning live response ended mid-frame");break}}}finally{A.releaseLock()}})().catch(h=>{if(!t.signal.aborted)throw h instanceof ee?h:new ee("$","Planning live response failed safely")}).finally(()=>{var h;return(h=e.signal)==null?void 0:h.removeEventListener("abort",a)});return Object.freeze({completion:l,close:()=>{var h;t.abort(),e.reconciler.dispose(),(h=e.signal)==null||h.removeEventListener("abort",a)}})}const B4=Object.freeze({connectSse:E4,createSseReconciler:h4,encodeCheckpoint:y4,fetchGraph:A4,parseGraphEnvelope:Su}),v4=Object.freeze(Object.defineProperty({__proto__:null,planningRuntime:B4},Symbol.toStringTag,{value:"Module"})),b4=Object.freeze({create:Ve}),w4=Object.freeze({ValidationError:ee,isValidatedState:Pe,parseSafeError:Uw,parseState:so,statePolicy:oo}),x4=Object.freeze({parse:Ha}),j4=Object.freeze({connectSse:aI,createSseReconciler:nI}),Q4=Object.freeze({identity:b4,projection:w4,routing:x4,transport:j4}),I4=Object.freeze(Object.defineProperty({__proto__:null,dashboardRuntime:Q4},Symbol.toStringTag,{value:"Module"})),{operateRuntime:Xe}=JP,{planningRuntime:Hc}=v4,{dashboardRuntime:Ne}=I4,XI=new Set(["ready","read-only","stale","partial","blocked","offline"]),Pr=Ne.projection.parseState({kind:"booting",binding:null,data:null,reasonCodes:[],error:null,mutationEnabled:!1,policy:Ne.projection.statePolicy("booting")}),WI=Ne.routing.parse("#/overview");function e0(e){return`DASHBOARD_${e.toUpperCase().replace("-","_")}`}function pr(e){return Ne.projection.parseState({kind:"loading",binding:e,data:null,reasonCodes:[],error:null,mutationEnabled:!1,policy:Ne.projection.statePolicy("loading")},{currentBinding:e})}function t0(e,t=null){return Ne.projection.parseState({kind:"unavailable",binding:e,data:null,reasonCodes:["DASHBOARD_UNAVAILABLE"],error:t,mutationEnabled:!1,policy:Ne.projection.statePolicy("unavailable")},{currentBinding:e})}function yr(e,t=!1){const s=(e!==null&&typeof e=="object"&&!Array.isArray(e)?e:{}).code==="DASHBOARD_RESPONSE_INVALID"||e instanceof Ne.projection.ValidationError;return Ne.projection.parseSafeError({code:t||!s?"DASHBOARD_READ_FAILED":"DASHBOARD_RESPONSE_INVALID",retryable:!1,context:{operation:"dashboard.projection.read"}})}function Ya(e,t){const a=t??yr(void 0);if(a.code!=="DASHBOARD_RESPONSE_INVALID")return t0(e,a);const s=Ne.projection.parseSafeError({code:"DASHBOARD_RESPONSE_INVALID",retryable:!1,context:{}});return Ne.projection.parseState({kind:"corrupt",binding:null,data:null,reasonCodes:["DASHBOARD_CORRUPT"],error:s,mutationEnabled:!1,policy:Ne.projection.statePolicy("corrupt")})}function C4(e,t,a,s,c=!1,l=null){if(!XI.has(e))throw new Error("Unsupported owner presentation state.");return Ne.projection.parseState({kind:e,binding:t,data:a,reasonCodes:e==="ready"?[]:[e0(e)],error:l,mutationEnabled:e==="ready"&&c,policy:Ne.projection.statePolicy(e)},{currentBinding:t,validateData:s})}function S4(e,t){return!Ne.projection.isValidatedState(e)||e.binding===null||e.data===null?e:Ne.projection.parseState({kind:"stale",binding:e.binding,data:e.data,reasonCodes:["DASHBOARD_STALE"],error:t,mutationEnabled:!1,policy:Ne.projection.statePolicy("stale")},{currentBinding:e.binding,validateData:a=>a!==null})}function O4(e,t){return Ne.projection.parseState({kind:e,binding:t,data:null,reasonCodes:[e0(e)],error:null,mutationEnabled:!1,policy:Ne.projection.statePolicy(e)},{currentBinding:t})}function Fr(e,t){const a=B.useRef(t);a.current=t;const s=B.useRef(e);s.current=e;const c=B.useRef(null),l=B.useRef(null),[u,f]=B.useState(0),[h,A]=B.useState(()=>Object.freeze({key:null,revision:0,phase:"idle",data:null,error:null})),y=B.useCallback(()=>f(j=>j+1),[]),m=B.useCallback(()=>{var O;if(c.current!==null)return c.current;const j=s.current;if(j===null)return Promise.reject(new Error("Owner read is unavailable."));const I=new AbortController;(O=l.current)==null||O.abort(),l.current=I,A(S=>Object.freeze({key:j,revision:S.revision,phase:"loading",data:S.key===j?S.data:null,error:null}));const C=a.current(I.signal).then(S=>{if(I.signal.aborted||s.current!==j)throw new DOMException("Cancelled","AbortError");return A(_=>Object.freeze({key:j,revision:_.revision,phase:"ready",data:S,error:null})),S}).catch(S=>{throw!I.signal.aborted&&s.current===j&&A(_=>Object.freeze({key:j,revision:_.revision,phase:"failed",data:_.key===j?_.data:null,error:yr(S,_.key===j&&_.data!==null)})),S}).finally(()=>{c.current===C&&(c.current=null),l.current===I&&(l.current=null)});return c.current=C,C},[]);B.useEffect(()=>{var I;if((I=l.current)==null||I.abort(),l.current=null,c.current=null,e===null){A(Object.freeze({key:null,revision:u,phase:"idle",data:null,error:null}));return}const j=new AbortController;return A(C=>Object.freeze({key:e,revision:u,phase:"loading",data:C.key===e?C.data:null,error:null})),a.current(j.signal).then(C=>{j.signal.aborted||A(Object.freeze({key:e,revision:u,phase:"ready",data:C,error:null}))}).catch(C=>{j.signal.aborted||A(O=>Object.freeze({key:e,revision:u,phase:"failed",data:O.key===e?O.data:null,error:yr(C,O.key===e&&O.data!==null)}))}),()=>j.abort()},[e,u]);const E=h.key===e&&h.revision===u,b=E?h.phase:e===null?"idle":"loading",w=E?h.data:null,x=E?h.error:null;return B.useMemo(()=>Object.freeze({phase:b,data:w,error:x,refetch:y,reconcile:m}),[w,x,b,m,y])}function _4(e){return e===null?null:JSON.stringify(e)}function N4(e){return e.product==="planning"?e:WI}function R4(e){return e.kind==="operate.evidence"||e.kind==="operate.evidence-item"?"evidence":e.kind==="operate.outcomes"?"outcomes":e.kind==="operate.outcome"?"outcome":e.kind==="operate.history"?"history":null}function tu(e){return e.kind==="operate.actions"||e.kind==="operate.action"||e.kind==="operate.action-planning"||e.kind==="operate.inbox"||e.kind==="operate.inbox-item"||e.kind==="operate.recovery"}function D4(e){return e.kind==="operate.action-planning"?{kind:"operate.action",product:"operate",subjectId:e.subjectId}:e}function Vr(e){return Object.freeze({eventHead:e.payload.eventHead,viewHash:e.payload.viewHash})}function Io(e){const t=e.payload.status;if(!XI.has(t))throw new Ne.projection.ValidationError("$.payload.status","contains an unsupported display status");return t}function T4(e){return e.payload.status==="terminal"?"read-only":Io(e)}function Ew(e,t){if(e.data===null)return e.phase==="loading"||e.phase==="idle"?pr(t):Ya(t,e.error);const a=Ne.identity.create({...t,eventHead:e.data.payload.sourceEventHead,viewHash:e.data.payload.sourceViewHash});return Ei(e,a,e.data,Xe.review.createValidator(a),T4(e.data),e.data.payload.mutationEnabled)}function Ei(e,t,a,s,c,l=!1){const u=e.phase==="failed"?"stale":e.phase==="loading"||e.phase==="idle"?"refreshing":c;try{return C4(u,t,a,s,l,u==="stale"?e.error??yr(void 0,!0):null)}catch(f){return Ya(t,yr(f))}}function Bw(e,t){if(e.data===null)return e.phase==="loading"||e.phase==="idle"?pr(t):Ya(t,e.error);const a=Ne.identity.create({...t,eventHead:e.data.cursor.eventHead,viewHash:e.data.cursor.viewHash});return Ei(e,a,e.data,s=>{try{return Hc.parseGraphEnvelope(s,t),!0}catch{return!1}},"ready")}function vw(e,t,a,s){var u;if(e.data===null)return e.phase==="loading"||e.phase==="idle"?pr(t):Ya(t,e.error);const c=Ne.identity.create({...t,...Vr(e.data)}),l=a==="today"?Xe.today.createValidator(c):Xe.cycles.createListValidator(c);return e.phase!=="ready"?Ei(e,c,e.data,l,Io(e.data),e.data.payload.mutationEnabled):a==="today"&&e.data.payload.surface==="today"&&e.data.payload.status==="ready"&&e.data.payload.data.activeCycle===null?l(e.data)?s?s.phase==="loading"||s.phase==="idle"?Ei(Object.freeze({...e,phase:"loading",error:null}),c,e.data,l,"ready"):s.phase==="failed"?Ei(Object.freeze({...e,phase:"failed",error:s.error}),c,e.data,l,"ready"):((u=s.data)==null?void 0:u.payload.surface)!=="cycles"?Ya(c,yr(new Ne.projection.ValidationError("$.payload.surface","does not contain the required cycles display"))):O4(s.data.payload.data.cycles.length===0?"first-use":"empty",c):pr(c):Ya(c,yr(new Ne.projection.ValidationError("$.data","failed its owner-boundary contract"))):Ei(e,c,e.data,l,Io(e.data),e.data.payload.mutationEnabled)}function k4(e){if(e.subjectId===null)throw new Error("Action display identity requires a subject.");return Ne.identity.create({...e,route:`#/operate/actions/${encodeURIComponent(e.subjectId)}`})}function bw(e,t,a){if(e.data===null)return e.phase==="loading"||e.phase==="idle"?pr(t):Ya(t,e.error);const s=Ne.identity.create({...t,...Vr(e.data)});let c;if(a.kind==="operate.actions")c=Xe.actions.createListValidator(s);else if(a.kind==="operate.action"||a.kind==="operate.action-planning"){const l=a.kind==="operate.action-planning"?k4(s):s;c=Xe.actions.createDetailValidator(l)}else if(a.kind==="operate.inbox"||a.kind==="operate.inbox-item")c=Xe.actions.createInboxValidator(s);else if(a.kind==="operate.recovery")c=Xe.actions.createRecoveryValidator(s);else return t0(s);return Ei(e,s,e.data,c,Io(e.data),a.kind==="operate.action-planning"?!1:e.data.payload.mutationEnabled)}function M4(e,t){var ye,Ee;const a=(e==null?void 0:e.origin)??null,s=JSON.stringify(t),[c,l]=B.useState(null),u=(e==null?void 0:e.queryRoots.planning)??null,f=(e==null?void 0:e.queryRoots.operate)??null,h=B.useMemo(()=>N4(t),[t]),A=B.useMemo(()=>u?Xe.transport.identityFromRoot(u,WI):null,[u]),y=B.useMemo(()=>u?Xe.transport.identityFromRoot(u,h):null,[u,h]),m=Fr(A?JSON.stringify(A):null,R=>{if(!a||!A)throw new Error("Planning query root is unavailable.");return Hc.fetchGraph({origin:a,identity:A,signal:R})}),E=_4(f),b=Fr(E,R=>{if(!a||!f)throw new Error("Operate query root is unavailable.");return Xe.transport.fetchRootDisplay({origin:a,root:f,surface:"today",signal:R})}),w=Fr(E,R=>{if(!a||!f)throw new Error("Operate query root is unavailable.");return Xe.transport.fetchRootDisplay({origin:a,root:f,surface:"cycles",signal:R})}),x=((ye=b.data)==null?void 0:ye.payload.surface)==="today"?b.data:null,j=(x==null?void 0:x.payload.surface)==="today"?((Ee=x.payload.data.activeCycle)==null?void 0:Ee.cycleId)??null:null,I=t.kind==="operate.cycle"?t.subjectId:t.kind==="operate.review"?t.cycleId:j,C=x?Vr(x):null,O=B.useMemo(()=>f&&t.product==="operate"&&I&&C?Xe.transport.identityFromRoot(f,t,{cycleId:I,eventHead:C.eventHead,viewHash:C.viewHash}):null,[C,f,t,I]),S=a&&f&&O?JSON.stringify({root:f,binding:O}):null,_=B.useMemo(()=>f&&t.kind==="operate.review"?Xe.transport.identityFromRoot(f,t,{cycleId:t.cycleId}):null,[f,t]),k=a&&_?JSON.stringify({root:f,route:_.route}):null,N=Fr(k,R=>{if(!a||!f||t.kind!=="operate.review")throw new Error("Operate Review query custody is incomplete.");return Xe.review.fetch({origin:a,root:f,cycleId:t.cycleId,reviewId:t.subjectId,signal:R})}),z=B.useMemo(()=>D4(t),[t]),M=B.useMemo(()=>f&&tu(t)&&I&&C?Xe.transport.identityFromRoot(f,z,{cycleId:I,eventHead:C.eventHead,viewHash:C.viewHash}):null,[z,C,f,t,I]),L=a&&f&&M?JSON.stringify({root:f,binding:M}):null,Z=R4(t),F=Fr(Z?S:null,R=>{if(!a||!f||!I||!Z)throw new Error("Operate audit query custody is incomplete.");return Xe.transport.fetchAuditDisplay({origin:a,root:f,route:t,surface:Z,cycleId:I,signal:R})}),oe=Fr(t.kind==="operate.cycle"?S:null,R=>{if(!a||!f||t.kind!=="operate.cycle")throw new Error("Operate Cycle query custody is incomplete.");return Xe.transport.fetchCycleDisplay({origin:a,root:f,cycleId:t.subjectId,signal:R})}),re=Fr(tu(t)?L:null,R=>{if(!a||!M)throw new Error("Operate route display custody is incomplete.");if(t.kind==="operate.actions")return Xe.actions.fetchList({origin:a,identity:M,signal:R});if(t.kind==="operate.action"||t.kind==="operate.action-planning")return Xe.actions.fetchDetail({origin:a,identity:M,signal:R});if(t.kind==="operate.inbox"||t.kind==="operate.inbox-item")return Xe.actions.fetchInbox({origin:a,identity:M,signal:R});if(t.kind==="operate.recovery")return Xe.actions.fetchRecovery({origin:a,identity:M,signal:R});throw new Error("Operate route does not own a bound display read.")}),pe=B.useMemo(()=>y?Bw(m,y):Pr,[y,m]),Y=B.useMemo(()=>{if(!f)return null;const R=Ne.routing.parse("#/operate/today");return Xe.transport.identityFromRoot(f,R,{cycleId:j})},[j,f]),V=B.useMemo(()=>Y?vw(b,Y,"today",w):Pr,[w,Y,b]),te=B.useMemo(()=>{if(!V.binding||!I)return null;const R=Xe.today.resolveModel({current:V},V.binding);return(R==null?void 0:R.kind)==="surface"?Xe.review.uniqueNavigationForCycle(R,I):null},[I,V]),le=B.useMemo(()=>f?Xe.transport.identityFromRoot(f,Ne.routing.parse("#/operate/cycles")):null,[f]),fe=B.useMemo(()=>le?vw(w,le,"cycles"):Pr,[le,w]),T=B.useMemo(()=>{var ne;if(!f||((ne=w.data)==null?void 0:ne.payload.surface)!=="cycles")return Object.freeze([]);const R=Vr(w.data),J=Ne.routing.parse("#/operate/cycles");return Object.freeze(w.data.payload.data.cycles.map(Ae=>Xe.transport.identityFromRoot(f,J,{cycleId:Ae.cycleId,eventHead:R.eventHead,viewHash:R.viewHash})))},[w,f]),X=B.useMemo(()=>{if(t.product==="planning")return Object.freeze({binding:pe.binding,projection:pe});if(t.product!=="operate"||!f)return Object.freeze({binding:null,projection:Pr});if(t.kind==="operate.today")return Object.freeze({binding:V.binding,projection:V});if(t.kind==="operate.cycles")return Object.freeze({binding:fe.binding,projection:fe});if(t.kind==="operate.review"){if(!_)return Object.freeze({binding:null,projection:Pr});const J=Ew(N,_);return Object.freeze({binding:J.binding,projection:J})}if(!C||!I)return Object.freeze({binding:null,projection:Pr});const R=O;if(!R)return Object.freeze({binding:null,projection:Pr});if(t.kind==="operate.cycle"){if(oe.data===null){const ne=oe.phase==="loading"||oe.phase==="idle"?pr(R):Ya(R,oe.error);return Object.freeze({binding:ne.binding,projection:ne})}const J=Ne.identity.create({...R,...Vr(oe.data)});return Object.freeze({binding:J,projection:Ei(oe,J,oe.data,Xe.cycles.createDetailValidator(J),Io(oe.data),oe.data.payload.mutationEnabled)})}if(Z){if(F.data===null){const Ae=F.phase==="loading"||F.phase==="idle"?pr(R):Ya(R,F.error);return Object.freeze({binding:Ae.binding,projection:Ae})}const J=Ne.identity.create({...R,...Vr(F.data)}),ne=Z==="evidence"?Xe.audit.createEvidenceValidator(J):Z==="outcomes"||Z==="outcome"?Xe.audit.createOutcomeValidator(J):Xe.audit.createHistoryValidator(J);return Object.freeze({binding:J,projection:Ei(F,J,F.data,ne,Io(F.data),!1)})}return tu(t)?Object.freeze({binding:R,projection:bw(re,R,t)}):Object.freeze({binding:R,projection:pr(R)})},[F,Z,re,O,oe,C,fe,f,pe,N,_,t,I,V]);B.useEffect(()=>{l(R=>R!==null&&R.routeKey!==s?null:R)},[s]);const se=B.useMemo(()=>c!==null&&c.routeKey===s&&(!Ne.projection.isValidatedState(X.projection)||X.projection.data===null)?Object.freeze({binding:c.binding,projection:c.projection}):X,[c,X,s]);B.useEffect(()=>{if(!a||!m.data||m.phase!=="ready"||!A)return;const R=Ne.identity.create({...A,eventHead:m.data.cursor.eventHead,viewHash:m.data.cursor.viewHash});let J=!0;const ne=Hc.createSseReconciler({identity:R,initial:m.data,isCurrent:()=>J,onSnapshot:()=>{},onPatch:()=>m.refetch(),onRefetch:()=>m.refetch(),onStale:()=>m.refetch()}),Ae=Hc.connectSse({origin:a,identity:R,reconciler:ne,lastEventId:Hc.encodeCheckpoint(m.data.cursor)});return Ae.completion.catch(()=>{}),()=>{J=!1,Ae.close()}},[a,A,m]),B.useEffect(()=>{if(!a||!f||!x||!Y)return;const R=Vr(x),J=Ne.identity.create({...Y,...R});let ne=!0;const Ae=Ne.transport.createSseReconciler({identity:J,isCurrent:()=>ne,onSnapshot:(xe,Ze)=>{var Ie,ce;(Ze.eventHead.sequence!==((Ie=R.eventHead)==null?void 0:Ie.sequence)||Ze.eventHead.hash!==((ce=R.eventHead)==null?void 0:ce.hash)||Ze.viewHash!==R.viewHash)&&(b.refetch(),w.refetch())},onPatch:()=>{b.refetch(),w.refetch()},onRefetch:()=>{b.refetch(),w.refetch()},onStale:()=>{b.refetch(),w.refetch()}}),we=Ne.transport.connectSse({origin:a,identity:J,reconciler:Ae});return we.completion.catch(()=>{}),()=>{ne=!1,we.close()}},[w,a,f,x,Y,b]);const de=B.useCallback(async()=>{const R=se;R.binding!==null&&Ne.projection.isValidatedState(R.projection)&&R.projection.data!==null&&l(Object.freeze({routeKey:s,binding:R.binding,projection:R.projection}));try{let J;if(t.kind==="operate.review"&&_){const ne=await N.reconcile();J=Ew(Object.freeze({phase:"ready",data:ne,error:null,refetch:N.refetch,reconcile:N.reconcile}),_)}else if(tu(t)&&O){const ne=await re.reconcile();J=bw(Object.freeze({phase:"ready",data:ne,error:null,refetch:re.refetch,reconcile:re.reconcile}),O,t)}else if(t.product==="planning"&&y){const ne=await m.reconcile();J=Bw(Object.freeze({phase:"ready",data:ne,error:null,refetch:m.refetch,reconcile:m.reconcile}),y)}else throw new Ne.projection.ValidationError("$.route","does not own an exact reconciliation read");if(!Ne.projection.isValidatedState(J)||J.data===null)throw new Ne.projection.ValidationError("$.projection","did not return a verified projection");return l(null),J}catch(J){const ne=R.binding!==null&&Ne.projection.isValidatedState(R.projection)&&R.projection.data!==null,Ae=yr(J,ne),we=ne?S4(R.projection,Ae):R.binding===null?R.projection:Ya(R.binding,Ae);return ne&&R.binding!==null&&l(Object.freeze({routeKey:s,binding:R.binding,projection:we})),we}},[re,O,se,y,m,N,_,t,s]);return Object.freeze({binding:se.binding,projection:se.projection,planningProjection:pe,operateCyclesProjection:fe,operateSearchBindings:T,operateReviewNavigation:te,refetchCurrent:de})}function ww(e){return e!==void 0?e:typeof window>"u"?"":window.location.hash}function G4(e,t){return e!==void 0||typeof window>"u"?()=>{}:(window.addEventListener("hashchange",t),()=>window.removeEventListener("hashchange",t))}function Y4({buildId:e,initialHash:t,identity:a,connection:s,bootstrap:c,bootPhase:l,bootDetail:u}){const f=B.useSyncExternalStore(S=>G4(t,S),()=>ww(t),()=>ww(t)),h=c===void 0&&s===void 0,[A,y]=B.useState(c??null),[m,E]=B.useState(l??(h?"checking":"compatible")),[b,w]=B.useState(u??null);B.useEffect(()=>{if(!h)return;const S=new AbortController;return E("checking"),w("Waiting for OpenPlanr to return a validated bootstrap envelope."),bP(e,{signal:S.signal}).then(_=>{y(_.bootstrap),E(_.phase==="compatible"?"compatible":_.phase),w(_.detail)}).catch(()=>{}),()=>S.abort()},[e,h]);const x=B.useMemo(()=>s??j1(A,e,b),[A,b,e,s]),j=B.useMemo(()=>a??Q1(A),[A,a]),I=B.useMemo(()=>Ha(f),[f]),C=I.kind==="system.diagnostics"||m==="incompatible"||x.state==="incompatible",O=M4(m==="compatible"&&x.state!=="incompatible"&&I.product!==null?A:null,I);return r.jsxs(E1,{buildId:e,initialHash:C?Pa(Mw):t,identity:j,connection:x,bootstrap:A,bootPhase:m,bootDetail:b,binding:O.binding,projection:O.projection,planningProjection:O.planningProjection,operateCyclesProjection:O.operateCyclesProjection,operateSearchBindings:O.operateSearchBindings,operateReviewNavigation:O.operateReviewNavigation,refetchCurrent:O.refetchCurrent,children:[r.jsx(v1,{}),r.jsx(gP,{})]})}const n0=document.querySelector("#root");if(!n0)throw new Error("OpenPlanr dashboard root element is missing.");TS.createRoot(n0).render(r.jsx(B.StrictMode,{children:r.jsx(Y4,{buildId:"dashboard-0.1.17-ca0af2628be347db"})}));
557
- //# sourceMappingURL=index-DI_TKz9J.js.map
556
+ `)}if(w.done){if(m.trim())return he("$","Planning live response ended mid-frame");break}}}finally{A.releaseLock()}})().catch(h=>{if(!t.signal.aborted)throw h instanceof ee?h:new ee("$","Planning live response failed safely")}).finally(()=>{var h;return(h=e.signal)==null?void 0:h.removeEventListener("abort",a)});return Object.freeze({completion:l,close:()=>{var h;t.abort(),e.reconciler.dispose(),(h=e.signal)==null||h.removeEventListener("abort",a)}})}const B4=Object.freeze({connectSse:E4,createSseReconciler:h4,encodeCheckpoint:y4,fetchGraph:A4,parseGraphEnvelope:Su}),v4=Object.freeze(Object.defineProperty({__proto__:null,planningRuntime:B4},Symbol.toStringTag,{value:"Module"})),b4=Object.freeze({create:Ve}),w4=Object.freeze({ValidationError:ee,isValidatedState:Pe,parseSafeError:Uw,parseState:so,statePolicy:oo}),x4=Object.freeze({parse:Ha}),j4=Object.freeze({connectSse:aI,createSseReconciler:nI}),Q4=Object.freeze({identity:b4,projection:w4,routing:x4,transport:j4}),I4=Object.freeze(Object.defineProperty({__proto__:null,dashboardRuntime:Q4},Symbol.toStringTag,{value:"Module"})),{operateRuntime:Xe}=JP,{planningRuntime:Hc}=v4,{dashboardRuntime:Ne}=I4,XI=new Set(["ready","read-only","stale","partial","blocked","offline"]),Pr=Ne.projection.parseState({kind:"booting",binding:null,data:null,reasonCodes:[],error:null,mutationEnabled:!1,policy:Ne.projection.statePolicy("booting")}),WI=Ne.routing.parse("#/overview");function e0(e){return`DASHBOARD_${e.toUpperCase().replace("-","_")}`}function pr(e){return Ne.projection.parseState({kind:"loading",binding:e,data:null,reasonCodes:[],error:null,mutationEnabled:!1,policy:Ne.projection.statePolicy("loading")},{currentBinding:e})}function t0(e,t=null){return Ne.projection.parseState({kind:"unavailable",binding:e,data:null,reasonCodes:["DASHBOARD_UNAVAILABLE"],error:t,mutationEnabled:!1,policy:Ne.projection.statePolicy("unavailable")},{currentBinding:e})}function yr(e,t=!1){const s=(e!==null&&typeof e=="object"&&!Array.isArray(e)?e:{}).code==="DASHBOARD_RESPONSE_INVALID"||e instanceof Ne.projection.ValidationError;return Ne.projection.parseSafeError({code:t||!s?"DASHBOARD_READ_FAILED":"DASHBOARD_RESPONSE_INVALID",retryable:!1,context:{operation:"dashboard.projection.read"}})}function Ya(e,t){const a=t??yr(void 0);if(a.code!=="DASHBOARD_RESPONSE_INVALID")return t0(e,a);const s=Ne.projection.parseSafeError({code:"DASHBOARD_RESPONSE_INVALID",retryable:!1,context:{}});return Ne.projection.parseState({kind:"corrupt",binding:null,data:null,reasonCodes:["DASHBOARD_CORRUPT"],error:s,mutationEnabled:!1,policy:Ne.projection.statePolicy("corrupt")})}function C4(e,t,a,s,c=!1,l=null){if(!XI.has(e))throw new Error("Unsupported owner presentation state.");return Ne.projection.parseState({kind:e,binding:t,data:a,reasonCodes:e==="ready"?[]:[e0(e)],error:l,mutationEnabled:e==="ready"&&c,policy:Ne.projection.statePolicy(e)},{currentBinding:t,validateData:s})}function S4(e,t){return!Ne.projection.isValidatedState(e)||e.binding===null||e.data===null?e:Ne.projection.parseState({kind:"stale",binding:e.binding,data:e.data,reasonCodes:["DASHBOARD_STALE"],error:t,mutationEnabled:!1,policy:Ne.projection.statePolicy("stale")},{currentBinding:e.binding,validateData:a=>a!==null})}function O4(e,t){return Ne.projection.parseState({kind:e,binding:t,data:null,reasonCodes:[e0(e)],error:null,mutationEnabled:!1,policy:Ne.projection.statePolicy(e)},{currentBinding:t})}function Fr(e,t){const a=B.useRef(t);a.current=t;const s=B.useRef(e);s.current=e;const c=B.useRef(null),l=B.useRef(null),[u,f]=B.useState(0),[h,A]=B.useState(()=>Object.freeze({key:null,revision:0,phase:"idle",data:null,error:null})),y=B.useCallback(()=>f(j=>j+1),[]),m=B.useCallback(()=>{var O;if(c.current!==null)return c.current;const j=s.current;if(j===null)return Promise.reject(new Error("Owner read is unavailable."));const I=new AbortController;(O=l.current)==null||O.abort(),l.current=I,A(S=>Object.freeze({key:j,revision:S.revision,phase:"loading",data:S.key===j?S.data:null,error:null}));const C=a.current(I.signal).then(S=>{if(I.signal.aborted||s.current!==j)throw new DOMException("Cancelled","AbortError");return A(_=>Object.freeze({key:j,revision:_.revision,phase:"ready",data:S,error:null})),S}).catch(S=>{throw!I.signal.aborted&&s.current===j&&A(_=>Object.freeze({key:j,revision:_.revision,phase:"failed",data:_.key===j?_.data:null,error:yr(S,_.key===j&&_.data!==null)})),S}).finally(()=>{c.current===C&&(c.current=null),l.current===I&&(l.current=null)});return c.current=C,C},[]);B.useEffect(()=>{var I;if((I=l.current)==null||I.abort(),l.current=null,c.current=null,e===null){A(Object.freeze({key:null,revision:u,phase:"idle",data:null,error:null}));return}const j=new AbortController;return A(C=>Object.freeze({key:e,revision:u,phase:"loading",data:C.key===e?C.data:null,error:null})),a.current(j.signal).then(C=>{j.signal.aborted||A(Object.freeze({key:e,revision:u,phase:"ready",data:C,error:null}))}).catch(C=>{j.signal.aborted||A(O=>Object.freeze({key:e,revision:u,phase:"failed",data:O.key===e?O.data:null,error:yr(C,O.key===e&&O.data!==null)}))}),()=>j.abort()},[e,u]);const E=h.key===e&&h.revision===u,b=E?h.phase:e===null?"idle":"loading",w=E?h.data:null,x=E?h.error:null;return B.useMemo(()=>Object.freeze({phase:b,data:w,error:x,refetch:y,reconcile:m}),[w,x,b,m,y])}function _4(e){return e===null?null:JSON.stringify(e)}function N4(e){return e.product==="planning"?e:WI}function R4(e){return e.kind==="operate.evidence"||e.kind==="operate.evidence-item"?"evidence":e.kind==="operate.outcomes"?"outcomes":e.kind==="operate.outcome"?"outcome":e.kind==="operate.history"?"history":null}function tu(e){return e.kind==="operate.actions"||e.kind==="operate.action"||e.kind==="operate.action-planning"||e.kind==="operate.inbox"||e.kind==="operate.inbox-item"||e.kind==="operate.recovery"}function D4(e){return e.kind==="operate.action-planning"?{kind:"operate.action",product:"operate",subjectId:e.subjectId}:e}function Vr(e){return Object.freeze({eventHead:e.payload.eventHead,viewHash:e.payload.viewHash})}function Io(e){const t=e.payload.status;if(!XI.has(t))throw new Ne.projection.ValidationError("$.payload.status","contains an unsupported display status");return t}function T4(e){return e.payload.status==="terminal"?"read-only":Io(e)}function Ew(e,t){if(e.data===null)return e.phase==="loading"||e.phase==="idle"?pr(t):Ya(t,e.error);const a=Ne.identity.create({...t,eventHead:e.data.payload.sourceEventHead,viewHash:e.data.payload.sourceViewHash});return Ei(e,a,e.data,Xe.review.createValidator(a),T4(e.data),e.data.payload.mutationEnabled)}function Ei(e,t,a,s,c,l=!1){const u=e.phase==="failed"?"stale":e.phase==="loading"||e.phase==="idle"?"refreshing":c;try{return C4(u,t,a,s,l,u==="stale"?e.error??yr(void 0,!0):null)}catch(f){return Ya(t,yr(f))}}function Bw(e,t){if(e.data===null)return e.phase==="loading"||e.phase==="idle"?pr(t):Ya(t,e.error);const a=Ne.identity.create({...t,eventHead:e.data.cursor.eventHead,viewHash:e.data.cursor.viewHash});return Ei(e,a,e.data,s=>{try{return Hc.parseGraphEnvelope(s,t),!0}catch{return!1}},"ready")}function vw(e,t,a,s){var u;if(e.data===null)return e.phase==="loading"||e.phase==="idle"?pr(t):Ya(t,e.error);const c=Ne.identity.create({...t,...Vr(e.data)}),l=a==="today"?Xe.today.createValidator(c):Xe.cycles.createListValidator(c);return e.phase!=="ready"?Ei(e,c,e.data,l,Io(e.data),e.data.payload.mutationEnabled):a==="today"&&e.data.payload.surface==="today"&&e.data.payload.status==="ready"&&e.data.payload.data.activeCycle===null?l(e.data)?s?s.phase==="loading"||s.phase==="idle"?Ei(Object.freeze({...e,phase:"loading",error:null}),c,e.data,l,"ready"):s.phase==="failed"?Ei(Object.freeze({...e,phase:"failed",error:s.error}),c,e.data,l,"ready"):((u=s.data)==null?void 0:u.payload.surface)!=="cycles"?Ya(c,yr(new Ne.projection.ValidationError("$.payload.surface","does not contain the required cycles display"))):O4(s.data.payload.data.cycles.length===0?"first-use":"empty",c):pr(c):Ya(c,yr(new Ne.projection.ValidationError("$.data","failed its owner-boundary contract"))):Ei(e,c,e.data,l,Io(e.data),e.data.payload.mutationEnabled)}function k4(e){if(e.subjectId===null)throw new Error("Action display identity requires a subject.");return Ne.identity.create({...e,route:`#/operate/actions/${encodeURIComponent(e.subjectId)}`})}function bw(e,t,a){if(e.data===null)return e.phase==="loading"||e.phase==="idle"?pr(t):Ya(t,e.error);const s=Ne.identity.create({...t,...Vr(e.data)});let c;if(a.kind==="operate.actions")c=Xe.actions.createListValidator(s);else if(a.kind==="operate.action"||a.kind==="operate.action-planning"){const l=a.kind==="operate.action-planning"?k4(s):s;c=Xe.actions.createDetailValidator(l)}else if(a.kind==="operate.inbox"||a.kind==="operate.inbox-item")c=Xe.actions.createInboxValidator(s);else if(a.kind==="operate.recovery")c=Xe.actions.createRecoveryValidator(s);else return t0(s);return Ei(e,s,e.data,c,Io(e.data),a.kind==="operate.action-planning"?!1:e.data.payload.mutationEnabled)}function M4(e,t){var ye,Ee;const a=(e==null?void 0:e.origin)??null,s=JSON.stringify(t),[c,l]=B.useState(null),u=(e==null?void 0:e.queryRoots.planning)??null,f=(e==null?void 0:e.queryRoots.operate)??null,h=B.useMemo(()=>N4(t),[t]),A=B.useMemo(()=>u?Xe.transport.identityFromRoot(u,WI):null,[u]),y=B.useMemo(()=>u?Xe.transport.identityFromRoot(u,h):null,[u,h]),m=Fr(A?JSON.stringify(A):null,R=>{if(!a||!A)throw new Error("Planning query root is unavailable.");return Hc.fetchGraph({origin:a,identity:A,signal:R})}),E=_4(f),b=Fr(E,R=>{if(!a||!f)throw new Error("Operate query root is unavailable.");return Xe.transport.fetchRootDisplay({origin:a,root:f,surface:"today",signal:R})}),w=Fr(E,R=>{if(!a||!f)throw new Error("Operate query root is unavailable.");return Xe.transport.fetchRootDisplay({origin:a,root:f,surface:"cycles",signal:R})}),x=((ye=b.data)==null?void 0:ye.payload.surface)==="today"?b.data:null,j=(x==null?void 0:x.payload.surface)==="today"?((Ee=x.payload.data.activeCycle)==null?void 0:Ee.cycleId)??null:null,I=t.kind==="operate.cycle"?t.subjectId:t.kind==="operate.review"?t.cycleId:j,C=x?Vr(x):null,O=B.useMemo(()=>f&&t.product==="operate"&&I&&C?Xe.transport.identityFromRoot(f,t,{cycleId:I,eventHead:C.eventHead,viewHash:C.viewHash}):null,[C,f,t,I]),S=a&&f&&O?JSON.stringify({root:f,binding:O}):null,_=B.useMemo(()=>f&&t.kind==="operate.review"?Xe.transport.identityFromRoot(f,t,{cycleId:t.cycleId}):null,[f,t]),k=a&&_?JSON.stringify({root:f,route:_.route}):null,N=Fr(k,R=>{if(!a||!f||t.kind!=="operate.review")throw new Error("Operate Review query custody is incomplete.");return Xe.review.fetch({origin:a,root:f,cycleId:t.cycleId,reviewId:t.subjectId,signal:R})}),z=B.useMemo(()=>D4(t),[t]),M=B.useMemo(()=>f&&tu(t)&&I&&C?Xe.transport.identityFromRoot(f,z,{cycleId:I,eventHead:C.eventHead,viewHash:C.viewHash}):null,[z,C,f,t,I]),L=a&&f&&M?JSON.stringify({root:f,binding:M}):null,Z=R4(t),F=Fr(Z?S:null,R=>{if(!a||!f||!I||!Z)throw new Error("Operate audit query custody is incomplete.");return Xe.transport.fetchAuditDisplay({origin:a,root:f,route:t,surface:Z,cycleId:I,signal:R})}),oe=Fr(t.kind==="operate.cycle"?S:null,R=>{if(!a||!f||t.kind!=="operate.cycle")throw new Error("Operate Cycle query custody is incomplete.");return Xe.transport.fetchCycleDisplay({origin:a,root:f,cycleId:t.subjectId,signal:R})}),re=Fr(tu(t)?L:null,R=>{if(!a||!M)throw new Error("Operate route display custody is incomplete.");if(t.kind==="operate.actions")return Xe.actions.fetchList({origin:a,identity:M,signal:R});if(t.kind==="operate.action"||t.kind==="operate.action-planning")return Xe.actions.fetchDetail({origin:a,identity:M,signal:R});if(t.kind==="operate.inbox"||t.kind==="operate.inbox-item")return Xe.actions.fetchInbox({origin:a,identity:M,signal:R});if(t.kind==="operate.recovery")return Xe.actions.fetchRecovery({origin:a,identity:M,signal:R});throw new Error("Operate route does not own a bound display read.")}),pe=B.useMemo(()=>y?Bw(m,y):Pr,[y,m]),Y=B.useMemo(()=>{if(!f)return null;const R=Ne.routing.parse("#/operate/today");return Xe.transport.identityFromRoot(f,R,{cycleId:j})},[j,f]),V=B.useMemo(()=>Y?vw(b,Y,"today",w):Pr,[w,Y,b]),te=B.useMemo(()=>{if(!V.binding||!I)return null;const R=Xe.today.resolveModel({current:V},V.binding);return(R==null?void 0:R.kind)==="surface"?Xe.review.uniqueNavigationForCycle(R,I):null},[I,V]),le=B.useMemo(()=>f?Xe.transport.identityFromRoot(f,Ne.routing.parse("#/operate/cycles")):null,[f]),fe=B.useMemo(()=>le?vw(w,le,"cycles"):Pr,[le,w]),T=B.useMemo(()=>{var ne;if(!f||((ne=w.data)==null?void 0:ne.payload.surface)!=="cycles")return Object.freeze([]);const R=Vr(w.data),J=Ne.routing.parse("#/operate/cycles");return Object.freeze(w.data.payload.data.cycles.map(Ae=>Xe.transport.identityFromRoot(f,J,{cycleId:Ae.cycleId,eventHead:R.eventHead,viewHash:R.viewHash})))},[w,f]),X=B.useMemo(()=>{if(t.product==="planning")return Object.freeze({binding:pe.binding,projection:pe});if(t.product!=="operate"||!f)return Object.freeze({binding:null,projection:Pr});if(t.kind==="operate.today")return Object.freeze({binding:V.binding,projection:V});if(t.kind==="operate.cycles")return Object.freeze({binding:fe.binding,projection:fe});if(t.kind==="operate.review"){if(!_)return Object.freeze({binding:null,projection:Pr});const J=Ew(N,_);return Object.freeze({binding:J.binding,projection:J})}if(!C||!I)return Object.freeze({binding:null,projection:Pr});const R=O;if(!R)return Object.freeze({binding:null,projection:Pr});if(t.kind==="operate.cycle"){if(oe.data===null){const ne=oe.phase==="loading"||oe.phase==="idle"?pr(R):Ya(R,oe.error);return Object.freeze({binding:ne.binding,projection:ne})}const J=Ne.identity.create({...R,...Vr(oe.data)});return Object.freeze({binding:J,projection:Ei(oe,J,oe.data,Xe.cycles.createDetailValidator(J),Io(oe.data),oe.data.payload.mutationEnabled)})}if(Z){if(F.data===null){const Ae=F.phase==="loading"||F.phase==="idle"?pr(R):Ya(R,F.error);return Object.freeze({binding:Ae.binding,projection:Ae})}const J=Ne.identity.create({...R,...Vr(F.data)}),ne=Z==="evidence"?Xe.audit.createEvidenceValidator(J):Z==="outcomes"||Z==="outcome"?Xe.audit.createOutcomeValidator(J):Xe.audit.createHistoryValidator(J);return Object.freeze({binding:J,projection:Ei(F,J,F.data,ne,Io(F.data),!1)})}return tu(t)?Object.freeze({binding:R,projection:bw(re,R,t)}):Object.freeze({binding:R,projection:pr(R)})},[F,Z,re,O,oe,C,fe,f,pe,N,_,t,I,V]);B.useEffect(()=>{l(R=>R!==null&&R.routeKey!==s?null:R)},[s]);const se=B.useMemo(()=>c!==null&&c.routeKey===s&&(!Ne.projection.isValidatedState(X.projection)||X.projection.data===null)?Object.freeze({binding:c.binding,projection:c.projection}):X,[c,X,s]);B.useEffect(()=>{if(!a||!m.data||m.phase!=="ready"||!A)return;const R=Ne.identity.create({...A,eventHead:m.data.cursor.eventHead,viewHash:m.data.cursor.viewHash});let J=!0;const ne=Hc.createSseReconciler({identity:R,initial:m.data,isCurrent:()=>J,onSnapshot:()=>{},onPatch:()=>m.refetch(),onRefetch:()=>m.refetch(),onStale:()=>m.refetch()}),Ae=Hc.connectSse({origin:a,identity:R,reconciler:ne,lastEventId:Hc.encodeCheckpoint(m.data.cursor)});return Ae.completion.catch(()=>{}),()=>{J=!1,Ae.close()}},[a,A,m]),B.useEffect(()=>{if(!a||!f||!x||!Y)return;const R=Vr(x),J=Ne.identity.create({...Y,...R});let ne=!0;const Ae=Ne.transport.createSseReconciler({identity:J,isCurrent:()=>ne,onSnapshot:(xe,Ze)=>{var Ie,ce;(Ze.eventHead.sequence!==((Ie=R.eventHead)==null?void 0:Ie.sequence)||Ze.eventHead.hash!==((ce=R.eventHead)==null?void 0:ce.hash)||Ze.viewHash!==R.viewHash)&&(b.refetch(),w.refetch())},onPatch:()=>{b.refetch(),w.refetch()},onRefetch:()=>{b.refetch(),w.refetch()},onStale:()=>{b.refetch(),w.refetch()}}),we=Ne.transport.connectSse({origin:a,identity:J,reconciler:Ae});return we.completion.catch(()=>{}),()=>{ne=!1,we.close()}},[w,a,f,x,Y,b]);const de=B.useCallback(async()=>{const R=se;R.binding!==null&&Ne.projection.isValidatedState(R.projection)&&R.projection.data!==null&&l(Object.freeze({routeKey:s,binding:R.binding,projection:R.projection}));try{let J;if(t.kind==="operate.review"&&_){const ne=await N.reconcile();J=Ew(Object.freeze({phase:"ready",data:ne,error:null,refetch:N.refetch,reconcile:N.reconcile}),_)}else if(tu(t)&&O){const ne=await re.reconcile();J=bw(Object.freeze({phase:"ready",data:ne,error:null,refetch:re.refetch,reconcile:re.reconcile}),O,t)}else if(t.product==="planning"&&y){const ne=await m.reconcile();J=Bw(Object.freeze({phase:"ready",data:ne,error:null,refetch:m.refetch,reconcile:m.reconcile}),y)}else throw new Ne.projection.ValidationError("$.route","does not own an exact reconciliation read");if(!Ne.projection.isValidatedState(J)||J.data===null)throw new Ne.projection.ValidationError("$.projection","did not return a verified projection");return l(null),J}catch(J){const ne=R.binding!==null&&Ne.projection.isValidatedState(R.projection)&&R.projection.data!==null,Ae=yr(J,ne),we=ne?S4(R.projection,Ae):R.binding===null?R.projection:Ya(R.binding,Ae);return ne&&R.binding!==null&&l(Object.freeze({routeKey:s,binding:R.binding,projection:we})),we}},[re,O,se,y,m,N,_,t,s]);return Object.freeze({binding:se.binding,projection:se.projection,planningProjection:pe,operateCyclesProjection:fe,operateSearchBindings:T,operateReviewNavigation:te,refetchCurrent:de})}function ww(e){return e!==void 0?e:typeof window>"u"?"":window.location.hash}function G4(e,t){return e!==void 0||typeof window>"u"?()=>{}:(window.addEventListener("hashchange",t),()=>window.removeEventListener("hashchange",t))}function Y4({buildId:e,initialHash:t,identity:a,connection:s,bootstrap:c,bootPhase:l,bootDetail:u}){const f=B.useSyncExternalStore(S=>G4(t,S),()=>ww(t),()=>ww(t)),h=c===void 0&&s===void 0,[A,y]=B.useState(c??null),[m,E]=B.useState(l??(h?"checking":"compatible")),[b,w]=B.useState(u??null);B.useEffect(()=>{if(!h)return;const S=new AbortController;return E("checking"),w("Waiting for OpenPlanr to return a validated bootstrap envelope."),bP(e,{signal:S.signal}).then(_=>{y(_.bootstrap),E(_.phase==="compatible"?"compatible":_.phase),w(_.detail)}).catch(()=>{}),()=>S.abort()},[e,h]);const x=B.useMemo(()=>s??j1(A,e,b),[A,b,e,s]),j=B.useMemo(()=>a??Q1(A),[A,a]),I=B.useMemo(()=>Ha(f),[f]),C=I.kind==="system.diagnostics"||m==="incompatible"||x.state==="incompatible",O=M4(m==="compatible"&&x.state!=="incompatible"&&I.product!==null?A:null,I);return r.jsxs(E1,{buildId:e,initialHash:C?Pa(Mw):t,identity:j,connection:x,bootstrap:A,bootPhase:m,bootDetail:b,binding:O.binding,projection:O.projection,planningProjection:O.planningProjection,operateCyclesProjection:O.operateCyclesProjection,operateSearchBindings:O.operateSearchBindings,operateReviewNavigation:O.operateReviewNavigation,refetchCurrent:O.refetchCurrent,children:[r.jsx(v1,{}),r.jsx(gP,{})]})}const n0=document.querySelector("#root");if(!n0)throw new Error("OpenPlanr dashboard root element is missing.");TS.createRoot(n0).render(r.jsx(B.StrictMode,{children:r.jsx(Y4,{buildId:"dashboard-0.1.18-642d0e2451a256dc"})}));
557
+ //# sourceMappingURL=index-Csby7_ur.js.map