@republicroad/seal-editor 1.32.0 → 1.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/bash-Dfpezy65.js +2 -0
  2. package/dist/c-BdHHW7PX.js +5 -0
  3. package/dist/c-BdHHW7PX.js.map +1 -0
  4. package/dist/c-lfOsiBpu.js +2 -0
  5. package/dist/core-CAYwPm3F.js +4984 -0
  6. package/dist/core-CAYwPm3F.js.map +1 -0
  7. package/dist/cpp-BGootNWJ.js +15 -0
  8. package/dist/cpp-BGootNWJ.js.map +1 -0
  9. package/dist/cpp-DvjZUDSj.js +2 -0
  10. package/dist/csharp-RRkgh3c4.js +5 -0
  11. package/dist/csharp-RRkgh3c4.js.map +1 -0
  12. package/dist/css-BbwcBM_4.js +2 -0
  13. package/dist/css-HuzvwXs-.js +5 -0
  14. package/dist/css-HuzvwXs-.js.map +1 -0
  15. package/dist/diff-D0WgTNQn.js +5 -0
  16. package/dist/diff-D0WgTNQn.js.map +1 -0
  17. package/dist/docker-DMpUQ2UE.js +5 -0
  18. package/dist/docker-DMpUQ2UE.js.map +1 -0
  19. package/dist/engine-javascript-DkCwfYjr.js +2393 -0
  20. package/dist/engine-javascript-DkCwfYjr.js.map +1 -0
  21. package/dist/github-dark-C85MA6EW.js +6 -0
  22. package/dist/github-dark-C85MA6EW.js.map +1 -0
  23. package/dist/github-light-Dzg0sEwI.js +6 -0
  24. package/dist/github-light-Dzg0sEwI.js.map +1 -0
  25. package/dist/go-BEdBk4fh.js +5 -0
  26. package/dist/go-BEdBk4fh.js.map +1 -0
  27. package/dist/graphql-C4UuinIq.js +2 -0
  28. package/dist/graphql-DcYBXWWL.js +16 -0
  29. package/dist/graphql-DcYBXWWL.js.map +1 -0
  30. package/dist/html-BH9giSUA.js +2 -0
  31. package/dist/html-Ctxsat8s.js +12 -0
  32. package/dist/html-Ctxsat8s.js.map +1 -0
  33. package/dist/i18n-Dlie-Jrb.js +675 -0
  34. package/dist/i18n-Dlie-Jrb.js.map +1 -0
  35. package/dist/index.d.ts +65 -0
  36. package/dist/index.js +5980 -6451
  37. package/dist/index.js.map +1 -1
  38. package/dist/java-CNN5-pjU.js +5 -0
  39. package/dist/java-CNN5-pjU.js.map +1 -0
  40. package/dist/java-CaG1IqbK.js +2 -0
  41. package/dist/javascript--0qAxhnA.js +2 -0
  42. package/dist/javascript-Bk0bJ4nQ.js +5 -0
  43. package/dist/javascript-Bk0bJ4nQ.js.map +1 -0
  44. package/dist/json-DFt_0dbD.js +5 -0
  45. package/dist/json-DFt_0dbD.js.map +1 -0
  46. package/dist/json-DVwBUiza.js +2 -0
  47. package/dist/jsx-DkJfxbAs.js +5 -0
  48. package/dist/jsx-DkJfxbAs.js.map +1 -0
  49. package/dist/jsx-cVAJ0Z2c.js +2 -0
  50. package/dist/kotlin-CQsNEM2o.js +5 -0
  51. package/dist/kotlin-CQsNEM2o.js.map +1 -0
  52. package/dist/markdown-nUtTZkU8.js +5 -0
  53. package/dist/markdown-nUtTZkU8.js.map +1 -0
  54. package/dist/php-CQpsnvwU.js +20 -0
  55. package/dist/php-CQpsnvwU.js.map +1 -0
  56. package/dist/python-D0AaDoWC.js +5 -0
  57. package/dist/python-D0AaDoWC.js.map +1 -0
  58. package/dist/rolldown-runtime-B0aSnxlc.js +20 -0
  59. package/dist/ruby-lBDztqPf.js +34 -0
  60. package/dist/ruby-lBDztqPf.js.map +1 -0
  61. package/dist/rust-BrRMzTsN.js +5 -0
  62. package/dist/rust-BrRMzTsN.js.map +1 -0
  63. package/dist/scss-CoGT9c_3.js +7 -0
  64. package/dist/scss-CoGT9c_3.js.map +1 -0
  65. package/dist/shellscript-B2AvTo4A.js +5 -0
  66. package/dist/shellscript-B2AvTo4A.js.map +1 -0
  67. package/dist/shellscript-Dfpezy65.js +2 -0
  68. package/dist/simulate-run-detail-C2IW2Sl0.js +1013 -0
  69. package/dist/simulate-run-detail-C2IW2Sl0.js.map +1 -0
  70. package/dist/sql-D_W5grEC.js +2 -0
  71. package/dist/sql-q7LBKUMn.js +5 -0
  72. package/dist/sql-q7LBKUMn.js.map +1 -0
  73. package/dist/style.css +1 -1
  74. package/dist/swift-B7Z-rXzN.js +5 -0
  75. package/dist/swift-B7Z-rXzN.js.map +1 -0
  76. package/dist/toml-CIQJnU5u.js +5 -0
  77. package/dist/toml-CIQJnU5u.js.map +1 -0
  78. package/dist/tsx-BqSm8fWw.js +5 -0
  79. package/dist/tsx-BqSm8fWw.js.map +1 -0
  80. package/dist/tsx-DiMnnori.js +2 -0
  81. package/dist/typescript-C4BXhs_3.js +5 -0
  82. package/dist/typescript-C4BXhs_3.js.map +1 -0
  83. package/dist/typescript-DFf19o_s.js +2 -0
  84. package/dist/vue-DnpuW72P.js +23 -0
  85. package/dist/vue-DnpuW72P.js.map +1 -0
  86. package/dist/xml-C-8BjZCy.js +7 -0
  87. package/dist/xml-C-8BjZCy.js.map +1 -0
  88. package/dist/yaml-BZ3x6E3N.js +5 -0
  89. package/dist/yaml-BZ3x6E3N.js.map +1 -0
  90. package/dist/yaml-BswqmnDe.js +2 -0
  91. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-Dlie-Jrb.js","names":[],"sources":["../src/components/ui/button.tsx","../src/theming/i18n-types.ts","../src/theming/messages/en.ts","../src/theming/messages/zh-CN.ts","../src/theming/i18n.tsx"],"sourcesContent":["import { cn } from '#lib/utils';\nimport { Button as ButtonPrimitive } from '@base-ui/react/button';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport * as React from 'react';\n\nconst buttonVariants = cva(\n \"appearance-none border-0 border-solid bg-transparent inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40',\n outline:\n 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n 'default': 'h-9 px-4 py-2 has-[>svg]:px-3',\n 'xs': \"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\",\n 'sm': 'h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5',\n 'lg': 'h-10 rounded-md px-6 has-[>svg]:px-4',\n 'icon': 'size-9',\n 'icon-xs': \"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3\",\n 'icon-sm': 'size-8',\n 'icon-lg': 'size-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nconst Button = React.forwardRef<\n React.ComponentRef<typeof ButtonPrimitive>,\n React.ComponentPropsWithoutRef<typeof ButtonPrimitive> & VariantProps<typeof buttonVariants>\n>(function Button({ className, variant = 'default', size = 'default', ...props }, ref) {\n return (\n <ButtonPrimitive\n ref={ref}\n data-slot='button'\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n});\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","/**\n * Zero-dependency i18n infrastructure (Provider injection, roadmap Option A).\n *\n * Design:\n * - English messages are the source of truth (`TranslationKey` derives from it)\n * - `I18nProvider` resolves translations via fallback chain:\n * consumer overrides → locale messages → English → key itself\n * - `useT()` returns a translate function with `{{param}}` interpolation\n * - Locale switching is a simple context value change (no re-render storm)\n */\n\n/** Flat dot-notation message key, e.g. `'dt.toolbar.import'`. */\nexport type TranslationKey = string;\n\n/** Simple `{{param}}` interpolation parameters. */\nexport type InterpolationParams = Record<string, string | number>;\n\n/** Full message catalog for a single locale. */\nexport type MessageCatalog = Record<string, string>;\n\n/** Parse `{{param}}` placeholders in a template string. */\nexport function interpolate(template: string, params?: InterpolationParams): string {\n if (!params) return template;\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) =>\n params[key] !== undefined ? String(params[key]) : `{{${key}}}`,\n );\n}\n","/**\n * English message catalog — source of truth for all user-visible strings.\n * Keys use flat dot notation: `{component}.{context}.{element}`.\n * Chinese translation lives in `zh-CN.ts`.\n */\nexport const en = {\n // ── common ──\n 'common.ok': 'OK',\n 'common.cancel': 'Cancel',\n 'common.remove': 'Remove',\n 'common.delete': 'Delete',\n 'common.retry': 'Retry',\n 'common.close': 'Close',\n 'common.update': 'Update',\n 'common.create': 'Create',\n 'common.convert': 'Convert',\n 'common.format': 'Format',\n 'common.recover': 'Recover',\n 'common.copy': 'Copy',\n\n // ── decision table ──\n 'dt.toolbar.import': 'Import Excel',\n 'dt.toolbar.export': 'Export Excel',\n 'dt.toolbar.addRowAbove': 'Add row above',\n 'dt.toolbar.addRowBelow': 'Add row below',\n 'dt.toolbar.removeRow': 'Remove row',\n 'dt.toolbar.toggleColumns': 'Toggle columns',\n 'dt.toolbar.undo': 'Undo cell changes',\n 'dt.toolbar.redo': 'Redo cell changes',\n 'dt.cellsSkipped': 'Skipped {{count}} non-writable cell(s)',\n 'dt.toolbar.removeRowConfirm': 'Remove row?',\n 'dt.table.column': 'Table column',\n 'dt.table.excelColumn': 'Excel column',\n 'dt.table.selectExcelColumn': 'Select Excel column',\n 'dt.table.description': 'Description',\n 'dt.table.selectDescription': 'Select Excel column for description',\n 'dt.table.reorderFields': 'Reorder fields',\n\n // ── field edit ──\n 'dt.field.input.add': 'Add Input',\n 'dt.field.input.label': 'Input Field',\n 'dt.field.output.add': 'Add Output',\n 'dt.field.output.label': 'Output Field',\n 'dt.field.label': 'Field label',\n 'dt.field.browse': 'Browse fields',\n 'dt.field.name': 'Name',\n 'dt.field.type': 'Field Type',\n 'dt.field.outputType': 'Output Type',\n 'dt.field.editColumn': 'Edit column',\n 'dt.field.removeColumn': 'Remove column',\n 'dt.field.removeConfirm': 'Remove this column?',\n 'dt.field.wrapQuotes': 'Wrap values in quotes',\n 'dt.field.selectDictionary': 'Select dictionary...',\n 'dt.field.allowCustomValues': 'Allow custom values',\n 'dt.toolbar.simulationIndex': 'Simulation index:',\n\n // ── excel dialog ──\n 'dt.excel.title': 'Map Excel data',\n 'dt.excel.input': 'Input',\n 'dt.excel.output': 'Output',\n 'dt.excel.enterFieldName': 'Enter field name',\n\n // ── decision graph ──\n 'dg.node.decisionTables': 'Decision Tables',\n 'dg.node.expressions': 'Expressions',\n 'dg.node.functions': 'Functions',\n 'dg.node.editExpression': 'Edit Expression',\n // ── version history (appshell panel, kernel catalog) ──\n 'vh.title': 'Version history',\n 'vh.description.some': '{{count}} version(s). Restoring loads that version as the current one.',\n 'vh.description.none': 'No versions yet. Each save creates one.',\n 'vh.loading': 'Loading…',\n 'vh.filter.label': 'Filter versions',\n 'vh.filter.placeholder': 'Filter by name or revision…',\n 'vh.filter.noMatch': 'No versions match \"{{query}}\".',\n 'vh.noChanges': 'No changes',\n 'vh.changes': 'changes',\n 'vh.diff.tooLarge': 'Change too large for a line-level diff',\n 'vh.diff.noLineChanges': 'No line-level changes',\n 'vh.entry.current': 'current',\n 'vh.entry.auto': 'auto',\n 'vh.entry.pinned': 'pinned',\n 'vh.restore': 'Restore',\n 'vh.rename.title': 'Rename version',\n 'vh.rename.aria': 'Rename version {{revision}}',\n 'vh.name.aria': 'Name version {{revision}}',\n 'vh.name.placeholder': 'Version name',\n 'vh.name.button': 'Name',\n 'vh.pin.title': 'Pin version',\n 'vh.pin.aria': 'Pin version {{revision}}',\n 'vh.unpin.title': 'Unpin version',\n 'vh.unpin.aria': 'Unpin version {{revision}}',\n 'vh.compare.button': 'Compare',\n 'vh.compare.title': 'Compare against this version on the canvas',\n 'vh.compare.aria': 'Compare against version {{revision}}',\n 'vh.compare.exit.button': 'Exit compare',\n 'vh.compare.exit.title': 'Exit compare mode',\n 'vh.compare.exit.aria': 'Exit compare (was against {{revision}})',\n 'vh.compare.entry': 'comparing',\n 'dg.toolbar.uploadJson': 'Upload JSON',\n 'dg.toolbar.uploadExcel': 'Upload Excel',\n 'dg.toolbar.autoLayout': 'Auto layout',\n 'dg.toolbar.downloadJson': 'Download JSON',\n 'dg.toolbar.downloadExcel': 'Download Excel',\n 'dg.toolbar.searchNodes': 'Search nodes',\n 'dg.command.open': 'Open command menu (Ctrl+K)',\n 'dg.command.placeholder': 'Search commands, nodes, panels…',\n 'dg.command.empty': 'No matching commands',\n 'dg.command.groupAdd': 'Add node',\n 'dg.command.groupPanels': 'Panels',\n 'dg.command.groupNodes': 'Canvas nodes',\n 'dg.toolbar.closeClose': 'Close panel',\n 'dg.simulation.toastOk': 'Simulation finished',\n 'dg.simulation.toastErr': 'Simulation failed',\n 'dg.simulation.runsEmpty': 'No runs yet — run a simulation to build history',\n 'dg.simulation.pin': 'Pin run (keep output across reloads)',\n 'dg.simulation.unpin': 'Unpin run',\n 'dg.simulation.copy': 'Copy JSON',\n 'dg.simulation.copied': 'Copied',\n 'dg.simulation.payloadEvicted': 'Run payload evicted (unpinned) — re-run to inspect',\n 'dg.simulation.runsClear': 'Clear history',\n 'dg.toolbar.schema': 'JSON Schema',\n 'dg.tabs.close': 'Close',\n 'dg.tabs.closeAll': 'Close all Tabs',\n 'dg.tabs.closeOthers': 'Close other Tabs',\n 'dg.tabs.closeRight': 'Close Tabs to the right',\n 'dg.tabs.closeLeft': 'Close Tabs to the left',\n 'dg.jsonSchema.title': 'Convert to JSON Schema',\n 'dg.jsonSchema.copyJson': 'Copy JSON',\n 'dg.node.documentation': 'Documentation',\n 'dg.node.duplicate': 'Duplicate',\n 'dg.node.deleteNode': 'Delete node',\n 'dg.schema.formatCode': 'Format code',\n 'dg.schema.importFromJson': 'Import from JSON',\n 'dg.excel.wrapQuotes': 'Wrap value in quotes',\n 'dg.excel.enterFieldName': 'Enter field name',\n 'dg.condition.removeConfirm': 'Remove condition?',\n 'dg.condition.namePlaceholder': 'Path name',\n 'dt.toolbar.rowRemoved': 'Row removed',\n\n // ── expression ──\n 'expression.placeholder': 'Expression',\n 'expression.key': 'Key',\n 'expression.addRowAbove': 'Add row above',\n 'expression.addRowBelow': 'Add row below',\n\n // ── function ──\n 'func.debugger.copy': 'Copy to clipboard',\n 'func.debugger.searchLogs': 'Search logs',\n 'func.debugger.copied': 'Copied to clipboard',\n 'func.debugger.formatCode': 'Format code',\n 'func.debugger.importLibrary': 'Import library',\n 'func.debugger.goToDocs': 'Go to documentation',\n 'func.debugger.msSinceRun': 'Time since start of execution of script.',\n 'misc.search': 'Search...',\n 'func.preview.noResults': 'Run simulation to see the results',\n\n // ── safe boundary ──\n 'safe.title': 'Something went wrong',\n 'safe.retry': 'Retry',\n\n // ── request node ──\n 'request': 'Request',\n 'request.dataLabel': 'Example data',\n 'request.dataSourceSaved': 'Data saved',\n 'request.dataTypeMismatchWarning':\n 'The current request data type does not match the definitions. To change the definition, update it in Definitions.',\n 'request.downloadJsonNoData': 'No data available to download',\n 'request.jsonInvalidError': 'Enter valid JSON or JSON5',\n 'request.jsonObjectError': 'Enter a JSON object',\n 'request.saveDataSourceFailed': 'Failed to save data',\n 'request.selectDataSourceFirst': 'Select a data first',\n 'request.typeArray': 'Array',\n 'request.typeBoolean': 'Boolean',\n 'request.typeDatetime': 'Datetime',\n 'request.typeNumber': 'Number',\n 'request.typeObject': 'Object',\n 'request.typeString': 'String',\n 'request.uploadJsonFailed': 'Failed to upload JSON',\n 'request.uploadJsonObjectRequired': 'Uploaded JSON must be an object',\n 'request.uploadJsonSuccess': 'JSON uploaded successfully',\n\n 'request.key': 'Key',\n 'request.type': 'Type',\n 'request.description': 'Description',\n 'request.save': 'Save',\n 'request.schema': 'Schema',\n 'request.addChildField': 'Add child field',\n 'request.addDataSource': 'Add data',\n 'request.addField': 'Add field',\n 'request.childFieldNamePlaceholder': 'Child field name',\n 'request.createDataSource': 'Create data',\n 'request.definitionsTab': 'Definitions',\n 'request.deleteDataSourceConfirm': 'Delete this data?',\n 'request.deleteFieldConfirm': 'Delete this field?',\n 'request.downloadJsonTooltip': 'Download JSON for the current data ',\n 'request.exampleDescriptionPlaceholder': 'Add example description...',\n 'request.exampleFieldSummary': 'Field summary',\n 'request.exampleFieldSummaryAllMatch': 'Fields match definitions',\n 'request.exampleFieldSummaryConflicts': 'Type conflicts',\n 'request.exampleFieldSummaryDefinitions': 'Defined fields',\n 'request.exampleFieldSummaryExtra': 'Extra fields',\n 'request.exampleFieldSummaryMissing': 'Missing fields',\n 'request.examplesTab': 'Data',\n 'request.fieldDefaultValuePlaceholder': 'Default value',\n 'request.fieldDescriptionPlaceholder': 'Field description',\n 'request.fieldNamePlaceholder': 'Field name',\n 'request.formatSchema': 'Format schema',\n 'request.noDataSources': 'No data',\n 'request.driftSchemaChanged': 'Schema changed since last validation',\n 'request.driftMissing': 'missing',\n 'request.driftExtra': 'extra',\n 'request.driftConflicts': 'type conflicts',\n 'request.driftMigrate': 'Migrate',\n 'request.driftMigrateTooltip': 'Fill missing values from defaults and remove fields that no longer exist',\n 'request.driftMigrateAll': 'Migrate all',\n 'request.driftMigrateAllTooltip': 'Apply the safe migration to every example',\n 'request.driftConfirmValid': 'Mark valid',\n 'request.driftConfirmTooltip': 'The example already matches the current schema - record its fingerprint',\n 'request.driftConstraints': 'constraint violations',\n 'request.importContract': 'Import contract',\n 'request.importContractTooltip': 'Adopt a shared contract envelope (contractVersion + schema + examples)',\n 'request.importContractSuccess': 'Contract envelope imported',\n 'request.importContractInvalidJson': 'The file is not valid JSON',\n 'request.importContractInvalidShape': 'Not a contract envelope (contractVersion + schema + examples are required)',\n 'request.importContractUnsupportedVersion': 'The envelope contractVersion is newer than this version supports',\n 'request.exportContract': 'Export contract',\n 'request.exportContractTooltip': 'Download the contract envelope for sharing (OpenAPI / mock / fixtures)',\n 'request.showRemainingSources': 'Show remaining examples',\n 'request.runAll': 'Run all',\n 'request.runAllTooltip': 'Execute every example against the current graph (runs on the host engine)',\n 'request.runAllFailed': 'Run failed',\n 'request.runAllMatrixTitle': 'Run report',\n 'request.runAllMatrixLabel': 'Run all result matrix',\n 'request.runAllPassed': 'passed',\n 'request.runAllFailedCount': 'failed',\n 'request.outcomePassed': 'passed',\n 'request.outcomeAssertionFailed': 'assertion failed',\n 'request.outcomeExecutionError': 'error',\n 'request.modeDesign': 'Design',\n 'request.modeCode': 'Code',\n 'request.designModeTooltip': 'Structured field editor',\n 'request.examplesSwitcherLabel': 'Examples',\n 'request.selectFieldHint': 'Select a field in the tree to edit it',\n 'request.objectChildrenHint': 'Child fields',\n 'request.arrayCodeHint': 'Array item editing lives in Code mode.',\n 'request.examplePreviewTitle': 'Example',\n 'request.debugInSimulator': 'Debug',\n 'request.fixturesNoInputNode': 'No input node in this graph',\n 'request.fixturesNoExamples': 'The input node has no examples yet',\n 'request.fixturesRunning': 'Running…',\n 'cf.argsDriftTitle': 'Function argument drift',\n 'cf.argsDriftRows': 'row(s)',\n 'cf.dollarFormBand':\n '$.-path args detected — kwargs scope never resolves hBcpaths (always null); migrate to bare paths',\n 'cf.dollarFormMigrate': 'Migrate $. paths',\n 'cf.argsDriftMissing': 'missing',\n 'cf.argsDriftUnrecognized': 'unrecognized',\n 'cf.argsKwargsCollision': 'kwargs envelope ambiguity',\n 'cf.argsDanglingRefs': 'dangling refs',\n 'dollar.inputRefViaDollar':\n '\"{{ref}}\" reads an input field via $ — expression rows only cover row outputs; write \"{{suggestion}}\" (bare name) or the row is silently dropped',\n 'dollar.keyShadowsInput':\n 'Key \"{{name}}\" collides with an input field — expressions keep reading the input while the output overrides the key',\n 'dollar.tableNav':\n '$. references never match in full-expression cells — use \"$root.\" or a bare name ({{count}} cell(s) flagged)',\n 'cf.argsFillMissing': 'Fill missing defaults',\n 'cf.instanceOverview': 'Instances',\n 'cf.parallelHint': 'runs in parallel',\n 'cf.duplicateKeyError': 'Duplicate output key — parallel results will overwrite',\n 'cf.scheduleCycleError': 'Circular dependency detected: {{keys}}',\n 'cf.instanceLayerHint': 'Execution layer {{layer}}',\n 'cf.modeTable': 'Table',\n 'cf.modeCode': 'Code',\n 'cf.codeInvalidJson': 'Invalid JSON',\n 'cf.modeLiteral': 'Value',\n 'cf.modeExpression': 'Expression',\n 'cf.modeReference': 'Reference',\n 'cf.addInstance': 'Add instance',\n 'cf.paramKey': 'Output key',\n 'cf.paramRequired': 'required',\n 'cf.paramSection': 'Parameters',\n 'cf.dependsOn': 'Depends on',\n 'cf.instanceEmpty': 'No instances yet',\n 'cf.selectInstance': 'Select an instance on the left to edit',\n 'cf.noParams': 'This function declares no parameters',\n 'cf.unknownFunction': 'Function not in scope — pick one from the catalog',\n 'cf.result': 'Result',\n 'cf.lastRunHint': 'From the last simulation run — re-run after edits to refresh',\n 'cf.noFunctionsInScope': 'No functions in scope — host must provide a function catalog (customFunctions/schema)',\n 'cf.orphanScopeHint': 'Original namespace offline ({{kind}}) — all functions are selectable',\n 'cf.field': 'Field',\n 'cf.fieldInsert': 'Insert field path',\n 'request.noDefinitions': 'No field definitions',\n 'request.schemaPriorityTooltip':\n 'Schema has the highest priority. Definitions and example data sync into schema, but schema remains the source of truth.',\n 'request.simulateTooltip': 'Open simulator',\n 'request.toggleFieldDescriptionsTooltip': 'Toggle field description hints',\n 'request.uploadJsonTooltip': 'Upload JSON for the current data',\n\n // ── custom function ──\n 'cf.key': 'Key',\n 'cf.expression': 'Expression',\n 'cf.function': 'Function',\n 'cf.code': 'Code',\n 'cf.legacy': 'Legacy',\n 'cf.addRow': 'Add Row',\n\n // ── simulator ──\n 'simulator.boundRequestNodeNotFound': 'Bound request node not found',\n 'simulator.requestMustBeObjectToSave': 'The current request must be a JSON object to save',\n 'simulator.description':\n 'Your business context that enters through the Request node, starting the decision process. Supply JSON or JSON5 format.',\n 'simulator.currentBinding': 'Current binding',\n 'simulator.nodeRequired': 'Request node is required to run the graph. Drag-and-drop it from the Components panel.',\n 'simulator.run': 'Run',\n 'simulator.formatSuccess': 'Formatted successfully!',\n 'simulator.formatFailed': 'Failed to format. Invalid JSON format.',\n 'simulator.nothingToCopy': 'Nothing to copy.',\n 'simulator.copiedToClipboard': 'Copied to clipboard!',\n 'simulator.copyFailedInvalidJson': 'Failed to copy. Invalid JSON format.',\n 'simulator.dataRequiredBeforeRun': 'The current request is empty. Please add example data first.',\n 'simulator.invalidFormatTitle': 'Invalid request format',\n 'simulator.invalidFormatDescription': 'Enter a valid JSON or JSON5 object before running.',\n 'simulator.searchPlaceholder': 'Search nodes...',\n 'simulator.clear': 'Clear',\n 'simulator.readyTitle': 'Ready to simulate!',\n 'simulator.readyHint': 'Run a request to see the node trace in action.',\n 'simulator.learnMore': 'Learn more',\n\n // ── misc ──\n 'common.clear': 'Clear',\n 'common.undo': 'Undo',\n 'misc.delete': 'Delete',\n} as const;\n\nexport type TranslationKey = keyof typeof en;\n","/** Chinese (Simplified) message catalog — 全量对译。 */\nexport const zhCN: Record<string, string> = {\n 'common.ok': '确定',\n 'common.cancel': '取消',\n 'common.remove': '移除',\n 'common.delete': '删除',\n 'common.retry': '重试',\n 'common.close': '关闭',\n 'common.update': '更新',\n 'common.create': '创建',\n 'common.convert': '转换',\n 'common.format': '格式化',\n 'common.recover': '恢复',\n 'common.copy': '复制',\n\n 'dt.toolbar.import': '导入 Excel',\n 'dt.toolbar.export': '导出 Excel',\n 'dt.toolbar.addRowAbove': '在上方添加行',\n 'dt.toolbar.addRowBelow': '在下方添加行',\n 'dt.toolbar.removeRow': '删除行',\n 'dt.toolbar.toggleColumns': '显示隐藏列',\n 'dt.toolbar.undo': '撤销格子变更',\n 'dt.toolbar.redo': '重做格子变更',\n 'dt.cellsSkipped': '已跳过 {{count}} 个不可写格',\n 'dt.toolbar.removeRowConfirm': '确定删除该行?',\n 'dt.table.column': '表格列',\n 'dt.table.excelColumn': 'Excel 列',\n 'dt.table.selectExcelColumn': '选择 Excel 列',\n 'dt.table.description': '描述',\n 'dt.table.selectDescription': '选择描述对应的 Excel 列',\n 'dt.table.reorderFields': '调整字段顺序',\n\n 'dt.field.input.add': '添加输入',\n 'dt.field.input.label': '输入字段',\n 'dt.field.output.add': '添加输出',\n 'dt.field.output.label': '输出字段',\n 'dt.field.label': '字段标签',\n 'dt.field.browse': '浏览字段',\n 'dt.field.name': '名称',\n 'dt.field.type': '字段类型',\n 'dt.field.outputType': '输出类型',\n 'dt.field.editColumn': '编辑列',\n 'dt.field.removeColumn': '移除列',\n 'dt.field.removeConfirm': '确定移除该列?',\n 'dt.field.wrapQuotes': '值用引号包裹',\n 'dt.field.selectDictionary': '选择字典...',\n 'dt.field.allowCustomValues': '允许自定义值',\n 'dt.toolbar.simulationIndex': '仿真索引:',\n\n 'dt.excel.title': '映射 Excel 数据',\n 'dt.excel.input': '输入',\n 'dt.excel.output': '输出',\n 'dt.excel.enterFieldName': '输入字段名',\n\n 'dg.node.decisionTables': '决策表',\n 'dg.node.expressions': '表达式',\n 'dg.node.functions': '函数',\n 'dg.node.editExpression': '编辑表达式',\n 'vh.title': '版本历史',\n 'vh.description.some': '{{count}} 个版本。恢复会将该版本载入为当前版本。',\n 'vh.description.none': '暂无版本。保存后创建第一个版本。',\n 'vh.loading': '加载中…',\n 'vh.filter.label': '筛选版本',\n 'vh.filter.placeholder': '按名称或版本号筛选…',\n 'vh.filter.noMatch': '没有匹配“{{query}}”的版本。',\n 'vh.noChanges': '无变化',\n 'vh.changes': '处变更',\n 'vh.diff.tooLarge': '变更过大,已省略行级差异',\n 'vh.diff.noLineChanges': '无行级变更',\n 'vh.entry.current': '当前',\n 'vh.entry.auto': '自动',\n 'vh.entry.pinned': '已钉住',\n 'vh.restore': '恢复',\n 'vh.rename.title': '重命名版本',\n 'vh.rename.aria': '重命名版本 {{revision}}',\n 'vh.name.aria': '命名版本 {{revision}}',\n 'vh.name.placeholder': '版本名称',\n 'vh.name.button': '命名',\n 'vh.pin.title': '钉住版本',\n 'vh.pin.aria': '钉住版本 {{revision}}',\n 'vh.unpin.title': '取消钉住',\n 'vh.unpin.aria': '取消钉住版本 {{revision}}',\n 'vh.compare.button': '对比',\n 'vh.compare.title': '在画布上与该版本对比',\n 'vh.compare.aria': '与版本 {{revision}} 对比',\n 'vh.compare.exit.button': '退出对比',\n 'vh.compare.exit.title': '退出对比模式',\n 'vh.compare.exit.aria': '退出对比(此前对比 {{revision}})',\n 'vh.compare.entry': '对比中',\n 'dg.toolbar.uploadJson': '上传 JSON',\n 'dg.toolbar.uploadExcel': '上传 Excel',\n 'dg.toolbar.autoLayout': '一键整理',\n 'dg.toolbar.downloadJson': '下载 JSON',\n 'dg.toolbar.downloadExcel': '下载 Excel',\n 'dg.toolbar.searchNodes': '搜索节点',\n 'dg.command.open': '打开命令面板(Ctrl+K)',\n 'dg.command.placeholder': '搜索命令、节点、面板…',\n 'dg.command.empty': '没有匹配的命令',\n 'dg.command.groupAdd': '添加节点',\n 'dg.command.groupPanels': '面板',\n 'dg.command.groupNodes': '画布节点',\n 'dg.toolbar.closeClose': '关闭面板',\n 'dg.simulation.toastOk': '仿真完成',\n 'dg.simulation.toastErr': '仿真失败',\n 'dg.simulation.runsEmpty': '暂无运行——跑一次仿真以积累历史',\n 'dg.simulation.pin': '置顶保留(刷新后仍可回看输出)',\n 'dg.simulation.unpin': '取消置顶',\n 'dg.simulation.copy': '复制 JSON',\n 'dg.simulation.copied': '已复制',\n 'dg.simulation.payloadEvicted': '历史载荷已淘汰(未置顶)——重新运行可回看',\n 'dg.simulation.runsClear': '清空历史',\n 'dg.toolbar.schema': 'JSON Schema',\n 'dg.tabs.close': '关闭',\n 'dg.tabs.closeAll': '关闭所有标签页',\n 'dg.tabs.closeOthers': '关闭其他标签页',\n 'dg.tabs.closeRight': '关闭右侧标签页',\n 'dg.tabs.closeLeft': '关闭左侧标签页',\n 'dg.jsonSchema.title': '转换为 JSON Schema',\n 'dg.jsonSchema.copyJson': '复制 JSON',\n 'dg.node.documentation': '文档',\n 'dg.node.duplicate': '复制节点',\n 'dg.node.deleteNode': '删除节点',\n 'dg.schema.formatCode': '格式化代码',\n 'dg.schema.importFromJson': '从 JSON 导入',\n 'dg.excel.wrapQuotes': '值包裹引号',\n 'dg.excel.enterFieldName': '输入字段名',\n 'dg.condition.removeConfirm': '移除此条件?',\n 'dg.condition.namePlaceholder': '路径名',\n 'dt.toolbar.rowRemoved': '已删除该行',\n\n 'expression.placeholder': '表达式',\n 'expression.key': '键名',\n 'expression.addRowAbove': '在上方添加行',\n 'expression.addRowBelow': '在下方添加行',\n\n 'func.debugger.copy': '复制到剪贴板',\n 'func.debugger.searchLogs': '搜索日志',\n 'func.debugger.formatCode': '格式化代码',\n 'func.debugger.importLibrary': '导入库',\n 'func.debugger.goToDocs': '前往文档',\n 'func.debugger.msSinceRun': '脚本开始执行至今的时长。',\n 'misc.search': '搜索...',\n 'func.debugger.copied': '已复制到剪贴板',\n 'func.preview.noResults': '运行模拟器以查看结果',\n\n 'safe.title': '出现问题',\n 'safe.retry': '重试',\n\n // ── request node ──\n 'request': '请求',\n 'request.dataLabel': '用例数据',\n 'request.dataSourceSaved': '用例数据保存成功',\n 'request.dataTypeMismatchWarning': '当前请求数据类型格式与定义不吻合,如需要修改定义,请前往请求定义处修改。',\n 'request.downloadJsonNoData': '当前无可下载的数据内容',\n 'request.jsonInvalidError': '请输入合法的 JSON 或 JSON5',\n 'request.jsonObjectError': '请输入 JSON 对象',\n 'request.saveDataSourceFailed': '当前用例数据保存失败',\n 'request.selectDataSourceFirst': '请先选择一条用例数据',\n 'request.typeArray': 'Array',\n 'request.typeBoolean': 'Boolean',\n 'request.typeDatetime': 'Datetime',\n 'request.typeNumber': 'Number',\n 'request.typeObject': 'Object',\n 'request.typeString': 'String',\n 'request.uploadJsonFailed': 'JSON 上传失败',\n 'request.uploadJsonObjectRequired': '上传的 JSON 必须是对象',\n 'request.uploadJsonSuccess': 'JSON 上传成功',\n\n 'request.key': '键',\n 'request.type': '类型',\n 'request.description': '描述',\n 'request.save': '保存',\n 'request.schema': 'Schema',\n 'request.addChildField': '新增子字段',\n 'request.addDataSource': '新增用例数据',\n 'request.addField': '新增字段',\n 'request.childFieldNamePlaceholder': '子字段名',\n 'request.createDataSource': '创建用例数据',\n 'request.definitionsTab': '类型定义',\n 'request.deleteDataSourceConfirm': '确认删除当前用例数据?',\n 'request.deleteFieldConfirm': '确认删除当前字段?',\n 'request.downloadJsonTooltip': '下载当前用例数据 JSON',\n 'request.exampleDescriptionPlaceholder': '添加示例描述...',\n 'request.exampleFieldSummary': '字段摘要',\n 'request.exampleFieldSummaryAllMatch': '字段与定义一致',\n 'request.exampleFieldSummaryConflicts': '类型冲突',\n 'request.exampleFieldSummaryDefinitions': '定义字段',\n 'request.exampleFieldSummaryExtra': '额外字段',\n 'request.exampleFieldSummaryMissing': '缺失字段',\n 'request.examplesTab': '用例数据',\n 'request.fieldDefaultValuePlaceholder': '默认值',\n 'request.fieldDescriptionPlaceholder': '字段描述',\n 'request.fieldNamePlaceholder': '输入字段名',\n 'request.formatSchema': '格式化 Schema',\n 'request.noDataSources': '暂无用例数据',\n 'request.driftSchemaChanged': 'Schema 已变更,待重新校验',\n 'request.driftMissing': '缺字段',\n 'request.driftExtra': '多余字段',\n 'request.driftConflicts': '类型冲突',\n 'request.driftMigrate': '迁移',\n 'request.driftMigrateTooltip': '按定义默认值补齐缺失字段,并移除已不存在的多余字段',\n 'request.driftMigrateAll': '全部迁移',\n 'request.driftMigrateAllTooltip': '对全部用例执行安全迁移',\n 'request.driftConfirmValid': '确认有效',\n 'request.driftConfirmTooltip': '用例与当前 Schema 相容——记录指纹锚',\n 'request.driftConstraints': '约束违例',\n 'request.importContract': '导入契约',\n 'request.importContractTooltip': '采用分享的契约信封(contractVersion + Schema + 用例)',\n 'request.importContractSuccess': '契约信封已导入',\n 'request.importContractInvalidJson': '文件不是合法的 JSON',\n 'request.importContractInvalidShape': '不是契约信封(需要 contractVersion + schema + examples)',\n 'request.importContractUnsupportedVersion': '信封 contractVersion 高于当前支持的版本',\n 'request.exportContract': '导出契约',\n 'request.exportContractTooltip': '下载契约信封用于分享(OpenAPI / mock / 测试夹具)',\n 'request.showRemainingSources': '显示其余用例',\n 'request.runAll': '全部运行',\n 'request.runAllTooltip': '对全部用例执行整图仿真(宿主引擎执行)',\n 'request.runAllFailed': '运行失败',\n 'request.runAllMatrixTitle': '运行报告',\n 'request.runAllMatrixLabel': '全部运行结果矩阵',\n 'request.runAllPassed': '通过',\n 'request.runAllFailedCount': '失败',\n 'request.outcomePassed': '通过',\n 'request.outcomeAssertionFailed': '断言失败',\n 'request.outcomeExecutionError': '执行错误',\n 'request.modeDesign': '设计',\n 'request.modeCode': '代码',\n 'request.designModeTooltip': '结构化字段编辑器',\n 'request.examplesSwitcherLabel': '用例',\n 'request.selectFieldHint': '在左侧字段树中选择要编辑的字段',\n 'request.objectChildrenHint': '子字段',\n 'request.arrayCodeHint': '数组元素的编辑在 Code 模式进行。',\n 'request.examplePreviewTitle': '用例预览',\n 'request.debugInSimulator': '调试',\n 'request.fixturesNoInputNode': '图中没有输入节点',\n 'request.fixturesNoExamples': '输入节点还没有用例',\n 'request.fixturesRunning': '运行中…',\n 'cf.argsDriftTitle': '函数参数漂移',\n 'cf.argsDriftRows': '行',\n 'cf.dollarFormBand': '检测到 $. 路径形态实参——kwargs 域不解析 hBc路径(恒 null),可迁移为裸路径',\n 'cf.dollarFormMigrate': '迁移 $. 路径',\n 'cf.argsDriftMissing': '缺参',\n 'cf.argsDriftUnrecognized': '未识别键',\n 'cf.argsKwargsCollision': 'kwargs 信封歧义',\n 'cf.argsDanglingRefs': '悬空引用',\n 'dollar.inputRefViaDollar':\n '\"{{ref}}\" 经 $ 引输入字段——表达式行只覆盖行输出;请写裸名 \"{{suggestion}}\",否则该行将被静默丢弃',\n 'dollar.keyShadowsInput': '键 \"{{name}}\" 与输入字段同名——表达式仍读输入值,但输出会覆盖该字段',\n 'dollar.tableNav': '全表达式单元含 \"$.\" 引用恒不命中——请改用 \"$root.\" 或裸名(共 {{count}} 处)',\n 'cf.argsFillMissing': '补缺失默认值',\n 'cf.instanceOverview': '函数实例',\n 'cf.parallelHint': '并行执行',\n 'cf.duplicateKeyError': '输出键重复——并行结果将相互覆盖',\n 'cf.scheduleCycleError': '检测到循环依赖:{{keys}}',\n 'cf.instanceLayerHint': '执行层 {{layer}}',\n 'cf.modeTable': '表格',\n 'cf.modeCode': '代码',\n 'cf.codeInvalidJson': 'JSON 格式错误',\n 'cf.modeLiteral': '值',\n 'cf.modeExpression': '表达式',\n 'cf.modeReference': '引用',\n 'cf.addInstance': '添加实例',\n 'cf.paramKey': '输出键',\n 'cf.paramRequired': '必填',\n 'cf.paramSection': '参数',\n 'cf.dependsOn': '依赖',\n 'cf.instanceEmpty': '暂无函数实例',\n 'cf.selectInstance': '在左侧选择一个实例进行编辑',\n 'cf.noParams': '该函数未声明参数',\n 'cf.unknownFunction': '函数未登记——请从目录重选',\n 'cf.result': '返回值',\n 'cf.lastRunHint': '上次仿真结果,图变更后重新运行以刷新',\n 'cf.noFunctionsInScope': '作用域内无函数——宿主需提供函数目录(customFunctions/schema)',\n 'cf.orphanScopeHint': '原命名空间已下线({{kind}}),当前可选全部函数',\n 'cf.field': '字段',\n 'cf.fieldInsert': '插入字段路径',\n 'request.noDefinitions': '暂无字段定义',\n 'request.schemaPriorityTooltip': 'Schema 优先级最高。类型定义和用例数据会同步到 Schema。',\n 'request.simulateTooltip': '打开模拟器',\n 'request.toggleFieldDescriptionsTooltip': '开关字段描述提示',\n 'request.uploadJsonTooltip': '上传用例数据 JSON',\n\n // ── simulator ──\n // ── custom function ──\n 'cf.key': '键',\n 'cf.expression': '表达式',\n 'cf.function': '函数',\n 'cf.code': '代码',\n 'cf.legacy': '旧版',\n 'cf.addRow': '添加行',\n\n // ── simulator ──\n 'simulator.boundRequestNodeNotFound': '未找到已绑定的请求节点',\n 'simulator.requestMustBeObjectToSave': '当前请求内容必须是 JSON 对象才能保存',\n 'simulator.description': '通过请求节点进入的业务上下文,启动决策流程。支持 JSON 或 JSON5 格式。',\n 'simulator.currentBinding': '当前绑定',\n 'simulator.nodeRequired': '需要请求节点才能运行图表。从组件面板拖放一个请求节点。',\n 'simulator.run': '运行',\n 'simulator.formatSuccess': '格式化成功!',\n 'simulator.formatFailed': '格式化失败。无效的 JSON 格式。',\n 'simulator.nothingToCopy': '没有可复制的内容。',\n 'simulator.copiedToClipboard': '已复制到剪贴板!',\n 'simulator.copyFailedInvalidJson': '复制失败。无效的 JSON 格式。',\n 'simulator.dataRequiredBeforeRun': '当前请求参数为空,请先添加用例数据',\n 'simulator.invalidFormatTitle': '请求格式无效',\n 'simulator.invalidFormatDescription': '请输入合法的 JSON 或 JSON5 对象后再运行。',\n 'simulator.searchPlaceholder': '搜索节点...',\n 'simulator.clear': '清空',\n 'simulator.readyTitle': '准备就绪,可以开始模拟!',\n 'simulator.readyHint': '运行一次请求即可查看节点执行轨迹。',\n 'simulator.learnMore': '了解更多',\n\n 'common.clear': '清空',\n 'common.undo': '撤销',\n 'misc.delete': '删除',\n};\n","import * as React from 'react';\n\nimport { type InterpolationParams, interpolate } from './i18n-types';\nimport { type TranslationKey, en } from './messages/en';\nimport { zhCN } from './messages/zh-CN';\n\nexport type { TranslationKey };\n\n/** Built-in locale catalogs. */\nconst BUILTIN: Record<string, Record<string, string>> = {\n en,\n 'zh-CN': zhCN,\n};\n\n/** Consumer-supplied overrides keyed by locale. */\nexport type I18nMessages = Record<string, string>;\n\ntype I18nContextValue = {\n locale: string;\n overrides: I18nMessages | undefined;\n};\n\ntype MessageLookup = (key: string) => string | undefined;\n\nconst I18nContext = React.createContext<I18nContextValue | undefined>(undefined);\n\nfunction getLookup(locale: string, overrides: I18nMessages | undefined): MessageLookup {\n const builtin = BUILTIN[locale] ?? BUILTIN[locale.split('-')[0]] ?? BUILTIN.en;\n return (key: string) => overrides?.[key] ?? builtin[key] ?? en[key as TranslationKey];\n}\n\n/**\n * i18n translate hook. Returns a `t(key, params?)` function.\n *\n * Resolution chain: consumer `messages` overrides → locale catalog → English → key.\n * Supports `{{param}}` interpolation.\n *\n * @example\n * const t = useT();\n * t('dt.toolbar.import') // 'Import Excel'\n */\nexport const useT = (): ((key: TranslationKey | string, params?: InterpolationParams) => string) => {\n const ctx = React.useContext(I18nContext);\n return React.useCallback(\n (key: string, params?: InterpolationParams) => {\n if (!ctx) return interpolate(en[key as TranslationKey] ?? key, params);\n const lookup = getLookup(ctx.locale, ctx.overrides);\n return interpolate(lookup(key) ?? key, params);\n },\n [ctx],\n );\n};\n\n/**\n * Creates a standalone translate function (outside React tree, e.g. for\n * non-component utilities). Does NOT react to context changes.\n */\nexport const createT = (locale: string, overrides?: I18nMessages) => {\n const lookup = getLookup(locale, overrides);\n return (key: string, params?: InterpolationParams) => interpolate(lookup(key) ?? key, params);\n};\n\n/** Internal provider — used by JdmConfigProvider to publish locale + overrides. */\nexport const I18nProvider: React.FC<{\n locale: string;\n overrides?: I18nMessages;\n children: React.ReactNode;\n}> = ({ locale, overrides, children }) => {\n const value = React.useMemo(() => ({ locale, overrides }), [locale, overrides]);\n return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>;\n};\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -76,11 +76,14 @@ declare type BaseNode<Component extends string, InputName extends string, Inputs
76
76
  group?: string;
77
77
  searchKeywords?: string[];
78
78
  meta?: CustomNodeSpecification<any, Component>['meta'];
79
+ tester?: CustomNodeSpecification<NodeData, Component>['tester'];
80
+ rank?: number;
79
81
  handleLeft?: boolean;
80
82
  handleRight?: boolean;
81
83
  inputs?: [...Inputs];
82
84
  generateNode?: CustomNodeSpecification<NodeData, Component>['generateNode'];
83
85
  renderNode?: CustomNodeSpecification<NodeData, Component>['renderNode'];
86
+ renderTab?: CustomNodeSpecification<NodeData, Component>['renderTab'];
84
87
  onNodeAdd?: CustomNodeSpecification<NodeData, Component>['onNodeAdd'];
85
88
  };
86
89
 
@@ -285,6 +288,27 @@ export declare const CustomFunctionTable: default_2.FC<TabCustomFunctionProps>;
285
288
 
286
289
  export declare const CustomKind = "customNode";
287
290
 
291
+ export declare type CustomNodePack = {
292
+ namespace: string;
293
+ version: string;
294
+ license?: 'oss' | 'proprietary';
295
+ specs: Array<CustomNodeSpecification<object, string>>;
296
+ migrations?: CustomNodePackMigration[];
297
+ };
298
+
299
+ export declare type CustomNodePackMigration = {
300
+ from: string;
301
+ describe: string;
302
+ migrate: (config: Record<string, unknown>) => Record<string, unknown>;
303
+ };
304
+
305
+ export declare type CustomNodeRef = {
306
+ kind?: unknown;
307
+ type?: unknown;
308
+ config?: unknown;
309
+ node?: unknown;
310
+ };
311
+
288
312
  export declare const customNodeSchema: z.ZodObject<{
289
313
  type: z.ZodLiteral<"customNode">;
290
314
  content: z.ZodObject<{
@@ -313,10 +337,19 @@ export declare type CustomNodeSpecification<Data extends object, Component exten
313
337
  version: string;
314
338
  license?: 'oss' | 'proprietary';
315
339
  };
340
+ tester?: (ctx: NodeMatchContext) => boolean;
341
+ rank?: number;
316
342
  renderTab?: (props: {
317
343
  id: string;
318
344
  user?: string;
319
345
  customFunctions?: any;
346
+ disabled?: boolean;
347
+ node?: {
348
+ id: string;
349
+ name?: string;
350
+ kind?: string;
351
+ config?: unknown;
352
+ };
320
353
  }) => default_2.ReactNode;
321
354
  calculateDiff?: (current: any, previous: any) => [any, any];
322
355
  generateNode: (params: GenerateNodeParams_2) => Omit<DecisionNode, 'position' | 'id' | 'type' | 'content'> & {
@@ -1016,6 +1049,14 @@ export declare type DecisionTableType = {
1016
1049
  rules: Record<string, string>[];
1017
1050
  } & Diff;
1018
1051
 
1052
+ export declare function definePack(pack: {
1053
+ namespace: string;
1054
+ version: string;
1055
+ license?: 'oss' | 'proprietary';
1056
+ specs: Array<CustomNodeSpecification<object, string>>;
1057
+ migrations?: CustomNodePackMigration[];
1058
+ }): CustomNodePack;
1059
+
1019
1060
  export declare type DictionaryMap = Record<string, {
1020
1061
  label: string;
1021
1062
  value: string;
@@ -1206,6 +1247,8 @@ declare const en: {
1206
1247
  readonly 'vh.filter.noMatch': "No versions match \"{{query}}\".";
1207
1248
  readonly 'vh.noChanges': "No changes";
1208
1249
  readonly 'vh.changes': "changes";
1250
+ readonly 'vh.diff.tooLarge': "Change too large for a line-level diff";
1251
+ readonly 'vh.diff.noLineChanges': "No line-level changes";
1209
1252
  readonly 'vh.entry.current': "current";
1210
1253
  readonly 'vh.entry.auto': "auto";
1211
1254
  readonly 'vh.entry.pinned': "pinned";
@@ -1245,6 +1288,7 @@ declare const en: {
1245
1288
  readonly 'dg.simulation.pin': "Pin run (keep output across reloads)";
1246
1289
  readonly 'dg.simulation.unpin': "Unpin run";
1247
1290
  readonly 'dg.simulation.copy': "Copy JSON";
1291
+ readonly 'dg.simulation.copied': "Copied";
1248
1292
  readonly 'dg.simulation.payloadEvicted': "Run payload evicted (unpinned) — re-run to inspect";
1249
1293
  readonly 'dg.simulation.runsClear': "Clear history";
1250
1294
  readonly 'dg.toolbar.schema': "JSON Schema";
@@ -1373,6 +1417,11 @@ declare const en: {
1373
1417
  readonly 'cf.dollarFormMigrate': "Migrate $. paths";
1374
1418
  readonly 'cf.argsDriftMissing': "missing";
1375
1419
  readonly 'cf.argsDriftUnrecognized': "unrecognized";
1420
+ readonly 'cf.argsKwargsCollision': "kwargs envelope ambiguity";
1421
+ readonly 'cf.argsDanglingRefs': "dangling refs";
1422
+ readonly 'dollar.inputRefViaDollar': "\"{{ref}}\" reads an input field via $ — expression rows only cover row outputs; write \"{{suggestion}}\" (bare name) or the row is silently dropped";
1423
+ readonly 'dollar.keyShadowsInput': "Key \"{{name}}\" collides with an input field — expressions keep reading the input while the output overrides the key";
1424
+ readonly 'dollar.tableNav': "$. references never match in full-expression cells — use \"$root.\" or a bare name ({{count}} cell(s) flagged)";
1376
1425
  readonly 'cf.argsFillMissing': "Fill missing defaults";
1377
1426
  readonly 'cf.instanceOverview': "Instances";
1378
1427
  readonly 'cf.parallelHint': "runs in parallel";
@@ -1963,6 +2012,13 @@ export declare enum NodeKind {
1963
2012
  Decision = "decisionNode"
1964
2013
  }
1965
2014
 
2015
+ export declare type NodeMatchContext = {
2016
+ kind: string;
2017
+ type: string;
2018
+ config: unknown;
2019
+ node: unknown;
2020
+ };
2021
+
1966
2022
  declare type NodeOutputData = InferredContent_2 & Diff;
1967
2023
 
1968
2024
  declare type NodeSchema = z.infer<typeof nodeSchema>;
@@ -2215,6 +2271,13 @@ export declare type NodeSpecification<T = any> = {
2215
2271
  id: string;
2216
2272
  user?: string;
2217
2273
  customFunctions?: any;
2274
+ disabled?: boolean;
2275
+ node?: {
2276
+ id: string;
2277
+ name?: string;
2278
+ kind?: string;
2279
+ config?: unknown;
2280
+ };
2218
2281
  }) => default_2.ReactNode;
2219
2282
  getDiffContent?: (current: T, previous: T) => T;
2220
2283
  generateNode: (params: GenerateNodeParams) => Omit<DecisionNode<T>, 'position' | 'id' | 'type'>;
@@ -2435,6 +2498,8 @@ declare type RequestJsonSchema = {
2435
2498
 
2436
2499
  export declare const requestSchemaFingerprint: (schema: unknown) => string;
2437
2500
 
2501
+ export declare function resolveCustomNode<C extends string>(customNodes: ReadonlyArray<CustomNodeSpecification<object, C>> | undefined, ref: CustomNodeRef): CustomNodeSpecification<object, C> | undefined;
2502
+
2438
2503
  export declare const resolveRequestSchemaValue: (content?: RequestContentLike | null, options?: {
2439
2504
  includeExamples?: boolean;
2440
2505
  }) => RequestJsonSchema | null;