wp-typia 0.24.2 → 0.24.3

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.
@@ -244163,13 +244163,7 @@ var init_cli_add = __esm(() => {
244163
244163
  init_workspace_inventory();
244164
244164
  });
244165
244165
 
244166
- // ../wp-typia-project-tools/src/runtime/cli-scaffold.ts
244167
- var exports_cli_scaffold = {};
244168
- __export(exports_cli_scaffold, {
244169
- runScaffoldFlow: () => runScaffoldFlow,
244170
- getOptionalOnboarding: () => getOptionalOnboarding,
244171
- getNextSteps: () => getNextSteps
244172
- });
244166
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold-files.ts
244173
244167
  import { promises as fsp43 } from "fs";
244174
244168
  import path91 from "path";
244175
244169
  async function listRelativeProjectFiles(rootDir) {
@@ -244197,58 +244191,43 @@ async function assertDryRunTargetDirectoryReady(projectDir, allowExistingDir) {
244197
244191
  throw new Error(formatNonEmptyTargetDirectoryError(projectDir));
244198
244192
  }
244199
244193
  }
244200
- async function buildScaffoldDryRunPlan({
244201
- allowExistingDir,
244202
- alternateRenderTargets,
244203
- answers,
244204
- cwd,
244205
- dataStorageMode,
244206
- externalLayerId,
244207
- externalLayerSource,
244208
- externalLayerSourceLabel,
244209
- installDependencies,
244210
- noInstall,
244211
- onProgress,
244212
- packageManager,
244213
- persistencePolicy,
244214
- profile,
244215
- projectDir,
244216
- templateId,
244217
- variant,
244218
- withMigrationUi,
244219
- withTestPreset,
244220
- withWpEnv
244221
- }) {
244222
- await assertDryRunTargetDirectoryReady(projectDir, allowExistingDir);
244194
+ async function readGeneratedPackageScripts(projectDir) {
244195
+ try {
244196
+ const parsedPackageJson = await readJsonFile(path91.join(projectDir, "package.json"), {
244197
+ context: "generated package manifest"
244198
+ });
244199
+ const scripts = parsedPackageJson.scripts && typeof parsedPackageJson.scripts === "object" && !Array.isArray(parsedPackageJson.scripts) ? parsedPackageJson.scripts : {};
244200
+ return Object.entries(scripts).filter(([, value2]) => typeof value2 === "string").map(([scriptName]) => scriptName);
244201
+ } catch {
244202
+ return;
244203
+ }
244204
+ }
244205
+ var init_cli_scaffold_files = __esm(() => {
244206
+ init_scaffold_bootstrap();
244207
+ init_fs_async();
244208
+ init_json_utils();
244209
+ });
244210
+
244211
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold-emission.ts
244212
+ import path92 from "path";
244213
+ async function emitScaffoldProject(options) {
244214
+ return scaffoldProject(options);
244215
+ }
244216
+ async function buildScaffoldDryRunPlan(options) {
244217
+ await assertDryRunTargetDirectoryReady(options.projectDir, options.allowExistingDir);
244223
244218
  const { path: tempRoot, cleanup } = await createManagedTempRoot("wp-typia-scaffold-plan-");
244224
- const previewProjectDir = path91.join(tempRoot, "preview-project");
244219
+ const previewProjectDir = path92.join(tempRoot, "preview-project");
244225
244220
  try {
244226
- const result = await scaffoldProject({
244221
+ const result = await emitScaffoldProject({
244222
+ ...options,
244227
244223
  allowExistingDir: false,
244228
- alternateRenderTargets,
244229
- answers,
244230
- cwd,
244231
- dataStorageMode,
244232
- externalLayerId,
244233
- externalLayerSource,
244234
- externalLayerSourceLabel,
244235
- installDependencies,
244236
244224
  noInstall: true,
244237
- onProgress,
244238
- packageManager,
244239
- persistencePolicy,
244240
- profile,
244241
- projectDir: previewProjectDir,
244242
- templateId,
244243
- variant,
244244
- withMigrationUi,
244245
- withTestPreset,
244246
- withWpEnv
244225
+ projectDir: previewProjectDir
244247
244226
  });
244248
244227
  const files = await listRelativeProjectFiles(previewProjectDir);
244249
244228
  return {
244250
244229
  plan: {
244251
- dependencyInstall: noInstall ? "skipped-by-flag" : "would-install",
244230
+ dependencyInstall: options.noInstall ? "skipped-by-flag" : "would-install",
244252
244231
  files
244253
244232
  },
244254
244233
  result
@@ -244257,19 +244236,77 @@ async function buildScaffoldDryRunPlan({
244257
244236
  await cleanup();
244258
244237
  }
244259
244238
  }
244239
+ var init_cli_scaffold_emission = __esm(() => {
244240
+ init_cli_scaffold_files();
244241
+ init_scaffold();
244242
+ init_temp_roots();
244243
+ });
244244
+
244245
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold-output.ts
244246
+ import path93 from "path";
244247
+ function quoteShellValue(value2) {
244248
+ if (!value2.startsWith("-") && /^[A-Za-z0-9._/@:-]+(?:\/[A-Za-z0-9._@:-]+)*$/.test(value2)) {
244249
+ return value2;
244250
+ }
244251
+ return `'${value2.replace(/'/g, `'"'"'`)}'`;
244252
+ }
244253
+ function getNextSteps({
244254
+ projectInput,
244255
+ projectDir,
244256
+ packageManager,
244257
+ noInstall,
244258
+ templateId
244259
+ }) {
244260
+ const cdTarget = path93.isAbsolute(projectInput) ? projectDir : projectInput;
244261
+ const steps = [`cd ${quoteShellValue(cdTarget)}`];
244262
+ if (noInstall) {
244263
+ steps.push(formatInstallCommand(packageManager));
244264
+ }
244265
+ steps.push(formatRunScript(packageManager, getPrimaryDevelopmentScript(templateId)));
244266
+ return steps;
244267
+ }
244268
+ function getOptionalOnboarding({
244269
+ availableScripts,
244270
+ packageManager,
244271
+ templateId,
244272
+ compoundPersistenceEnabled = false
244273
+ }) {
244274
+ return {
244275
+ note: getOptionalOnboardingNote(packageManager, templateId, {
244276
+ availableScripts,
244277
+ compoundPersistenceEnabled
244278
+ }),
244279
+ shortNote: getOptionalOnboardingShortNote(packageManager, templateId, {
244280
+ availableScripts,
244281
+ compoundPersistenceEnabled
244282
+ }),
244283
+ steps: getOptionalOnboardingSteps(packageManager, templateId, {
244284
+ availableScripts,
244285
+ compoundPersistenceEnabled
244286
+ })
244287
+ };
244288
+ }
244289
+ var init_cli_scaffold_output = __esm(() => {
244290
+ init_package_managers();
244291
+ init_scaffold_onboarding();
244292
+ init_local_dev_presets();
244293
+ });
244294
+
244295
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold-validation.ts
244296
+ import path94 from "path";
244260
244297
  function validateCreateProjectInput(projectInput) {
244261
244298
  const normalizedProjectInput = projectInput.trim();
244262
244299
  if (normalizedProjectInput.length === 0) {
244263
244300
  throw new Error("Project directory is required. Usage: wp-typia create <project-dir> (or wp-typia <project-dir> when <project-dir> is the only positional argument).");
244264
244301
  }
244265
- const normalizedProjectPath = path91.normalize(normalizedProjectInput).replace(/[\\/]+$/u, "") || path91.normalize(normalizedProjectInput);
244302
+ const normalizedProjectPath = path94.normalize(normalizedProjectInput).replace(/[\\/]+$/u, "") || path94.normalize(normalizedProjectInput);
244266
244303
  if (normalizedProjectPath === "." || normalizedProjectPath === "..") {
244267
244304
  throw new Error("`wp-typia create` requires a new project directory. Use an explicit child directory instead of `.` or `..`.");
244268
244305
  }
244269
244306
  }
244270
244307
  function collectProjectDirectoryWarnings(projectDir) {
244271
244308
  const warnings = [];
244272
- const projectName = path91.basename(projectDir);
244309
+ const projectName = path94.basename(projectDir);
244273
244310
  if (/\s/u.test(projectName)) {
244274
244311
  warnings.push(`Project directory "${projectName}" contains spaces. The generated next-step commands will be quoted, but a simple kebab-case directory name is usually easier to use with shells and downstream tooling.`);
244275
244312
  }
@@ -244378,7 +244415,7 @@ async function resolveOptionalSelection({
244378
244415
  if (!shouldResolve) {
244379
244416
  return;
244380
244417
  }
244381
- if (explicitValue) {
244418
+ if (explicitValue !== undefined) {
244382
244419
  return parseSelectableValue(label, explicitValue, isValue, allowedValues);
244383
244420
  }
244384
244421
  if (yes) {
@@ -244411,48 +244448,21 @@ async function resolveOptionalBooleanFlag({
244411
244448
  }
244412
244449
  return defaultValue;
244413
244450
  }
244414
- function quoteShellValue(value2) {
244415
- if (!value2.startsWith("-") && /^[A-Za-z0-9._/@:-]+(?:\/[A-Za-z0-9._@:-]+)*$/.test(value2)) {
244416
- return value2;
244417
- }
244418
- return `'${value2.replace(/'/g, `'"'"'`)}'`;
244419
- }
244420
- function getNextSteps({
244421
- projectInput,
244422
- projectDir,
244423
- packageManager,
244424
- noInstall,
244425
- templateId
244426
- }) {
244427
- const cdTarget = path91.isAbsolute(projectInput) ? projectDir : projectInput;
244428
- const steps = [`cd ${quoteShellValue(cdTarget)}`];
244429
- if (noInstall) {
244430
- steps.push(formatInstallCommand(packageManager));
244431
- }
244432
- steps.push(formatRunScript(packageManager, getPrimaryDevelopmentScript(templateId)));
244433
- return steps;
244434
- }
244435
- function getOptionalOnboarding({
244436
- availableScripts,
244437
- packageManager,
244438
- templateId,
244439
- compoundPersistenceEnabled = false
244440
- }) {
244441
- return {
244442
- note: getOptionalOnboardingNote(packageManager, templateId, {
244443
- availableScripts,
244444
- compoundPersistenceEnabled
244445
- }),
244446
- shortNote: getOptionalOnboardingShortNote(packageManager, templateId, {
244447
- availableScripts,
244448
- compoundPersistenceEnabled
244449
- }),
244450
- steps: getOptionalOnboardingSteps(packageManager, templateId, {
244451
- availableScripts,
244452
- compoundPersistenceEnabled
244453
- })
244454
- };
244455
- }
244451
+ var init_cli_scaffold_validation = __esm(() => {
244452
+ init_alternate_render_targets();
244453
+ init_compound_inner_blocks();
244454
+ init_cli_validation();
244455
+ init_template_registry();
244456
+ });
244457
+
244458
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold.ts
244459
+ var exports_cli_scaffold = {};
244460
+ __export(exports_cli_scaffold, {
244461
+ runScaffoldFlow: () => runScaffoldFlow,
244462
+ getOptionalOnboarding: () => getOptionalOnboarding,
244463
+ getNextSteps: () => getNextSteps
244464
+ });
244465
+ import path95 from "path";
244456
244466
  async function runScaffoldFlow({
244457
244467
  projectInput,
244458
244468
  cwd = process.cwd(),
@@ -244574,8 +244584,8 @@ async function runScaffoldFlow({
244574
244584
  select: selectWithMigrationUi,
244575
244585
  yes
244576
244586
  });
244577
- const projectDir = path91.resolve(cwd, projectInput);
244578
- const projectName = path91.basename(projectDir);
244587
+ const projectDir = path95.resolve(cwd, projectInput);
244588
+ const projectName = path95.basename(projectDir);
244579
244589
  const answers = await collectScaffoldAnswers({
244580
244590
  dataStorageMode: resolvedDataStorage,
244581
244591
  namespace,
@@ -244591,7 +244601,7 @@ async function runScaffoldFlow({
244591
244601
  if (resolvedTemplateId === "compound" && resolvedInnerBlocksPreset) {
244592
244602
  answers.compoundInnerBlocksPreset = resolvedInnerBlocksPreset;
244593
244603
  }
244594
- const resolvedResult = dryRun ? await buildScaffoldDryRunPlan({
244604
+ const emissionOptions = {
244595
244605
  allowExistingDir,
244596
244606
  alternateRenderTargets,
244597
244607
  answers,
@@ -244612,43 +244622,12 @@ async function runScaffoldFlow({
244612
244622
  withMigrationUi: resolvedWithMigrationUi,
244613
244623
  withTestPreset: resolvedWithTestPreset,
244614
244624
  withWpEnv: resolvedWithWpEnv
244615
- }) : {
244625
+ };
244626
+ const resolvedResult = dryRun ? await buildScaffoldDryRunPlan(emissionOptions) : {
244616
244627
  plan: undefined,
244617
- result: await scaffoldProject({
244618
- alternateRenderTargets,
244619
- answers,
244620
- allowExistingDir,
244621
- cwd,
244622
- dataStorageMode: resolvedDataStorage,
244623
- externalLayerId: resolvedExternalLayerSelection.externalLayerId,
244624
- externalLayerSource: resolvedExternalLayerSelection.externalLayerSource,
244625
- externalLayerSourceLabel: normalizedExternalLayerSource,
244626
- installDependencies,
244627
- noInstall,
244628
- onProgress,
244629
- packageManager: resolvedPackageManager,
244630
- persistencePolicy: resolvedPersistencePolicy,
244631
- profile: resolvedProfile,
244632
- projectDir,
244633
- templateId: resolvedTemplateId,
244634
- variant,
244635
- withMigrationUi: resolvedWithMigrationUi,
244636
- withTestPreset: resolvedWithTestPreset,
244637
- withWpEnv: resolvedWithWpEnv
244638
- })
244628
+ result: await emitScaffoldProject(emissionOptions)
244639
244629
  };
244640
- let availableScripts;
244641
- if (!dryRun) {
244642
- try {
244643
- const parsedPackageJson = await readJsonFile(path91.join(projectDir, "package.json"), {
244644
- context: "generated package manifest"
244645
- });
244646
- const scripts = parsedPackageJson.scripts && typeof parsedPackageJson.scripts === "object" && !Array.isArray(parsedPackageJson.scripts) ? parsedPackageJson.scripts : {};
244647
- availableScripts = Object.entries(scripts).filter(([, value2]) => typeof value2 === "string").map(([scriptName]) => scriptName);
244648
- } catch {
244649
- availableScripts = undefined;
244650
- }
244651
- }
244630
+ const availableScripts = dryRun ? undefined : await readGeneratedPackageScripts(projectDir);
244652
244631
  return {
244653
244632
  dryRun,
244654
244633
  optionalOnboarding: getOptionalOnboarding({
@@ -244687,19 +244666,16 @@ async function runScaffoldFlow({
244687
244666
  }
244688
244667
  var init_cli_scaffold = __esm(() => {
244689
244668
  init_scaffold();
244690
- init_alternate_render_targets();
244691
244669
  init_compound_inner_blocks();
244692
244670
  init_scaffold_template_variable_groups();
244693
- init_package_managers();
244694
- init_local_dev_presets();
244695
- init_temp_roots();
244696
- init_scaffold_onboarding();
244697
- init_scaffold_bootstrap();
244698
- init_fs_async();
244699
- init_json_utils();
244671
+ init_cli_scaffold_emission();
244672
+ init_cli_scaffold_files();
244673
+ init_cli_scaffold_output();
244674
+ init_cli_scaffold_validation();
244700
244675
  init_template_registry();
244701
244676
  init_external_layer_selection();
244702
244677
  init_cli_validation();
244678
+ init_cli_scaffold_output();
244703
244679
  });
244704
244680
 
244705
244681
  // ../wp-typia-project-tools/src/runtime/cli-templates.ts
@@ -244861,7 +244837,7 @@ var init_cli_templates = __esm(() => {
244861
244837
 
244862
244838
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-shared.ts
244863
244839
  import fs32 from "fs";
244864
- import path92 from "path";
244840
+ import path96 from "path";
244865
244841
  function createDoctorCheck(label, status, detail, code) {
244866
244842
  return code ? { code, detail, label, status } : { detail, label, status };
244867
244843
  }
@@ -244872,10 +244848,10 @@ function getWorkspaceBootstrapRelativePath(packageName) {
244872
244848
  return `${packageName.split("/").pop() ?? packageName}.php`;
244873
244849
  }
244874
244850
  function resolveWorkspaceBootstrapPath(projectDir, packageName) {
244875
- return path92.join(projectDir, getWorkspaceBootstrapRelativePath(packageName));
244851
+ return path96.join(projectDir, getWorkspaceBootstrapRelativePath(packageName));
244876
244852
  }
244877
244853
  function checkExistingFiles(projectDir, label, filePaths) {
244878
- const missing = filePaths.filter((filePath) => typeof filePath === "string").filter((filePath) => !fs32.existsSync(path92.join(projectDir, filePath)));
244854
+ const missing = filePaths.filter((filePath) => typeof filePath === "string").filter((filePath) => !fs32.existsSync(path96.join(projectDir, filePath)));
244879
244855
  return createDoctorCheck(label, missing.length === 0 ? "pass" : "fail", missing.length === 0 ? "All referenced files exist" : `Missing: ${missing.join(", ")}`);
244880
244856
  }
244881
244857
  var WORKSPACE_BINDING_SERVER_GLOB = "/src/bindings/*/server.php", WORKSPACE_BINDING_EDITOR_SCRIPT = "build/bindings/index.js", WORKSPACE_BINDING_EDITOR_ASSET = "build/bindings/index.asset.php", WORKSPACE_REST_RESOURCE_GLOB = "/inc/rest/*.php", WORKSPACE_POST_META_GLOB = "/inc/post-meta/*.php", WORKSPACE_ABILITY_GLOB = "/inc/abilities/*.php", WORKSPACE_ABILITY_EDITOR_SCRIPT = "build/abilities/index.js", WORKSPACE_ABILITY_EDITOR_ASSET = "build/abilities/index.asset.php", WORKSPACE_AI_FEATURE_GLOB = "/inc/ai-features/*.php", WORKSPACE_ADMIN_VIEW_GLOB = "/inc/admin-views/*.php", WORKSPACE_ADMIN_VIEW_SCRIPT = "build/admin-views/index.js", WORKSPACE_ADMIN_VIEW_ASSET = "build/admin-views/index.asset.php", WORKSPACE_ADMIN_VIEW_STYLE = "build/admin-views/style-index.css", WORKSPACE_EDITOR_PLUGIN_EDITOR_SCRIPT = "build/editor-plugins/index.js", WORKSPACE_EDITOR_PLUGIN_EDITOR_ASSET = "build/editor-plugins/index.asset.php", WORKSPACE_EDITOR_PLUGIN_EDITOR_STYLE = "build/editor-plugins/style-index.css", WORKSPACE_GENERATED_BLOCK_ARTIFACTS, WORKSPACE_FULL_BLOCK_NAME_PATTERN;
@@ -244895,7 +244871,7 @@ import { execFileSync as execFileSync3 } from "child_process";
244895
244871
  import { access, constants as fsConstants, rm as rm2, writeFile as writeFile6 } from "fs/promises";
244896
244872
  import fs33 from "fs";
244897
244873
  import os5 from "os";
244898
- import path93 from "path";
244874
+ import path97 from "path";
244899
244875
  function readCommandVersion(command, args = ["--version"]) {
244900
244876
  try {
244901
244877
  return execFileSync3(command, args, {
@@ -244919,7 +244895,7 @@ async function checkWritableDirectory(directory) {
244919
244895
  }
244920
244896
  }
244921
244897
  async function checkTempDirectory() {
244922
- const tempFile = path93.join(os5.tmpdir(), `wp-typia-${Date.now()}.tmp`);
244898
+ const tempFile = path97.join(os5.tmpdir(), `wp-typia-${Date.now()}.tmp`);
244923
244899
  try {
244924
244900
  await writeFile6(tempFile, "ok", "utf8");
244925
244901
  await rm2(tempFile, { force: true });
@@ -244933,7 +244909,7 @@ function getTemplateDoctorChecks() {
244933
244909
  for (const template of listTemplates()) {
244934
244910
  if (!isBuiltInTemplateId(template.id)) {
244935
244911
  const templateDirExists = fs33.existsSync(template.templateDir);
244936
- const hasAssets2 = templateDirExists && fs33.existsSync(path93.join(template.templateDir, "package.json.mustache"));
244912
+ const hasAssets2 = templateDirExists && fs33.existsSync(path97.join(template.templateDir, "package.json.mustache"));
244937
244913
  checks3.push({
244938
244914
  status: !templateDirExists || hasAssets2 ? "pass" : "fail",
244939
244915
  label: `Template ${template.id}`,
@@ -244958,7 +244934,7 @@ function getTemplateDoctorChecks() {
244958
244934
  ])) : getBuiltInTemplateLayerDirs(builtInTemplateId);
244959
244935
  const missingRequiredLayer = layerDirs.some((layerDir) => !fs33.existsSync(layerDir) && !isOmittableBuiltInTemplateLayerDir(builtInTemplateId, layerDir));
244960
244936
  const existingLayerDirs = layerDirs.filter((layerDir) => fs33.existsSync(layerDir));
244961
- const hasAssets = !missingRequiredLayer && existingLayerDirs.some((layerDir) => fs33.existsSync(path93.join(layerDir, "package.json.mustache"))) && existingLayerDirs.some((layerDir) => fs33.existsSync(path93.join(layerDir, "src")));
244937
+ const hasAssets = !missingRequiredLayer && existingLayerDirs.some((layerDir) => fs33.existsSync(path97.join(layerDir, "package.json.mustache"))) && existingLayerDirs.some((layerDir) => fs33.existsSync(path97.join(layerDir, "src")));
244962
244938
  checks3.push({
244963
244939
  status: hasAssets ? "pass" : "fail",
244964
244940
  label: `Template ${template.id}`,
@@ -244990,12 +244966,12 @@ var init_cli_doctor_environment = __esm(() => {
244990
244966
 
244991
244967
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-bindings.ts
244992
244968
  import fs34 from "fs";
244993
- import path94 from "path";
244969
+ import path98 from "path";
244994
244970
  import { parseScaffoldBlockMetadata as parseScaffoldBlockMetadata2 } from "@wp-typia/block-runtime/blocks";
244995
244971
  function checkWorkspaceBindingBootstrap(projectDir, packageName) {
244996
244972
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
244997
244973
  if (!fs34.existsSync(bootstrapPath)) {
244998
- return createDoctorCheck("Binding bootstrap", "fail", `Missing ${path94.basename(bootstrapPath)}`);
244974
+ return createDoctorCheck("Binding bootstrap", "fail", `Missing ${path98.basename(bootstrapPath)}`);
244999
244975
  }
245000
244976
  const source = fs34.readFileSync(bootstrapPath, "utf8");
245001
244977
  const hasServerGlob = source.includes(WORKSPACE_BINDING_SERVER_GLOB);
@@ -245005,11 +244981,11 @@ function checkWorkspaceBindingBootstrap(projectDir, packageName) {
245005
244981
  return createDoctorCheck("Binding bootstrap", hasServerGlob && hasEditorEnqueueHook && hasEditorScript && hasEditorAsset ? "pass" : "fail", hasServerGlob && hasEditorEnqueueHook && hasEditorScript && hasEditorAsset ? "Binding source PHP and editor bootstrap hooks are present" : "Missing binding source PHP require glob or editor enqueue hook");
245006
244982
  }
245007
244983
  function checkWorkspaceBindingSourcesIndex(projectDir, bindingSources) {
245008
- const indexRelativePath = [path94.join("src", "bindings", "index.ts"), path94.join("src", "bindings", "index.js")].find((relativePath) => fs34.existsSync(path94.join(projectDir, relativePath)));
244984
+ const indexRelativePath = [path98.join("src", "bindings", "index.ts"), path98.join("src", "bindings", "index.js")].find((relativePath) => fs34.existsSync(path98.join(projectDir, relativePath)));
245009
244985
  if (!indexRelativePath) {
245010
244986
  return createDoctorCheck("Binding sources index", "fail", "Missing src/bindings/index.ts or src/bindings/index.js");
245011
244987
  }
245012
- const indexPath = path94.join(projectDir, indexRelativePath);
244988
+ const indexPath = path98.join(projectDir, indexRelativePath);
245013
244989
  const source = fs34.readFileSync(indexPath, "utf8");
245014
244990
  const missingImports = bindingSources.filter((bindingSource) => !source.includes(`./${bindingSource.slug}/editor`));
245015
244991
  return createDoctorCheck("Binding sources index", missingImports.length === 0 ? "pass" : "fail", missingImports.length === 0 ? "Binding source editor registrations are aggregated" : `Missing editor imports for: ${missingImports.map((entry) => entry.slug).join(", ")}`);
@@ -245026,8 +245002,8 @@ function checkWorkspaceBindingTarget(projectDir, workspace, registeredBlockSlugs
245026
245002
  if (!registeredBlockSlugs.has(bindingSource.block)) {
245027
245003
  return createDoctorCheck(`Binding target ${bindingSource.slug}`, "fail", `Binding target references unknown block "${bindingSource.block}".`);
245028
245004
  }
245029
- const blockJsonRelativePath = path94.join("src", "blocks", bindingSource.block, "block.json");
245030
- const blockJsonPath = path94.join(projectDir, blockJsonRelativePath);
245005
+ const blockJsonRelativePath = path98.join("src", "blocks", bindingSource.block, "block.json");
245006
+ const blockJsonPath = path98.join(projectDir, blockJsonRelativePath);
245031
245007
  const issues = [];
245032
245008
  try {
245033
245009
  const blockJson = parseScaffoldBlockMetadata2(readJsonFileSync(blockJsonPath, {
@@ -245045,7 +245021,7 @@ function checkWorkspaceBindingTarget(projectDir, workspace, registeredBlockSlugs
245045
245021
  } catch (error48) {
245046
245022
  issues.push(error48 instanceof Error ? `Unable to read ${blockJsonRelativePath}: ${error48.message}` : `Unable to read ${blockJsonRelativePath}.`);
245047
245023
  }
245048
- const serverPath = path94.join(projectDir, bindingSource.serverFile);
245024
+ const serverPath = path98.join(projectDir, bindingSource.serverFile);
245049
245025
  if (fs34.existsSync(serverPath)) {
245050
245026
  const serverSource = fs34.readFileSync(serverPath, "utf8");
245051
245027
  const supportedAttributesFilter = `block_bindings_supported_attributes_${workspace.workspace.namespace}/${bindingSource.block}`;
@@ -245058,7 +245034,7 @@ function checkWorkspaceBindingTarget(projectDir, workspace, registeredBlockSlugs
245058
245034
  } else {
245059
245035
  issues.push(`Missing ${bindingSource.serverFile}`);
245060
245036
  }
245061
- const editorPath = path94.join(projectDir, bindingSource.editorFile);
245037
+ const editorPath = path98.join(projectDir, bindingSource.editorFile);
245062
245038
  if (fs34.existsSync(editorPath)) {
245063
245039
  const editorSource = fs34.readFileSync(editorPath, "utf8");
245064
245040
  const blockName = `${workspace.workspace.namespace}/${bindingSource.block}`;
@@ -245098,7 +245074,7 @@ function checkWorkspaceBindingPostMeta(projectDir, inventory, bindingSource) {
245098
245074
  } catch (error48) {
245099
245075
  issues.push(error48 instanceof Error ? error48.message : String(error48));
245100
245076
  }
245101
- const serverPath = path94.join(projectDir, bindingSource.serverFile);
245077
+ const serverPath = path98.join(projectDir, bindingSource.serverFile);
245102
245078
  if (fs34.existsSync(serverPath)) {
245103
245079
  const serverSource = fs34.readFileSync(serverPath, "utf8");
245104
245080
  if (!serverSource.includes("get_post_meta")) {
@@ -245113,7 +245089,7 @@ function checkWorkspaceBindingPostMeta(projectDir, inventory, bindingSource) {
245113
245089
  } else {
245114
245090
  issues.push(`Missing ${bindingSource.serverFile}`);
245115
245091
  }
245116
- const editorPath = path94.join(projectDir, bindingSource.editorFile);
245092
+ const editorPath = path98.join(projectDir, bindingSource.editorFile);
245117
245093
  if (fs34.existsSync(editorPath)) {
245118
245094
  const editorSource = fs34.readFileSync(editorPath, "utf8");
245119
245095
  if (!editorSource.includes("POST_META_BINDING_FIELDS")) {
@@ -245161,7 +245137,7 @@ var init_cli_doctor_workspace_bindings = __esm(() => {
245161
245137
 
245162
245138
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-block-addons.ts
245163
245139
  import fs35 from "fs";
245164
- import path95 from "path";
245140
+ import path99 from "path";
245165
245141
  function isNestedPatternContentFile(patternFile) {
245166
245142
  if (!patternFile) {
245167
245143
  return false;
@@ -245172,7 +245148,7 @@ function isNestedPatternContentFile(patternFile) {
245172
245148
  function checkWorkspacePatternBootstrap(projectDir, packageName, requiresNestedPatternGlob) {
245173
245149
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245174
245150
  if (!fs35.existsSync(bootstrapPath)) {
245175
- return createDoctorCheck("Pattern bootstrap", "fail", `Missing ${path95.basename(bootstrapPath)}`);
245151
+ return createDoctorCheck("Pattern bootstrap", "fail", `Missing ${path99.basename(bootstrapPath)}`);
245176
245152
  }
245177
245153
  const source = fs35.readFileSync(bootstrapPath, "utf8");
245178
245154
  const hasCategoryAnchor = source.includes("register_block_pattern_category");
@@ -245182,9 +245158,9 @@ function checkWorkspacePatternBootstrap(projectDir, packageName, requiresNestedP
245182
245158
  return createDoctorCheck("Pattern bootstrap", hasCategoryAnchor && hasRequiredPatternGlobs ? "pass" : "fail", hasCategoryAnchor && hasRequiredPatternGlobs ? "Pattern category and loader hooks are present" : requiresNestedPatternGlob ? "Missing pattern category registration or nested src/patterns loader hook" : "Missing pattern category registration or src/patterns loader hook");
245183
245159
  }
245184
245160
  function checkVariationEntrypoint(projectDir, blockSlug) {
245185
- const entryPath = path95.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245161
+ const entryPath = path99.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245186
245162
  if (!fs35.existsSync(entryPath)) {
245187
- return createDoctorCheck(`Variation entrypoint ${blockSlug}`, "fail", `Missing ${path95.relative(projectDir, entryPath)}`);
245163
+ return createDoctorCheck(`Variation entrypoint ${blockSlug}`, "fail", `Missing ${path99.relative(projectDir, entryPath)}`);
245188
245164
  }
245189
245165
  const source = fs35.readFileSync(entryPath, "utf8");
245190
245166
  const hasImport = hasUncommentedPattern(source, WORKSPACE_VARIATIONS_IMPORT_PATTERN);
@@ -245192,9 +245168,9 @@ function checkVariationEntrypoint(projectDir, blockSlug) {
245192
245168
  return createDoctorCheck(`Variation entrypoint ${blockSlug}`, hasImport && hasCall ? "pass" : "fail", hasImport && hasCall ? "Variations registration hook is present" : "Missing ./variations import or registerWorkspaceVariations() call");
245193
245169
  }
245194
245170
  function checkBlockStyleEntrypoint(projectDir, blockSlug) {
245195
- const entryPath = path95.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245171
+ const entryPath = path99.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245196
245172
  if (!fs35.existsSync(entryPath)) {
245197
- return createDoctorCheck(`Block style entrypoint ${blockSlug}`, "fail", `Missing ${path95.relative(projectDir, entryPath)}`);
245173
+ return createDoctorCheck(`Block style entrypoint ${blockSlug}`, "fail", `Missing ${path99.relative(projectDir, entryPath)}`);
245198
245174
  }
245199
245175
  const source = fs35.readFileSync(entryPath, "utf8");
245200
245176
  const hasImport = hasUncommentedPattern(source, WORKSPACE_BLOCK_STYLES_IMPORT_PATTERN);
@@ -245202,9 +245178,9 @@ function checkBlockStyleEntrypoint(projectDir, blockSlug) {
245202
245178
  return createDoctorCheck(`Block style entrypoint ${blockSlug}`, hasImport && hasCall ? "pass" : "fail", hasImport && hasCall ? "Block style registration hook is present" : "Missing ./styles import or registerWorkspaceBlockStyles() call");
245203
245179
  }
245204
245180
  function checkBlockTransformEntrypoint(projectDir, blockSlug) {
245205
- const entryPath = path95.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245181
+ const entryPath = path99.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245206
245182
  if (!fs35.existsSync(entryPath)) {
245207
- return createDoctorCheck(`Block transform entrypoint ${blockSlug}`, "fail", `Missing ${path95.relative(projectDir, entryPath)}`);
245183
+ return createDoctorCheck(`Block transform entrypoint ${blockSlug}`, "fail", `Missing ${path99.relative(projectDir, entryPath)}`);
245208
245184
  }
245209
245185
  const source = fs35.readFileSync(entryPath, "utf8");
245210
245186
  const hasImport = hasUncommentedPattern(source, WORKSPACE_BLOCK_TRANSFORMS_IMPORT_PATTERN);
@@ -245247,7 +245223,7 @@ function getWorkspaceBlockAddonDoctorChecks(workspace, inventory, registeredBloc
245247
245223
  }
245248
245224
  for (const blockSlug of blockStyleTargetBlocks) {
245249
245225
  checks3.push(checkExistingFiles(workspace.projectDir, `Block style registry ${blockSlug}`, [
245250
- path95.join("src", "blocks", blockSlug, "styles", "index.ts")
245226
+ path99.join("src", "blocks", blockSlug, "styles", "index.ts")
245251
245227
  ]));
245252
245228
  checks3.push(checkBlockStyleEntrypoint(workspace.projectDir, blockSlug));
245253
245229
  }
@@ -245263,11 +245239,11 @@ function getWorkspaceBlockAddonDoctorChecks(workspace, inventory, registeredBloc
245263
245239
  }
245264
245240
  for (const blockSlug of blockTransformTargetBlocks) {
245265
245241
  checks3.push(checkExistingFiles(workspace.projectDir, `Block transform registry ${blockSlug}`, [
245266
- path95.join("src", "blocks", blockSlug, "transforms", "index.ts")
245242
+ path99.join("src", "blocks", blockSlug, "transforms", "index.ts")
245267
245243
  ]));
245268
245244
  checks3.push(checkBlockTransformEntrypoint(workspace.projectDir, blockSlug));
245269
245245
  }
245270
- const shouldCheckPatternBootstrap = inventory.patterns.length > 0 || fs35.existsSync(path95.join(workspace.projectDir, "src", "patterns"));
245246
+ const shouldCheckPatternBootstrap = inventory.patterns.length > 0 || fs35.existsSync(path99.join(workspace.projectDir, "src", "patterns"));
245271
245247
  if (shouldCheckPatternBootstrap) {
245272
245248
  const requiresNestedPatternGlob = inventory.patterns.some((pattern) => isNestedPatternContentFile(resolvePatternCatalogContentFile(pattern)));
245273
245249
  checks3.push(checkWorkspacePatternBootstrap(workspace.projectDir, workspace.packageName, requiresNestedPatternGlob));
@@ -245299,10 +245275,10 @@ var init_cli_doctor_workspace_block_addons = __esm(() => {
245299
245275
 
245300
245276
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-block-iframe.ts
245301
245277
  import fs36 from "fs";
245302
- import path96 from "path";
245278
+ import path100 from "path";
245303
245279
  import { parseScaffoldBlockMetadata as parseScaffoldBlockMetadata3 } from "@wp-typia/block-runtime/blocks";
245304
245280
  function normalizePathSeparators(relativePath) {
245305
- return relativePath.split(path96.sep).join("/");
245281
+ return relativePath.split(path100.sep).join("/");
245306
245282
  }
245307
245283
  function hasRegisteredBlockAsset(value2) {
245308
245284
  if (typeof value2 === "string") {
@@ -245314,8 +245290,8 @@ function hasRegisteredBlockAsset(value2) {
245314
245290
  return false;
245315
245291
  }
245316
245292
  function readWorkspaceBlockIframeMetadata(projectDir, blockSlug) {
245317
- const blockJsonRelativePath = path96.join("src", "blocks", blockSlug, "block.json");
245318
- const blockJsonPath = path96.join(projectDir, blockJsonRelativePath);
245293
+ const blockJsonRelativePath = path100.join("src", "blocks", blockSlug, "block.json");
245294
+ const blockJsonPath = path100.join(projectDir, blockJsonRelativePath);
245319
245295
  if (!fs36.existsSync(blockJsonPath)) {
245320
245296
  return {
245321
245297
  blockJsonRelativePath,
@@ -245342,8 +245318,8 @@ function isWorkspaceBlockEditorSource(relativePath) {
245342
245318
  return false;
245343
245319
  }
245344
245320
  const normalizedRelativePath = normalizePathSeparators(relativePath);
245345
- const normalizedDirName = path96.posix.dirname(normalizedRelativePath);
245346
- const normalizedBaseName = path96.posix.basename(normalizedRelativePath, path96.posix.extname(normalizedRelativePath));
245321
+ const normalizedDirName = path100.posix.dirname(normalizedRelativePath);
245322
+ const normalizedBaseName = path100.posix.basename(normalizedRelativePath, path100.posix.extname(normalizedRelativePath));
245347
245323
  if (WORKSPACE_BLOCK_EDITOR_SOURCE_BASENAMES.has(normalizedBaseName)) {
245348
245324
  return true;
245349
245325
  }
@@ -245351,11 +245327,11 @@ function isWorkspaceBlockEditorSource(relativePath) {
245351
245327
  return pathSegments.some((segment) => WORKSPACE_BLOCK_EDITOR_SOURCE_DIRECTORIES.has(segment));
245352
245328
  }
245353
245329
  function isWorkspaceBlockSaveSource(relativePath) {
245354
- const normalizedBaseName = path96.basename(relativePath, path96.extname(relativePath));
245330
+ const normalizedBaseName = path100.basename(relativePath, path100.extname(relativePath));
245355
245331
  return normalizedBaseName === "save";
245356
245332
  }
245357
245333
  function collectWorkspaceBlockEditorSources(projectDir, blockSlug) {
245358
- const blockDir = path96.join(projectDir, "src", "blocks", blockSlug);
245334
+ const blockDir = path100.join(projectDir, "src", "blocks", blockSlug);
245359
245335
  if (!fs36.existsSync(blockDir)) {
245360
245336
  return [];
245361
245337
  }
@@ -245367,7 +245343,7 @@ function collectWorkspaceBlockEditorSources(projectDir, blockSlug) {
245367
245343
  continue;
245368
245344
  }
245369
245345
  for (const entry of fs36.readdirSync(currentDir, { withFileTypes: true })) {
245370
- const absolutePath = path96.join(currentDir, entry.name);
245346
+ const absolutePath = path100.join(currentDir, entry.name);
245371
245347
  if (entry.isDirectory()) {
245372
245348
  queue.push(absolutePath);
245373
245349
  continue;
@@ -245375,7 +245351,7 @@ function collectWorkspaceBlockEditorSources(projectDir, blockSlug) {
245375
245351
  if (!entry.isFile()) {
245376
245352
  continue;
245377
245353
  }
245378
- const relativePath = path96.relative(projectDir, absolutePath);
245354
+ const relativePath = path100.relative(projectDir, absolutePath);
245379
245355
  if (!isWorkspaceBlockEditorSource(relativePath)) {
245380
245356
  continue;
245381
245357
  }
@@ -245448,8 +245424,8 @@ function getWorkspaceBlockIframeCompatibilityChecks(projectDir, blockSlug) {
245448
245424
  }
245449
245425
  const blockJson = metadataResult.document;
245450
245426
  const apiVersion = typeof blockJson.apiVersion === "number" && Number.isFinite(blockJson.apiVersion) ? blockJson.apiVersion : null;
245451
- const blockDir = path96.join(projectDir, "src", "blocks", blockSlug);
245452
- const localStyleFiles = WORKSPACE_BLOCK_LOCAL_STYLE_FILES.filter((fileName) => fs36.existsSync(path96.join(blockDir, fileName))).map((fileName) => normalizePathSeparators(path96.join("src", "blocks", blockSlug, fileName)));
245427
+ const blockDir = path100.join(projectDir, "src", "blocks", blockSlug);
245428
+ const localStyleFiles = WORKSPACE_BLOCK_LOCAL_STYLE_FILES.filter((fileName) => fs36.existsSync(path100.join(blockDir, fileName))).map((fileName) => normalizePathSeparators(path100.join("src", "blocks", blockSlug, fileName)));
245453
245429
  const hasRegisteredEditorStyles = hasRegisteredBlockAsset(blockJson.style) || hasRegisteredBlockAsset(blockJson.editorStyle);
245454
245430
  const editorSources = collectWorkspaceBlockEditorSources(projectDir, blockSlug);
245455
245431
  const editorWrapperSources = editorSources.filter((source) => !isWorkspaceBlockSaveSource(source.relativePath));
@@ -245501,21 +245477,21 @@ var init_cli_doctor_workspace_block_iframe = __esm(() => {
245501
245477
 
245502
245478
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-block-metadata.ts
245503
245479
  import fs37 from "fs";
245504
- import path97 from "path";
245480
+ import path101 from "path";
245505
245481
  import { parseScaffoldBlockMetadata as parseScaffoldBlockMetadata4 } from "@wp-typia/block-runtime/blocks";
245506
245482
  function getWorkspaceBlockRequiredFiles(block) {
245507
- const blockDir = path97.join("src", "blocks", block.slug);
245483
+ const blockDir = path101.join("src", "blocks", block.slug);
245508
245484
  return Array.from(new Set([
245509
245485
  block.typesFile,
245510
245486
  block.apiTypesFile,
245511
245487
  block.openApiFile,
245512
- path97.join(blockDir, "index.tsx"),
245513
- ...WORKSPACE_GENERATED_BLOCK_ARTIFACTS.map((fileName) => path97.join(blockDir, fileName))
245488
+ path101.join(blockDir, "index.tsx"),
245489
+ ...WORKSPACE_GENERATED_BLOCK_ARTIFACTS.map((fileName) => path101.join(blockDir, fileName))
245514
245490
  ].filter((filePath) => typeof filePath === "string")));
245515
245491
  }
245516
245492
  function checkWorkspaceBlockMetadata(projectDir, workspace, block) {
245517
- const blockJsonRelativePath = path97.join("src", "blocks", block.slug, "block.json");
245518
- const blockJsonPath = path97.join(projectDir, blockJsonRelativePath);
245493
+ const blockJsonRelativePath = path101.join("src", "blocks", block.slug, "block.json");
245494
+ const blockJsonPath = path101.join(projectDir, blockJsonRelativePath);
245519
245495
  if (!fs37.existsSync(blockJsonPath)) {
245520
245496
  return createDoctorCheck(`Block metadata ${block.slug}`, "fail", `Missing ${blockJsonRelativePath}`);
245521
245497
  }
@@ -245538,8 +245514,8 @@ function checkWorkspaceBlockMetadata(projectDir, workspace, block) {
245538
245514
  return createDoctorCheck(`Block metadata ${block.slug}`, issues.length === 0 ? "pass" : "fail", issues.length === 0 ? `block.json matches ${expectedName} and ${workspace.workspace.textDomain}` : issues.join("; "));
245539
245515
  }
245540
245516
  function checkWorkspaceBlockHooks(projectDir, blockSlug) {
245541
- const blockJsonRelativePath = path97.join("src", "blocks", blockSlug, "block.json");
245542
- const blockJsonPath = path97.join(projectDir, blockJsonRelativePath);
245517
+ const blockJsonRelativePath = path101.join("src", "blocks", blockSlug, "block.json");
245518
+ const blockJsonPath = path101.join(projectDir, blockJsonRelativePath);
245543
245519
  if (!fs37.existsSync(blockJsonPath)) {
245544
245520
  return createDoctorCheck(`Block hooks ${blockSlug}`, "fail", `Missing ${blockJsonRelativePath}`);
245545
245521
  }
@@ -245563,8 +245539,8 @@ function checkWorkspaceBlockHooks(projectDir, blockSlug) {
245563
245539
  return createDoctorCheck(`Block hooks ${blockSlug}`, invalidEntries.length === 0 ? "pass" : "fail", invalidEntries.length === 0 ? `blockHooks metadata is valid${Object.keys(blockHooks).length > 0 ? ` (${Object.keys(blockHooks).join(", ")})` : ""}` : `Invalid blockHooks entries: ${invalidEntries.map(([anchor, position]) => `${anchor || "<empty>"} => ${String(position)}`).join(", ")}`);
245564
245540
  }
245565
245541
  function checkWorkspaceBlockCollectionImport(projectDir, blockSlug) {
245566
- const entryRelativePath = path97.join("src", "blocks", blockSlug, "index.tsx");
245567
- const entryPath = path97.join(projectDir, entryRelativePath);
245542
+ const entryRelativePath = path101.join("src", "blocks", blockSlug, "index.tsx");
245543
+ const entryPath = path101.join(projectDir, entryRelativePath);
245568
245544
  if (!fs37.existsSync(entryPath)) {
245569
245545
  return createDoctorCheck(`Block collection ${blockSlug}`, "fail", `Missing ${entryRelativePath}`);
245570
245546
  }
@@ -245607,7 +245583,7 @@ var init_cli_doctor_workspace_blocks = __esm(() => {
245607
245583
 
245608
245584
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-abilities.ts
245609
245585
  import fs38 from "fs";
245610
- import path98 from "path";
245586
+ import path102 from "path";
245611
245587
  function getWorkspaceAbilityRequiredFiles(ability) {
245612
245588
  return Array.from(new Set([
245613
245589
  ability.clientFile,
@@ -245620,7 +245596,7 @@ function getWorkspaceAbilityRequiredFiles(ability) {
245620
245596
  ]));
245621
245597
  }
245622
245598
  function checkWorkspaceAbilityConfig(projectDir, ability) {
245623
- const configPath = path98.join(projectDir, ability.configFile);
245599
+ const configPath = path102.join(projectDir, ability.configFile);
245624
245600
  if (!fs38.existsSync(configPath)) {
245625
245601
  return createDoctorCheck(`Ability config ${ability.slug}`, "fail", `Missing ${ability.configFile}`);
245626
245602
  }
@@ -245640,7 +245616,7 @@ function checkWorkspaceAbilityConfig(projectDir, ability) {
245640
245616
  function checkWorkspaceAbilityBootstrap(projectDir, packageName, phpPrefix) {
245641
245617
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245642
245618
  if (!fs38.existsSync(bootstrapPath)) {
245643
- return createDoctorCheck("Ability bootstrap", "fail", `Missing ${path98.basename(bootstrapPath)}`);
245619
+ return createDoctorCheck("Ability bootstrap", "fail", `Missing ${path102.basename(bootstrapPath)}`);
245644
245620
  }
245645
245621
  const source = fs38.readFileSync(bootstrapPath, "utf8");
245646
245622
  const loadFunctionName = `${phpPrefix}_load_workflow_abilities`;
@@ -245659,13 +245635,13 @@ function checkWorkspaceAbilityBootstrap(projectDir, packageName, phpPrefix) {
245659
245635
  }
245660
245636
  function checkWorkspaceAbilityIndex(projectDir, abilities) {
245661
245637
  const indexRelativePath = [
245662
- path98.join("src", "abilities", "index.ts"),
245663
- path98.join("src", "abilities", "index.js")
245664
- ].find((relativePath) => fs38.existsSync(path98.join(projectDir, relativePath)));
245638
+ path102.join("src", "abilities", "index.ts"),
245639
+ path102.join("src", "abilities", "index.js")
245640
+ ].find((relativePath) => fs38.existsSync(path102.join(projectDir, relativePath)));
245665
245641
  if (!indexRelativePath) {
245666
245642
  return createDoctorCheck("Abilities index", "fail", "Missing src/abilities/index.ts or src/abilities/index.js");
245667
245643
  }
245668
- const indexPath = path98.join(projectDir, indexRelativePath);
245644
+ const indexPath = path102.join(projectDir, indexRelativePath);
245669
245645
  const source = fs38.readFileSync(indexPath, "utf8");
245670
245646
  const missingExports = abilities.filter((ability) => {
245671
245647
  const exportPattern = new RegExp(`^\\s*export\\s+(?:\\*\\s+from|\\{[^}]+\\}\\s+from)\\s+['"\`]\\./${escapeRegex2(ability.slug)}\\/client['"\`]`, "mu");
@@ -245692,17 +245668,17 @@ var init_cli_doctor_workspace_features_abilities = __esm(() => {
245692
245668
 
245693
245669
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-admin-views.ts
245694
245670
  import fs39 from "fs";
245695
- import path99 from "path";
245671
+ import path103 from "path";
245696
245672
  function getWorkspaceAdminViewRequiredFiles(adminView) {
245697
- const adminViewDir = path99.join("src", "admin-views", adminView.slug);
245673
+ const adminViewDir = path103.join("src", "admin-views", adminView.slug);
245698
245674
  return Array.from(new Set([
245699
245675
  adminView.file,
245700
245676
  adminView.phpFile,
245701
- path99.join(adminViewDir, "Screen.tsx"),
245702
- path99.join(adminViewDir, "config.ts"),
245703
- path99.join(adminViewDir, "data.ts"),
245704
- path99.join(adminViewDir, "style.scss"),
245705
- path99.join(adminViewDir, "types.ts")
245677
+ path103.join(adminViewDir, "Screen.tsx"),
245678
+ path103.join(adminViewDir, "config.ts"),
245679
+ path103.join(adminViewDir, "data.ts"),
245680
+ path103.join(adminViewDir, "style.scss"),
245681
+ path103.join(adminViewDir, "types.ts")
245706
245682
  ]));
245707
245683
  }
245708
245684
  function checkWorkspaceAdminViewConfig(adminView, inventory) {
@@ -245724,7 +245700,7 @@ function checkWorkspaceAdminViewConfig(adminView, inventory) {
245724
245700
  function checkWorkspaceAdminViewBootstrap(projectDir, packageName, phpPrefix) {
245725
245701
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245726
245702
  if (!fs39.existsSync(bootstrapPath)) {
245727
- return createDoctorCheck("Admin view bootstrap", "fail", `Missing ${path99.basename(bootstrapPath)}`);
245703
+ return createDoctorCheck("Admin view bootstrap", "fail", `Missing ${path103.basename(bootstrapPath)}`);
245728
245704
  }
245729
245705
  const source = fs39.readFileSync(bootstrapPath, "utf8");
245730
245706
  const loadFunctionName = `${phpPrefix}_load_admin_views`;
@@ -245735,13 +245711,13 @@ function checkWorkspaceAdminViewBootstrap(projectDir, packageName, phpPrefix) {
245735
245711
  }
245736
245712
  function checkWorkspaceAdminViewIndex(projectDir, adminViews) {
245737
245713
  const indexRelativePath = [
245738
- path99.join("src", "admin-views", "index.ts"),
245739
- path99.join("src", "admin-views", "index.js")
245740
- ].find((relativePath) => fs39.existsSync(path99.join(projectDir, relativePath)));
245714
+ path103.join("src", "admin-views", "index.ts"),
245715
+ path103.join("src", "admin-views", "index.js")
245716
+ ].find((relativePath) => fs39.existsSync(path103.join(projectDir, relativePath)));
245741
245717
  if (!indexRelativePath) {
245742
245718
  return createDoctorCheck("Admin views index", "fail", "Missing src/admin-views/index.ts or src/admin-views/index.js");
245743
245719
  }
245744
- const indexPath = path99.join(projectDir, indexRelativePath);
245720
+ const indexPath = path103.join(projectDir, indexRelativePath);
245745
245721
  const source = fs39.readFileSync(indexPath, "utf8");
245746
245722
  const missingImports = adminViews.filter((adminView) => {
245747
245723
  const importPattern = new RegExp(`['"\`]\\./${escapeRegex2(adminView.slug)}(?:/[^'"\`]*)?['"\`]`, "u");
@@ -245750,7 +245726,7 @@ function checkWorkspaceAdminViewIndex(projectDir, adminViews) {
245750
245726
  return createDoctorCheck("Admin views index", missingImports.length === 0 ? "pass" : "fail", missingImports.length === 0 ? "Admin view registrations are aggregated" : `Missing admin view imports for: ${missingImports.map((entry) => entry.slug).join(", ")}`);
245751
245727
  }
245752
245728
  function checkWorkspaceAdminViewPhp(projectDir, adminView) {
245753
- const phpPath = path99.join(projectDir, adminView.phpFile);
245729
+ const phpPath = path103.join(projectDir, adminView.phpFile);
245754
245730
  if (!fs39.existsSync(phpPath)) {
245755
245731
  return createDoctorCheck(`Admin view PHP ${adminView.slug}`, "fail", `Missing ${adminView.phpFile}`);
245756
245732
  }
@@ -245783,14 +245759,14 @@ var init_cli_doctor_workspace_features_admin_views = __esm(() => {
245783
245759
 
245784
245760
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-ai.ts
245785
245761
  import fs40 from "fs";
245786
- import path100 from "path";
245762
+ import path104 from "path";
245787
245763
  function getWorkspaceAiFeatureRequiredFiles(aiFeature) {
245788
245764
  return Array.from(new Set([
245789
245765
  aiFeature.aiSchemaFile,
245790
245766
  aiFeature.apiFile,
245791
- path100.join(path100.dirname(aiFeature.typesFile), "api-schemas", "feature-request.schema.json"),
245792
- path100.join(path100.dirname(aiFeature.typesFile), "api-schemas", "feature-response.schema.json"),
245793
- path100.join(path100.dirname(aiFeature.typesFile), "api-schemas", "feature-result.schema.json"),
245767
+ path104.join(path104.dirname(aiFeature.typesFile), "api-schemas", "feature-request.schema.json"),
245768
+ path104.join(path104.dirname(aiFeature.typesFile), "api-schemas", "feature-response.schema.json"),
245769
+ path104.join(path104.dirname(aiFeature.typesFile), "api-schemas", "feature-result.schema.json"),
245794
245770
  aiFeature.clientFile,
245795
245771
  aiFeature.dataFile,
245796
245772
  aiFeature.openApiFile,
@@ -245806,7 +245782,7 @@ function checkWorkspaceAiFeatureConfig(aiFeature) {
245806
245782
  function checkWorkspaceAiFeatureBootstrap(projectDir, packageName, phpPrefix) {
245807
245783
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245808
245784
  if (!fs40.existsSync(bootstrapPath)) {
245809
- return createDoctorCheck("AI feature bootstrap", "fail", `Missing ${path100.basename(bootstrapPath)}`);
245785
+ return createDoctorCheck("AI feature bootstrap", "fail", `Missing ${path104.basename(bootstrapPath)}`);
245810
245786
  }
245811
245787
  const source = fs40.readFileSync(bootstrapPath, "utf8");
245812
245788
  const registerFunctionName = `${phpPrefix}_register_ai_features`;
@@ -245833,16 +245809,16 @@ var init_cli_doctor_workspace_features_ai = __esm(() => {
245833
245809
 
245834
245810
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-editor-plugins.ts
245835
245811
  import fs41 from "fs";
245836
- import path101 from "path";
245812
+ import path105 from "path";
245837
245813
  function getWorkspaceEditorPluginRequiredFiles(editorPlugin) {
245838
- const editorPluginDir = path101.join("src", "editor-plugins", editorPlugin.slug);
245839
- const surfaceFile = editorPlugin.slot === "PluginSidebar" ? path101.join(editorPluginDir, "Sidebar.tsx") : path101.join(editorPluginDir, "Surface.tsx");
245814
+ const editorPluginDir = path105.join("src", "editor-plugins", editorPlugin.slug);
245815
+ const surfaceFile = editorPlugin.slot === "PluginSidebar" ? path105.join(editorPluginDir, "Sidebar.tsx") : path105.join(editorPluginDir, "Surface.tsx");
245840
245816
  return Array.from(new Set([
245841
245817
  editorPlugin.file,
245842
245818
  surfaceFile,
245843
- path101.join(editorPluginDir, "data.ts"),
245844
- path101.join(editorPluginDir, "types.ts"),
245845
- path101.join(editorPluginDir, "style.scss")
245819
+ path105.join(editorPluginDir, "data.ts"),
245820
+ path105.join(editorPluginDir, "types.ts"),
245821
+ path105.join(editorPluginDir, "style.scss")
245846
245822
  ]));
245847
245823
  }
245848
245824
  function checkWorkspaceEditorPluginConfig(editorPlugin) {
@@ -245853,7 +245829,7 @@ function checkWorkspaceEditorPluginConfig(editorPlugin) {
245853
245829
  function checkWorkspaceEditorPluginBootstrap(projectDir, packageName, phpPrefix) {
245854
245830
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245855
245831
  if (!fs41.existsSync(bootstrapPath)) {
245856
- return createDoctorCheck("Editor plugin bootstrap", "fail", `Missing ${path101.basename(bootstrapPath)}`);
245832
+ return createDoctorCheck("Editor plugin bootstrap", "fail", `Missing ${path105.basename(bootstrapPath)}`);
245857
245833
  }
245858
245834
  const source = fs41.readFileSync(bootstrapPath, "utf8");
245859
245835
  const enqueueFunctionName = `${phpPrefix}_enqueue_editor_plugins_editor`;
@@ -245866,13 +245842,13 @@ function checkWorkspaceEditorPluginBootstrap(projectDir, packageName, phpPrefix)
245866
245842
  }
245867
245843
  function checkWorkspaceEditorPluginIndex(projectDir, editorPlugins) {
245868
245844
  const indexRelativePath = [
245869
- path101.join("src", "editor-plugins", "index.ts"),
245870
- path101.join("src", "editor-plugins", "index.js")
245871
- ].find((relativePath) => fs41.existsSync(path101.join(projectDir, relativePath)));
245845
+ path105.join("src", "editor-plugins", "index.ts"),
245846
+ path105.join("src", "editor-plugins", "index.js")
245847
+ ].find((relativePath) => fs41.existsSync(path105.join(projectDir, relativePath)));
245872
245848
  if (!indexRelativePath) {
245873
245849
  return createDoctorCheck("Editor plugins index", "fail", "Missing src/editor-plugins/index.ts or src/editor-plugins/index.js");
245874
245850
  }
245875
- const indexPath = path101.join(projectDir, indexRelativePath);
245851
+ const indexPath = path105.join(projectDir, indexRelativePath);
245876
245852
  const source = fs41.readFileSync(indexPath, "utf8");
245877
245853
  const missingImports = editorPlugins.filter((editorPlugin) => {
245878
245854
  const importPattern = new RegExp(`['"\`]\\./${escapeRegex2(editorPlugin.slug)}(?:/[^'"\`]*)?['"\`]`, "u");
@@ -245899,7 +245875,7 @@ var init_cli_doctor_workspace_features_editor_plugins = __esm(() => {
245899
245875
 
245900
245876
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-post-meta.ts
245901
245877
  import fs42 from "fs";
245902
- import path102 from "path";
245878
+ import path106 from "path";
245903
245879
  function getWorkspacePostMetaRequiredFiles(postMeta) {
245904
245880
  return Array.from(new Set([
245905
245881
  postMeta.phpFile,
@@ -245921,7 +245897,7 @@ function checkWorkspacePostMetaConfig(postMeta) {
245921
245897
  function checkWorkspacePostMetaBootstrap(projectDir, packageName, phpPrefix) {
245922
245898
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245923
245899
  if (!fs42.existsSync(bootstrapPath)) {
245924
- return createDoctorCheck("Post meta bootstrap", "fail", `Missing ${path102.basename(bootstrapPath)}`);
245900
+ return createDoctorCheck("Post meta bootstrap", "fail", `Missing ${path106.basename(bootstrapPath)}`);
245925
245901
  }
245926
245902
  const source = fs42.readFileSync(bootstrapPath, "utf8");
245927
245903
  const registerFunctionName = `${phpPrefix}_register_post_meta_contracts`;
@@ -245931,7 +245907,7 @@ function checkWorkspacePostMetaBootstrap(projectDir, packageName, phpPrefix) {
245931
245907
  return createDoctorCheck("Post meta bootstrap", hasServerGlob && hasRegisterHook ? "pass" : "fail", hasServerGlob && hasRegisterHook ? "Post meta PHP loader hook is present" : "Missing post meta PHP require glob or init hook");
245932
245908
  }
245933
245909
  function checkWorkspacePostMetaPhp(projectDir, postMeta) {
245934
- const phpPath = path102.join(projectDir, postMeta.phpFile);
245910
+ const phpPath = path106.join(projectDir, postMeta.phpFile);
245935
245911
  if (!fs42.existsSync(phpPath)) {
245936
245912
  return createDoctorCheck(`Post meta PHP ${postMeta.slug}`, "fail", `Missing ${postMeta.phpFile}`);
245937
245913
  }
@@ -245962,7 +245938,7 @@ var init_cli_doctor_workspace_features_post_meta = __esm(() => {
245962
245938
 
245963
245939
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-rest.ts
245964
245940
  import fs43 from "fs";
245965
- import path103 from "path";
245941
+ import path107 from "path";
245966
245942
  function isManualRestResource(restResource) {
245967
245943
  return restResource.mode === "manual";
245968
245944
  }
@@ -245976,7 +245952,7 @@ function getWorkspaceRestResourceRequiredFiles(restResource) {
245976
245952
  schemaNames.add("response");
245977
245953
  return Array.from(new Set([
245978
245954
  restResource.apiFile,
245979
- ...Array.from(schemaNames, (schemaName) => path103.join(path103.dirname(restResource.typesFile), "api-schemas", `${schemaName}.schema.json`)),
245955
+ ...Array.from(schemaNames, (schemaName) => path107.join(path107.dirname(restResource.typesFile), "api-schemas", `${schemaName}.schema.json`)),
245980
245956
  restResource.clientFile,
245981
245957
  restResource.openApiFile,
245982
245958
  restResource.typesFile,
@@ -246006,7 +245982,7 @@ function getWorkspaceRestResourceRequiredFiles(restResource) {
246006
245982
  }
246007
245983
  return Array.from(new Set([
246008
245984
  restResource.apiFile,
246009
- ...Array.from(schemaNames, (schemaName) => path103.join(path103.dirname(restResource.typesFile), "api-schemas", `${schemaName}.schema.json`)),
245985
+ ...Array.from(schemaNames, (schemaName) => path107.join(path107.dirname(restResource.typesFile), "api-schemas", `${schemaName}.schema.json`)),
246010
245986
  restResource.clientFile,
246011
245987
  ...restResource.dataFile ? [restResource.dataFile] : [],
246012
245988
  restResource.openApiFile,
@@ -246031,7 +246007,7 @@ function checkWorkspaceRestResourceConfig(restResource) {
246031
246007
  function checkWorkspaceRestResourceBootstrap(projectDir, packageName, phpPrefix) {
246032
246008
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
246033
246009
  if (!fs43.existsSync(bootstrapPath)) {
246034
- return createDoctorCheck("REST resource bootstrap", "fail", `Missing ${path103.basename(bootstrapPath)}`);
246010
+ return createDoctorCheck("REST resource bootstrap", "fail", `Missing ${path107.basename(bootstrapPath)}`);
246035
246011
  }
246036
246012
  const source = fs43.readFileSync(bootstrapPath, "utf8");
246037
246013
  const registerFunctionName = `${phpPrefix}_register_rest_resources`;
@@ -246077,14 +246053,14 @@ var init_cli_doctor_workspace_features = __esm(() => {
246077
246053
  });
246078
246054
 
246079
246055
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-package.ts
246080
- import path104 from "path";
246056
+ import path108 from "path";
246081
246057
  async function prepareWorkspacePackageDoctorSnapshot(workspace, packageJson) {
246082
246058
  const packageName = packageJson.name;
246083
246059
  const bootstrapRelativePath = getWorkspaceBootstrapRelativePath(typeof packageName === "string" && packageName.length > 0 ? packageName : workspace.packageName);
246084
- const migrationConfigRelativePath = path104.join("src", "migrations", "config.ts");
246060
+ const migrationConfigRelativePath = path108.join("src", "migrations", "config.ts");
246085
246061
  const [bootstrapExists, migrationConfigExists] = await Promise.all([
246086
- pathExists(path104.join(workspace.projectDir, bootstrapRelativePath)),
246087
- pathExists(path104.join(workspace.projectDir, migrationConfigRelativePath))
246062
+ pathExists(path108.join(workspace.projectDir, bootstrapRelativePath)),
246063
+ pathExists(path108.join(workspace.projectDir, migrationConfigRelativePath))
246088
246064
  ]);
246089
246065
  return {
246090
246066
  bootstrapExists,
@@ -246314,9 +246290,9 @@ var init_cli_doctor = __esm(() => {
246314
246290
 
246315
246291
  // ../wp-typia-project-tools/src/runtime/cli-init-package-json.ts
246316
246292
  import fs44 from "fs";
246317
- import path105 from "path";
246293
+ import path109 from "path";
246318
246294
  function readProjectPackageJson(projectDir) {
246319
- const packageJsonPath = path105.join(projectDir, "package.json");
246295
+ const packageJsonPath = path109.join(projectDir, "package.json");
246320
246296
  if (!fs44.existsSync(packageJsonPath)) {
246321
246297
  return null;
246322
246298
  }
@@ -246333,13 +246309,13 @@ function inferInitPackageManager(projectDir, packageJson) {
246333
246309
  if (packageJson?.packageManager) {
246334
246310
  return parseWorkspacePackageManagerId(packageJson.packageManager);
246335
246311
  }
246336
- if (fs44.existsSync(path105.join(projectDir, "bun.lock")) || fs44.existsSync(path105.join(projectDir, "bun.lockb"))) {
246312
+ if (fs44.existsSync(path109.join(projectDir, "bun.lock")) || fs44.existsSync(path109.join(projectDir, "bun.lockb"))) {
246337
246313
  return "bun";
246338
246314
  }
246339
- if (fs44.existsSync(path105.join(projectDir, "pnpm-lock.yaml"))) {
246315
+ if (fs44.existsSync(path109.join(projectDir, "pnpm-lock.yaml"))) {
246340
246316
  return "pnpm";
246341
246317
  }
246342
- if (fs44.existsSync(path105.join(projectDir, "yarn.lock")) || fs44.existsSync(path105.join(projectDir, ".yarnrc.yml"))) {
246318
+ if (fs44.existsSync(path109.join(projectDir, "yarn.lock")) || fs44.existsSync(path109.join(projectDir, ".yarnrc.yml"))) {
246343
246319
  return "yarn";
246344
246320
  }
246345
246321
  return "npm";
@@ -246426,10 +246402,10 @@ function hasExistingWpTypiaProjectSurface(projectDir, packageJson) {
246426
246402
  const scripts = packageJson?.scripts ?? {};
246427
246403
  const hasSyncSurface = typeof scripts.sync === "string" || typeof scripts["sync-types"] === "string";
246428
246404
  const hasHelperFiles = [
246429
- path105.join("scripts", "block-config.ts"),
246430
- path105.join("scripts", "sync-project.ts"),
246431
- path105.join("scripts", "sync-types-to-block-json.ts")
246432
- ].every((relativePath) => fs44.existsSync(path105.join(projectDir, relativePath)));
246405
+ path109.join("scripts", "block-config.ts"),
246406
+ path109.join("scripts", "sync-project.ts"),
246407
+ path109.join("scripts", "sync-types-to-block-json.ts")
246408
+ ].every((relativePath) => fs44.existsSync(path109.join(projectDir, relativePath)));
246433
246409
  const hasRuntimeDeps = typeof getExistingDependencyVersion(packageJson, "@wp-typia/block-runtime") === "string" && typeof getExistingDependencyVersion(packageJson, "@wp-typia/block-types") === "string";
246434
246410
  return hasSyncSurface && hasHelperFiles && hasRuntimeDeps;
246435
246411
  }
@@ -246571,19 +246547,19 @@ var SUPPORTED_RETROFIT_LAYOUT_NOTE = "Supported retrofit layouts currently mirro
246571
246547
 
246572
246548
  // ../wp-typia-project-tools/src/runtime/cli-init-plan.ts
246573
246549
  import fs45 from "fs";
246574
- import path106 from "path";
246550
+ import path110 from "path";
246575
246551
  import { analyzeSourceTypes } from "@wp-typia/block-runtime/metadata-parser";
246576
246552
  function normalizeRelativePath2(value2) {
246577
246553
  return value2.replace(/\\/gu, "/");
246578
246554
  }
246579
246555
  function buildGeneratedArtifactPaths(blockJsonFile, manifestFile) {
246580
- const manifestDir = path106.dirname(manifestFile);
246556
+ const manifestDir = path110.dirname(manifestFile);
246581
246557
  const artifactPaths = [
246582
246558
  blockJsonFile,
246583
246559
  manifestFile,
246584
- path106.join(manifestDir, "typia.schema.json"),
246585
- path106.join(manifestDir, "typia-validator.php"),
246586
- path106.join(manifestDir, "typia.openapi.json")
246560
+ path110.join(manifestDir, "typia.schema.json"),
246561
+ path110.join(manifestDir, "typia-validator.php"),
246562
+ path110.join(manifestDir, "typia.openapi.json")
246587
246563
  ];
246588
246564
  return Array.from(new Set(artifactPaths.map((filePath) => normalizeRelativePath2(filePath))));
246589
246565
  }
@@ -246604,7 +246580,7 @@ function isObjectLikeSourceType(projectDir, typesFile, sourceTypeName) {
246604
246580
  return analyzedTypes[sourceTypeName]?.kind === "object";
246605
246581
  }
246606
246582
  function inferRetrofitAttributeTypeName(projectDir, block) {
246607
- const typesPath = path106.join(projectDir, block.typesFile);
246583
+ const typesPath = path110.join(projectDir, block.typesFile);
246608
246584
  const typesSource = fs45.readFileSync(typesPath, "utf8");
246609
246585
  const blockNameSegments = block.blockName.split("/");
246610
246586
  const slug = blockNameSegments[blockNameSegments.length - 1] ?? block.key;
@@ -246697,17 +246673,17 @@ function buildPlannedFiles(projectDir, layoutKind) {
246697
246673
  }
246698
246674
  return [
246699
246675
  {
246700
- action: fs45.existsSync(path106.join(projectDir, "scripts", "block-config.ts")) ? "update" : "add",
246676
+ action: fs45.existsSync(path110.join(projectDir, "scripts", "block-config.ts")) ? "update" : "add",
246701
246677
  path: "scripts/block-config.ts",
246702
246678
  purpose: "Declare the current retrofit block targets so sync-types can regenerate metadata from the existing TypeScript source of truth."
246703
246679
  },
246704
246680
  {
246705
- action: fs45.existsSync(path106.join(projectDir, "scripts", "sync-types-to-block-json.ts")) ? "update" : "add",
246681
+ action: fs45.existsSync(path110.join(projectDir, "scripts", "sync-types-to-block-json.ts")) ? "update" : "add",
246706
246682
  path: "scripts/sync-types-to-block-json.ts",
246707
246683
  purpose: "Generate block.json and Typia metadata artifacts from the current TypeScript source of truth."
246708
246684
  },
246709
246685
  {
246710
- action: fs45.existsSync(path106.join(projectDir, "scripts", "sync-project.ts")) ? "update" : "add",
246686
+ action: fs45.existsSync(path110.join(projectDir, "scripts", "sync-project.ts")) ? "update" : "add",
246711
246687
  path: "scripts/sync-project.ts",
246712
246688
  purpose: "Provide one shared sync entrypoint that can grow into sync-rest or workspace-aware refresh steps later."
246713
246689
  }
@@ -246748,7 +246724,7 @@ function createRetrofitPlan(options) {
246748
246724
  };
246749
246725
  }
246750
246726
  function getInitPlan(projectDir, options = {}) {
246751
- const resolvedProjectDir = path106.resolve(projectDir);
246727
+ const resolvedProjectDir = path110.resolve(projectDir);
246752
246728
  const packageJson = readProjectPackageJson(resolvedProjectDir);
246753
246729
  const packageManager = resolveInitPackageManager(resolvedProjectDir, packageJson, options.packageManager);
246754
246730
  const workspace = tryResolveWorkspaceProject(resolvedProjectDir);
@@ -246784,7 +246760,7 @@ function getInitPlan(projectDir, options = {}) {
246784
246760
  status: "already-initialized"
246785
246761
  });
246786
246762
  }
246787
- const projectName = typeof packageJson?.name === "string" && packageJson.name.length > 0 ? packageJson.name : path106.basename(resolvedProjectDir);
246763
+ const projectName = typeof packageJson?.name === "string" && packageJson.name.length > 0 ? packageJson.name : path110.basename(resolvedProjectDir);
246788
246764
  const layout = buildInitLayoutDetails(resolvedProjectDir);
246789
246765
  const dependencyChanges = buildDependencyChanges(packageJson);
246790
246766
  const scriptChanges = buildScriptChanges(packageJson, packageManager);
@@ -246838,7 +246814,7 @@ var init_cli_init_plan = __esm(() => {
246838
246814
  });
246839
246815
 
246840
246816
  // ../wp-typia-project-tools/src/runtime/cli-init-templates.ts
246841
- import path107 from "path";
246817
+ import path111 from "path";
246842
246818
  function buildRetrofitBlockConfigEntry(target) {
246843
246819
  return [
246844
246820
  "\t{",
@@ -247066,9 +247042,9 @@ main().catch( ( error ) => {
247066
247042
  }
247067
247043
  function buildRetrofitHelperFiles(blockTargets) {
247068
247044
  return {
247069
- [path107.join("scripts", "block-config.ts")]: buildRetrofitBlockConfigSource(blockTargets),
247070
- [path107.join("scripts", "sync-project.ts")]: buildRetrofitSyncProjectScriptSource(),
247071
- [path107.join("scripts", "sync-types-to-block-json.ts")]: buildRetrofitSyncTypesScriptSource()
247045
+ [path111.join("scripts", "block-config.ts")]: buildRetrofitBlockConfigSource(blockTargets),
247046
+ [path111.join("scripts", "sync-project.ts")]: buildRetrofitSyncProjectScriptSource(),
247047
+ [path111.join("scripts", "sync-types-to-block-json.ts")]: buildRetrofitSyncTypesScriptSource()
247072
247048
  };
247073
247049
  }
247074
247050
  var init_cli_init_templates = __esm(() => {
@@ -247079,9 +247055,9 @@ var init_cli_init_templates = __esm(() => {
247079
247055
  // ../wp-typia-project-tools/src/runtime/cli-init-apply.ts
247080
247056
  import fs46 from "fs";
247081
247057
  import { promises as fsp44 } from "fs";
247082
- import path108 from "path";
247058
+ import path112 from "path";
247083
247059
  async function createRetrofitMutationSnapshot(projectDir, filePaths) {
247084
- const scriptsDir = path108.join(projectDir, "scripts");
247060
+ const scriptsDir = path112.join(projectDir, "scripts");
247085
247061
  const scriptsDirExisted = fs46.existsSync(scriptsDir);
247086
247062
  const fileSources = await snapshotWorkspaceFiles(filePaths);
247087
247063
  const targetPaths = fileSources.filter((entry) => entry.source === null).map((entry) => entry.filePath);
@@ -247096,11 +247072,11 @@ async function createRetrofitMutationSnapshot(projectDir, filePaths) {
247096
247072
  }
247097
247073
  async function writeRetrofitFiles(options) {
247098
247074
  const helperFiles = buildRetrofitHelperFiles(options.blockTargets);
247099
- const scriptsDir = path108.join(options.projectDir, "scripts");
247075
+ const scriptsDir = path112.join(options.projectDir, "scripts");
247100
247076
  await fsp44.mkdir(scriptsDir, { recursive: true });
247101
- await fsp44.writeFile(path108.join(options.projectDir, "package.json"), buildProjectPackageJsonSource(options.packageJson), "utf8");
247077
+ await fsp44.writeFile(path112.join(options.projectDir, "package.json"), buildProjectPackageJsonSource(options.packageJson), "utf8");
247102
247078
  for (const [relativePath, source] of Object.entries(helperFiles)) {
247103
- await fsp44.writeFile(path108.join(options.projectDir, relativePath), source, "utf8");
247079
+ await fsp44.writeFile(path112.join(options.projectDir, relativePath), source, "utf8");
247104
247080
  }
247105
247081
  }
247106
247082
  function buildApplyFailureError(error48) {
@@ -247134,8 +247110,8 @@ async function applyInitPlan(projectDir, options = {}) {
247134
247110
  });
247135
247111
  const helperFiles = buildRetrofitHelperFiles(previewPlan.blockTargets);
247136
247112
  const filePaths = [
247137
- path108.join(previewPlan.projectDir, "package.json"),
247138
- ...Object.keys(helperFiles).map((relativePath) => path108.join(previewPlan.projectDir, relativePath))
247113
+ path112.join(previewPlan.projectDir, "package.json"),
247114
+ ...Object.keys(helperFiles).map((relativePath) => path112.join(previewPlan.projectDir, relativePath))
247139
247115
  ];
247140
247116
  const mutationSnapshot = await createRetrofitMutationSnapshot(previewPlan.projectDir, filePaths);
247141
247117
  try {
@@ -300361,7 +300337,9 @@ var PATTERN_CATALOG_VISIBLE_FIELDS = [
300361
300337
  "name",
300362
300338
  "scope",
300363
300339
  "section-role",
300364
- "catalog-title"
300340
+ "catalog-title",
300341
+ "tags",
300342
+ "thumbnail-url"
300365
300343
  ];
300366
300344
  var NAME_SOURCE_VISIBLE_FIELDS = [
300367
300345
  "kind",
@@ -301064,7 +301042,7 @@ var patternAddKindEntry = defineAddKindRegistryEntry({
301064
301042
  title: "Added workspace pattern"
301065
301043
  },
301066
301044
  description: "Add a PHP block pattern shell",
301067
- hiddenStringSubmitFields: ["tag", "tags", "thumbnail-url"],
301045
+ hiddenStringSubmitFields: ["tag"],
301068
301046
  nameLabel: "Pattern name",
301069
301047
  async prepareExecution(context) {
301070
301048
  const name2 = requireAddKindName(context, PATTERN_MISSING_NAME_MESSAGE);
@@ -301894,7 +301872,7 @@ function buildStructuredInitSuccessPayload(plan) {
301894
301872
  // package.json
301895
301873
  var package_default2 = {
301896
301874
  name: "wp-typia",
301897
- version: "0.24.2",
301875
+ version: "0.24.3",
301898
301876
  description: "Canonical CLI package for wp-typia scaffolding and project workflows",
301899
301877
  packageManager: "bun@1.3.11",
301900
301878
  type: "module",
@@ -301964,7 +301942,7 @@ var package_default2 = {
301964
301942
  "@bunli/tui": "0.6.0",
301965
301943
  "@bunli/utils": "0.6.0",
301966
301944
  "@wp-typia/api-client": "^0.4.5",
301967
- "@wp-typia/project-tools": "0.24.2",
301945
+ "@wp-typia/project-tools": "0.24.3",
301968
301946
  "better-result": "^2.7.0",
301969
301947
  react: "^19.2.5",
301970
301948
  "react-dom": "^19.2.5",
@@ -302441,12 +302419,12 @@ async function executeDoctorCommand(cwd, options = {}) {
302441
302419
  }
302442
302420
  }
302443
302421
  // src/runtime-bridge-init.ts
302444
- import path109 from "path";
302422
+ import path113 from "path";
302445
302423
  var loadCliInitRuntime = () => Promise.resolve().then(() => (init_cli_init(), exports_cli_init));
302446
302424
  async function executeInitCommand({ apply, cwd, packageManager, projectDir }, options = {}) {
302447
302425
  try {
302448
302426
  const { runInitCommand: runInitCommand2 } = await loadCliInitRuntime();
302449
- const resolvedProjectDir = projectDir ? path109.resolve(cwd, projectDir) : cwd;
302427
+ const resolvedProjectDir = projectDir ? path113.resolve(cwd, projectDir) : cwd;
302450
302428
  const plan = await runInitCommand2({
302451
302429
  apply,
302452
302430
  packageManager,
@@ -302564,7 +302542,7 @@ init_cli_diagnostics();
302564
302542
  init_package_managers();
302565
302543
  import { spawnSync as spawnSync3 } from "child_process";
302566
302544
  import fs47 from "fs";
302567
- import path110 from "path";
302545
+ import path114 from "path";
302568
302546
  var SYNC_INSTALL_MARKERS = [
302569
302547
  "node_modules",
302570
302548
  ".pnp.cjs",
@@ -302594,7 +302572,7 @@ function readSyncPackageJson(packageJsonPath) {
302594
302572
  }
302595
302573
  }
302596
302574
  function resolveSyncProjectContext(cwd) {
302597
- const packageJsonPath = path110.join(cwd, "package.json");
302575
+ const packageJsonPath = path114.join(cwd, "package.json");
302598
302576
  if (!fs47.existsSync(packageJsonPath)) {
302599
302577
  throw getSyncRootError(cwd);
302600
302578
  }
@@ -302629,12 +302607,12 @@ function resolveSyncProjectContext(cwd) {
302629
302607
  };
302630
302608
  }
302631
302609
  function findInstalledDependencyMarkerDir(projectDir) {
302632
- let currentDir = path110.resolve(projectDir);
302610
+ let currentDir = path114.resolve(projectDir);
302633
302611
  while (true) {
302634
- if (SYNC_INSTALL_MARKERS.some((marker) => fs47.existsSync(path110.join(currentDir, marker)))) {
302612
+ if (SYNC_INSTALL_MARKERS.some((marker) => fs47.existsSync(path114.join(currentDir, marker)))) {
302635
302613
  return currentDir;
302636
302614
  }
302637
- const parentDir = path110.dirname(currentDir);
302615
+ const parentDir = path114.dirname(currentDir);
302638
302616
  if (parentDir === currentDir) {
302639
302617
  return null;
302640
302618
  }
@@ -303443,7 +303421,7 @@ init_cli_diagnostics();
303443
303421
 
303444
303422
  // src/mcp.ts
303445
303423
  import fs48 from "fs/promises";
303446
- import path111 from "path";
303424
+ import path115 from "path";
303447
303425
 
303448
303426
  // ../../node_modules/.bun/@bunli+plugin-mcp@0.2.5+ef72ce197b058209/node_modules/@bunli/plugin-mcp/src/errors.ts
303449
303427
  class SchemaConversionError extends TaggedError("SchemaConversionError")() {
@@ -303978,7 +303956,7 @@ function getErrorCauseOptions(error48) {
303978
303956
  return error48 instanceof Error ? { cause: error48 } : undefined;
303979
303957
  }
303980
303958
  async function readSchemaSource(cwd, source) {
303981
- const schemaPath = path111.resolve(cwd, source.path);
303959
+ const schemaPath = path115.resolve(cwd, source.path);
303982
303960
  const raw = await fs48.readFile(schemaPath, "utf8");
303983
303961
  let parsed;
303984
303962
  try {
@@ -304000,7 +303978,7 @@ async function readSchemaSource(cwd, source) {
304000
303978
  async function loadMcpToolGroups(cwd, schemaSources) {
304001
303979
  return Promise.all(schemaSources.map((source) => readSchemaSource(cwd, source)));
304002
303980
  }
304003
- async function syncMcpSchemas(cwd, schemaSources, outputDir = path111.join(cwd, ".bunli", "mcp")) {
303981
+ async function syncMcpSchemas(cwd, schemaSources, outputDir = path115.join(cwd, ".bunli", "mcp")) {
304004
303982
  const groups = await loadMcpToolGroups(cwd, schemaSources);
304005
303983
  const result = await generateMCPTypes({
304006
303984
  outputDir,
@@ -304023,7 +304001,7 @@ async function syncMcpSchemas(cwd, schemaSources, outputDir = path111.join(cwd,
304023
304001
  }
304024
304002
  }
304025
304003
  await fs48.mkdir(outputDir, { recursive: true });
304026
- await fs48.writeFile(path111.join(outputDir, "registry.json"), `${JSON.stringify(registry2, null, 2)}
304004
+ await fs48.writeFile(path115.join(outputDir, "registry.json"), `${JSON.stringify(registry2, null, 2)}
304027
304005
  `, "utf8");
304028
304006
  return {
304029
304007
  commandCount: registry2.reduce((count, group) => count + group.tools.length, 0),
@@ -304352,4 +304330,4 @@ export {
304352
304330
  cli
304353
304331
  };
304354
304332
 
304355
- //# debugId=EDC8802048054A1E64756E2164756E21
304333
+ //# debugId=2AB06C2166C7F45664756E2164756E21