wp-typia 0.24.2 → 0.24.4

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.
@@ -239228,13 +239228,23 @@ var init_cli_add_workspace_binding_source_source_emitters = __esm(() => {
239228
239228
  });
239229
239229
 
239230
239230
  // ../wp-typia-project-tools/src/runtime/block-targets.ts
239231
- function assertFullBlockName(blockName, flagName) {
239231
+ function resolveFullBlockNameDiagnostics(diagnostics) {
239232
+ if (typeof diagnostics !== "string") {
239233
+ return diagnostics;
239234
+ }
239235
+ return {
239236
+ empty: () => `\`${diagnostics}\` requires a block name.`,
239237
+ invalidFormat: () => `\`${diagnostics}\` must use <namespace/block-slug> format.`
239238
+ };
239239
+ }
239240
+ function assertFullBlockName(blockName, diagnostics) {
239241
+ const messages = resolveFullBlockNameDiagnostics(diagnostics);
239232
239242
  const trimmed = blockName.trim();
239233
239243
  if (!trimmed) {
239234
- throw new Error(`\`${flagName}\` requires a block name.`);
239244
+ throw new Error(messages.empty());
239235
239245
  }
239236
239246
  if (!FULL_BLOCK_NAME_PATTERN.test(trimmed)) {
239237
- throw new Error(`\`${flagName}\` must use <namespace/block-slug> format.`);
239247
+ throw new Error(messages.invalidFormat());
239238
239248
  }
239239
239249
  return trimmed;
239240
239250
  }
@@ -241523,10 +241533,11 @@ async function writeCoreVariationRegistry(projectDir, targetBlockName, textDomai
241523
241533
  async function runAddCoreVariationCommand({
241524
241534
  cwd = process.cwd(),
241525
241535
  targetBlockName,
241536
+ targetBlockNameDiagnostics = "core-variation target",
241526
241537
  variationName
241527
241538
  }) {
241528
241539
  const workspace = resolveWorkspaceProject(cwd);
241529
- const resolvedTargetBlockName = assertFullBlockName(targetBlockName, "core-variation target");
241540
+ const resolvedTargetBlockName = assertFullBlockName(targetBlockName, targetBlockNameDiagnostics);
241530
241541
  const variationSlug = assertValidGeneratedSlug("Core variation name", normalizeBlockSlug(variationName), CORE_VARIATION_USAGE);
241531
241542
  const unknownCoreTargetWarning = getUnknownCoreVariationTargetWarning(resolvedTargetBlockName);
241532
241543
  assertCoreVariationSlugIsNotRegistryIndex(variationSlug);
@@ -244163,13 +244174,7 @@ var init_cli_add = __esm(() => {
244163
244174
  init_workspace_inventory();
244164
244175
  });
244165
244176
 
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
- });
244177
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold-files.ts
244173
244178
  import { promises as fsp43 } from "fs";
244174
244179
  import path91 from "path";
244175
244180
  async function listRelativeProjectFiles(rootDir) {
@@ -244197,58 +244202,43 @@ async function assertDryRunTargetDirectoryReady(projectDir, allowExistingDir) {
244197
244202
  throw new Error(formatNonEmptyTargetDirectoryError(projectDir));
244198
244203
  }
244199
244204
  }
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);
244205
+ async function readGeneratedPackageScripts(projectDir) {
244206
+ try {
244207
+ const parsedPackageJson = await readJsonFile(path91.join(projectDir, "package.json"), {
244208
+ context: "generated package manifest"
244209
+ });
244210
+ const scripts = parsedPackageJson.scripts && typeof parsedPackageJson.scripts === "object" && !Array.isArray(parsedPackageJson.scripts) ? parsedPackageJson.scripts : {};
244211
+ return Object.entries(scripts).filter(([, value2]) => typeof value2 === "string").map(([scriptName]) => scriptName);
244212
+ } catch {
244213
+ return;
244214
+ }
244215
+ }
244216
+ var init_cli_scaffold_files = __esm(() => {
244217
+ init_scaffold_bootstrap();
244218
+ init_fs_async();
244219
+ init_json_utils();
244220
+ });
244221
+
244222
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold-emission.ts
244223
+ import path92 from "path";
244224
+ async function emitScaffoldProject(options) {
244225
+ return scaffoldProject(options);
244226
+ }
244227
+ async function buildScaffoldDryRunPlan(options) {
244228
+ await assertDryRunTargetDirectoryReady(options.projectDir, options.allowExistingDir);
244223
244229
  const { path: tempRoot, cleanup } = await createManagedTempRoot("wp-typia-scaffold-plan-");
244224
- const previewProjectDir = path91.join(tempRoot, "preview-project");
244230
+ const previewProjectDir = path92.join(tempRoot, "preview-project");
244225
244231
  try {
244226
- const result = await scaffoldProject({
244232
+ const result = await emitScaffoldProject({
244233
+ ...options,
244227
244234
  allowExistingDir: false,
244228
- alternateRenderTargets,
244229
- answers,
244230
- cwd,
244231
- dataStorageMode,
244232
- externalLayerId,
244233
- externalLayerSource,
244234
- externalLayerSourceLabel,
244235
- installDependencies,
244236
244235
  noInstall: true,
244237
- onProgress,
244238
- packageManager,
244239
- persistencePolicy,
244240
- profile,
244241
- projectDir: previewProjectDir,
244242
- templateId,
244243
- variant,
244244
- withMigrationUi,
244245
- withTestPreset,
244246
- withWpEnv
244236
+ projectDir: previewProjectDir
244247
244237
  });
244248
244238
  const files = await listRelativeProjectFiles(previewProjectDir);
244249
244239
  return {
244250
244240
  plan: {
244251
- dependencyInstall: noInstall ? "skipped-by-flag" : "would-install",
244241
+ dependencyInstall: options.noInstall ? "skipped-by-flag" : "would-install",
244252
244242
  files
244253
244243
  },
244254
244244
  result
@@ -244257,19 +244247,77 @@ async function buildScaffoldDryRunPlan({
244257
244247
  await cleanup();
244258
244248
  }
244259
244249
  }
244250
+ var init_cli_scaffold_emission = __esm(() => {
244251
+ init_cli_scaffold_files();
244252
+ init_scaffold();
244253
+ init_temp_roots();
244254
+ });
244255
+
244256
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold-output.ts
244257
+ import path93 from "path";
244258
+ function quoteShellValue(value2) {
244259
+ if (!value2.startsWith("-") && /^[A-Za-z0-9._/@:-]+(?:\/[A-Za-z0-9._@:-]+)*$/.test(value2)) {
244260
+ return value2;
244261
+ }
244262
+ return `'${value2.replace(/'/g, `'"'"'`)}'`;
244263
+ }
244264
+ function getNextSteps({
244265
+ projectInput,
244266
+ projectDir,
244267
+ packageManager,
244268
+ noInstall,
244269
+ templateId
244270
+ }) {
244271
+ const cdTarget = path93.isAbsolute(projectInput) ? projectDir : projectInput;
244272
+ const steps = [`cd ${quoteShellValue(cdTarget)}`];
244273
+ if (noInstall) {
244274
+ steps.push(formatInstallCommand(packageManager));
244275
+ }
244276
+ steps.push(formatRunScript(packageManager, getPrimaryDevelopmentScript(templateId)));
244277
+ return steps;
244278
+ }
244279
+ function getOptionalOnboarding({
244280
+ availableScripts,
244281
+ packageManager,
244282
+ templateId,
244283
+ compoundPersistenceEnabled = false
244284
+ }) {
244285
+ return {
244286
+ note: getOptionalOnboardingNote(packageManager, templateId, {
244287
+ availableScripts,
244288
+ compoundPersistenceEnabled
244289
+ }),
244290
+ shortNote: getOptionalOnboardingShortNote(packageManager, templateId, {
244291
+ availableScripts,
244292
+ compoundPersistenceEnabled
244293
+ }),
244294
+ steps: getOptionalOnboardingSteps(packageManager, templateId, {
244295
+ availableScripts,
244296
+ compoundPersistenceEnabled
244297
+ })
244298
+ };
244299
+ }
244300
+ var init_cli_scaffold_output = __esm(() => {
244301
+ init_package_managers();
244302
+ init_scaffold_onboarding();
244303
+ init_local_dev_presets();
244304
+ });
244305
+
244306
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold-validation.ts
244307
+ import path94 from "path";
244260
244308
  function validateCreateProjectInput(projectInput) {
244261
244309
  const normalizedProjectInput = projectInput.trim();
244262
244310
  if (normalizedProjectInput.length === 0) {
244263
244311
  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
244312
  }
244265
- const normalizedProjectPath = path91.normalize(normalizedProjectInput).replace(/[\\/]+$/u, "") || path91.normalize(normalizedProjectInput);
244313
+ const normalizedProjectPath = path94.normalize(normalizedProjectInput).replace(/[\\/]+$/u, "") || path94.normalize(normalizedProjectInput);
244266
244314
  if (normalizedProjectPath === "." || normalizedProjectPath === "..") {
244267
244315
  throw new Error("`wp-typia create` requires a new project directory. Use an explicit child directory instead of `.` or `..`.");
244268
244316
  }
244269
244317
  }
244270
244318
  function collectProjectDirectoryWarnings(projectDir) {
244271
244319
  const warnings = [];
244272
- const projectName = path91.basename(projectDir);
244320
+ const projectName = path94.basename(projectDir);
244273
244321
  if (/\s/u.test(projectName)) {
244274
244322
  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
244323
  }
@@ -244378,7 +244426,7 @@ async function resolveOptionalSelection({
244378
244426
  if (!shouldResolve) {
244379
244427
  return;
244380
244428
  }
244381
- if (explicitValue) {
244429
+ if (explicitValue !== undefined) {
244382
244430
  return parseSelectableValue(label, explicitValue, isValue, allowedValues);
244383
244431
  }
244384
244432
  if (yes) {
@@ -244411,48 +244459,21 @@ async function resolveOptionalBooleanFlag({
244411
244459
  }
244412
244460
  return defaultValue;
244413
244461
  }
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
- }
244462
+ var init_cli_scaffold_validation = __esm(() => {
244463
+ init_alternate_render_targets();
244464
+ init_compound_inner_blocks();
244465
+ init_cli_validation();
244466
+ init_template_registry();
244467
+ });
244468
+
244469
+ // ../wp-typia-project-tools/src/runtime/cli-scaffold.ts
244470
+ var exports_cli_scaffold = {};
244471
+ __export(exports_cli_scaffold, {
244472
+ runScaffoldFlow: () => runScaffoldFlow,
244473
+ getOptionalOnboarding: () => getOptionalOnboarding,
244474
+ getNextSteps: () => getNextSteps
244475
+ });
244476
+ import path95 from "path";
244456
244477
  async function runScaffoldFlow({
244457
244478
  projectInput,
244458
244479
  cwd = process.cwd(),
@@ -244574,8 +244595,8 @@ async function runScaffoldFlow({
244574
244595
  select: selectWithMigrationUi,
244575
244596
  yes
244576
244597
  });
244577
- const projectDir = path91.resolve(cwd, projectInput);
244578
- const projectName = path91.basename(projectDir);
244598
+ const projectDir = path95.resolve(cwd, projectInput);
244599
+ const projectName = path95.basename(projectDir);
244579
244600
  const answers = await collectScaffoldAnswers({
244580
244601
  dataStorageMode: resolvedDataStorage,
244581
244602
  namespace,
@@ -244591,7 +244612,7 @@ async function runScaffoldFlow({
244591
244612
  if (resolvedTemplateId === "compound" && resolvedInnerBlocksPreset) {
244592
244613
  answers.compoundInnerBlocksPreset = resolvedInnerBlocksPreset;
244593
244614
  }
244594
- const resolvedResult = dryRun ? await buildScaffoldDryRunPlan({
244615
+ const emissionOptions = {
244595
244616
  allowExistingDir,
244596
244617
  alternateRenderTargets,
244597
244618
  answers,
@@ -244612,43 +244633,12 @@ async function runScaffoldFlow({
244612
244633
  withMigrationUi: resolvedWithMigrationUi,
244613
244634
  withTestPreset: resolvedWithTestPreset,
244614
244635
  withWpEnv: resolvedWithWpEnv
244615
- }) : {
244636
+ };
244637
+ const resolvedResult = dryRun ? await buildScaffoldDryRunPlan(emissionOptions) : {
244616
244638
  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
- })
244639
+ result: await emitScaffoldProject(emissionOptions)
244639
244640
  };
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
- }
244641
+ const availableScripts = dryRun ? undefined : await readGeneratedPackageScripts(projectDir);
244652
244642
  return {
244653
244643
  dryRun,
244654
244644
  optionalOnboarding: getOptionalOnboarding({
@@ -244687,19 +244677,16 @@ async function runScaffoldFlow({
244687
244677
  }
244688
244678
  var init_cli_scaffold = __esm(() => {
244689
244679
  init_scaffold();
244690
- init_alternate_render_targets();
244691
244680
  init_compound_inner_blocks();
244692
244681
  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();
244682
+ init_cli_scaffold_emission();
244683
+ init_cli_scaffold_files();
244684
+ init_cli_scaffold_output();
244685
+ init_cli_scaffold_validation();
244700
244686
  init_template_registry();
244701
244687
  init_external_layer_selection();
244702
244688
  init_cli_validation();
244689
+ init_cli_scaffold_output();
244703
244690
  });
244704
244691
 
244705
244692
  // ../wp-typia-project-tools/src/runtime/cli-templates.ts
@@ -244861,7 +244848,7 @@ var init_cli_templates = __esm(() => {
244861
244848
 
244862
244849
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-shared.ts
244863
244850
  import fs32 from "fs";
244864
- import path92 from "path";
244851
+ import path96 from "path";
244865
244852
  function createDoctorCheck(label, status, detail, code) {
244866
244853
  return code ? { code, detail, label, status } : { detail, label, status };
244867
244854
  }
@@ -244872,10 +244859,10 @@ function getWorkspaceBootstrapRelativePath(packageName) {
244872
244859
  return `${packageName.split("/").pop() ?? packageName}.php`;
244873
244860
  }
244874
244861
  function resolveWorkspaceBootstrapPath(projectDir, packageName) {
244875
- return path92.join(projectDir, getWorkspaceBootstrapRelativePath(packageName));
244862
+ return path96.join(projectDir, getWorkspaceBootstrapRelativePath(packageName));
244876
244863
  }
244877
244864
  function checkExistingFiles(projectDir, label, filePaths) {
244878
- const missing = filePaths.filter((filePath) => typeof filePath === "string").filter((filePath) => !fs32.existsSync(path92.join(projectDir, filePath)));
244865
+ const missing = filePaths.filter((filePath) => typeof filePath === "string").filter((filePath) => !fs32.existsSync(path96.join(projectDir, filePath)));
244879
244866
  return createDoctorCheck(label, missing.length === 0 ? "pass" : "fail", missing.length === 0 ? "All referenced files exist" : `Missing: ${missing.join(", ")}`);
244880
244867
  }
244881
244868
  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 +244882,7 @@ import { execFileSync as execFileSync3 } from "child_process";
244895
244882
  import { access, constants as fsConstants, rm as rm2, writeFile as writeFile6 } from "fs/promises";
244896
244883
  import fs33 from "fs";
244897
244884
  import os5 from "os";
244898
- import path93 from "path";
244885
+ import path97 from "path";
244899
244886
  function readCommandVersion(command, args = ["--version"]) {
244900
244887
  try {
244901
244888
  return execFileSync3(command, args, {
@@ -244919,7 +244906,7 @@ async function checkWritableDirectory(directory) {
244919
244906
  }
244920
244907
  }
244921
244908
  async function checkTempDirectory() {
244922
- const tempFile = path93.join(os5.tmpdir(), `wp-typia-${Date.now()}.tmp`);
244909
+ const tempFile = path97.join(os5.tmpdir(), `wp-typia-${Date.now()}.tmp`);
244923
244910
  try {
244924
244911
  await writeFile6(tempFile, "ok", "utf8");
244925
244912
  await rm2(tempFile, { force: true });
@@ -244933,7 +244920,7 @@ function getTemplateDoctorChecks() {
244933
244920
  for (const template of listTemplates()) {
244934
244921
  if (!isBuiltInTemplateId(template.id)) {
244935
244922
  const templateDirExists = fs33.existsSync(template.templateDir);
244936
- const hasAssets2 = templateDirExists && fs33.existsSync(path93.join(template.templateDir, "package.json.mustache"));
244923
+ const hasAssets2 = templateDirExists && fs33.existsSync(path97.join(template.templateDir, "package.json.mustache"));
244937
244924
  checks3.push({
244938
244925
  status: !templateDirExists || hasAssets2 ? "pass" : "fail",
244939
244926
  label: `Template ${template.id}`,
@@ -244958,7 +244945,7 @@ function getTemplateDoctorChecks() {
244958
244945
  ])) : getBuiltInTemplateLayerDirs(builtInTemplateId);
244959
244946
  const missingRequiredLayer = layerDirs.some((layerDir) => !fs33.existsSync(layerDir) && !isOmittableBuiltInTemplateLayerDir(builtInTemplateId, layerDir));
244960
244947
  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")));
244948
+ const hasAssets = !missingRequiredLayer && existingLayerDirs.some((layerDir) => fs33.existsSync(path97.join(layerDir, "package.json.mustache"))) && existingLayerDirs.some((layerDir) => fs33.existsSync(path97.join(layerDir, "src")));
244962
244949
  checks3.push({
244963
244950
  status: hasAssets ? "pass" : "fail",
244964
244951
  label: `Template ${template.id}`,
@@ -244990,12 +244977,12 @@ var init_cli_doctor_environment = __esm(() => {
244990
244977
 
244991
244978
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-bindings.ts
244992
244979
  import fs34 from "fs";
244993
- import path94 from "path";
244980
+ import path98 from "path";
244994
244981
  import { parseScaffoldBlockMetadata as parseScaffoldBlockMetadata2 } from "@wp-typia/block-runtime/blocks";
244995
244982
  function checkWorkspaceBindingBootstrap(projectDir, packageName) {
244996
244983
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
244997
244984
  if (!fs34.existsSync(bootstrapPath)) {
244998
- return createDoctorCheck("Binding bootstrap", "fail", `Missing ${path94.basename(bootstrapPath)}`);
244985
+ return createDoctorCheck("Binding bootstrap", "fail", `Missing ${path98.basename(bootstrapPath)}`);
244999
244986
  }
245000
244987
  const source = fs34.readFileSync(bootstrapPath, "utf8");
245001
244988
  const hasServerGlob = source.includes(WORKSPACE_BINDING_SERVER_GLOB);
@@ -245005,11 +244992,11 @@ function checkWorkspaceBindingBootstrap(projectDir, packageName) {
245005
244992
  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
244993
  }
245007
244994
  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)));
244995
+ const indexRelativePath = [path98.join("src", "bindings", "index.ts"), path98.join("src", "bindings", "index.js")].find((relativePath) => fs34.existsSync(path98.join(projectDir, relativePath)));
245009
244996
  if (!indexRelativePath) {
245010
244997
  return createDoctorCheck("Binding sources index", "fail", "Missing src/bindings/index.ts or src/bindings/index.js");
245011
244998
  }
245012
- const indexPath = path94.join(projectDir, indexRelativePath);
244999
+ const indexPath = path98.join(projectDir, indexRelativePath);
245013
245000
  const source = fs34.readFileSync(indexPath, "utf8");
245014
245001
  const missingImports = bindingSources.filter((bindingSource) => !source.includes(`./${bindingSource.slug}/editor`));
245015
245002
  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 +245013,8 @@ function checkWorkspaceBindingTarget(projectDir, workspace, registeredBlockSlugs
245026
245013
  if (!registeredBlockSlugs.has(bindingSource.block)) {
245027
245014
  return createDoctorCheck(`Binding target ${bindingSource.slug}`, "fail", `Binding target references unknown block "${bindingSource.block}".`);
245028
245015
  }
245029
- const blockJsonRelativePath = path94.join("src", "blocks", bindingSource.block, "block.json");
245030
- const blockJsonPath = path94.join(projectDir, blockJsonRelativePath);
245016
+ const blockJsonRelativePath = path98.join("src", "blocks", bindingSource.block, "block.json");
245017
+ const blockJsonPath = path98.join(projectDir, blockJsonRelativePath);
245031
245018
  const issues = [];
245032
245019
  try {
245033
245020
  const blockJson = parseScaffoldBlockMetadata2(readJsonFileSync(blockJsonPath, {
@@ -245045,7 +245032,7 @@ function checkWorkspaceBindingTarget(projectDir, workspace, registeredBlockSlugs
245045
245032
  } catch (error48) {
245046
245033
  issues.push(error48 instanceof Error ? `Unable to read ${blockJsonRelativePath}: ${error48.message}` : `Unable to read ${blockJsonRelativePath}.`);
245047
245034
  }
245048
- const serverPath = path94.join(projectDir, bindingSource.serverFile);
245035
+ const serverPath = path98.join(projectDir, bindingSource.serverFile);
245049
245036
  if (fs34.existsSync(serverPath)) {
245050
245037
  const serverSource = fs34.readFileSync(serverPath, "utf8");
245051
245038
  const supportedAttributesFilter = `block_bindings_supported_attributes_${workspace.workspace.namespace}/${bindingSource.block}`;
@@ -245058,7 +245045,7 @@ function checkWorkspaceBindingTarget(projectDir, workspace, registeredBlockSlugs
245058
245045
  } else {
245059
245046
  issues.push(`Missing ${bindingSource.serverFile}`);
245060
245047
  }
245061
- const editorPath = path94.join(projectDir, bindingSource.editorFile);
245048
+ const editorPath = path98.join(projectDir, bindingSource.editorFile);
245062
245049
  if (fs34.existsSync(editorPath)) {
245063
245050
  const editorSource = fs34.readFileSync(editorPath, "utf8");
245064
245051
  const blockName = `${workspace.workspace.namespace}/${bindingSource.block}`;
@@ -245098,7 +245085,7 @@ function checkWorkspaceBindingPostMeta(projectDir, inventory, bindingSource) {
245098
245085
  } catch (error48) {
245099
245086
  issues.push(error48 instanceof Error ? error48.message : String(error48));
245100
245087
  }
245101
- const serverPath = path94.join(projectDir, bindingSource.serverFile);
245088
+ const serverPath = path98.join(projectDir, bindingSource.serverFile);
245102
245089
  if (fs34.existsSync(serverPath)) {
245103
245090
  const serverSource = fs34.readFileSync(serverPath, "utf8");
245104
245091
  if (!serverSource.includes("get_post_meta")) {
@@ -245113,7 +245100,7 @@ function checkWorkspaceBindingPostMeta(projectDir, inventory, bindingSource) {
245113
245100
  } else {
245114
245101
  issues.push(`Missing ${bindingSource.serverFile}`);
245115
245102
  }
245116
- const editorPath = path94.join(projectDir, bindingSource.editorFile);
245103
+ const editorPath = path98.join(projectDir, bindingSource.editorFile);
245117
245104
  if (fs34.existsSync(editorPath)) {
245118
245105
  const editorSource = fs34.readFileSync(editorPath, "utf8");
245119
245106
  if (!editorSource.includes("POST_META_BINDING_FIELDS")) {
@@ -245161,7 +245148,7 @@ var init_cli_doctor_workspace_bindings = __esm(() => {
245161
245148
 
245162
245149
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-block-addons.ts
245163
245150
  import fs35 from "fs";
245164
- import path95 from "path";
245151
+ import path99 from "path";
245165
245152
  function isNestedPatternContentFile(patternFile) {
245166
245153
  if (!patternFile) {
245167
245154
  return false;
@@ -245172,7 +245159,7 @@ function isNestedPatternContentFile(patternFile) {
245172
245159
  function checkWorkspacePatternBootstrap(projectDir, packageName, requiresNestedPatternGlob) {
245173
245160
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245174
245161
  if (!fs35.existsSync(bootstrapPath)) {
245175
- return createDoctorCheck("Pattern bootstrap", "fail", `Missing ${path95.basename(bootstrapPath)}`);
245162
+ return createDoctorCheck("Pattern bootstrap", "fail", `Missing ${path99.basename(bootstrapPath)}`);
245176
245163
  }
245177
245164
  const source = fs35.readFileSync(bootstrapPath, "utf8");
245178
245165
  const hasCategoryAnchor = source.includes("register_block_pattern_category");
@@ -245182,9 +245169,9 @@ function checkWorkspacePatternBootstrap(projectDir, packageName, requiresNestedP
245182
245169
  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
245170
  }
245184
245171
  function checkVariationEntrypoint(projectDir, blockSlug) {
245185
- const entryPath = path95.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245172
+ const entryPath = path99.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245186
245173
  if (!fs35.existsSync(entryPath)) {
245187
- return createDoctorCheck(`Variation entrypoint ${blockSlug}`, "fail", `Missing ${path95.relative(projectDir, entryPath)}`);
245174
+ return createDoctorCheck(`Variation entrypoint ${blockSlug}`, "fail", `Missing ${path99.relative(projectDir, entryPath)}`);
245188
245175
  }
245189
245176
  const source = fs35.readFileSync(entryPath, "utf8");
245190
245177
  const hasImport = hasUncommentedPattern(source, WORKSPACE_VARIATIONS_IMPORT_PATTERN);
@@ -245192,9 +245179,9 @@ function checkVariationEntrypoint(projectDir, blockSlug) {
245192
245179
  return createDoctorCheck(`Variation entrypoint ${blockSlug}`, hasImport && hasCall ? "pass" : "fail", hasImport && hasCall ? "Variations registration hook is present" : "Missing ./variations import or registerWorkspaceVariations() call");
245193
245180
  }
245194
245181
  function checkBlockStyleEntrypoint(projectDir, blockSlug) {
245195
- const entryPath = path95.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245182
+ const entryPath = path99.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245196
245183
  if (!fs35.existsSync(entryPath)) {
245197
- return createDoctorCheck(`Block style entrypoint ${blockSlug}`, "fail", `Missing ${path95.relative(projectDir, entryPath)}`);
245184
+ return createDoctorCheck(`Block style entrypoint ${blockSlug}`, "fail", `Missing ${path99.relative(projectDir, entryPath)}`);
245198
245185
  }
245199
245186
  const source = fs35.readFileSync(entryPath, "utf8");
245200
245187
  const hasImport = hasUncommentedPattern(source, WORKSPACE_BLOCK_STYLES_IMPORT_PATTERN);
@@ -245202,9 +245189,9 @@ function checkBlockStyleEntrypoint(projectDir, blockSlug) {
245202
245189
  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
245190
  }
245204
245191
  function checkBlockTransformEntrypoint(projectDir, blockSlug) {
245205
- const entryPath = path95.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245192
+ const entryPath = path99.join(projectDir, "src", "blocks", blockSlug, "index.tsx");
245206
245193
  if (!fs35.existsSync(entryPath)) {
245207
- return createDoctorCheck(`Block transform entrypoint ${blockSlug}`, "fail", `Missing ${path95.relative(projectDir, entryPath)}`);
245194
+ return createDoctorCheck(`Block transform entrypoint ${blockSlug}`, "fail", `Missing ${path99.relative(projectDir, entryPath)}`);
245208
245195
  }
245209
245196
  const source = fs35.readFileSync(entryPath, "utf8");
245210
245197
  const hasImport = hasUncommentedPattern(source, WORKSPACE_BLOCK_TRANSFORMS_IMPORT_PATTERN);
@@ -245247,7 +245234,7 @@ function getWorkspaceBlockAddonDoctorChecks(workspace, inventory, registeredBloc
245247
245234
  }
245248
245235
  for (const blockSlug of blockStyleTargetBlocks) {
245249
245236
  checks3.push(checkExistingFiles(workspace.projectDir, `Block style registry ${blockSlug}`, [
245250
- path95.join("src", "blocks", blockSlug, "styles", "index.ts")
245237
+ path99.join("src", "blocks", blockSlug, "styles", "index.ts")
245251
245238
  ]));
245252
245239
  checks3.push(checkBlockStyleEntrypoint(workspace.projectDir, blockSlug));
245253
245240
  }
@@ -245263,11 +245250,11 @@ function getWorkspaceBlockAddonDoctorChecks(workspace, inventory, registeredBloc
245263
245250
  }
245264
245251
  for (const blockSlug of blockTransformTargetBlocks) {
245265
245252
  checks3.push(checkExistingFiles(workspace.projectDir, `Block transform registry ${blockSlug}`, [
245266
- path95.join("src", "blocks", blockSlug, "transforms", "index.ts")
245253
+ path99.join("src", "blocks", blockSlug, "transforms", "index.ts")
245267
245254
  ]));
245268
245255
  checks3.push(checkBlockTransformEntrypoint(workspace.projectDir, blockSlug));
245269
245256
  }
245270
- const shouldCheckPatternBootstrap = inventory.patterns.length > 0 || fs35.existsSync(path95.join(workspace.projectDir, "src", "patterns"));
245257
+ const shouldCheckPatternBootstrap = inventory.patterns.length > 0 || fs35.existsSync(path99.join(workspace.projectDir, "src", "patterns"));
245271
245258
  if (shouldCheckPatternBootstrap) {
245272
245259
  const requiresNestedPatternGlob = inventory.patterns.some((pattern) => isNestedPatternContentFile(resolvePatternCatalogContentFile(pattern)));
245273
245260
  checks3.push(checkWorkspacePatternBootstrap(workspace.projectDir, workspace.packageName, requiresNestedPatternGlob));
@@ -245299,10 +245286,10 @@ var init_cli_doctor_workspace_block_addons = __esm(() => {
245299
245286
 
245300
245287
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-block-iframe.ts
245301
245288
  import fs36 from "fs";
245302
- import path96 from "path";
245289
+ import path100 from "path";
245303
245290
  import { parseScaffoldBlockMetadata as parseScaffoldBlockMetadata3 } from "@wp-typia/block-runtime/blocks";
245304
245291
  function normalizePathSeparators(relativePath) {
245305
- return relativePath.split(path96.sep).join("/");
245292
+ return relativePath.split(path100.sep).join("/");
245306
245293
  }
245307
245294
  function hasRegisteredBlockAsset(value2) {
245308
245295
  if (typeof value2 === "string") {
@@ -245314,8 +245301,8 @@ function hasRegisteredBlockAsset(value2) {
245314
245301
  return false;
245315
245302
  }
245316
245303
  function readWorkspaceBlockIframeMetadata(projectDir, blockSlug) {
245317
- const blockJsonRelativePath = path96.join("src", "blocks", blockSlug, "block.json");
245318
- const blockJsonPath = path96.join(projectDir, blockJsonRelativePath);
245304
+ const blockJsonRelativePath = path100.join("src", "blocks", blockSlug, "block.json");
245305
+ const blockJsonPath = path100.join(projectDir, blockJsonRelativePath);
245319
245306
  if (!fs36.existsSync(blockJsonPath)) {
245320
245307
  return {
245321
245308
  blockJsonRelativePath,
@@ -245342,8 +245329,8 @@ function isWorkspaceBlockEditorSource(relativePath) {
245342
245329
  return false;
245343
245330
  }
245344
245331
  const normalizedRelativePath = normalizePathSeparators(relativePath);
245345
- const normalizedDirName = path96.posix.dirname(normalizedRelativePath);
245346
- const normalizedBaseName = path96.posix.basename(normalizedRelativePath, path96.posix.extname(normalizedRelativePath));
245332
+ const normalizedDirName = path100.posix.dirname(normalizedRelativePath);
245333
+ const normalizedBaseName = path100.posix.basename(normalizedRelativePath, path100.posix.extname(normalizedRelativePath));
245347
245334
  if (WORKSPACE_BLOCK_EDITOR_SOURCE_BASENAMES.has(normalizedBaseName)) {
245348
245335
  return true;
245349
245336
  }
@@ -245351,11 +245338,11 @@ function isWorkspaceBlockEditorSource(relativePath) {
245351
245338
  return pathSegments.some((segment) => WORKSPACE_BLOCK_EDITOR_SOURCE_DIRECTORIES.has(segment));
245352
245339
  }
245353
245340
  function isWorkspaceBlockSaveSource(relativePath) {
245354
- const normalizedBaseName = path96.basename(relativePath, path96.extname(relativePath));
245341
+ const normalizedBaseName = path100.basename(relativePath, path100.extname(relativePath));
245355
245342
  return normalizedBaseName === "save";
245356
245343
  }
245357
245344
  function collectWorkspaceBlockEditorSources(projectDir, blockSlug) {
245358
- const blockDir = path96.join(projectDir, "src", "blocks", blockSlug);
245345
+ const blockDir = path100.join(projectDir, "src", "blocks", blockSlug);
245359
245346
  if (!fs36.existsSync(blockDir)) {
245360
245347
  return [];
245361
245348
  }
@@ -245367,7 +245354,7 @@ function collectWorkspaceBlockEditorSources(projectDir, blockSlug) {
245367
245354
  continue;
245368
245355
  }
245369
245356
  for (const entry of fs36.readdirSync(currentDir, { withFileTypes: true })) {
245370
- const absolutePath = path96.join(currentDir, entry.name);
245357
+ const absolutePath = path100.join(currentDir, entry.name);
245371
245358
  if (entry.isDirectory()) {
245372
245359
  queue.push(absolutePath);
245373
245360
  continue;
@@ -245375,7 +245362,7 @@ function collectWorkspaceBlockEditorSources(projectDir, blockSlug) {
245375
245362
  if (!entry.isFile()) {
245376
245363
  continue;
245377
245364
  }
245378
- const relativePath = path96.relative(projectDir, absolutePath);
245365
+ const relativePath = path100.relative(projectDir, absolutePath);
245379
245366
  if (!isWorkspaceBlockEditorSource(relativePath)) {
245380
245367
  continue;
245381
245368
  }
@@ -245448,8 +245435,8 @@ function getWorkspaceBlockIframeCompatibilityChecks(projectDir, blockSlug) {
245448
245435
  }
245449
245436
  const blockJson = metadataResult.document;
245450
245437
  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)));
245438
+ const blockDir = path100.join(projectDir, "src", "blocks", blockSlug);
245439
+ 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
245440
  const hasRegisteredEditorStyles = hasRegisteredBlockAsset(blockJson.style) || hasRegisteredBlockAsset(blockJson.editorStyle);
245454
245441
  const editorSources = collectWorkspaceBlockEditorSources(projectDir, blockSlug);
245455
245442
  const editorWrapperSources = editorSources.filter((source) => !isWorkspaceBlockSaveSource(source.relativePath));
@@ -245501,21 +245488,21 @@ var init_cli_doctor_workspace_block_iframe = __esm(() => {
245501
245488
 
245502
245489
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-block-metadata.ts
245503
245490
  import fs37 from "fs";
245504
- import path97 from "path";
245491
+ import path101 from "path";
245505
245492
  import { parseScaffoldBlockMetadata as parseScaffoldBlockMetadata4 } from "@wp-typia/block-runtime/blocks";
245506
245493
  function getWorkspaceBlockRequiredFiles(block) {
245507
- const blockDir = path97.join("src", "blocks", block.slug);
245494
+ const blockDir = path101.join("src", "blocks", block.slug);
245508
245495
  return Array.from(new Set([
245509
245496
  block.typesFile,
245510
245497
  block.apiTypesFile,
245511
245498
  block.openApiFile,
245512
- path97.join(blockDir, "index.tsx"),
245513
- ...WORKSPACE_GENERATED_BLOCK_ARTIFACTS.map((fileName) => path97.join(blockDir, fileName))
245499
+ path101.join(blockDir, "index.tsx"),
245500
+ ...WORKSPACE_GENERATED_BLOCK_ARTIFACTS.map((fileName) => path101.join(blockDir, fileName))
245514
245501
  ].filter((filePath) => typeof filePath === "string")));
245515
245502
  }
245516
245503
  function checkWorkspaceBlockMetadata(projectDir, workspace, block) {
245517
- const blockJsonRelativePath = path97.join("src", "blocks", block.slug, "block.json");
245518
- const blockJsonPath = path97.join(projectDir, blockJsonRelativePath);
245504
+ const blockJsonRelativePath = path101.join("src", "blocks", block.slug, "block.json");
245505
+ const blockJsonPath = path101.join(projectDir, blockJsonRelativePath);
245519
245506
  if (!fs37.existsSync(blockJsonPath)) {
245520
245507
  return createDoctorCheck(`Block metadata ${block.slug}`, "fail", `Missing ${blockJsonRelativePath}`);
245521
245508
  }
@@ -245538,8 +245525,8 @@ function checkWorkspaceBlockMetadata(projectDir, workspace, block) {
245538
245525
  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
245526
  }
245540
245527
  function checkWorkspaceBlockHooks(projectDir, blockSlug) {
245541
- const blockJsonRelativePath = path97.join("src", "blocks", blockSlug, "block.json");
245542
- const blockJsonPath = path97.join(projectDir, blockJsonRelativePath);
245528
+ const blockJsonRelativePath = path101.join("src", "blocks", blockSlug, "block.json");
245529
+ const blockJsonPath = path101.join(projectDir, blockJsonRelativePath);
245543
245530
  if (!fs37.existsSync(blockJsonPath)) {
245544
245531
  return createDoctorCheck(`Block hooks ${blockSlug}`, "fail", `Missing ${blockJsonRelativePath}`);
245545
245532
  }
@@ -245563,8 +245550,8 @@ function checkWorkspaceBlockHooks(projectDir, blockSlug) {
245563
245550
  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
245551
  }
245565
245552
  function checkWorkspaceBlockCollectionImport(projectDir, blockSlug) {
245566
- const entryRelativePath = path97.join("src", "blocks", blockSlug, "index.tsx");
245567
- const entryPath = path97.join(projectDir, entryRelativePath);
245553
+ const entryRelativePath = path101.join("src", "blocks", blockSlug, "index.tsx");
245554
+ const entryPath = path101.join(projectDir, entryRelativePath);
245568
245555
  if (!fs37.existsSync(entryPath)) {
245569
245556
  return createDoctorCheck(`Block collection ${blockSlug}`, "fail", `Missing ${entryRelativePath}`);
245570
245557
  }
@@ -245607,7 +245594,7 @@ var init_cli_doctor_workspace_blocks = __esm(() => {
245607
245594
 
245608
245595
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-abilities.ts
245609
245596
  import fs38 from "fs";
245610
- import path98 from "path";
245597
+ import path102 from "path";
245611
245598
  function getWorkspaceAbilityRequiredFiles(ability) {
245612
245599
  return Array.from(new Set([
245613
245600
  ability.clientFile,
@@ -245620,7 +245607,7 @@ function getWorkspaceAbilityRequiredFiles(ability) {
245620
245607
  ]));
245621
245608
  }
245622
245609
  function checkWorkspaceAbilityConfig(projectDir, ability) {
245623
- const configPath = path98.join(projectDir, ability.configFile);
245610
+ const configPath = path102.join(projectDir, ability.configFile);
245624
245611
  if (!fs38.existsSync(configPath)) {
245625
245612
  return createDoctorCheck(`Ability config ${ability.slug}`, "fail", `Missing ${ability.configFile}`);
245626
245613
  }
@@ -245640,7 +245627,7 @@ function checkWorkspaceAbilityConfig(projectDir, ability) {
245640
245627
  function checkWorkspaceAbilityBootstrap(projectDir, packageName, phpPrefix) {
245641
245628
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245642
245629
  if (!fs38.existsSync(bootstrapPath)) {
245643
- return createDoctorCheck("Ability bootstrap", "fail", `Missing ${path98.basename(bootstrapPath)}`);
245630
+ return createDoctorCheck("Ability bootstrap", "fail", `Missing ${path102.basename(bootstrapPath)}`);
245644
245631
  }
245645
245632
  const source = fs38.readFileSync(bootstrapPath, "utf8");
245646
245633
  const loadFunctionName = `${phpPrefix}_load_workflow_abilities`;
@@ -245659,13 +245646,13 @@ function checkWorkspaceAbilityBootstrap(projectDir, packageName, phpPrefix) {
245659
245646
  }
245660
245647
  function checkWorkspaceAbilityIndex(projectDir, abilities) {
245661
245648
  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)));
245649
+ path102.join("src", "abilities", "index.ts"),
245650
+ path102.join("src", "abilities", "index.js")
245651
+ ].find((relativePath) => fs38.existsSync(path102.join(projectDir, relativePath)));
245665
245652
  if (!indexRelativePath) {
245666
245653
  return createDoctorCheck("Abilities index", "fail", "Missing src/abilities/index.ts or src/abilities/index.js");
245667
245654
  }
245668
- const indexPath = path98.join(projectDir, indexRelativePath);
245655
+ const indexPath = path102.join(projectDir, indexRelativePath);
245669
245656
  const source = fs38.readFileSync(indexPath, "utf8");
245670
245657
  const missingExports = abilities.filter((ability) => {
245671
245658
  const exportPattern = new RegExp(`^\\s*export\\s+(?:\\*\\s+from|\\{[^}]+\\}\\s+from)\\s+['"\`]\\./${escapeRegex2(ability.slug)}\\/client['"\`]`, "mu");
@@ -245692,17 +245679,17 @@ var init_cli_doctor_workspace_features_abilities = __esm(() => {
245692
245679
 
245693
245680
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-admin-views.ts
245694
245681
  import fs39 from "fs";
245695
- import path99 from "path";
245682
+ import path103 from "path";
245696
245683
  function getWorkspaceAdminViewRequiredFiles(adminView) {
245697
- const adminViewDir = path99.join("src", "admin-views", adminView.slug);
245684
+ const adminViewDir = path103.join("src", "admin-views", adminView.slug);
245698
245685
  return Array.from(new Set([
245699
245686
  adminView.file,
245700
245687
  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")
245688
+ path103.join(adminViewDir, "Screen.tsx"),
245689
+ path103.join(adminViewDir, "config.ts"),
245690
+ path103.join(adminViewDir, "data.ts"),
245691
+ path103.join(adminViewDir, "style.scss"),
245692
+ path103.join(adminViewDir, "types.ts")
245706
245693
  ]));
245707
245694
  }
245708
245695
  function checkWorkspaceAdminViewConfig(adminView, inventory) {
@@ -245724,7 +245711,7 @@ function checkWorkspaceAdminViewConfig(adminView, inventory) {
245724
245711
  function checkWorkspaceAdminViewBootstrap(projectDir, packageName, phpPrefix) {
245725
245712
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245726
245713
  if (!fs39.existsSync(bootstrapPath)) {
245727
- return createDoctorCheck("Admin view bootstrap", "fail", `Missing ${path99.basename(bootstrapPath)}`);
245714
+ return createDoctorCheck("Admin view bootstrap", "fail", `Missing ${path103.basename(bootstrapPath)}`);
245728
245715
  }
245729
245716
  const source = fs39.readFileSync(bootstrapPath, "utf8");
245730
245717
  const loadFunctionName = `${phpPrefix}_load_admin_views`;
@@ -245735,13 +245722,13 @@ function checkWorkspaceAdminViewBootstrap(projectDir, packageName, phpPrefix) {
245735
245722
  }
245736
245723
  function checkWorkspaceAdminViewIndex(projectDir, adminViews) {
245737
245724
  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)));
245725
+ path103.join("src", "admin-views", "index.ts"),
245726
+ path103.join("src", "admin-views", "index.js")
245727
+ ].find((relativePath) => fs39.existsSync(path103.join(projectDir, relativePath)));
245741
245728
  if (!indexRelativePath) {
245742
245729
  return createDoctorCheck("Admin views index", "fail", "Missing src/admin-views/index.ts or src/admin-views/index.js");
245743
245730
  }
245744
- const indexPath = path99.join(projectDir, indexRelativePath);
245731
+ const indexPath = path103.join(projectDir, indexRelativePath);
245745
245732
  const source = fs39.readFileSync(indexPath, "utf8");
245746
245733
  const missingImports = adminViews.filter((adminView) => {
245747
245734
  const importPattern = new RegExp(`['"\`]\\./${escapeRegex2(adminView.slug)}(?:/[^'"\`]*)?['"\`]`, "u");
@@ -245750,7 +245737,7 @@ function checkWorkspaceAdminViewIndex(projectDir, adminViews) {
245750
245737
  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
245738
  }
245752
245739
  function checkWorkspaceAdminViewPhp(projectDir, adminView) {
245753
- const phpPath = path99.join(projectDir, adminView.phpFile);
245740
+ const phpPath = path103.join(projectDir, adminView.phpFile);
245754
245741
  if (!fs39.existsSync(phpPath)) {
245755
245742
  return createDoctorCheck(`Admin view PHP ${adminView.slug}`, "fail", `Missing ${adminView.phpFile}`);
245756
245743
  }
@@ -245783,14 +245770,14 @@ var init_cli_doctor_workspace_features_admin_views = __esm(() => {
245783
245770
 
245784
245771
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-ai.ts
245785
245772
  import fs40 from "fs";
245786
- import path100 from "path";
245773
+ import path104 from "path";
245787
245774
  function getWorkspaceAiFeatureRequiredFiles(aiFeature) {
245788
245775
  return Array.from(new Set([
245789
245776
  aiFeature.aiSchemaFile,
245790
245777
  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"),
245778
+ path104.join(path104.dirname(aiFeature.typesFile), "api-schemas", "feature-request.schema.json"),
245779
+ path104.join(path104.dirname(aiFeature.typesFile), "api-schemas", "feature-response.schema.json"),
245780
+ path104.join(path104.dirname(aiFeature.typesFile), "api-schemas", "feature-result.schema.json"),
245794
245781
  aiFeature.clientFile,
245795
245782
  aiFeature.dataFile,
245796
245783
  aiFeature.openApiFile,
@@ -245806,7 +245793,7 @@ function checkWorkspaceAiFeatureConfig(aiFeature) {
245806
245793
  function checkWorkspaceAiFeatureBootstrap(projectDir, packageName, phpPrefix) {
245807
245794
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245808
245795
  if (!fs40.existsSync(bootstrapPath)) {
245809
- return createDoctorCheck("AI feature bootstrap", "fail", `Missing ${path100.basename(bootstrapPath)}`);
245796
+ return createDoctorCheck("AI feature bootstrap", "fail", `Missing ${path104.basename(bootstrapPath)}`);
245810
245797
  }
245811
245798
  const source = fs40.readFileSync(bootstrapPath, "utf8");
245812
245799
  const registerFunctionName = `${phpPrefix}_register_ai_features`;
@@ -245833,16 +245820,16 @@ var init_cli_doctor_workspace_features_ai = __esm(() => {
245833
245820
 
245834
245821
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-editor-plugins.ts
245835
245822
  import fs41 from "fs";
245836
- import path101 from "path";
245823
+ import path105 from "path";
245837
245824
  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");
245825
+ const editorPluginDir = path105.join("src", "editor-plugins", editorPlugin.slug);
245826
+ const surfaceFile = editorPlugin.slot === "PluginSidebar" ? path105.join(editorPluginDir, "Sidebar.tsx") : path105.join(editorPluginDir, "Surface.tsx");
245840
245827
  return Array.from(new Set([
245841
245828
  editorPlugin.file,
245842
245829
  surfaceFile,
245843
- path101.join(editorPluginDir, "data.ts"),
245844
- path101.join(editorPluginDir, "types.ts"),
245845
- path101.join(editorPluginDir, "style.scss")
245830
+ path105.join(editorPluginDir, "data.ts"),
245831
+ path105.join(editorPluginDir, "types.ts"),
245832
+ path105.join(editorPluginDir, "style.scss")
245846
245833
  ]));
245847
245834
  }
245848
245835
  function checkWorkspaceEditorPluginConfig(editorPlugin) {
@@ -245853,7 +245840,7 @@ function checkWorkspaceEditorPluginConfig(editorPlugin) {
245853
245840
  function checkWorkspaceEditorPluginBootstrap(projectDir, packageName, phpPrefix) {
245854
245841
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245855
245842
  if (!fs41.existsSync(bootstrapPath)) {
245856
- return createDoctorCheck("Editor plugin bootstrap", "fail", `Missing ${path101.basename(bootstrapPath)}`);
245843
+ return createDoctorCheck("Editor plugin bootstrap", "fail", `Missing ${path105.basename(bootstrapPath)}`);
245857
245844
  }
245858
245845
  const source = fs41.readFileSync(bootstrapPath, "utf8");
245859
245846
  const enqueueFunctionName = `${phpPrefix}_enqueue_editor_plugins_editor`;
@@ -245866,13 +245853,13 @@ function checkWorkspaceEditorPluginBootstrap(projectDir, packageName, phpPrefix)
245866
245853
  }
245867
245854
  function checkWorkspaceEditorPluginIndex(projectDir, editorPlugins) {
245868
245855
  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)));
245856
+ path105.join("src", "editor-plugins", "index.ts"),
245857
+ path105.join("src", "editor-plugins", "index.js")
245858
+ ].find((relativePath) => fs41.existsSync(path105.join(projectDir, relativePath)));
245872
245859
  if (!indexRelativePath) {
245873
245860
  return createDoctorCheck("Editor plugins index", "fail", "Missing src/editor-plugins/index.ts or src/editor-plugins/index.js");
245874
245861
  }
245875
- const indexPath = path101.join(projectDir, indexRelativePath);
245862
+ const indexPath = path105.join(projectDir, indexRelativePath);
245876
245863
  const source = fs41.readFileSync(indexPath, "utf8");
245877
245864
  const missingImports = editorPlugins.filter((editorPlugin) => {
245878
245865
  const importPattern = new RegExp(`['"\`]\\./${escapeRegex2(editorPlugin.slug)}(?:/[^'"\`]*)?['"\`]`, "u");
@@ -245899,7 +245886,7 @@ var init_cli_doctor_workspace_features_editor_plugins = __esm(() => {
245899
245886
 
245900
245887
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-post-meta.ts
245901
245888
  import fs42 from "fs";
245902
- import path102 from "path";
245889
+ import path106 from "path";
245903
245890
  function getWorkspacePostMetaRequiredFiles(postMeta) {
245904
245891
  return Array.from(new Set([
245905
245892
  postMeta.phpFile,
@@ -245921,7 +245908,7 @@ function checkWorkspacePostMetaConfig(postMeta) {
245921
245908
  function checkWorkspacePostMetaBootstrap(projectDir, packageName, phpPrefix) {
245922
245909
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
245923
245910
  if (!fs42.existsSync(bootstrapPath)) {
245924
- return createDoctorCheck("Post meta bootstrap", "fail", `Missing ${path102.basename(bootstrapPath)}`);
245911
+ return createDoctorCheck("Post meta bootstrap", "fail", `Missing ${path106.basename(bootstrapPath)}`);
245925
245912
  }
245926
245913
  const source = fs42.readFileSync(bootstrapPath, "utf8");
245927
245914
  const registerFunctionName = `${phpPrefix}_register_post_meta_contracts`;
@@ -245931,7 +245918,7 @@ function checkWorkspacePostMetaBootstrap(projectDir, packageName, phpPrefix) {
245931
245918
  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
245919
  }
245933
245920
  function checkWorkspacePostMetaPhp(projectDir, postMeta) {
245934
- const phpPath = path102.join(projectDir, postMeta.phpFile);
245921
+ const phpPath = path106.join(projectDir, postMeta.phpFile);
245935
245922
  if (!fs42.existsSync(phpPath)) {
245936
245923
  return createDoctorCheck(`Post meta PHP ${postMeta.slug}`, "fail", `Missing ${postMeta.phpFile}`);
245937
245924
  }
@@ -245962,7 +245949,7 @@ var init_cli_doctor_workspace_features_post_meta = __esm(() => {
245962
245949
 
245963
245950
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-features-rest.ts
245964
245951
  import fs43 from "fs";
245965
- import path103 from "path";
245952
+ import path107 from "path";
245966
245953
  function isManualRestResource(restResource) {
245967
245954
  return restResource.mode === "manual";
245968
245955
  }
@@ -245976,7 +245963,7 @@ function getWorkspaceRestResourceRequiredFiles(restResource) {
245976
245963
  schemaNames.add("response");
245977
245964
  return Array.from(new Set([
245978
245965
  restResource.apiFile,
245979
- ...Array.from(schemaNames, (schemaName) => path103.join(path103.dirname(restResource.typesFile), "api-schemas", `${schemaName}.schema.json`)),
245966
+ ...Array.from(schemaNames, (schemaName) => path107.join(path107.dirname(restResource.typesFile), "api-schemas", `${schemaName}.schema.json`)),
245980
245967
  restResource.clientFile,
245981
245968
  restResource.openApiFile,
245982
245969
  restResource.typesFile,
@@ -246006,7 +245993,7 @@ function getWorkspaceRestResourceRequiredFiles(restResource) {
246006
245993
  }
246007
245994
  return Array.from(new Set([
246008
245995
  restResource.apiFile,
246009
- ...Array.from(schemaNames, (schemaName) => path103.join(path103.dirname(restResource.typesFile), "api-schemas", `${schemaName}.schema.json`)),
245996
+ ...Array.from(schemaNames, (schemaName) => path107.join(path107.dirname(restResource.typesFile), "api-schemas", `${schemaName}.schema.json`)),
246010
245997
  restResource.clientFile,
246011
245998
  ...restResource.dataFile ? [restResource.dataFile] : [],
246012
245999
  restResource.openApiFile,
@@ -246031,7 +246018,7 @@ function checkWorkspaceRestResourceConfig(restResource) {
246031
246018
  function checkWorkspaceRestResourceBootstrap(projectDir, packageName, phpPrefix) {
246032
246019
  const bootstrapPath = resolveWorkspaceBootstrapPath(projectDir, packageName);
246033
246020
  if (!fs43.existsSync(bootstrapPath)) {
246034
- return createDoctorCheck("REST resource bootstrap", "fail", `Missing ${path103.basename(bootstrapPath)}`);
246021
+ return createDoctorCheck("REST resource bootstrap", "fail", `Missing ${path107.basename(bootstrapPath)}`);
246035
246022
  }
246036
246023
  const source = fs43.readFileSync(bootstrapPath, "utf8");
246037
246024
  const registerFunctionName = `${phpPrefix}_register_rest_resources`;
@@ -246077,14 +246064,14 @@ var init_cli_doctor_workspace_features = __esm(() => {
246077
246064
  });
246078
246065
 
246079
246066
  // ../wp-typia-project-tools/src/runtime/cli-doctor-workspace-package.ts
246080
- import path104 from "path";
246067
+ import path108 from "path";
246081
246068
  async function prepareWorkspacePackageDoctorSnapshot(workspace, packageJson) {
246082
246069
  const packageName = packageJson.name;
246083
246070
  const bootstrapRelativePath = getWorkspaceBootstrapRelativePath(typeof packageName === "string" && packageName.length > 0 ? packageName : workspace.packageName);
246084
- const migrationConfigRelativePath = path104.join("src", "migrations", "config.ts");
246071
+ const migrationConfigRelativePath = path108.join("src", "migrations", "config.ts");
246085
246072
  const [bootstrapExists, migrationConfigExists] = await Promise.all([
246086
- pathExists(path104.join(workspace.projectDir, bootstrapRelativePath)),
246087
- pathExists(path104.join(workspace.projectDir, migrationConfigRelativePath))
246073
+ pathExists(path108.join(workspace.projectDir, bootstrapRelativePath)),
246074
+ pathExists(path108.join(workspace.projectDir, migrationConfigRelativePath))
246088
246075
  ]);
246089
246076
  return {
246090
246077
  bootstrapExists,
@@ -246314,9 +246301,9 @@ var init_cli_doctor = __esm(() => {
246314
246301
 
246315
246302
  // ../wp-typia-project-tools/src/runtime/cli-init-package-json.ts
246316
246303
  import fs44 from "fs";
246317
- import path105 from "path";
246304
+ import path109 from "path";
246318
246305
  function readProjectPackageJson(projectDir) {
246319
- const packageJsonPath = path105.join(projectDir, "package.json");
246306
+ const packageJsonPath = path109.join(projectDir, "package.json");
246320
246307
  if (!fs44.existsSync(packageJsonPath)) {
246321
246308
  return null;
246322
246309
  }
@@ -246333,13 +246320,13 @@ function inferInitPackageManager(projectDir, packageJson) {
246333
246320
  if (packageJson?.packageManager) {
246334
246321
  return parseWorkspacePackageManagerId(packageJson.packageManager);
246335
246322
  }
246336
- if (fs44.existsSync(path105.join(projectDir, "bun.lock")) || fs44.existsSync(path105.join(projectDir, "bun.lockb"))) {
246323
+ if (fs44.existsSync(path109.join(projectDir, "bun.lock")) || fs44.existsSync(path109.join(projectDir, "bun.lockb"))) {
246337
246324
  return "bun";
246338
246325
  }
246339
- if (fs44.existsSync(path105.join(projectDir, "pnpm-lock.yaml"))) {
246326
+ if (fs44.existsSync(path109.join(projectDir, "pnpm-lock.yaml"))) {
246340
246327
  return "pnpm";
246341
246328
  }
246342
- if (fs44.existsSync(path105.join(projectDir, "yarn.lock")) || fs44.existsSync(path105.join(projectDir, ".yarnrc.yml"))) {
246329
+ if (fs44.existsSync(path109.join(projectDir, "yarn.lock")) || fs44.existsSync(path109.join(projectDir, ".yarnrc.yml"))) {
246343
246330
  return "yarn";
246344
246331
  }
246345
246332
  return "npm";
@@ -246426,10 +246413,10 @@ function hasExistingWpTypiaProjectSurface(projectDir, packageJson) {
246426
246413
  const scripts = packageJson?.scripts ?? {};
246427
246414
  const hasSyncSurface = typeof scripts.sync === "string" || typeof scripts["sync-types"] === "string";
246428
246415
  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)));
246416
+ path109.join("scripts", "block-config.ts"),
246417
+ path109.join("scripts", "sync-project.ts"),
246418
+ path109.join("scripts", "sync-types-to-block-json.ts")
246419
+ ].every((relativePath) => fs44.existsSync(path109.join(projectDir, relativePath)));
246433
246420
  const hasRuntimeDeps = typeof getExistingDependencyVersion(packageJson, "@wp-typia/block-runtime") === "string" && typeof getExistingDependencyVersion(packageJson, "@wp-typia/block-types") === "string";
246434
246421
  return hasSyncSurface && hasHelperFiles && hasRuntimeDeps;
246435
246422
  }
@@ -246571,19 +246558,19 @@ var SUPPORTED_RETROFIT_LAYOUT_NOTE = "Supported retrofit layouts currently mirro
246571
246558
 
246572
246559
  // ../wp-typia-project-tools/src/runtime/cli-init-plan.ts
246573
246560
  import fs45 from "fs";
246574
- import path106 from "path";
246561
+ import path110 from "path";
246575
246562
  import { analyzeSourceTypes } from "@wp-typia/block-runtime/metadata-parser";
246576
246563
  function normalizeRelativePath2(value2) {
246577
246564
  return value2.replace(/\\/gu, "/");
246578
246565
  }
246579
246566
  function buildGeneratedArtifactPaths(blockJsonFile, manifestFile) {
246580
- const manifestDir = path106.dirname(manifestFile);
246567
+ const manifestDir = path110.dirname(manifestFile);
246581
246568
  const artifactPaths = [
246582
246569
  blockJsonFile,
246583
246570
  manifestFile,
246584
- path106.join(manifestDir, "typia.schema.json"),
246585
- path106.join(manifestDir, "typia-validator.php"),
246586
- path106.join(manifestDir, "typia.openapi.json")
246571
+ path110.join(manifestDir, "typia.schema.json"),
246572
+ path110.join(manifestDir, "typia-validator.php"),
246573
+ path110.join(manifestDir, "typia.openapi.json")
246587
246574
  ];
246588
246575
  return Array.from(new Set(artifactPaths.map((filePath) => normalizeRelativePath2(filePath))));
246589
246576
  }
@@ -246604,7 +246591,7 @@ function isObjectLikeSourceType(projectDir, typesFile, sourceTypeName) {
246604
246591
  return analyzedTypes[sourceTypeName]?.kind === "object";
246605
246592
  }
246606
246593
  function inferRetrofitAttributeTypeName(projectDir, block) {
246607
- const typesPath = path106.join(projectDir, block.typesFile);
246594
+ const typesPath = path110.join(projectDir, block.typesFile);
246608
246595
  const typesSource = fs45.readFileSync(typesPath, "utf8");
246609
246596
  const blockNameSegments = block.blockName.split("/");
246610
246597
  const slug = blockNameSegments[blockNameSegments.length - 1] ?? block.key;
@@ -246697,17 +246684,17 @@ function buildPlannedFiles(projectDir, layoutKind) {
246697
246684
  }
246698
246685
  return [
246699
246686
  {
246700
- action: fs45.existsSync(path106.join(projectDir, "scripts", "block-config.ts")) ? "update" : "add",
246687
+ action: fs45.existsSync(path110.join(projectDir, "scripts", "block-config.ts")) ? "update" : "add",
246701
246688
  path: "scripts/block-config.ts",
246702
246689
  purpose: "Declare the current retrofit block targets so sync-types can regenerate metadata from the existing TypeScript source of truth."
246703
246690
  },
246704
246691
  {
246705
- action: fs45.existsSync(path106.join(projectDir, "scripts", "sync-types-to-block-json.ts")) ? "update" : "add",
246692
+ action: fs45.existsSync(path110.join(projectDir, "scripts", "sync-types-to-block-json.ts")) ? "update" : "add",
246706
246693
  path: "scripts/sync-types-to-block-json.ts",
246707
246694
  purpose: "Generate block.json and Typia metadata artifacts from the current TypeScript source of truth."
246708
246695
  },
246709
246696
  {
246710
- action: fs45.existsSync(path106.join(projectDir, "scripts", "sync-project.ts")) ? "update" : "add",
246697
+ action: fs45.existsSync(path110.join(projectDir, "scripts", "sync-project.ts")) ? "update" : "add",
246711
246698
  path: "scripts/sync-project.ts",
246712
246699
  purpose: "Provide one shared sync entrypoint that can grow into sync-rest or workspace-aware refresh steps later."
246713
246700
  }
@@ -246748,7 +246735,7 @@ function createRetrofitPlan(options) {
246748
246735
  };
246749
246736
  }
246750
246737
  function getInitPlan(projectDir, options = {}) {
246751
- const resolvedProjectDir = path106.resolve(projectDir);
246738
+ const resolvedProjectDir = path110.resolve(projectDir);
246752
246739
  const packageJson = readProjectPackageJson(resolvedProjectDir);
246753
246740
  const packageManager = resolveInitPackageManager(resolvedProjectDir, packageJson, options.packageManager);
246754
246741
  const workspace = tryResolveWorkspaceProject(resolvedProjectDir);
@@ -246784,7 +246771,7 @@ function getInitPlan(projectDir, options = {}) {
246784
246771
  status: "already-initialized"
246785
246772
  });
246786
246773
  }
246787
- const projectName = typeof packageJson?.name === "string" && packageJson.name.length > 0 ? packageJson.name : path106.basename(resolvedProjectDir);
246774
+ const projectName = typeof packageJson?.name === "string" && packageJson.name.length > 0 ? packageJson.name : path110.basename(resolvedProjectDir);
246788
246775
  const layout = buildInitLayoutDetails(resolvedProjectDir);
246789
246776
  const dependencyChanges = buildDependencyChanges(packageJson);
246790
246777
  const scriptChanges = buildScriptChanges(packageJson, packageManager);
@@ -246838,7 +246825,7 @@ var init_cli_init_plan = __esm(() => {
246838
246825
  });
246839
246826
 
246840
246827
  // ../wp-typia-project-tools/src/runtime/cli-init-templates.ts
246841
- import path107 from "path";
246828
+ import path111 from "path";
246842
246829
  function buildRetrofitBlockConfigEntry(target) {
246843
246830
  return [
246844
246831
  "\t{",
@@ -247066,9 +247053,9 @@ main().catch( ( error ) => {
247066
247053
  }
247067
247054
  function buildRetrofitHelperFiles(blockTargets) {
247068
247055
  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()
247056
+ [path111.join("scripts", "block-config.ts")]: buildRetrofitBlockConfigSource(blockTargets),
247057
+ [path111.join("scripts", "sync-project.ts")]: buildRetrofitSyncProjectScriptSource(),
247058
+ [path111.join("scripts", "sync-types-to-block-json.ts")]: buildRetrofitSyncTypesScriptSource()
247072
247059
  };
247073
247060
  }
247074
247061
  var init_cli_init_templates = __esm(() => {
@@ -247079,9 +247066,9 @@ var init_cli_init_templates = __esm(() => {
247079
247066
  // ../wp-typia-project-tools/src/runtime/cli-init-apply.ts
247080
247067
  import fs46 from "fs";
247081
247068
  import { promises as fsp44 } from "fs";
247082
- import path108 from "path";
247069
+ import path112 from "path";
247083
247070
  async function createRetrofitMutationSnapshot(projectDir, filePaths) {
247084
- const scriptsDir = path108.join(projectDir, "scripts");
247071
+ const scriptsDir = path112.join(projectDir, "scripts");
247085
247072
  const scriptsDirExisted = fs46.existsSync(scriptsDir);
247086
247073
  const fileSources = await snapshotWorkspaceFiles(filePaths);
247087
247074
  const targetPaths = fileSources.filter((entry) => entry.source === null).map((entry) => entry.filePath);
@@ -247096,11 +247083,11 @@ async function createRetrofitMutationSnapshot(projectDir, filePaths) {
247096
247083
  }
247097
247084
  async function writeRetrofitFiles(options) {
247098
247085
  const helperFiles = buildRetrofitHelperFiles(options.blockTargets);
247099
- const scriptsDir = path108.join(options.projectDir, "scripts");
247086
+ const scriptsDir = path112.join(options.projectDir, "scripts");
247100
247087
  await fsp44.mkdir(scriptsDir, { recursive: true });
247101
- await fsp44.writeFile(path108.join(options.projectDir, "package.json"), buildProjectPackageJsonSource(options.packageJson), "utf8");
247088
+ await fsp44.writeFile(path112.join(options.projectDir, "package.json"), buildProjectPackageJsonSource(options.packageJson), "utf8");
247102
247089
  for (const [relativePath, source] of Object.entries(helperFiles)) {
247103
- await fsp44.writeFile(path108.join(options.projectDir, relativePath), source, "utf8");
247090
+ await fsp44.writeFile(path112.join(options.projectDir, relativePath), source, "utf8");
247104
247091
  }
247105
247092
  }
247106
247093
  function buildApplyFailureError(error48) {
@@ -247134,8 +247121,8 @@ async function applyInitPlan(projectDir, options = {}) {
247134
247121
  });
247135
247122
  const helperFiles = buildRetrofitHelperFiles(previewPlan.blockTargets);
247136
247123
  const filePaths = [
247137
- path108.join(previewPlan.projectDir, "package.json"),
247138
- ...Object.keys(helperFiles).map((relativePath) => path108.join(previewPlan.projectDir, relativePath))
247124
+ path112.join(previewPlan.projectDir, "package.json"),
247125
+ ...Object.keys(helperFiles).map((relativePath) => path112.join(previewPlan.projectDir, relativePath))
247139
247126
  ];
247140
247127
  const mutationSnapshot = await createRetrofitMutationSnapshot(previewPlan.projectDir, filePaths);
247141
247128
  try {
@@ -300167,7 +300154,11 @@ function resolveCommandOptionValues(metadata2, options) {
300167
300154
  continue;
300168
300155
  }
300169
300156
  if (descriptor.repeatable && Array.isArray(value2)) {
300170
- resolved[name2] = value2.every((item) => typeof item === "string") ? value2.join(",") : undefined;
300157
+ if (!value2.every((item) => typeof item === "string")) {
300158
+ resolved[name2] = undefined;
300159
+ continue;
300160
+ }
300161
+ resolved[name2] = options.preserveArrays ? [...value2] : value2.join(",");
300171
300162
  continue;
300172
300163
  }
300173
300164
  resolved[name2] = typeof value2 === "string" ? value2 : undefined;
@@ -300361,7 +300352,9 @@ var PATTERN_CATALOG_VISIBLE_FIELDS = [
300361
300352
  "name",
300362
300353
  "scope",
300363
300354
  "section-role",
300364
- "catalog-title"
300355
+ "catalog-title",
300356
+ "tags",
300357
+ "thumbnail-url"
300365
300358
  ];
300366
300359
  var NAME_SOURCE_VISIBLE_FIELDS = [
300367
300360
  "kind",
@@ -300834,6 +300827,10 @@ init_cli_diagnostics();
300834
300827
  var CORE_VARIATION_MISSING_NAME_MESSAGE = "`wp-typia add core-variation` requires <name>. Usage: wp-typia add core-variation <block-name> <name> or wp-typia add core-variation <name> --block <namespace/block>.";
300835
300828
  var CORE_VARIATION_MISSING_BLOCK_MESSAGE = "`wp-typia add core-variation` requires <block-name>. Usage: wp-typia add core-variation <block-name> <name> or wp-typia add core-variation <name> --block <namespace/block>.";
300836
300829
  var CORE_VARIATION_BLOCK_NAME_PATTERN = /^[^/\s]+\/[^/\s]+$/u;
300830
+ var CORE_VARIATION_POSITIONAL_TARGET_DIAGNOSTICS = {
300831
+ empty: () => "The first positional argument (target block name) requires a block name.",
300832
+ invalidFormat: () => "The first positional argument (target block name) must use <namespace/block-slug> format."
300833
+ };
300837
300834
  function formatCoreVariationMissingPositionalNameMessage(blockName) {
300838
300835
  return [
300839
300836
  `\`wp-typia add core-variation ${blockName}\` is missing <name>.`,
@@ -300851,6 +300848,7 @@ function resolveCoreVariationInputs(context) {
300851
300848
  }
300852
300849
  return {
300853
300850
  targetBlockName: positionalTargetBlockName,
300851
+ targetBlockNameDiagnostics: CORE_VARIATION_POSITIONAL_TARGET_DIAGNOSTICS,
300854
300852
  variationName: positionalVariationName
300855
300853
  };
300856
300854
  }
@@ -300865,6 +300863,7 @@ function resolveCoreVariationInputs(context) {
300865
300863
  }
300866
300864
  return {
300867
300865
  targetBlockName: targetBlockFlag,
300866
+ targetBlockNameDiagnostics: "--block",
300868
300867
  variationName
300869
300868
  };
300870
300869
  }
@@ -300884,11 +300883,12 @@ var coreVariationAddKindEntry = defineAddKindRegistryEntry({
300884
300883
  description: "Add an editor-side variation for an existing core or external block",
300885
300884
  nameLabel: "Variation name",
300886
300885
  async prepareExecution(context) {
300887
- const { targetBlockName, variationName } = resolveCoreVariationInputs(context);
300886
+ const { targetBlockName, targetBlockNameDiagnostics, variationName } = resolveCoreVariationInputs(context);
300888
300887
  return createNamedExecutionPlan(context, {
300889
300888
  execute: ({ cwd, name: name2 }) => context.addRuntime.runAddCoreVariationCommand({
300890
300889
  cwd,
300891
300890
  targetBlockName,
300891
+ targetBlockNameDiagnostics,
300892
300892
  variationName: name2
300893
300893
  }),
300894
300894
  getValues: (result) => ({
@@ -301064,15 +301064,19 @@ var patternAddKindEntry = defineAddKindRegistryEntry({
301064
301064
  title: "Added workspace pattern"
301065
301065
  },
301066
301066
  description: "Add a PHP block pattern shell",
301067
- hiddenStringSubmitFields: ["tag", "tags", "thumbnail-url"],
301067
+ hiddenStringSubmitFields: ["tag"],
301068
301068
  nameLabel: "Pattern name",
301069
301069
  async prepareExecution(context) {
301070
301070
  const name2 = requireAddKindName(context, PATTERN_MISSING_NAME_MESSAGE);
301071
+ const rawScope = typeof context.flags.scope === "string" ? context.flags.scope : undefined;
301072
+ const rawSectionRole = typeof context.flags["section-role"] === "string" ? context.flags["section-role"] : undefined;
301073
+ const rawCatalogTitle = typeof context.flags["catalog-title"] === "string" ? context.flags["catalog-title"] : undefined;
301074
+ const rawThumbnailUrl = typeof context.flags["thumbnail-url"] === "string" ? context.flags["thumbnail-url"] : undefined;
301071
301075
  const scope = resolvePatternScopeFlag(context);
301072
301076
  const sectionRole = resolvePatternSectionRoleFlag(context, scope);
301073
- const catalogTitle = typeof context.flags["catalog-title"] === "string" ? context.flags["catalog-title"] : undefined;
301077
+ const catalogTitle = rawCatalogTitle;
301074
301078
  const tags = normalizePatternTagFlags(context.flags.tags, context.flags.tag);
301075
- const thumbnailUrl = typeof context.flags["thumbnail-url"] === "string" ? context.flags["thumbnail-url"] : undefined;
301079
+ const thumbnailUrl = rawThumbnailUrl;
301076
301080
  return {
301077
301081
  execute: (cwd) => context.addRuntime.runAddPatternCommand({
301078
301082
  catalogTitle,
@@ -301083,6 +301087,13 @@ var patternAddKindEntry = defineAddKindRegistryEntry({
301083
301087
  tags,
301084
301088
  thumbnailUrl
301085
301089
  }),
301090
+ getDryRunSummaryLines: (result) => buildPatternCatalogDryRunSummaryLines(result, {
301091
+ rawCatalogTitle,
301092
+ rawScope,
301093
+ rawSectionRole,
301094
+ rawTags: tags,
301095
+ rawThumbnailUrl
301096
+ }),
301086
301097
  getValues: (result) => ({
301087
301098
  contentFile: result.contentFile,
301088
301099
  patternSlug: result.patternSlug,
@@ -301146,6 +301157,75 @@ function normalizePatternTagFlags(tagsFlag, tagFlag) {
301146
301157
  ];
301147
301158
  return tags.length > 0 ? tags : undefined;
301148
301159
  }
301160
+ function quoteValue(value2) {
301161
+ return `"${value2}"`;
301162
+ }
301163
+ function formatTags(tags) {
301164
+ return tags.length > 0 ? tags.join(", ") : "no tags";
301165
+ }
301166
+ function collectPatternTagTokens(tags) {
301167
+ return (tags ?? []).flatMap((tag) => tag.split(",")).map((tag) => tag.trim()).filter((tag) => tag.length > 0);
301168
+ }
301169
+ function valuesMatch(left, right) {
301170
+ return left.length === right.length && left.every((value2, index) => value2 === right[index]);
301171
+ }
301172
+ function createNormalizationNote(options) {
301173
+ const rawValue = options.rawValue;
301174
+ if (rawValue === undefined || rawValue.trim().length === 0 || !options.resolvedValue || rawValue === options.resolvedValue) {
301175
+ return;
301176
+ }
301177
+ return `${options.fieldLabel} normalized from ${quoteValue(rawValue)} to ${quoteValue(options.resolvedValue)}.`;
301178
+ }
301179
+ function collectPatternCatalogNormalizationNotes(result, options) {
301180
+ const notes = [
301181
+ createNormalizationNote({
301182
+ fieldLabel: "Scope",
301183
+ rawValue: options.rawScope,
301184
+ resolvedValue: result.patternScope
301185
+ }),
301186
+ createNormalizationNote({
301187
+ fieldLabel: "Section role",
301188
+ rawValue: options.rawSectionRole,
301189
+ resolvedValue: result.sectionRole
301190
+ }),
301191
+ createNormalizationNote({
301192
+ fieldLabel: "Title",
301193
+ rawValue: options.rawCatalogTitle,
301194
+ resolvedValue: result.title
301195
+ }),
301196
+ createNormalizationNote({
301197
+ fieldLabel: "Thumbnail URL",
301198
+ rawValue: options.rawThumbnailUrl,
301199
+ resolvedValue: result.thumbnailUrl
301200
+ })
301201
+ ].filter((note) => typeof note === "string");
301202
+ const rawTags = collectPatternTagTokens(options.rawTags);
301203
+ if (rawTags.length > 0 && !valuesMatch(rawTags, result.tags)) {
301204
+ notes.push(`Tags normalized from ${quoteValue(formatTags(rawTags))} to ${quoteValue(formatTags(result.tags))}.`);
301205
+ }
301206
+ return notes;
301207
+ }
301208
+ function buildPatternCatalogDryRunSummaryLines(result, options) {
301209
+ const catalogLines = [
301210
+ "",
301211
+ "Catalog metadata:",
301212
+ ` Scope: ${result.patternScope}`,
301213
+ ...result.sectionRole ? [` Section role: ${result.sectionRole}`] : [],
301214
+ ` Title: ${result.title}`,
301215
+ ...result.tags.length > 0 ? [` Tags: ${formatTags(result.tags)}`] : [],
301216
+ ...result.thumbnailUrl ? [` Thumbnail URL: ${result.thumbnailUrl}`] : []
301217
+ ];
301218
+ const normalizationNotes = collectPatternCatalogNormalizationNotes(result, options);
301219
+ if (normalizationNotes.length === 0) {
301220
+ return catalogLines;
301221
+ }
301222
+ return [
301223
+ ...catalogLines,
301224
+ "",
301225
+ "Normalization notes:",
301226
+ ...normalizationNotes.map((note) => ` ${note}`)
301227
+ ];
301228
+ }
301149
301229
 
301150
301230
  // src/add-kinds/post-meta.ts
301151
301231
  var POST_META_MISSING_NAME_MESSAGE = "`wp-typia add post-meta` requires <name>. Usage: wp-typia add post-meta <name> --post-type <post-type> [--type <ExportedTypeName>] [--meta-key <meta-key>].";
@@ -301894,7 +301974,7 @@ function buildStructuredInitSuccessPayload(plan) {
301894
301974
  // package.json
301895
301975
  var package_default2 = {
301896
301976
  name: "wp-typia",
301897
- version: "0.24.2",
301977
+ version: "0.24.4",
301898
301978
  description: "Canonical CLI package for wp-typia scaffolding and project workflows",
301899
301979
  packageManager: "bun@1.3.11",
301900
301980
  type: "module",
@@ -301964,7 +302044,7 @@ var package_default2 = {
301964
302044
  "@bunli/tui": "0.6.0",
301965
302045
  "@bunli/utils": "0.6.0",
301966
302046
  "@wp-typia/api-client": "^0.4.5",
301967
- "@wp-typia/project-tools": "0.24.2",
302047
+ "@wp-typia/project-tools": "0.24.4",
301968
302048
  "better-result": "^2.7.0",
301969
302049
  react: "^19.2.5",
301970
302050
  "react-dom": "^19.2.5",
@@ -302075,12 +302155,16 @@ function buildAddCompletionPayload(options, markerOptions) {
302075
302155
  }
302076
302156
  function buildAddDryRunPayload(options, markerOptions) {
302077
302157
  const normalizedTitle = stripLeadingOutputMarker(options.completion.title, "success").replace(/^Added\s*/u, "");
302158
+ const summaryLines = [
302159
+ ...options.completion.summaryLines ?? [],
302160
+ ...options.summaryLines ?? []
302161
+ ];
302078
302162
  return {
302079
302163
  optionalLines: options.fileOperations,
302080
302164
  optionalNote: "No workspace files were changed because --dry-run was enabled. Re-run without --dry-run to apply this add command.",
302081
302165
  optionalTitle: `Planned workspace updates (${options.fileOperations.length}):`,
302082
302166
  preambleLines: options.completion.preambleLines,
302083
- summaryLines: options.completion.summaryLines,
302167
+ summaryLines: summaryLines.length > 0 ? summaryLines : undefined,
302084
302168
  title: formatOutputMarker("dryRun", `Dry run for ${normalizedTitle || "workspace add command"}`, markerOptions),
302085
302169
  warningLines: options.completion.warningLines
302086
302170
  };
@@ -302218,7 +302302,8 @@ async function executeWorkspaceAddWithOptionalDryRun(options) {
302218
302302
  }
302219
302303
  return emitCompletion(buildAddDryRunPayload({
302220
302304
  completion,
302221
- fileOperations: simulated.fileOperations
302305
+ fileOperations: simulated.fileOperations,
302306
+ summaryLines: options.buildDryRunSummaryLines?.(result)
302222
302307
  }), {
302223
302308
  emitOutput: options.emitOutput ?? true,
302224
302309
  printLine: options.printLine,
@@ -302233,6 +302318,7 @@ function executePreparedAddKind(kind, context, plan) {
302233
302318
  values: plan.getValues(result),
302234
302319
  warnings: plan.getWarnings?.(result)
302235
302320
  }),
302321
+ buildDryRunSummaryLines: (result) => plan.getDryRunSummaryLines?.(result),
302236
302322
  cwd: context.cwd,
302237
302323
  dryRun: context.dryRun,
302238
302324
  emitOutput: context.emitOutput,
@@ -302441,12 +302527,12 @@ async function executeDoctorCommand(cwd, options = {}) {
302441
302527
  }
302442
302528
  }
302443
302529
  // src/runtime-bridge-init.ts
302444
- import path109 from "path";
302530
+ import path113 from "path";
302445
302531
  var loadCliInitRuntime = () => Promise.resolve().then(() => (init_cli_init(), exports_cli_init));
302446
302532
  async function executeInitCommand({ apply, cwd, packageManager, projectDir }, options = {}) {
302447
302533
  try {
302448
302534
  const { runInitCommand: runInitCommand2 } = await loadCliInitRuntime();
302449
- const resolvedProjectDir = projectDir ? path109.resolve(cwd, projectDir) : cwd;
302535
+ const resolvedProjectDir = projectDir ? path113.resolve(cwd, projectDir) : cwd;
302450
302536
  const plan = await runInitCommand2({
302451
302537
  apply,
302452
302538
  packageManager,
@@ -302564,7 +302650,7 @@ init_cli_diagnostics();
302564
302650
  init_package_managers();
302565
302651
  import { spawnSync as spawnSync3 } from "child_process";
302566
302652
  import fs47 from "fs";
302567
- import path110 from "path";
302653
+ import path114 from "path";
302568
302654
  var SYNC_INSTALL_MARKERS = [
302569
302655
  "node_modules",
302570
302656
  ".pnp.cjs",
@@ -302594,7 +302680,7 @@ function readSyncPackageJson(packageJsonPath) {
302594
302680
  }
302595
302681
  }
302596
302682
  function resolveSyncProjectContext(cwd) {
302597
- const packageJsonPath = path110.join(cwd, "package.json");
302683
+ const packageJsonPath = path114.join(cwd, "package.json");
302598
302684
  if (!fs47.existsSync(packageJsonPath)) {
302599
302685
  throw getSyncRootError(cwd);
302600
302686
  }
@@ -302629,12 +302715,12 @@ function resolveSyncProjectContext(cwd) {
302629
302715
  };
302630
302716
  }
302631
302717
  function findInstalledDependencyMarkerDir(projectDir) {
302632
- let currentDir = path110.resolve(projectDir);
302718
+ let currentDir = path114.resolve(projectDir);
302633
302719
  while (true) {
302634
- if (SYNC_INSTALL_MARKERS.some((marker) => fs47.existsSync(path110.join(currentDir, marker)))) {
302720
+ if (SYNC_INSTALL_MARKERS.some((marker) => fs47.existsSync(path114.join(currentDir, marker)))) {
302635
302721
  return currentDir;
302636
302722
  }
302637
- const parentDir = path110.dirname(currentDir);
302723
+ const parentDir = path114.dirname(currentDir);
302638
302724
  if (parentDir === currentDir) {
302639
302725
  return null;
302640
302726
  }
@@ -303443,7 +303529,7 @@ init_cli_diagnostics();
303443
303529
 
303444
303530
  // src/mcp.ts
303445
303531
  import fs48 from "fs/promises";
303446
- import path111 from "path";
303532
+ import path115 from "path";
303447
303533
 
303448
303534
  // ../../node_modules/.bun/@bunli+plugin-mcp@0.2.5+ef72ce197b058209/node_modules/@bunli/plugin-mcp/src/errors.ts
303449
303535
  class SchemaConversionError extends TaggedError("SchemaConversionError")() {
@@ -303978,7 +304064,7 @@ function getErrorCauseOptions(error48) {
303978
304064
  return error48 instanceof Error ? { cause: error48 } : undefined;
303979
304065
  }
303980
304066
  async function readSchemaSource(cwd, source) {
303981
- const schemaPath = path111.resolve(cwd, source.path);
304067
+ const schemaPath = path115.resolve(cwd, source.path);
303982
304068
  const raw = await fs48.readFile(schemaPath, "utf8");
303983
304069
  let parsed;
303984
304070
  try {
@@ -304000,7 +304086,7 @@ async function readSchemaSource(cwd, source) {
304000
304086
  async function loadMcpToolGroups(cwd, schemaSources) {
304001
304087
  return Promise.all(schemaSources.map((source) => readSchemaSource(cwd, source)));
304002
304088
  }
304003
- async function syncMcpSchemas(cwd, schemaSources, outputDir = path111.join(cwd, ".bunli", "mcp")) {
304089
+ async function syncMcpSchemas(cwd, schemaSources, outputDir = path115.join(cwd, ".bunli", "mcp")) {
304004
304090
  const groups = await loadMcpToolGroups(cwd, schemaSources);
304005
304091
  const result = await generateMCPTypes({
304006
304092
  outputDir,
@@ -304023,7 +304109,7 @@ async function syncMcpSchemas(cwd, schemaSources, outputDir = path111.join(cwd,
304023
304109
  }
304024
304110
  }
304025
304111
  await fs48.mkdir(outputDir, { recursive: true });
304026
- await fs48.writeFile(path111.join(outputDir, "registry.json"), `${JSON.stringify(registry2, null, 2)}
304112
+ await fs48.writeFile(path115.join(outputDir, "registry.json"), `${JSON.stringify(registry2, null, 2)}
304027
304113
  `, "utf8");
304028
304114
  return {
304029
304115
  commandCount: registry2.reduce((count, group) => count + group.tools.length, 0),
@@ -304352,4 +304438,4 @@ export {
304352
304438
  cli
304353
304439
  };
304354
304440
 
304355
- //# debugId=EDC8802048054A1E64756E2164756E21
304441
+ //# debugId=C8CAA6A09EF0F81764756E2164756E21