wp-typia 0.20.2 → 0.20.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.
@@ -54,7 +54,7 @@ import {
54
54
  } from "./cli-sj5mtyzj.js";
55
55
  import {
56
56
  readWorkspaceInventory
57
- } from "./cli-rg481yks.js";
57
+ } from "./cli-3w3qxq9w.js";
58
58
  import {
59
59
  getInvalidWorkspaceProjectReason,
60
60
  tryResolveWorkspaceProject
@@ -171027,6 +171027,8 @@ var ADD_KIND_IDS = [
171027
171027
  "pattern",
171028
171028
  "binding-source",
171029
171029
  "rest-resource",
171030
+ "ability",
171031
+ "ai-feature",
171030
171032
  "hooked-block",
171031
171033
  "editor-plugin"
171032
171034
  ];
@@ -171229,6 +171231,32 @@ function assertRestResourceDoesNotExist(projectDir, restResourceSlug, inventory)
171229
171231
  throw new Error(`A REST resource inventory entry already exists for ${restResourceSlug}. Choose a different name.`);
171230
171232
  }
171231
171233
  }
171234
+ function assertAbilityDoesNotExist(projectDir, abilitySlug, inventory) {
171235
+ const abilityDir = path.join(projectDir, "src", "abilities", abilitySlug);
171236
+ const abilityPhpPath = path.join(projectDir, "inc", "abilities", `${abilitySlug}.php`);
171237
+ if (fs.existsSync(abilityDir)) {
171238
+ throw new Error(`An ability scaffold already exists at ${path.relative(projectDir, abilityDir)}. Choose a different name.`);
171239
+ }
171240
+ if (fs.existsSync(abilityPhpPath)) {
171241
+ throw new Error(`An ability bootstrap already exists at ${path.relative(projectDir, abilityPhpPath)}. Choose a different name.`);
171242
+ }
171243
+ if (inventory.abilities.some((entry) => entry.slug === abilitySlug)) {
171244
+ throw new Error(`An ability inventory entry already exists for ${abilitySlug}. Choose a different name.`);
171245
+ }
171246
+ }
171247
+ function assertAiFeatureDoesNotExist(projectDir, aiFeatureSlug, inventory) {
171248
+ const aiFeatureDir = path.join(projectDir, "src", "ai-features", aiFeatureSlug);
171249
+ const aiFeaturePhpPath = path.join(projectDir, "inc", "ai-features", `${aiFeatureSlug}.php`);
171250
+ if (fs.existsSync(aiFeatureDir)) {
171251
+ throw new Error(`An AI feature already exists at ${path.relative(projectDir, aiFeatureDir)}. Choose a different name.`);
171252
+ }
171253
+ if (fs.existsSync(aiFeaturePhpPath)) {
171254
+ throw new Error(`An AI feature bootstrap already exists at ${path.relative(projectDir, aiFeaturePhpPath)}. Choose a different name.`);
171255
+ }
171256
+ if (inventory.aiFeatures.some((entry) => entry.slug === aiFeatureSlug)) {
171257
+ throw new Error(`An AI feature inventory entry already exists for ${aiFeatureSlug}. Choose a different name.`);
171258
+ }
171259
+ }
171232
171260
  function assertEditorPluginDoesNotExist(projectDir, editorPluginSlug, inventory) {
171233
171261
  const editorPluginDir = path.join(projectDir, "src", "editor-plugins", editorPluginSlug);
171234
171262
  if (fs.existsSync(editorPluginDir)) {
@@ -171245,6 +171273,8 @@ function formatAddHelpText() {
171245
171273
  wp-typia add pattern <name> [--dry-run]
171246
171274
  wp-typia add binding-source <name> [--dry-run]
171247
171275
  wp-typia add rest-resource <name> [--namespace <vendor/v1>] [--methods <list,read,create,update,delete>] [--dry-run]
171276
+ wp-typia add ability <name> [--dry-run]
171277
+ wp-typia add ai-feature <name> [--namespace <vendor/v1>] [--dry-run]
171248
171278
  wp-typia add hooked-block <block-slug> --anchor <anchor-block-name> --position <${HOOKED_BLOCK_POSITION_IDS.join("|")}> [--dry-run]
171249
171279
  wp-typia add editor-plugin <name> [--slot <${EDITOR_PLUGIN_SLOT_IDS.join("|")}>] [--dry-run]
171250
171280
 
@@ -171256,6 +171286,8 @@ Notes:
171256
171286
  \`add pattern\` scaffolds a namespaced PHP pattern shell under \`src/patterns/\`.
171257
171287
  \`add binding-source\` scaffolds shared PHP and editor registration under \`src/bindings/\`.
171258
171288
  \`add rest-resource\` scaffolds plugin-level TypeScript REST contracts under \`src/rest/\` and PHP route glue under \`inc/rest/\`.
171289
+ \`add ability\` scaffolds typed workflow abilities under \`src/abilities/\` and server registration under \`inc/abilities/\`.
171290
+ \`add ai-feature\` scaffolds server-owned AI feature endpoints under \`src/ai-features/\` and PHP route glue under \`inc/ai-features/\`.
171259
171291
  \`add hooked-block\` patches an existing workspace block's \`block.json\` \`blockHooks\` metadata.
171260
171292
  \`add editor-plugin\` scaffolds a document-level editor extension under \`src/editor-plugins/\`.`;
171261
171293
  }
@@ -171270,6 +171302,8 @@ var VARIATION_CONFIG_ENTRY_MARKER = "\t// wp-typia add variation entries";
171270
171302
  var PATTERN_CONFIG_ENTRY_MARKER = "\t// wp-typia add pattern entries";
171271
171303
  var BINDING_SOURCE_CONFIG_ENTRY_MARKER = "\t// wp-typia add binding-source entries";
171272
171304
  var REST_RESOURCE_CONFIG_ENTRY_MARKER = "\t// wp-typia add rest-resource entries";
171305
+ var ABILITY_CONFIG_ENTRY_MARKER = "\t// wp-typia add ability entries";
171306
+ var AI_FEATURE_CONFIG_ENTRY_MARKER = "\t// wp-typia add ai-feature entries";
171273
171307
  var EDITOR_PLUGIN_CONFIG_ENTRY_MARKER = "\t// wp-typia add editor-plugin entries";
171274
171308
  var VARIATIONS_INTERFACE_SECTION = `
171275
171309
 
@@ -171336,6 +171370,62 @@ export const REST_RESOURCES: WorkspaceRestResourceConfig[] = [
171336
171370
  // wp-typia add rest-resource entries
171337
171371
  ];
171338
171372
  `;
171373
+ var WORKSPACE_COMPATIBILITY_CONFIG_FIELD = ` compatibility?: {
171374
+ hardMinimums: {
171375
+ php?: string;
171376
+ wordpress?: string;
171377
+ };
171378
+ mode: 'baseline' | 'optional' | 'required';
171379
+ optionalFeatures: string[];
171380
+ requiredFeatures: string[];
171381
+ runtimeGates: string[];
171382
+ };
171383
+ `;
171384
+ var ABILITIES_INTERFACE_SECTION = `
171385
+
171386
+ export interface WorkspaceAbilityConfig {
171387
+ clientFile: string;
171388
+ ${WORKSPACE_COMPATIBILITY_CONFIG_FIELD} configFile: string;
171389
+ dataFile: string;
171390
+ inputSchemaFile: string;
171391
+ inputTypeName: string;
171392
+ outputSchemaFile: string;
171393
+ outputTypeName: string;
171394
+ phpFile: string;
171395
+ slug: string;
171396
+ typesFile: string;
171397
+ }
171398
+ `;
171399
+ var ABILITIES_CONST_SECTION = `
171400
+
171401
+ export const ABILITIES: WorkspaceAbilityConfig[] = [
171402
+ // wp-typia add ability entries
171403
+ ];
171404
+ `;
171405
+ var AI_FEATURES_INTERFACE_SECTION = `
171406
+
171407
+ export interface WorkspaceAiFeatureConfig {
171408
+ aiSchemaFile: string;
171409
+ apiFile: string;
171410
+ clientFile: string;
171411
+ ${WORKSPACE_COMPATIBILITY_CONFIG_FIELD} dataFile: string;
171412
+ namespace: string;
171413
+ openApiFile: string;
171414
+ phpFile: string;
171415
+ restManifest?: ReturnType<
171416
+ typeof import( '@wp-typia/block-runtime/metadata-core' ).defineEndpointManifest
171417
+ >;
171418
+ slug: string;
171419
+ typesFile: string;
171420
+ validatorsFile: string;
171421
+ }
171422
+ `;
171423
+ var AI_FEATURES_CONST_SECTION = `
171424
+
171425
+ export const AI_FEATURES: WorkspaceAiFeatureConfig[] = [
171426
+ // wp-typia add ai-feature entries
171427
+ ];
171428
+ `;
171339
171429
  var EDITOR_PLUGINS_INTERFACE_SECTION = `
171340
171430
 
171341
171431
  export interface WorkspaceEditorPluginConfig {
@@ -171502,6 +171592,44 @@ function parseRestResourceEntries(arrayLiteral) {
171502
171592
  };
171503
171593
  });
171504
171594
  }
171595
+ function parseAiFeatureEntries(arrayLiteral) {
171596
+ return arrayLiteral.elements.map((element, elementIndex) => {
171597
+ if (!import_typescript.default.isObjectLiteralExpression(element)) {
171598
+ throw new Error(`AI_FEATURES[${elementIndex}] must be an object literal in scripts/block-config.ts.`);
171599
+ }
171600
+ return {
171601
+ aiSchemaFile: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "aiSchemaFile"),
171602
+ apiFile: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "apiFile"),
171603
+ clientFile: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "clientFile"),
171604
+ dataFile: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "dataFile"),
171605
+ namespace: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "namespace"),
171606
+ openApiFile: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "openApiFile"),
171607
+ phpFile: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "phpFile"),
171608
+ slug: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "slug"),
171609
+ typesFile: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "typesFile"),
171610
+ validatorsFile: getRequiredStringProperty("AI_FEATURES", elementIndex, element, "validatorsFile")
171611
+ };
171612
+ });
171613
+ }
171614
+ function parseAbilityEntries(arrayLiteral) {
171615
+ return arrayLiteral.elements.map((element, elementIndex) => {
171616
+ if (!import_typescript.default.isObjectLiteralExpression(element)) {
171617
+ throw new Error(`ABILITIES[${elementIndex}] must be an object literal in scripts/block-config.ts.`);
171618
+ }
171619
+ return {
171620
+ clientFile: getRequiredStringProperty("ABILITIES", elementIndex, element, "clientFile"),
171621
+ configFile: getRequiredStringProperty("ABILITIES", elementIndex, element, "configFile"),
171622
+ dataFile: getRequiredStringProperty("ABILITIES", elementIndex, element, "dataFile"),
171623
+ inputSchemaFile: getRequiredStringProperty("ABILITIES", elementIndex, element, "inputSchemaFile"),
171624
+ inputTypeName: getRequiredStringProperty("ABILITIES", elementIndex, element, "inputTypeName"),
171625
+ outputSchemaFile: getRequiredStringProperty("ABILITIES", elementIndex, element, "outputSchemaFile"),
171626
+ outputTypeName: getRequiredStringProperty("ABILITIES", elementIndex, element, "outputTypeName"),
171627
+ phpFile: getRequiredStringProperty("ABILITIES", elementIndex, element, "phpFile"),
171628
+ slug: getRequiredStringProperty("ABILITIES", elementIndex, element, "slug"),
171629
+ typesFile: getRequiredStringProperty("ABILITIES", elementIndex, element, "typesFile")
171630
+ };
171631
+ });
171632
+ }
171505
171633
  function parseEditorPluginEntries(arrayLiteral) {
171506
171634
  return arrayLiteral.elements.map((element, elementIndex) => {
171507
171635
  if (!import_typescript.default.isObjectLiteralExpression(element)) {
@@ -171524,6 +171652,8 @@ function parseWorkspaceInventorySource(source) {
171524
171652
  const patternArray = findExportedArrayLiteral(sourceFile, "PATTERNS");
171525
171653
  const bindingSourceArray = findExportedArrayLiteral(sourceFile, "BINDING_SOURCES");
171526
171654
  const restResourceArray = findExportedArrayLiteral(sourceFile, "REST_RESOURCES");
171655
+ const abilityArray = findExportedArrayLiteral(sourceFile, "ABILITIES");
171656
+ const aiFeatureArray = findExportedArrayLiteral(sourceFile, "AI_FEATURES");
171527
171657
  const editorPluginArray = findExportedArrayLiteral(sourceFile, "EDITOR_PLUGINS");
171528
171658
  if (variationArray.found && !variationArray.array) {
171529
171659
  throw new Error("scripts/block-config.ts must export VARIATIONS as an array literal.");
@@ -171537,12 +171667,22 @@ function parseWorkspaceInventorySource(source) {
171537
171667
  if (restResourceArray.found && !restResourceArray.array) {
171538
171668
  throw new Error("scripts/block-config.ts must export REST_RESOURCES as an array literal.");
171539
171669
  }
171670
+ if (abilityArray.found && !abilityArray.array) {
171671
+ throw new Error("scripts/block-config.ts must export ABILITIES as an array literal.");
171672
+ }
171673
+ if (aiFeatureArray.found && !aiFeatureArray.array) {
171674
+ throw new Error("scripts/block-config.ts must export AI_FEATURES as an array literal.");
171675
+ }
171540
171676
  if (editorPluginArray.found && !editorPluginArray.array) {
171541
171677
  throw new Error("scripts/block-config.ts must export EDITOR_PLUGINS as an array literal.");
171542
171678
  }
171543
171679
  return {
171680
+ abilities: abilityArray.array ? parseAbilityEntries(abilityArray.array) : [],
171681
+ aiFeatures: aiFeatureArray.array ? parseAiFeatureEntries(aiFeatureArray.array) : [],
171544
171682
  bindingSources: bindingSourceArray.array ? parseBindingSourceEntries(bindingSourceArray.array) : [],
171545
171683
  blocks: parseBlockEntries(blockArray.array),
171684
+ hasAbilitiesSection: abilityArray.found,
171685
+ hasAiFeaturesSection: aiFeatureArray.found,
171546
171686
  hasBindingSourcesSection: bindingSourceArray.found,
171547
171687
  hasEditorPluginsSection: editorPluginArray.found,
171548
171688
  hasPatternsSection: patternArray.found,
@@ -171604,6 +171744,18 @@ function ensureWorkspaceInventorySections(source) {
171604
171744
  if (!/export\s+const\s+REST_RESOURCES\b/u.test(nextSource)) {
171605
171745
  nextSource += REST_RESOURCES_CONST_SECTION;
171606
171746
  }
171747
+ if (!/export\s+interface\s+WorkspaceAbilityConfig\b/u.test(nextSource)) {
171748
+ nextSource += ABILITIES_INTERFACE_SECTION;
171749
+ }
171750
+ if (!/export\s+const\s+ABILITIES\b/u.test(nextSource)) {
171751
+ nextSource += ABILITIES_CONST_SECTION;
171752
+ }
171753
+ if (!/export\s+interface\s+WorkspaceAiFeatureConfig\b/u.test(nextSource)) {
171754
+ nextSource += AI_FEATURES_INTERFACE_SECTION;
171755
+ }
171756
+ if (!/export\s+const\s+AI_FEATURES\b/u.test(nextSource)) {
171757
+ nextSource += AI_FEATURES_CONST_SECTION;
171758
+ }
171607
171759
  if (!/export\s+interface\s+WorkspaceEditorPluginConfig\b/u.test(nextSource)) {
171608
171760
  nextSource += EDITOR_PLUGINS_INTERFACE_SECTION;
171609
171761
  }
@@ -171624,9 +171776,40 @@ function appendEntriesAtMarker(source, marker, entries) {
171624
171776
  `)}
171625
171777
  ${marker}`);
171626
171778
  }
171779
+ function escapeRegex(value) {
171780
+ return value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
171781
+ }
171782
+ function ensureInterfaceField(source, interfaceName, fieldName, fieldSource) {
171783
+ const interfacePattern = new RegExp(`(export\\s+interface\\s+${escapeRegex(interfaceName)}\\s*\\{\\r?\\n)([\\s\\S]*?)(\\r?\\n\\})`, "u");
171784
+ return source.replace(interfacePattern, (match, start, body, end) => {
171785
+ if (new RegExp(`^[ ]*${escapeRegex(fieldName)}\\??:`, "mu").test(body)) {
171786
+ return match;
171787
+ }
171788
+ const lineEnding = start.endsWith(`\r
171789
+ `) ? `\r
171790
+ ` : `
171791
+ `;
171792
+ const formattedFieldSource = `${fieldSource.replace(/\r?\n$/u, "").split(`
171793
+ `).join(lineEnding)}${lineEnding}`;
171794
+ const memberPattern = /^[ \t]*([A-Za-z_$][\w$]*)\??:/gmu;
171795
+ for (const member of body.matchAll(memberPattern)) {
171796
+ const memberIndex = member.index;
171797
+ const memberName = member[1];
171798
+ if (memberIndex === undefined || !memberName) {
171799
+ continue;
171800
+ }
171801
+ if (memberName.localeCompare(fieldName) > 0) {
171802
+ return `${start}${body.slice(0, memberIndex)}${formattedFieldSource}${body.slice(memberIndex)}${end}`;
171803
+ }
171804
+ }
171805
+ return `${start}${body}${body.length > 0 && !body.endsWith(lineEnding) ? lineEnding : ""}${formattedFieldSource}${end}`;
171806
+ });
171807
+ }
171627
171808
  function updateWorkspaceInventorySource(source, {
171628
171809
  blockEntries = [],
171629
171810
  bindingSourceEntries = [],
171811
+ abilityEntries = [],
171812
+ aiFeatureEntries = [],
171630
171813
  editorPluginEntries = [],
171631
171814
  patternEntries = [],
171632
171815
  restResourceEntries = [],
@@ -171642,6 +171825,10 @@ function updateWorkspaceInventorySource(source, {
171642
171825
  nextSource = appendEntriesAtMarker(nextSource, PATTERN_CONFIG_ENTRY_MARKER, patternEntries);
171643
171826
  nextSource = appendEntriesAtMarker(nextSource, BINDING_SOURCE_CONFIG_ENTRY_MARKER, bindingSourceEntries);
171644
171827
  nextSource = appendEntriesAtMarker(nextSource, REST_RESOURCE_CONFIG_ENTRY_MARKER, restResourceEntries);
171828
+ nextSource = appendEntriesAtMarker(nextSource, ABILITY_CONFIG_ENTRY_MARKER, abilityEntries);
171829
+ nextSource = appendEntriesAtMarker(nextSource, AI_FEATURE_CONFIG_ENTRY_MARKER, aiFeatureEntries);
171830
+ nextSource = ensureInterfaceField(nextSource, "WorkspaceAbilityConfig", "compatibility", WORKSPACE_COMPATIBILITY_CONFIG_FIELD);
171831
+ nextSource = ensureInterfaceField(nextSource, "WorkspaceAiFeatureConfig", "compatibility", WORKSPACE_COMPATIBILITY_CONFIG_FIELD);
171645
171832
  nextSource = appendEntriesAtMarker(nextSource, EDITOR_PLUGIN_CONFIG_ENTRY_MARKER, editorPluginEntries);
171646
171833
  return nextSource;
171647
171834
  }
@@ -171654,6 +171841,6 @@ async function appendWorkspaceInventoryEntries(projectDir, options) {
171654
171841
  }
171655
171842
  }
171656
171843
 
171657
- export { HOOKED_BLOCK_POSITION_SET, HOOKED_BLOCK_ANCHOR_PATTERN, toKebabCase, toSnakeCase, toPascalCase, toSegmentPascalCase, toTitleCase, validateBlockSlug, validateNamespace, normalizeBlockSlug, resolveNonEmptyNormalizedBlockSlug, buildBlockCssClassName, buildFrontendCssClassName, resolveScaffoldIdentifiers, ADD_KIND_IDS, REST_RESOURCE_METHOD_IDS, EDITOR_PLUGIN_SLOT_IDS, ADD_BLOCK_TEMPLATE_IDS, REST_RESOURCE_NAMESPACE_PATTERN, assertValidGeneratedSlug, resolveRestResourceNamespace, assertValidRestResourceMethods, assertValidHookedBlockPosition, getWorkspaceBootstrapPath, buildWorkspacePhpPrefix, isAddBlockTemplateId, quoteTsString, patchFile, readOptionalFile, snapshotWorkspaceFiles, rollbackWorkspaceMutation, resolveWorkspaceBlock, assertValidHookAnchor, assertValidEditorPluginSlot, readWorkspaceBlockJson, getMutableBlockHooks, assertVariationDoesNotExist, assertPatternDoesNotExist, assertBindingSourceDoesNotExist, assertRestResourceDoesNotExist, assertEditorPluginDoesNotExist, formatAddHelpText, readWorkspaceInventory, getWorkspaceBlockSelectOptions, appendWorkspaceInventoryEntries };
171844
+ export { HOOKED_BLOCK_POSITION_SET, HOOKED_BLOCK_ANCHOR_PATTERN, toKebabCase, toSnakeCase, toPascalCase, toSegmentPascalCase, toTitleCase, validateBlockSlug, validateNamespace, normalizeBlockSlug, resolveNonEmptyNormalizedBlockSlug, buildBlockCssClassName, buildFrontendCssClassName, resolveScaffoldIdentifiers, ADD_KIND_IDS, REST_RESOURCE_METHOD_IDS, EDITOR_PLUGIN_SLOT_IDS, ADD_BLOCK_TEMPLATE_IDS, REST_RESOURCE_NAMESPACE_PATTERN, assertValidGeneratedSlug, resolveRestResourceNamespace, assertValidRestResourceMethods, assertValidHookedBlockPosition, getWorkspaceBootstrapPath, buildWorkspacePhpPrefix, isAddBlockTemplateId, quoteTsString, patchFile, readOptionalFile, snapshotWorkspaceFiles, rollbackWorkspaceMutation, resolveWorkspaceBlock, assertValidHookAnchor, assertValidEditorPluginSlot, readWorkspaceBlockJson, getMutableBlockHooks, assertVariationDoesNotExist, assertPatternDoesNotExist, assertBindingSourceDoesNotExist, assertRestResourceDoesNotExist, assertAbilityDoesNotExist, assertAiFeatureDoesNotExist, assertEditorPluginDoesNotExist, formatAddHelpText, readWorkspaceInventory, getWorkspaceBlockSelectOptions, appendWorkspaceInventoryEntries };
171658
171845
 
171659
- //# debugId=E5512AA4DE4BAC6564756E2164756E21
171846
+ //# debugId=42AF31D5CC3A7C2364756E2164756E21
@@ -9,7 +9,7 @@ import {
9
9
  // package.json
10
10
  var package_default = {
11
11
  name: "wp-typia",
12
- version: "0.20.2",
12
+ version: "0.20.4",
13
13
  description: "Canonical CLI package for wp-typia scaffolding and project workflows",
14
14
  packageManager: "bun@1.3.11",
15
15
  type: "module",
@@ -77,7 +77,7 @@ var package_default = {
77
77
  "@bunli/tui": "0.6.0",
78
78
  "@bunli/utils": "0.6.0",
79
79
  "@wp-typia/api-client": "^0.4.5",
80
- "@wp-typia/project-tools": "0.19.3",
80
+ "@wp-typia/project-tools": "0.20.1",
81
81
  "better-result": "^2.7.0",
82
82
  react: "^19.2.5",
83
83
  "react-dom": "^19.2.5",
@@ -226,7 +226,7 @@ var ADD_OPTION_METADATA = {
226
226
  type: "string"
227
227
  },
228
228
  namespace: {
229
- description: "REST namespace for rest-resource workflows.",
229
+ description: "REST namespace for rest-resource and ai-feature workflows.",
230
230
  type: "string"
231
231
  },
232
232
  "persistence-policy": {
@@ -532,4 +532,4 @@ function createPlugin(input) {
532
532
  }
533
533
  export { createPlugin, package_default, CREATE_OPTION_METADATA, ADD_OPTION_METADATA, MIGRATE_OPTION_METADATA, SYNC_OPTION_METADATA, TEMPLATES_OPTION_METADATA, GLOBAL_OPTION_METADATA, buildCommandOptions, collectOptionNamesByType, buildCommandOptionParser, resolveCommandOptionValues, prefersStructuredCliOutput, emitCliDiagnosticFailure, writeStructuredCliDiagnosticError, WP_TYPIA_CONFIG_SOURCES, mergeWpTypiaUserConfig, loadWpTypiaUserConfigFromSource, loadWpTypiaUserConfig, getCreateDefaults, getAddBlockDefaults, getMcpSchemaSources };
534
534
 
535
- //# debugId=28308AF00841565964756E2164756E21
535
+ //# debugId=33737B5BBB1DCAAF64756E2164756E21