vscode-behavior3 2.5.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/build-cli.js CHANGED
@@ -212428,6 +212428,473 @@ var checkOneof = (arg, argValue, inputValue) => {
212428
212428
  return normalizedArgValue !== "" && normalizedInputValue === "" || normalizedArgValue === "" && normalizedInputValue !== "";
212429
212429
  };
212430
212430
 
212431
+ // media/locales/en.json
212432
+ var en_default = {
212433
+ about: "About Behavior3",
212434
+ actuaSize: "Actual Size",
212435
+ actualSize: "Actual Size",
212436
+ add: "Add",
212437
+ alertNewVersion: "This file is created by a newer version of Behavior3({{version}}), please upgrade to the latest version.",
212438
+ batch: "Batch Script",
212439
+ batchCompleted: "Batch completed",
212440
+ batchFailed: "Batch failed, more information can be found in the console.",
212441
+ build: "Build",
212442
+ buildCompleted: "Build completed",
212443
+ buildFailed: "Build failed, more information can be found in the console.",
212444
+ cancel: "Cancel",
212445
+ compact: "Compact",
212446
+ console: "Console",
212447
+ copy: "Copy",
212448
+ createProject: "Create Project",
212449
+ checkExpr: "Check expression",
212450
+ cut: "Cut",
212451
+ delete: "Delete",
212452
+ deleteNode: "Delete Node",
212453
+ devTools: "Toggle Developer Tools",
212454
+ donotSave: "Don't Save",
212455
+ duplicate: "Duplicate",
212456
+ editSubtree: "Edit Subtree",
212457
+ fieldRequired: "Field '{{field}}' is required",
212458
+ forceReload: "Force Reload",
212459
+ fullscreen: "Toggle Full Screen",
212460
+ hide: "Hide Behavior3",
212461
+ hideOthers: "Hide Others",
212462
+ insertNode: "Insert Node",
212463
+ jumpNode: "Jump Node",
212464
+ language: "Language",
212465
+ moveToTrash: "Move to Trash",
212466
+ newFile: "New File...",
212467
+ newFolder: "New Folder...",
212468
+ newWindow: "New Window",
212469
+ nodeDefinition: "NODES",
212470
+ normal: "Normal",
212471
+ open: "Open...",
212472
+ openProject: "Open Project",
212473
+ paste: "Paste",
212474
+ quit: "Quit Behavior3",
212475
+ recent: "Recent",
212476
+ redo: "Redo",
212477
+ reload: "Reload",
212478
+ reset: "Reset",
212479
+ "reset.confirm": "Reset to original value?",
212480
+ "reset.defaultConfirm": "Reset to default value?",
212481
+ rename: "Rename...",
212482
+ replace: "Replace",
212483
+ reportIssue: "Report Issue",
212484
+ revealFileOnMac: "Reveal in Finder",
212485
+ revealFileOnWindows: "Reveal in File Explorer",
212486
+ save: "Save",
212487
+ saveAll: "Save All",
212488
+ saveAs: "Save As...",
212489
+ saveAsSubtree: "Save As Subtree",
212490
+ searchFile: "Search File",
212491
+ searchNode: "Search Node",
212492
+ selectAll: "Select All",
212493
+ services: "Services",
212494
+ setupBuildScript: "Setup Build Script",
212495
+ start: "Start",
212496
+ undo: "Undo",
212497
+ unhide: "Show All",
212498
+ zoomIn: "Zoom In",
212499
+ zoomOut: "Zoom Out",
212500
+ "menu.edit": "Edit",
212501
+ "menu.file": "File",
212502
+ "menu.view": "View",
212503
+ "menu.window": "Window",
212504
+ "menu.help": "Help",
212505
+ "workspace.saveAllOnClose": "Do you want to save the changes to the following {{count}} files?",
212506
+ "workspace.saveOnClose": "Do you want to save the changes you made to '{{name}}'?",
212507
+ "workspace.reloadFile": "'{{name}}' has changed, do you want to reload now?",
212508
+ "explorer.deleteFile": "Are you sure you want delete '{{name}}'?",
212509
+ "explorer.deleteFolder": "Are you sure you want delete '{{name}}' and its contents?",
212510
+ "explorer.replaceFile": "Are you sure you want replace '{{name}}'?",
212511
+ "explorer.restoreFileInfo": "You can restore this file from the Trash.",
212512
+ "explorer.title": "Explorer",
212513
+ "tree.overview": "Overview",
212514
+ "tree.name": "Tree name",
212515
+ "tree.desc": "Tree desc",
212516
+ "tree.export": "Export",
212517
+ "tree.prefix": "ID prefix",
212518
+ "tree.group": "Enable Node Grouping",
212519
+ "tree.group.placeholder": "Select node groups",
212520
+ "tree.vars": "Define Variables",
212521
+ "tree.vars.local": "Local Variables",
212522
+ "tree.vars.add": "Add Variable",
212523
+ "tree.vars.name": "name",
212524
+ "tree.vars.invalidName": "Invalid variable name",
212525
+ "tree.vars.desc": "description",
212526
+ "tree.vars.imports": "Import Variables",
212527
+ "tree.vars.subtree": "Subtree Variables",
212528
+ "tree.import.add": "Add Import",
212529
+ "tree.custom": "Custom Data",
212530
+ "tree.custom.add": "Add Entry",
212531
+ "tree.custom.key": "key",
212532
+ "tree.custom.value": "value",
212533
+ "tree.custom.type.string": "String value",
212534
+ "tree.custom.type.number": "Number value",
212535
+ "tree.custom.type.boolean": "Boolean value",
212536
+ "tree.custom.type.invalid": "Invalid custom value",
212537
+ "regnode.input": "Input: ",
212538
+ "regnode.output": "Output: ",
212539
+ "regnode.args": "Args: ",
212540
+ "regnode.mark": "Mark: ",
212541
+ "regnode.subtree": "Subtree: ",
212542
+ "node.args": "Const arguments",
212543
+ "node.children.unlimited": "Unlimited",
212544
+ "node.children": "Num children",
212545
+ "node.debug": "Debug",
212546
+ "node.deleteRootNodeDenied": "Unable to delete the root node",
212547
+ "node.dropDenied": "This node position is denied to drop the node",
212548
+ "node.desc": "Node desc",
212549
+ "node.disabled": "Disabled",
212550
+ "node.editSubtreeDenied": "Unable to edit the subtree node",
212551
+ "node.editFailed": "Node '{{name}}' edit failed",
212552
+ "node.group": "Node group",
212553
+ "node.groupNotEnabled": "One of '{{group}}' node group is not enabled in current file",
212554
+ "node.id": "Node id",
212555
+ "node.inputVariable": "Input variables",
212556
+ "node.invalidChildren": "Invalid number of children",
212557
+ "node.invalidExpression": "Invalid expression",
212558
+ "node.invalidValue": "Invalid value",
212559
+ "node.invalidVariableName": "Invalid variable name, should start with a letter or underscore",
212560
+ "node.name": "Node name",
212561
+ "node.noNodeSelected": "No node selected",
212562
+ "node.notFound": "Node '{{name}}' not found",
212563
+ "node.oneof.error": "Only one is allowed between input '{{input}}' and argument '{{desc}}({{arg}})'",
212564
+ "node.oneof.inputNotfound": "Input '{{input}}' not found",
212565
+ "node.outputVariable": "Output variables",
212566
+ "node.pasteDataError": "Paste data error",
212567
+ "node.rootNodeAsSubtree": "Root node cann't be save as subtree",
212568
+ "node.subtree": "Subtree",
212569
+ "node.subtreeMissing": "Subtree file is missing: {{path}}",
212570
+ "node.subtreeInvalid": "Subtree file is invalid: {{path}}",
212571
+ "node.subtreeCyclic": "Subtree reference is cyclic: {{path}}",
212572
+ "node.subtreeOpenFailed": "Failed to open subtree: file not found or unreadable ({{path}})",
212573
+ "node.subtreePathError": "You should save the subtree inside the current workspace",
212574
+ "node.subtreeSaveRootError": "Root node cann't be save as subtree",
212575
+ "node.subtreeSaveSuccess": "Saved and converted to subtree node: {{path}}",
212576
+ "node.moveSubtreeDenied": "Cannot move nodes inside a subtree",
212577
+ "node.dropSubtreeInternalDenied": "Cannot drop onto a subtree internal node",
212578
+ "node.moveRootDenied": "Cannot move the root node",
212579
+ "node.dropAroundRootDenied": "Cannot place a node before or after the root",
212580
+ "node.addChildToSubtreeRefDenied": "Cannot add child nodes to a subtree reference",
212581
+ "node.moveIntoDescendantDenied": "Cannot move a node into its own descendant",
212582
+ "node.type": "Node type",
212583
+ "node.undefinedVariable": "Variable '{{variable}}' is not defined",
212584
+ "node.jsonData": "JSON Data",
212585
+ "node.unknown.title": "Unknown Node",
212586
+ "node.unknownType": "Unknown",
212587
+ "node.resolutionError": "Resolution Error",
212588
+ "node.unknown.desc": "New node",
212589
+ "build.success": "Build completed.",
212590
+ "build.failed": "Build failed.",
212591
+ "editor.loading": "Loading editor...",
212592
+ "editor.externalChangeConflict": "External file change detected while the document has unsaved edits.",
212593
+ "editor.reloadFromDisk": "Reload",
212594
+ "editor.dismissConflict": "Dismiss",
212595
+ "editor.newerVersionEditDenied": "This file is created by a newer version of Behavior3({{version}}). Please upgrade to the latest version.",
212596
+ "inspector.noActiveDocument": "Open a Behavior3 editor to inspect and edit the active tree.",
212597
+ "inspector.embeddedModeNotice": "Inspector is configured to appear inside the Behavior3 editor.",
212598
+ "inspector.embeddedToolbar.build": "Build Behavior Tree",
212599
+ "inspector.embeddedToolbar.toggleEditorMode": "Toggle Editor Mode",
212600
+ "inspector.embeddedToolbar.toggleInspectorNodeJson": "Toggle Raw Node JSON",
212601
+ "inspector.embeddedToolbar.createProject": "Create Project",
212602
+ "inspector.embeddedToolbar.createTree": "Create Behavior Tree",
212603
+ "mutation.invalidJsonPath": "Invalid JSON path: {{path}}",
212604
+ "mutation.missingSelectedNode": "No selected node is available for this mutation.",
212605
+ "mutation.selectedNodeMismatch": "The selected node changed before the mutation was applied.",
212606
+ "mutation.missingTargetNode": "The target node could not be found.",
212607
+ "mutation.missingSourceNode": "The source node could not be found.",
212608
+ "mutation.missingSubtreeOriginal": "Missing subtree original snapshot for this mutation.",
212609
+ "mutation.missingDetachedSubtreeRoot": "Missing detached subtree snapshot for this mutation.",
212610
+ "mutation.moveRootDenied": "Cannot move the root node.",
212611
+ "mutation.dropAroundRootDenied": "Cannot drop before or after the root node.",
212612
+ "mutation.addChildToSubtreeRefDenied": "Cannot add a child directly to a subtree reference.",
212613
+ "mutation.moveIntoDescendantDenied": "Cannot move a node into its own descendant.",
212614
+ "mutation.deleteRootNodeDenied": "Cannot delete the root node.",
212615
+ "mutation.editSubtreeDenied": "Cannot edit structure on a subtree reference.",
212616
+ "mutation.saveSelectedAsSubtreeRootDenied": "The root node cannot be saved as a subtree.",
212617
+ "mutation.saveSelectedAsSubtreeMissingTarget": "The target node could not be saved as a subtree.",
212618
+ "mutation.saveSelectedAsSubtreePostSaveMissingTarget": "The target node could not be found after saving the subtree.",
212619
+ "runtime.nodeCheckRuntimeHasErrors": "Checker runtime has errors.",
212620
+ "runtime.invalidSavedSubtreePath": "Host returned an invalid saved subtree path.",
212621
+ "runtime.unsupportedDocumentMutation": "Unsupported document mutation.",
212622
+ "runtime.visibleHookNotRegistered": "Visible '{{name}}' is not registered.",
212623
+ "runtime.visibleHookFailed": "Visible '{{name}}' failed: {{error}}",
212624
+ "runtime.visibleExpressionDisabled": "Visible expression is disabled; enable settings.allowNewFunction.",
212625
+ "runtime.visibleExpressionCompileFailed": "Visible expression failed to compile: {{error}}",
212626
+ "runtime.visibleExpressionFailed": "Visible expression failed: {{error}}",
212627
+ "runtime.visibleExpressionUnknownArg": "Visible expression referenced args.{{property}}, but '{{property}}' is not in the defined arg scope (defined args: {{definedArgs}}).",
212628
+ "runtime.visibleExpressionNoArgs": "Visible expression referenced args.{{property}}, but this node defines no args.",
212629
+ "runtime.visibleExpressionUnknownSlotIndex": "Visible expression referenced {{fieldKind}}[{{index}}], but {{definedScope}}.",
212630
+ "runtime.visibleExpressionInvalidSlotProperty": "Visible expression referenced {{fieldKind}}.{{property}}, but {{fieldKind}} only supports defined numeric slot indices.",
212631
+ "runtime.visibleSlotScopeNone": "this node defines no {{fieldKind}} slots",
212632
+ "runtime.visibleSlotScopeIndex": "the defined {{fieldKind}} index is {{start}}",
212633
+ "runtime.visibleSlotScopeRange": "the defined {{fieldKind}} indices are {{start}}..{{end}}",
212634
+ "runtime.visibleSlotScopeRangeVariadic": "the defined {{fieldKind}} indices are {{start}}..{{end}}+",
212635
+ "override.resetTitle": "Reset this override?",
212636
+ "form.enterJsonArray": "Enter JSON array",
212637
+ "form.enterJsonValue": "Enter JSON value",
212638
+ "form.unset": "Unset",
212639
+ "form.true": "True",
212640
+ "form.false": "False",
212641
+ "validation.jsonArray": "{{name}} must be a JSON array",
212642
+ "validation.integer": "{{field}} must be an integer",
212643
+ "validation.number": "{{field}} must be a number",
212644
+ "validation.missingOneofInput": "Missing input slot for oneof '{{input}}'",
212645
+ "validation.oneof": "Only one of '{{left}}' and '{{right}}' can be set",
212646
+ "validation.invalidJsonPath": "Path must be a workdir-relative .json file: {{path}}",
212647
+ "validation.variableDescriptionRequired": "Variable description is required",
212648
+ "validation.customKeyRequired": "Custom key is required",
212649
+ "validation.customKeyDuplicate": "Custom key '{{key}}' is duplicated",
212650
+ "validation.customValueInvalid": "Custom value must be a string, number, or boolean"
212651
+ };
212652
+
212653
+ // media/locales/zh.json
212654
+ var zh_default = {
212655
+ about: "\u5173\u4E8E Behavior3",
212656
+ actualSize: "\u5B9E\u9645\u5927\u5C0F",
212657
+ add: "\u6DFB\u52A0",
212658
+ alertNewVersion: "\u6B64\u6587\u4EF6\u7531\u65B0\u7248\u672C Behavior3({{version}}) \u521B\u5EFA\uFF0C\u8BF7\u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C\u3002",
212659
+ batch: "\u6279\u5904\u7406\u811A\u672C",
212660
+ batchCompleted: "\u6279\u5904\u7406\u5B8C\u6210",
212661
+ batchFailed: "\u6279\u5904\u7406\u51FA\u73B0\u9519\u8BEF\uFF0C\u8BE6\u60C5\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\uFF01",
212662
+ build: "\u6784\u5EFA",
212663
+ buildCompleted: "\u6784\u5EFA\u5B8C\u6210",
212664
+ buildFailed: "\u6784\u5EFA\u51FA\u73B0\u9519\u8BEF\uFF0C\u8BE6\u60C5\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\uFF01",
212665
+ cancel: "\u53D6\u6D88",
212666
+ compact: "\u7D27\u51D1",
212667
+ console: "\u63A7\u5236\u53F0",
212668
+ checkExpr: "\u68C0\u67E5\u8868\u8FBE\u5F0F",
212669
+ copy: "\u590D\u5236",
212670
+ createProject: "\u65B0\u5EFA\u9879\u76EE",
212671
+ cut: "\u526A\u5207",
212672
+ delete: "\u5220\u9664",
212673
+ deleteNode: "\u5220\u9664\u8282\u70B9",
212674
+ devTools: "\u5207\u6362\u5F00\u53D1\u8005\u5DE5\u5177",
212675
+ donotSave: "\u4E0D\u4FDD\u5B58",
212676
+ duplicate: "\u751F\u6210\u526F\u672C",
212677
+ editSubtree: "\u7F16\u8F91\u5B50\u6811",
212678
+ fieldRequired: "\u5B57\u6BB5\u201C{{field}}\u201D\u5FC5\u586B",
212679
+ forceReload: "\u5F3A\u5236\u91CD\u65B0\u52A0\u8F7D",
212680
+ fullscreen: "\u5207\u6362\u5168\u5C4F",
212681
+ hide: "\u9690\u85CF Behavior3",
212682
+ hideOthers: "\u9690\u85CF\u5176\u5B83",
212683
+ insertNode: "\u63D2\u5165\u8282\u70B9",
212684
+ jumpNode: "\u8DF3\u8F6C\u8282\u70B9",
212685
+ language: "\u8BED\u8A00",
212686
+ moveToTrash: "\u79FB\u81F3\u56DE\u6536\u7AD9",
212687
+ newFile: "\u65B0\u5EFA\u884C\u4E3A\u6811...",
212688
+ newFolder: "\u65B0\u5EFA\u76EE\u5F55...",
212689
+ newWindow: "\u65B0\u5EFA\u7A97\u53E3",
212690
+ nodeDefinition: "\u8282\u70B9\u5B9A\u4E49",
212691
+ normal: "\u6B63\u5E38",
212692
+ open: "\u6253\u5F00...",
212693
+ openProject: "\u6253\u5F00\u9879\u76EE",
212694
+ paste: "\u7C98\u8D34",
212695
+ quit: "\u9000\u51FA Behavior3",
212696
+ recent: "\u6700\u8FD1\u6253\u5F00",
212697
+ redo: "\u91CD\u505A",
212698
+ reload: "\u91CD\u65B0\u52A0\u8F7D",
212699
+ reset: "\u91CD\u7F6E",
212700
+ "reset.confirm": "\u91CD\u7F6E\u4E3A\u539F\u59CB\u503C\uFF1F",
212701
+ "reset.defaultConfirm": "\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u503C\uFF1F",
212702
+ rename: "\u91CD\u547D\u540D...",
212703
+ replace: "\u66FF\u6362",
212704
+ reportIssue: "\u95EE\u9898\u53CD\u9988",
212705
+ revealFileOnMac: "\u5728 Finder \u4E2D\u663E\u793A",
212706
+ revealFileOnWindows: "\u5728\u6587\u4EF6\u7BA1\u7406\u5668\u4E2D\u6253\u5F00",
212707
+ save: "\u4FDD\u5B58",
212708
+ saveAll: "\u4FDD\u5B58\u5168\u90E8",
212709
+ saveAs: "\u53E6\u5B58\u4E3A...",
212710
+ saveAsSubtree: "\u53E6\u5B58\u4E3A\u5B50\u6811",
212711
+ searchFile: "\u641C\u7D22\u6587\u4EF6",
212712
+ searchNode: "\u641C\u7D22\u8282\u70B9",
212713
+ selectAll: "\u5168\u9009",
212714
+ services: "\u670D\u52A1",
212715
+ setupBuildScript: "\u8BBE\u7F6E\u6784\u5EFA\u811A\u672C",
212716
+ start: "\u5F00\u59CB",
212717
+ undo: "\u64A4\u9500",
212718
+ unhide: "\u663E\u793A\u6240\u6709",
212719
+ zoomIn: "\u653E\u5927",
212720
+ zoomOut: "\u7F29\u5C0F",
212721
+ "menu.file": "\u6587\u4EF6",
212722
+ "menu.edit": "\u7F16\u8F91",
212723
+ "menu.view": "\u89C6\u56FE",
212724
+ "menu.window": "\u7A97\u53E3",
212725
+ "menu.help": "\u5E2E\u52A9",
212726
+ "workspace.saveAllOnClose": "\u4F60\u9700\u8981\u4FDD\u5B58\u5BF9\u4EE5\u4E0B {{count}} \u4E2A\u6587\u4EF6\u7684\u4FEE\u6539\u5417\uFF1F",
212727
+ "workspace.saveOnClose": "\u4F60\u9700\u8981\u4FDD\u5B58\u5BF9\u6587\u4EF6 {{name}} \u7684\u4FEE\u6539\u5417\uFF1F",
212728
+ "workspace.reloadFile": "\u6587\u4EF6 {{name}} \u53D1\u751F\u6539\u53D8\uFF0C\u4F60\u9700\u8981\u91CD\u65B0\u52A0\u8F7D\u5417\uFF1F",
212729
+ "explorer.deleteFile": "\u4F60\u786E\u5B9A\u8981\u5220\u9664\u6587\u4EF6 '{{name}}'\uFF1F",
212730
+ "explorer.deleteFolder": "\u4F60\u786E\u5B9A\u8981\u5220\u9664\u76EE\u5F55 '{{name}}'\uFF1F",
212731
+ "explorer.replaceFile": "\u4F60\u786E\u5B9A\u8981\u66FF\u6362\u6587\u4EF6 '{{name}}'\uFF1F",
212732
+ "explorer.restoreFileInfo": "\u4F60\u53EF\u4EE5\u4ECE\u56DE\u6536\u7AD9\u6062\u590D\u6B64\u6587\u4EF6\u3002",
212733
+ "explorer.title": "\u8D44\u6E90\u6D4F\u89C8",
212734
+ "tree.overview": "\u6982\u51B5",
212735
+ "tree.name": "\u884C\u4E3A\u6811",
212736
+ "tree.desc": "\u8BF4\u660E",
212737
+ "tree.export": "\u5BFC\u51FA",
212738
+ "tree.prefix": "\u6807\u8BC6\u524D\u7F00",
212739
+ "tree.group": "\u542F\u7528\u8282\u70B9\u5206\u7EC4",
212740
+ "tree.group.placeholder": "\u9009\u62E9\u8282\u70B9\u5206\u7EC4",
212741
+ "tree.vars": "\u5B9A\u4E49\u53D8\u91CF",
212742
+ "tree.vars.local": "\u672C\u5730\u53D8\u91CF",
212743
+ "tree.vars.add": "\u6DFB\u52A0\u53D8\u91CF",
212744
+ "tree.vars.name": "\u53D8\u91CF\u540D",
212745
+ "tree.vars.invalidName": "\u53D8\u91CF\u540D\u4E0D\u5408\u6CD5",
212746
+ "tree.vars.desc": "\u53D8\u91CF\u8BF4\u660E",
212747
+ "tree.vars.imports": "\u5BFC\u5165\u53D8\u91CF",
212748
+ "tree.vars.subtree": "\u5B50\u6811\u53D8\u91CF",
212749
+ "tree.import.add": "\u6DFB\u52A0\u5BFC\u5165",
212750
+ "tree.custom": "\u81EA\u5B9A\u4E49\u6570\u636E",
212751
+ "tree.custom.add": "\u6DFB\u52A0\u6761\u76EE",
212752
+ "tree.custom.key": "\u952E",
212753
+ "tree.custom.value": "\u503C",
212754
+ "tree.custom.type.string": "\u5B57\u7B26\u4E32\u503C",
212755
+ "tree.custom.type.number": "\u6570\u5B57\u503C",
212756
+ "tree.custom.type.boolean": "\u5E03\u5C14\u503C",
212757
+ "tree.custom.type.invalid": "\u975E\u6CD5\u7684\u81EA\u5B9A\u4E49\u503C",
212758
+ "regnode.input": "\u8F93\u5165\uFF1A",
212759
+ "regnode.output": "\u8F93\u51FA\uFF1A",
212760
+ "regnode.args": "\u53C2\u6570\uFF1A",
212761
+ "regnode.mark": "\u5907\u6CE8\uFF1A",
212762
+ "regnode.subtree": "\u5B50\u6811\uFF1A",
212763
+ "node.args": "\u5E38\u91CF\u53C2\u6570",
212764
+ "node.children.unlimited": "\u65E0\u9650\u5236",
212765
+ "node.children": "\u5B50\u8282\u70B9\u6570\u91CF",
212766
+ "node.debug": "\u8C03\u8BD5",
212767
+ "node.deleteRootNodeDenied": "\u4E0D\u80FD\u5220\u9664\u6839\u8282\u70B9",
212768
+ "node.dropDenied": "\u6B64\u8282\u70B9\u4F4D\u7F6E\u4E0D\u5141\u8BB8\u653E\u7F6E\u62D6\u62FD\u7684\u8282\u70B9",
212769
+ "node.desc": "\u8282\u70B9\u8BF4\u660E",
212770
+ "node.disabled": "\u7981\u7528",
212771
+ "node.editSubtreeDenied": "\u4E0D\u80FD\u7F16\u8F91\u5B50\u6811\u8282\u70B9",
212772
+ "node.editFailed": "\u8282\u70B9 {{name}} \u7F16\u8F91\u5931\u8D25",
212773
+ "node.group": "\u8282\u70B9\u5206\u7EC4",
212774
+ "node.groupNotEnabled": "\u8282\u70B9\u5206\u7EC4 \u201C{{group}}\u201D \u4EFB\u610F\u4E00\u4E2A\u672A\u5728\u5F53\u524D\u6587\u4EF6\u4E2D\u542F\u7528",
212775
+ "node.id": "\u8282\u70B9\u6807\u8BC6",
212776
+ "node.inputVariable": "\u8F93\u5165\u53D8\u91CF",
212777
+ "node.invalidChildren": "\u5B50\u8282\u70B9\u6570\u91CF\u4E0D\u5408\u6CD5",
212778
+ "node.invalidExpression": "\u8868\u8FBE\u5F0F\u4E0D\u5408\u6CD5",
212779
+ "node.invalidValue": "\u65E0\u6548\u7684\u503C",
212780
+ "node.invalidVariableName": "\u53D8\u91CF\u540D\u5FC5\u987B\u4EE5\u5B57\u6BCD\u6216\u4E0B\u5212\u7EBF\u5F00\u5934",
212781
+ "node.name": "\u8282\u70B9\u540D\u79F0",
212782
+ "node.noNodeSelected": "\u672A\u9009\u62E9\u4EFB\u52A1\u8282\u70B9",
212783
+ "node.notFound": "\u8282\u70B9 \u201C{{name}}\u201D \u4E0D\u5B58\u5728",
212784
+ "node.oneof.error": "\u8F93\u5165\u9879 \u201C{{input}}\u201D \u548C\u53C2\u6570 \u201C{{desc}}({{arg}})\u201D \u4E4B\u4E2D\uFF0C\u53EA\u80FD\u9009\u62E9\u8BBE\u7F6E\u5176\u4E2D\u4E4B\u4E00",
212785
+ "node.oneof.inputNotfound": "\u8F93\u5165\u9879\u201C{{input}}\u201D\u4E0D\u5B58\u5728",
212786
+ "node.outputVariable": "\u8F93\u51FA\u53D8\u91CF",
212787
+ "node.pasteDataError": "\u7C98\u8D34\u6570\u636E\u51FA\u9519",
212788
+ "node.rootNodeAsSubtree": "\u6839\u8282\u70B9\u4E0D\u80FD\u4FDD\u5B58\u4E3A\u5B50\u6811",
212789
+ "node.subtree": "\u5B50\u6811",
212790
+ "node.subtreeMissing": "\u5B50\u6811\u6587\u4EF6\u7F3A\u5931\uFF1A{{path}}",
212791
+ "node.subtreeInvalid": "\u5B50\u6811\u6587\u4EF6\u65E0\u6548\uFF1A{{path}}",
212792
+ "node.subtreeCyclic": "\u5B50\u6811\u5F15\u7528\u51FA\u73B0\u5FAA\u73AF\uFF1A{{path}}",
212793
+ "node.subtreeOpenFailed": "\u6253\u5F00\u5B50\u6811\u5931\u8D25\uFF1A\u6587\u4EF6\u4E0D\u5B58\u5728\u6216\u4E0D\u53EF\u8BFB\uFF08{{path}}\uFF09",
212794
+ "node.subtreePathError": "\u5B50\u6811\u5FC5\u987B\u4FDD\u5B58\u5728\u5F53\u524D\u5DE5\u4F5C\u533A\u7684\u76EE\u5F55\u5185",
212795
+ "node.subtreeSaveRootError": "\u6839\u8282\u70B9\u4E0D\u80FD\u4FDD\u5B58\u4E3A\u5B50\u6811",
212796
+ "node.subtreeSaveSuccess": "\u5DF2\u4FDD\u5B58\u5E76\u8F6C\u6362\u4E3A\u5B50\u6811\u8282\u70B9\uFF1A{{path}}",
212797
+ "node.moveSubtreeDenied": "\u4E0D\u80FD\u79FB\u52A8\u5B50\u6811\u5185\u90E8\u8282\u70B9",
212798
+ "node.dropSubtreeInternalDenied": "\u4E0D\u80FD\u62D6\u653E\u5230\u5B50\u6811\u5185\u90E8\u8282\u70B9",
212799
+ "node.moveRootDenied": "\u4E0D\u80FD\u79FB\u52A8\u6839\u8282\u70B9",
212800
+ "node.dropAroundRootDenied": "\u4E0D\u80FD\u5C06\u8282\u70B9\u653E\u5230\u6839\u8282\u70B9\u4E4B\u524D\u6216\u4E4B\u540E",
212801
+ "node.addChildToSubtreeRefDenied": "\u4E0D\u80FD\u5411\u5B50\u6811\u5F15\u7528\u6DFB\u52A0\u5B50\u8282\u70B9",
212802
+ "node.moveIntoDescendantDenied": "\u4E0D\u80FD\u5C06\u8282\u70B9\u79FB\u52A8\u5230\u81EA\u5DF1\u7684\u540E\u4EE3\u8282\u70B9\u4E2D",
212803
+ "node.type": "\u8282\u70B9\u7C7B\u578B",
212804
+ "node.undefinedVariable": "\u53D8\u91CF \u201C{{variable}}\u201D \u672A\u5B9A\u4E49",
212805
+ "node.jsonData": "JSON \u6570\u636E",
212806
+ "node.unknown.title": "\u672A\u77E5\u8282\u70B9",
212807
+ "node.unknownType": "\u672A\u77E5",
212808
+ "node.resolutionError": "\u89E3\u6790\u9519\u8BEF",
212809
+ "node.unknown.desc": "\u65B0\u5EFA\u8282\u70B9",
212810
+ "build.success": "\u6784\u5EFA\u5B8C\u6210\u3002",
212811
+ "build.failed": "\u6784\u5EFA\u5931\u8D25\u3002",
212812
+ "editor.loading": "\u6B63\u5728\u52A0\u8F7D\u7F16\u8F91\u5668...",
212813
+ "editor.externalChangeConflict": "\u68C0\u6D4B\u5230\u5916\u90E8\u6587\u4EF6\u53D8\u66F4\uFF0C\u5F53\u524D\u6587\u6863\u8FD8\u6709\u672A\u4FDD\u5B58\u4FEE\u6539\u3002",
212814
+ "editor.reloadFromDisk": "\u91CD\u65B0\u8F7D\u5165",
212815
+ "editor.dismissConflict": "\u5FFD\u7565",
212816
+ "editor.newerVersionEditDenied": "\u6B64\u6587\u4EF6\u7531\u65B0\u7248\u672C Behavior3({{version}}) \u521B\u5EFA\uFF0C\u8BF7\u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C\u540E\u518D\u7F16\u8F91\u3002",
212817
+ "inspector.noActiveDocument": "\u6253\u5F00\u4E00\u4E2A Behavior3 \u7F16\u8F91\u5668\u540E\uFF0C\u8FD9\u91CC\u4F1A\u663E\u793A\u5F53\u524D\u884C\u4E3A\u6811\u7684 Inspector\uFF0C\u5E76\u652F\u6301\u76F4\u63A5\u7F16\u8F91\u3002",
212818
+ "inspector.embeddedModeNotice": "Inspector \u5F53\u524D\u914D\u7F6E\u4E3A\u5728 Behavior3 \u7F16\u8F91\u5668\u5185\u90E8\u663E\u793A\u3002",
212819
+ "inspector.embeddedToolbar.build": "\u6784\u5EFA\u884C\u4E3A\u6811",
212820
+ "inspector.embeddedToolbar.toggleEditorMode": "\u5207\u6362\u7F16\u8F91\u5668\u6A21\u5F0F",
212821
+ "inspector.embeddedToolbar.toggleInspectorNodeJson": "\u5207\u6362\u539F\u59CB\u8282\u70B9 JSON",
212822
+ "inspector.embeddedToolbar.createProject": "\u65B0\u5EFA\u9879\u76EE",
212823
+ "inspector.embeddedToolbar.createTree": "\u65B0\u5EFA\u884C\u4E3A\u6811",
212824
+ "mutation.invalidJsonPath": "\u65E0\u6548\u7684 JSON \u8DEF\u5F84: {{path}}",
212825
+ "mutation.missingSelectedNode": "\u5F53\u524D\u6CA1\u6709\u53EF\u7528\u4E8E\u63D0\u4EA4\u6B64\u4FEE\u6539\u7684\u9009\u4E2D\u8282\u70B9\u3002",
212826
+ "mutation.selectedNodeMismatch": "\u5F53\u524D\u9009\u4E2D\u8282\u70B9\u5DF2\u53D8\u5316\uFF0C\u8BF7\u91CD\u8BD5\u3002",
212827
+ "mutation.missingTargetNode": "\u672A\u627E\u5230\u76EE\u6807\u8282\u70B9\uFF0C\u8BF7\u91CD\u8BD5\u3002",
212828
+ "mutation.missingSourceNode": "\u672A\u627E\u5230\u6E90\u8282\u70B9\uFF0C\u8BF7\u91CD\u8BD5\u3002",
212829
+ "mutation.missingSubtreeOriginal": "\u7F3A\u5C11 subtree \u539F\u59CB\u8282\u70B9\u5FEB\u7167\uFF0C\u8BF7\u91CD\u8BD5\u3002",
212830
+ "mutation.missingDetachedSubtreeRoot": "\u7F3A\u5C11\u7528\u4E8E\u89E3\u7ED1 subtree \u5F15\u7528\u7684\u5FEB\u7167\uFF0C\u8BF7\u91CD\u8BD5\u3002",
212831
+ "mutation.moveRootDenied": "\u4E0D\u80FD\u79FB\u52A8\u6839\u8282\u70B9\u3002",
212832
+ "mutation.dropAroundRootDenied": "\u4E0D\u80FD\u56F4\u7ED5\u6839\u8282\u70B9\u63D2\u5165\u3002",
212833
+ "mutation.addChildToSubtreeRefDenied": "\u4E0D\u80FD\u76F4\u63A5\u5411 subtree \u5F15\u7528\u6DFB\u52A0\u5B50\u8282\u70B9\u3002",
212834
+ "mutation.moveIntoDescendantDenied": "\u4E0D\u80FD\u79FB\u52A8\u5230\u81EA\u5DF1\u7684\u540E\u4EE3\u4E0B\u3002",
212835
+ "mutation.deleteRootNodeDenied": "\u4E0D\u80FD\u5220\u9664\u6839\u8282\u70B9\u3002",
212836
+ "mutation.editSubtreeDenied": "\u4E0D\u80FD\u5728 subtree \u5F15\u7528\u4E0A\u76F4\u63A5\u4FEE\u6539\u7ED3\u6784\u3002",
212837
+ "mutation.saveSelectedAsSubtreeRootDenied": "\u6839\u8282\u70B9\u4E0D\u80FD\u53E6\u5B58\u4E3A subtree\u3002",
212838
+ "mutation.saveSelectedAsSubtreeMissingTarget": "\u672A\u627E\u5230\u53EF\u53E6\u5B58\u4E3A subtree \u7684\u76EE\u6807\u8282\u70B9\u3002",
212839
+ "mutation.saveSelectedAsSubtreePostSaveMissingTarget": "\u63D0\u4EA4 subtree \u4FDD\u5B58\u7ED3\u679C\u65F6\u672A\u627E\u5230\u76EE\u6807\u8282\u70B9\u3002",
212840
+ "runtime.nodeCheckRuntimeHasErrors": "checker \u8FD0\u884C\u65F6\u5B58\u5728\u9519\u8BEF\u3002",
212841
+ "runtime.invalidSavedSubtreePath": "\u5BBF\u4E3B\u8FD4\u56DE\u4E86\u65E0\u6548\u7684 subtree \u4FDD\u5B58\u8DEF\u5F84\u3002",
212842
+ "runtime.unsupportedDocumentMutation": "\u4E0D\u652F\u6301\u6B64\u6587\u6863\u4FEE\u6539\u3002",
212843
+ "runtime.visibleHookNotRegistered": "visible \u201C{{name}}\u201D \u672A\u6CE8\u518C\u3002",
212844
+ "runtime.visibleHookFailed": "visible \u201C{{name}}\u201D \u6267\u884C\u5931\u8D25\uFF1A{{error}}",
212845
+ "runtime.visibleExpressionDisabled": "visible \u8868\u8FBE\u5F0F\u5DF2\u7981\u7528\uFF1B\u8BF7\u542F\u7528 settings.allowNewFunction\u3002",
212846
+ "runtime.visibleExpressionCompileFailed": "visible \u8868\u8FBE\u5F0F\u7F16\u8BD1\u5931\u8D25\uFF1A{{error}}",
212847
+ "runtime.visibleExpressionFailed": "visible \u8868\u8FBE\u5F0F\u6267\u884C\u5931\u8D25\uFF1A{{error}}",
212848
+ "runtime.visibleExpressionUnknownArg": "visible \u8868\u8FBE\u5F0F\u5F15\u7528\u4E86 args.{{property}}\uFF0C\u4F46 \u201C{{property}}\u201D \u4E0D\u5728\u5DF2\u5B9A\u4E49\u7684\u53C2\u6570\u8303\u56F4\u5185\uFF08\u5DF2\u5B9A\u4E49\u53C2\u6570\uFF1A{{definedArgs}}\uFF09\u3002",
212849
+ "runtime.visibleExpressionNoArgs": "visible \u8868\u8FBE\u5F0F\u5F15\u7528\u4E86 args.{{property}}\uFF0C\u4F46\u5F53\u524D\u8282\u70B9\u672A\u5B9A\u4E49\u53C2\u6570\u3002",
212850
+ "runtime.visibleExpressionUnknownSlotIndex": "visible \u8868\u8FBE\u5F0F\u5F15\u7528\u4E86 {{fieldKind}}[{{index}}]\uFF0C\u4F46{{definedScope}}\u3002",
212851
+ "runtime.visibleExpressionInvalidSlotProperty": "visible \u8868\u8FBE\u5F0F\u5F15\u7528\u4E86 {{fieldKind}}.{{property}}\uFF0C\u4F46 {{fieldKind}} \u4EC5\u652F\u6301\u5DF2\u5B9A\u4E49\u7684\u6570\u5B57\u69FD\u4F4D\u7D22\u5F15\u3002",
212852
+ "runtime.visibleSlotScopeNone": "\u5F53\u524D\u8282\u70B9\u672A\u5B9A\u4E49{{fieldKind}}\u69FD\u4F4D",
212853
+ "runtime.visibleSlotScopeIndex": "\u5DF2\u5B9A\u4E49\u7684{{fieldKind}}\u69FD\u4F4D\u7D22\u5F15\u53EA\u6709 {{start}}",
212854
+ "runtime.visibleSlotScopeRange": "\u5DF2\u5B9A\u4E49\u7684{{fieldKind}}\u69FD\u4F4D\u7D22\u5F15\u8303\u56F4\u662F {{start}}..{{end}}",
212855
+ "runtime.visibleSlotScopeRangeVariadic": "\u5DF2\u5B9A\u4E49\u7684{{fieldKind}}\u69FD\u4F4D\u7D22\u5F15\u8303\u56F4\u662F {{start}}..{{end}}+",
212856
+ "override.resetTitle": "\u91CD\u7F6E\u6B64\u8986\u76D6\uFF1F",
212857
+ "form.enterJsonArray": "\u8F93\u5165 JSON \u6570\u7EC4",
212858
+ "form.enterJsonValue": "\u8F93\u5165 JSON \u503C",
212859
+ "form.unset": "\u672A\u8BBE\u7F6E",
212860
+ "form.true": "\u662F",
212861
+ "form.false": "\u5426",
212862
+ "validation.jsonArray": "{{name}} \u5FC5\u987B\u662F JSON \u6570\u7EC4",
212863
+ "validation.integer": "{{field}} \u5FC5\u987B\u662F\u6574\u6570",
212864
+ "validation.number": "{{field}} \u5FC5\u987B\u662F\u6570\u5B57",
212865
+ "validation.missingOneofInput": "\u7F3A\u5C11 oneof \u8F93\u5165\u9879 \u201C{{input}}\u201D",
212866
+ "validation.oneof": "\u201C{{left}}\u201D \u548C \u201C{{right}}\u201D \u53EA\u80FD\u8BBE\u7F6E\u5176\u4E2D\u4E4B\u4E00",
212867
+ "validation.invalidJsonPath": "\u8DEF\u5F84\u5FC5\u987B\u662F\u5DE5\u4F5C\u76EE\u5F55\u5185\u7684\u76F8\u5BF9 .json \u6587\u4EF6\uFF1A{{path}}",
212868
+ "validation.variableDescriptionRequired": "\u53D8\u91CF\u8BF4\u660E\u5FC5\u586B",
212869
+ "validation.customKeyRequired": "\u81EA\u5B9A\u4E49 key \u5FC5\u586B",
212870
+ "validation.customKeyDuplicate": "\u81EA\u5B9A\u4E49 key \u201C{{key}}\u201D \u91CD\u590D\u4E86",
212871
+ "validation.customValueInvalid": "\u81EA\u5B9A\u4E49\u503C\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3001\u6570\u5B57\u6216\u5E03\u5C14\u503C"
212872
+ };
212873
+
212874
+ // webview/shared/runtime-i18n.ts
212875
+ var runtimeTranslations = {
212876
+ en: en_default,
212877
+ zh: zh_default
212878
+ };
212879
+ var INTERPOLATION_PATTERN = /\{\{\s*([^{}\s]+)\s*\}\}/g;
212880
+ var normalizeI18nLanguage = (language) => {
212881
+ const value = (language ?? "").toLowerCase();
212882
+ return value.startsWith("zh") ? "zh" : "en";
212883
+ };
212884
+ var interpolateRuntimeMessage = (template, params) => {
212885
+ if (!params) {
212886
+ return template;
212887
+ }
212888
+ return template.replace(INTERPOLATION_PATTERN, (match, key) => {
212889
+ const value = params[key];
212890
+ return value === void 0 || value === null ? match : String(value);
212891
+ });
212892
+ };
212893
+ var translateRuntimeMessage = (language, key, params) => {
212894
+ const template = runtimeTranslations[language][key] ?? runtimeTranslations.en[key] ?? key;
212895
+ return interpolateRuntimeMessage(template, params);
212896
+ };
212897
+
212431
212898
  // webview/shared/protocol.ts
212432
212899
  var URI_SCHEME_PATTERN = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;
212433
212900
  var WINDOWS_ABSOLUTE_PATTERN = /^[a-zA-Z]:[\\/]/;
@@ -212881,6 +213348,7 @@ var normalizeWorkspaceModel = (value) => {
212881
213348
  }
212882
213349
  return {
212883
213350
  settings: {
213351
+ allowNewFunction: typeof settingsRecord.allowNewFunction === "boolean" ? settingsRecord.allowNewFunction : void 0,
212884
213352
  checkExpr: typeof settingsRecord.checkExpr === "boolean" ? settingsRecord.checkExpr : void 0,
212885
213353
  buildScript: asOptionalString(settingsRecord.buildScript),
212886
213354
  checkScripts: settingsRecord.checkScripts === void 0 ? void 0 : Array.isArray(settingsRecord.checkScripts) ? settingsRecord.checkScripts.map(
@@ -213449,6 +213917,7 @@ var markVisibleHook = (nameOrCtor, _context) => {
213449
213917
  var isDecoratedBuildHookCtor = (value) => typeof value === "function" && value[BUILD_HOOK_MARKER] === true;
213450
213918
  var isDecoratedBatchHookCtor = (value) => typeof value === "function" && value[BATCH_HOOK_MARKER] === true;
213451
213919
  var isDecoratedCheckCtor = (value) => typeof value === "function" && value[CHECK_HOOK_MARKER] === true;
213920
+ var isDecoratedVisibleCtor = (value) => typeof value === "function" && value[VISIBLE_HOOK_MARKER] === true;
213452
213921
  var findDecoratedBuildHookCtor = (moduleRecord) => {
213453
213922
  const decorated = Array.from(new Set(Object.values(moduleRecord))).filter(
213454
213923
  isDecoratedBuildHookCtor
@@ -213480,6 +213949,7 @@ var findDecoratedBatchHookCtor = (moduleRecord) => {
213480
213949
  return legacyDecorated[0];
213481
213950
  };
213482
213951
  var findDecoratedCheckCtors = (moduleRecord) => Array.from(new Set(Object.values(moduleRecord))).filter(isDecoratedCheckCtor);
213952
+ var findDecoratedVisibleCtors = (moduleRecord) => Array.from(new Set(Object.values(moduleRecord))).filter(isDecoratedVisibleCtor);
213483
213953
  var createBuildHooks = (moduleExports, env, reportMissing = true) => {
213484
213954
  if (!moduleExports || typeof moduleExports !== "object") {
213485
213955
  return void 0;
@@ -213565,6 +214035,342 @@ var createNodeFieldCheckers = (moduleExports, env) => {
213565
214035
  }
213566
214036
  return { checkers, hasError, hasCheckers: decorated.length > 0 };
213567
214037
  };
214038
+ var normalizeNodeFieldVisibleResult = (result) => result !== false;
214039
+ var VISIBLE_HANDLER_NAME_PATTERN = /^\w+$/;
214040
+ var VISIBLE_EXPRESSION_TOKEN_PATTERN = /[\s()[\].!=<>|&+*\/?:'"]/;
214041
+ var VISIBLE_ARRAY_INDEX_PATTERN = /^(0|[1-9]\d*)$/;
214042
+ var visibleExpressionCache = /* @__PURE__ */ new Map();
214043
+ var getBuildEnvLanguage = (env) => normalizeI18nLanguage(env.language);
214044
+ var translateVisibleRuntimeMessage = (env, key, params) => translateRuntimeMessage(getBuildEnvLanguage(env), key, params);
214045
+ var formatVisibleArgScope = (env, definedArgNames) => getBuildEnvLanguage(env) === "zh" ? definedArgNames.join("\u3001") : definedArgNames.join(", ");
214046
+ var getVisibleFieldKindLabel = (env, fieldKind) => {
214047
+ if (getBuildEnvLanguage(env) === "zh") {
214048
+ return fieldKind === "input" ? "\u8F93\u5165" : "\u8F93\u51FA";
214049
+ }
214050
+ return fieldKind;
214051
+ };
214052
+ var parseVisibleArrayIndex = (property) => {
214053
+ if (typeof property === "number") {
214054
+ return Number.isInteger(property) && property >= 0 ? property : null;
214055
+ }
214056
+ if (typeof property === "string" && VISIBLE_ARRAY_INDEX_PATTERN.test(property)) {
214057
+ return Number(property);
214058
+ }
214059
+ return null;
214060
+ };
214061
+ var isVisibleSlotIndexDefined = (slotDefs, index) => {
214062
+ if (index < 0) {
214063
+ return false;
214064
+ }
214065
+ const slotCount = slotDefs?.length ?? 0;
214066
+ if (slotCount === 0) {
214067
+ return false;
214068
+ }
214069
+ if (index < slotCount) {
214070
+ return true;
214071
+ }
214072
+ const normalizedSlotDefs = slotDefs ?? [];
214073
+ return parseSlotDefinition(
214074
+ normalizedSlotDefs[slotCount - 1] ?? "",
214075
+ normalizedSlotDefs,
214076
+ slotCount - 1
214077
+ ).variadic;
214078
+ };
214079
+ var formatVisibleSlotScope = (env, fieldKind, slotDefs) => {
214080
+ const slotCount = slotDefs?.length ?? 0;
214081
+ const fieldKindLabel = getVisibleFieldKindLabel(env, fieldKind);
214082
+ if (slotCount === 0) {
214083
+ return translateVisibleRuntimeMessage(env, "runtime.visibleSlotScopeNone", {
214084
+ fieldKind: fieldKindLabel
214085
+ });
214086
+ }
214087
+ if (parseSlotDefinition(slotDefs?.[slotCount - 1] ?? "", slotDefs, slotCount - 1).variadic) {
214088
+ return translateVisibleRuntimeMessage(env, "runtime.visibleSlotScopeRangeVariadic", {
214089
+ fieldKind: fieldKindLabel,
214090
+ start: 0,
214091
+ end: slotCount - 1
214092
+ });
214093
+ }
214094
+ return slotCount === 1 ? translateVisibleRuntimeMessage(env, "runtime.visibleSlotScopeIndex", {
214095
+ fieldKind: fieldKindLabel,
214096
+ start: 0
214097
+ }) : translateVisibleRuntimeMessage(env, "runtime.visibleSlotScopeRange", {
214098
+ fieldKind: fieldKindLabel,
214099
+ start: 0,
214100
+ end: slotCount - 1
214101
+ });
214102
+ };
214103
+ var createVisibleArgScope = (ctx) => {
214104
+ const definedArgNames = (ctx.nodeDef.args ?? []).map((arg) => arg.name);
214105
+ const definedArgNameSet = new Set(definedArgNames);
214106
+ const target = Object.assign(
214107
+ /* @__PURE__ */ Object.create(null),
214108
+ ctx.node.args ?? {}
214109
+ );
214110
+ return new Proxy(target, {
214111
+ get(currentTarget, property) {
214112
+ if (typeof property === "symbol") {
214113
+ return Reflect.get(currentTarget, property);
214114
+ }
214115
+ if (definedArgNameSet.has(property)) {
214116
+ return currentTarget[property];
214117
+ }
214118
+ throw new Error(
214119
+ definedArgNames.length ? translateVisibleRuntimeMessage(
214120
+ ctx.env,
214121
+ "runtime.visibleExpressionUnknownArg",
214122
+ {
214123
+ property,
214124
+ definedArgs: formatVisibleArgScope(ctx.env, definedArgNames)
214125
+ }
214126
+ ) : translateVisibleRuntimeMessage(ctx.env, "runtime.visibleExpressionNoArgs", {
214127
+ property
214128
+ })
214129
+ );
214130
+ },
214131
+ has(_currentTarget, property) {
214132
+ if (typeof property === "symbol") {
214133
+ return false;
214134
+ }
214135
+ return definedArgNameSet.has(property);
214136
+ }
214137
+ });
214138
+ };
214139
+ var createVisibleSlotScope = (fieldKind, values, slotDefs, env) => {
214140
+ const target = values ?? [];
214141
+ return new Proxy(target, {
214142
+ get(currentTarget, property, receiver) {
214143
+ if (typeof property === "symbol") {
214144
+ return Reflect.get(currentTarget, property, receiver);
214145
+ }
214146
+ const index = parseVisibleArrayIndex(property);
214147
+ if (index !== null) {
214148
+ if (!isVisibleSlotIndexDefined(slotDefs, index)) {
214149
+ throw new Error(
214150
+ translateVisibleRuntimeMessage(
214151
+ env,
214152
+ "runtime.visibleExpressionUnknownSlotIndex",
214153
+ {
214154
+ fieldKind: getVisibleFieldKindLabel(env, fieldKind),
214155
+ index,
214156
+ definedScope: formatVisibleSlotScope(env, fieldKind, slotDefs)
214157
+ }
214158
+ )
214159
+ );
214160
+ }
214161
+ return Reflect.get(currentTarget, property, receiver);
214162
+ }
214163
+ if (property in currentTarget || property in Array.prototype) {
214164
+ return Reflect.get(currentTarget, property, receiver);
214165
+ }
214166
+ throw new Error(
214167
+ translateVisibleRuntimeMessage(
214168
+ env,
214169
+ "runtime.visibleExpressionInvalidSlotProperty",
214170
+ {
214171
+ fieldKind: getVisibleFieldKindLabel(env, fieldKind),
214172
+ property: String(property)
214173
+ }
214174
+ )
214175
+ );
214176
+ },
214177
+ has(currentTarget, property) {
214178
+ if (typeof property === "symbol") {
214179
+ return property in currentTarget;
214180
+ }
214181
+ const index = parseVisibleArrayIndex(property);
214182
+ if (index !== null) {
214183
+ return isVisibleSlotIndexDefined(slotDefs, index);
214184
+ }
214185
+ return property in currentTarget || property in Array.prototype;
214186
+ }
214187
+ });
214188
+ };
214189
+ var isNamedNodeFieldVisible = (visibleName) => VISIBLE_HANDLER_NAME_PATTERN.test(visibleName);
214190
+ var isInlineNodeFieldVisibleExpression = (visibleName, visibles) => {
214191
+ if (visibles.has(visibleName)) {
214192
+ return false;
214193
+ }
214194
+ if (isNamedNodeFieldVisible(visibleName)) {
214195
+ return false;
214196
+ }
214197
+ return VISIBLE_EXPRESSION_TOKEN_PATTERN.test(visibleName);
214198
+ };
214199
+ var getVisibleExpressionEvaluator = (expression) => {
214200
+ const cached = visibleExpressionCache.get(expression);
214201
+ if (cached) {
214202
+ return cached;
214203
+ }
214204
+ const evaluator = new Function(
214205
+ "args",
214206
+ "input",
214207
+ "output",
214208
+ "value",
214209
+ `"use strict"; return (${expression});`
214210
+ );
214211
+ visibleExpressionCache.set(expression, evaluator);
214212
+ return evaluator;
214213
+ };
214214
+ var resolveNodeFieldVisible = (params) => {
214215
+ if (!isInlineNodeFieldVisibleExpression(params.visibleName, params.visibles)) {
214216
+ const visible = params.visibles.get(params.visibleName);
214217
+ if (!visible) {
214218
+ return {
214219
+ diagnostic: {
214220
+ source: params.visibleName,
214221
+ message: translateVisibleRuntimeMessage(
214222
+ params.ctx.env,
214223
+ "runtime.visibleHookNotRegistered",
214224
+ {
214225
+ name: params.visibleName
214226
+ }
214227
+ )
214228
+ }
214229
+ };
214230
+ }
214231
+ try {
214232
+ return {
214233
+ visible: normalizeNodeFieldVisibleResult(visible.visible(params.value, params.ctx))
214234
+ };
214235
+ } catch (error) {
214236
+ return {
214237
+ diagnostic: {
214238
+ source: params.visibleName,
214239
+ message: translateVisibleRuntimeMessage(
214240
+ params.ctx.env,
214241
+ "runtime.visibleHookFailed",
214242
+ {
214243
+ name: params.visibleName,
214244
+ error: formatRuntimeError(error)
214245
+ }
214246
+ )
214247
+ }
214248
+ };
214249
+ }
214250
+ }
214251
+ if (!params.ctx.env.allowNewFunction) {
214252
+ return {
214253
+ diagnostic: {
214254
+ source: params.visibleName,
214255
+ message: translateVisibleRuntimeMessage(
214256
+ params.ctx.env,
214257
+ "runtime.visibleExpressionDisabled"
214258
+ )
214259
+ }
214260
+ };
214261
+ }
214262
+ let evaluator;
214263
+ try {
214264
+ evaluator = getVisibleExpressionEvaluator(params.visibleName);
214265
+ } catch (error) {
214266
+ return {
214267
+ diagnostic: {
214268
+ source: params.visibleName,
214269
+ message: translateVisibleRuntimeMessage(
214270
+ params.ctx.env,
214271
+ "runtime.visibleExpressionCompileFailed",
214272
+ {
214273
+ error: formatRuntimeError(error)
214274
+ }
214275
+ )
214276
+ }
214277
+ };
214278
+ }
214279
+ try {
214280
+ return {
214281
+ visible: normalizeNodeFieldVisibleResult(
214282
+ evaluator(
214283
+ createVisibleArgScope(params.ctx),
214284
+ createVisibleSlotScope(
214285
+ "input",
214286
+ params.ctx.node.input ?? [],
214287
+ params.ctx.nodeDef.input,
214288
+ params.ctx.env
214289
+ ),
214290
+ createVisibleSlotScope(
214291
+ "output",
214292
+ params.ctx.node.output ?? [],
214293
+ params.ctx.nodeDef.output,
214294
+ params.ctx.env
214295
+ ),
214296
+ params.value
214297
+ )
214298
+ )
214299
+ };
214300
+ } catch (error) {
214301
+ return {
214302
+ diagnostic: {
214303
+ source: params.visibleName,
214304
+ message: translateVisibleRuntimeMessage(
214305
+ params.ctx.env,
214306
+ "runtime.visibleExpressionFailed",
214307
+ {
214308
+ error: formatRuntimeError(error)
214309
+ }
214310
+ )
214311
+ }
214312
+ };
214313
+ }
214314
+ };
214315
+ var createNodeFieldVisibles = (moduleExports, env) => {
214316
+ const visibles = /* @__PURE__ */ new Map();
214317
+ let hasError = false;
214318
+ if (!moduleExports || typeof moduleExports !== "object") {
214319
+ return { visibles, hasError, hasVisibles: false };
214320
+ }
214321
+ const moduleRecord = moduleExports;
214322
+ const decorated = findDecoratedVisibleCtors(moduleRecord);
214323
+ for (const ctor of decorated) {
214324
+ const name = ctor[VISIBLE_HOOK_NAME]?.trim() || ctor.name;
214325
+ if (!name) {
214326
+ logger.error("visible class must have a non-empty @behavior3.visible name");
214327
+ hasError = true;
214328
+ continue;
214329
+ }
214330
+ if (visibles.has(name)) {
214331
+ logger.error(`duplicate @behavior3.visible registration: ${name}`);
214332
+ hasError = true;
214333
+ continue;
214334
+ }
214335
+ try {
214336
+ const instance = new ctor(env);
214337
+ if (typeof instance.visible !== "function") {
214338
+ logger.error(`visible '${name}' must provide a visible(value, ctx) method`);
214339
+ hasError = true;
214340
+ continue;
214341
+ }
214342
+ visibles.set(name, instance);
214343
+ } catch (error) {
214344
+ logger.error(`failed to instantiate visible '${name}'`, error);
214345
+ hasError = true;
214346
+ }
214347
+ }
214348
+ return { visibles, hasError, hasVisibles: decorated.length > 0 };
214349
+ };
214350
+ var createNodeFieldVisibleRuntimeWithCheckModules = (buildScriptModule, checkScriptModules, env) => {
214351
+ const nodeFieldVisibles = /* @__PURE__ */ new Map();
214352
+ let hasError = false;
214353
+ const mergeModuleVisibles = (moduleExports) => {
214354
+ const visibleResult = createNodeFieldVisibles(moduleExports, env);
214355
+ hasError = hasError || visibleResult.hasError;
214356
+ for (const [name, visible] of visibleResult.visibles) {
214357
+ if (nodeFieldVisibles.has(name)) {
214358
+ logger.error(`duplicate @behavior3.visible registration: ${name}`);
214359
+ hasError = true;
214360
+ continue;
214361
+ }
214362
+ nodeFieldVisibles.set(name, visible);
214363
+ }
214364
+ };
214365
+ mergeModuleVisibles(buildScriptModule);
214366
+ for (const checkScript of checkScriptModules) {
214367
+ mergeModuleVisibles(checkScript.moduleExports);
214368
+ }
214369
+ return {
214370
+ nodeFieldVisibles,
214371
+ hasError
214372
+ };
214373
+ };
213568
214374
  var createBuildScriptRuntime = (moduleExports, env) => {
213569
214375
  if (!moduleExports || typeof moduleExports !== "object") {
213570
214376
  return {
@@ -213889,38 +214695,49 @@ var collectNodeFieldCheckDiagnostics = (params) => {
213889
214695
  nodeDef,
213890
214696
  treePath: target.treePath ?? params.treePath,
213891
214697
  env: params.env,
213892
- onArg: ({ fieldName, checkerName, value, ctx }) => {
213893
- if (!checkerName) {
213894
- return;
213895
- }
213896
- const pushDiagnostic = (message) => {
214698
+ onArg: ({ fieldName, checkerName, visibleName, value, ctx }) => {
214699
+ const pushDiagnostic = (source, message) => {
213897
214700
  diagnostics.push({
213898
214701
  instanceKey: target.instanceKey,
213899
214702
  nodeId: node.id,
213900
214703
  nodeName: node.name,
213901
214704
  fieldKind: "arg",
213902
214705
  fieldName,
213903
- checker: checkerName,
214706
+ checker: source,
213904
214707
  message
213905
214708
  });
213906
214709
  };
214710
+ if (visibleName) {
214711
+ const resolution = resolveNodeFieldVisible({
214712
+ visibleName,
214713
+ value,
214714
+ ctx,
214715
+ visibles: params.visibles ?? /* @__PURE__ */ new Map()
214716
+ });
214717
+ if (resolution.diagnostic) {
214718
+ pushDiagnostic(resolution.diagnostic.source, resolution.diagnostic.message);
214719
+ }
214720
+ }
214721
+ if (!checkerName) {
214722
+ return;
214723
+ }
213907
214724
  const checker = params.checkers.get(checkerName);
213908
214725
  if (!checker) {
213909
- pushDiagnostic(`checker '${checkerName}' is not registered`);
214726
+ pushDiagnostic(checkerName, `checker '${checkerName}' is not registered`);
213910
214727
  return;
213911
214728
  }
213912
214729
  try {
213913
214730
  const messages = normalizeNodeFieldCheckResult(checker.validate(value, ctx));
213914
- messages.forEach(pushDiagnostic);
214731
+ messages.forEach((message) => pushDiagnostic(checkerName, message));
213915
214732
  } catch (error) {
213916
- pushDiagnostic(`checker '${checkerName}' failed: ${formatRuntimeError(error)}`);
214733
+ pushDiagnostic(
214734
+ checkerName,
214735
+ `checker '${checkerName}' failed: ${formatRuntimeError(error)}`
214736
+ );
213917
214737
  }
213918
214738
  },
213919
- onInput: ({ fieldName, fieldIndex, checkerName, value, ctx }) => {
213920
- if (!checkerName) {
213921
- return;
213922
- }
213923
- const pushDiagnostic = (message) => {
214739
+ onInput: ({ fieldName, fieldIndex, checkerName, visibleName, value, ctx }) => {
214740
+ const pushDiagnostic = (source, message) => {
213924
214741
  diagnostics.push({
213925
214742
  instanceKey: target.instanceKey,
213926
214743
  nodeId: node.id,
@@ -213928,27 +214745,41 @@ var collectNodeFieldCheckDiagnostics = (params) => {
213928
214745
  fieldKind: "input",
213929
214746
  fieldName,
213930
214747
  fieldIndex,
213931
- checker: checkerName,
214748
+ checker: source,
213932
214749
  message
213933
214750
  });
213934
214751
  };
214752
+ if (visibleName) {
214753
+ const resolution = resolveNodeFieldVisible({
214754
+ visibleName,
214755
+ value,
214756
+ ctx,
214757
+ visibles: params.visibles ?? /* @__PURE__ */ new Map()
214758
+ });
214759
+ if (resolution.diagnostic) {
214760
+ pushDiagnostic(resolution.diagnostic.source, resolution.diagnostic.message);
214761
+ }
214762
+ }
214763
+ if (!checkerName) {
214764
+ return;
214765
+ }
213935
214766
  const checker = params.checkers.get(checkerName);
213936
214767
  if (!checker) {
213937
- pushDiagnostic(`checker '${checkerName}' is not registered`);
214768
+ pushDiagnostic(checkerName, `checker '${checkerName}' is not registered`);
213938
214769
  return;
213939
214770
  }
213940
214771
  try {
213941
214772
  const messages = normalizeNodeFieldCheckResult(checker.validate(value, ctx));
213942
- messages.forEach(pushDiagnostic);
214773
+ messages.forEach((message) => pushDiagnostic(checkerName, message));
213943
214774
  } catch (error) {
213944
- pushDiagnostic(`checker '${checkerName}' failed: ${formatRuntimeError(error)}`);
214775
+ pushDiagnostic(
214776
+ checkerName,
214777
+ `checker '${checkerName}' failed: ${formatRuntimeError(error)}`
214778
+ );
213945
214779
  }
213946
214780
  },
213947
- onOutput: ({ fieldName, fieldIndex, checkerName, value, ctx }) => {
213948
- if (!checkerName) {
213949
- return;
213950
- }
213951
- const pushDiagnostic = (message) => {
214781
+ onOutput: ({ fieldName, fieldIndex, checkerName, visibleName, value, ctx }) => {
214782
+ const pushDiagnostic = (source, message) => {
213952
214783
  diagnostics.push({
213953
214784
  instanceKey: target.instanceKey,
213954
214785
  nodeId: node.id,
@@ -213956,20 +214787,37 @@ var collectNodeFieldCheckDiagnostics = (params) => {
213956
214787
  fieldKind: "output",
213957
214788
  fieldName,
213958
214789
  fieldIndex,
213959
- checker: checkerName,
214790
+ checker: source,
213960
214791
  message
213961
214792
  });
213962
214793
  };
214794
+ if (visibleName) {
214795
+ const resolution = resolveNodeFieldVisible({
214796
+ visibleName,
214797
+ value,
214798
+ ctx,
214799
+ visibles: params.visibles ?? /* @__PURE__ */ new Map()
214800
+ });
214801
+ if (resolution.diagnostic) {
214802
+ pushDiagnostic(resolution.diagnostic.source, resolution.diagnostic.message);
214803
+ }
214804
+ }
214805
+ if (!checkerName) {
214806
+ return;
214807
+ }
213963
214808
  const checker = params.checkers.get(checkerName);
213964
214809
  if (!checker) {
213965
- pushDiagnostic(`checker '${checkerName}' is not registered`);
214810
+ pushDiagnostic(checkerName, `checker '${checkerName}' is not registered`);
213966
214811
  return;
213967
214812
  }
213968
214813
  try {
213969
214814
  const messages = normalizeNodeFieldCheckResult(checker.validate(value, ctx));
213970
- messages.forEach(pushDiagnostic);
214815
+ messages.forEach((message) => pushDiagnostic(checkerName, message));
213971
214816
  } catch (error) {
213972
- pushDiagnostic(`checker '${checkerName}' failed: ${formatRuntimeError(error)}`);
214817
+ pushDiagnostic(
214818
+ checkerName,
214819
+ `checker '${checkerName}' failed: ${formatRuntimeError(error)}`
214820
+ );
213973
214821
  }
213974
214822
  }
213975
214823
  });
@@ -214406,13 +215254,19 @@ var buildProjectWithContext = async (project, buildDir, context) => {
214406
215254
  path: b3path_default,
214407
215255
  workdir: context.workdir,
214408
215256
  nodeDefs: context.nodeDefs,
214409
- logger
215257
+ logger,
215258
+ allowNewFunction: settings.allowNewFunction ?? false
214410
215259
  };
214411
215260
  const buildRuntime = createBuildScriptRuntimeWithCheckModules(
214412
215261
  buildScriptModule,
214413
215262
  checkScriptModules,
214414
215263
  scriptEnv
214415
215264
  );
215265
+ const visibleRuntime = createNodeFieldVisibleRuntimeWithCheckModules(
215266
+ buildScriptModule,
215267
+ checkScriptModules,
215268
+ scriptEnv
215269
+ );
214416
215270
  if (buildSetting && (!buildScriptModule || buildRuntime.hasError)) {
214417
215271
  hasError = true;
214418
215272
  }
@@ -214458,7 +215312,8 @@ var buildProjectWithContext = async (project, buildDir, context) => {
214458
215312
  tree,
214459
215313
  treePath: candidatePath,
214460
215314
  env: scriptEnv,
214461
- checkers: buildRuntime.nodeFieldCheckers
215315
+ checkers: buildRuntime.nodeFieldCheckers,
215316
+ visibles: visibleRuntime.nodeFieldVisibles
214462
215317
  });
214463
215318
  if (checkDiagnostics.length) {
214464
215319
  hasError = true;
@@ -214491,6 +215346,7 @@ var batchProcessProjectWithContext = async (project, scriptPath, context) => {
214491
215346
  let writtenFiles = 0;
214492
215347
  const allErrors = [];
214493
215348
  const stagedWrites = [];
215349
+ const settings = readWorkspaceSettings(project);
214494
215350
  let buildScriptModule;
214495
215351
  try {
214496
215352
  buildScriptModule = await loadRuntimeModule(scriptPath, {
@@ -214504,7 +215360,8 @@ var batchProcessProjectWithContext = async (project, scriptPath, context) => {
214504
215360
  path: b3path_default,
214505
215361
  workdir: context.workdir,
214506
215362
  nodeDefs: context.nodeDefs,
214507
- logger
215363
+ logger,
215364
+ allowNewFunction: settings.allowNewFunction ?? false
214508
215365
  };
214509
215366
  const buildScript = createBatchHooks(buildScriptModule, scriptEnv);
214510
215367
  if (!buildScriptModule || !buildScript) {