@meiyukichan/dsh-sandore 0.1.2-rc.1 → 0.1.2-rc.2
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/lib/client/AddNodeDialog.d.ts +2 -6
- package/lib/client/AddNodeDialog.js +6 -5
- package/lib/client/ArtifactContentView.d.ts +18 -0
- package/lib/client/ArtifactContentView.js +100 -0
- package/lib/client/DagEditor.d.ts +67 -1
- package/lib/client/DagEditor.js +494 -246
- package/lib/client/DefinitionDetail.d.ts +16 -1
- package/lib/client/DefinitionDetail.js +38 -10
- package/lib/client/DefinitionList.d.ts +7 -1
- package/lib/client/DefinitionList.js +5 -5
- package/lib/client/DirectoryBrowserDialog.js +5 -5
- package/lib/client/DiscussionInput.js +7 -6
- package/lib/client/EditorPane.d.ts +12 -1
- package/lib/client/EditorPane.js +58 -6
- package/lib/client/FlowEditor.d.ts +8 -5
- package/lib/client/FlowEditor.js +7 -6
- package/lib/client/FlowView.d.ts +93 -0
- package/lib/client/FlowView.js +107 -0
- package/lib/client/InstanceList.js +6 -6
- package/lib/client/LibraryEditModal.d.ts +2 -6
- package/lib/client/LibraryEditModal.js +20 -39
- package/lib/client/LibraryList.d.ts +13 -7
- package/lib/client/LibraryList.js +14 -12
- package/lib/client/LibraryPickerModal.d.ts +3 -6
- package/lib/client/LibraryPickerModal.js +7 -6
- package/lib/client/NewInstanceDialog.js +9 -9
- package/lib/client/PreviewPanel.d.ts +9 -1
- package/lib/client/PreviewPanel.js +22 -9
- package/lib/client/RunView.d.ts +1 -1
- package/lib/client/RunView.js +32 -2
- package/lib/client/StepChatPanel.d.ts +1 -11
- package/lib/client/StepChatPanel.js +55 -65
- package/lib/client/TreeNav.js +10 -7
- package/lib/client/UnifiedTimeline.js +32 -20
- package/lib/client/WorkflowList.d.ts +12 -1
- package/lib/client/WorkflowList.js +32 -33
- package/lib/client/WorkflowOverlay.js +39 -3
- package/lib/client/artifact-content.d.ts +114 -0
- package/lib/client/artifact-content.js +104 -0
- package/lib/client/better-sidebar-open.d.ts +477 -0
- package/lib/client/better-sidebar-open.js +808 -0
- package/lib/client/better-sidebar-safe-area.d.ts +112 -0
- package/lib/client/better-sidebar-safe-area.js +137 -0
- package/lib/client/chat/attachment/MessageImage.js +5 -4
- package/lib/client/composer-selects.js +10 -10
- package/lib/client/dag-editor-model.d.ts +96 -56
- package/lib/client/dag-editor-model.js +190 -200
- package/lib/client/definition-flow-open.d.ts +98 -0
- package/lib/client/definition-flow-open.js +109 -0
- package/lib/client/definition-flow-source.d.ts +68 -0
- package/lib/client/definition-flow-source.js +86 -0
- package/lib/client/definition-flow-tab.d.ts +107 -0
- package/lib/client/definition-flow-tab.js +72 -0
- package/lib/client/definition-flow-tool-card.d.ts +51 -0
- package/lib/client/definition-flow-tool-card.js +82 -0
- package/lib/client/definition-flow-view.d.ts +65 -0
- package/lib/client/definition-flow-view.js +77 -0
- package/lib/client/flow-layout.d.ts +163 -0
- package/lib/client/flow-layout.js +597 -0
- package/lib/client/flow-model.d.ts +186 -0
- package/lib/client/flow-model.js +211 -0
- package/lib/client/flow-render.d.ts +110 -0
- package/lib/client/flow-render.js +478 -0
- package/lib/client/flow-theme.d.ts +176 -0
- package/lib/client/flow-theme.js +124 -0
- package/lib/client/index.js +118 -17
- package/lib/client/locales/common-dictionary.d.ts +105 -0
- package/lib/client/locales/common-dictionary.js +105 -0
- package/lib/client/locales/en.d.ts +580 -0
- package/lib/client/locales/en.js +643 -0
- package/lib/client/locales/index.d.ts +19 -0
- package/lib/client/locales/index.js +12 -0
- package/lib/client/locales/zh.d.ts +588 -0
- package/lib/client/locales/zh.js +670 -0
- package/lib/client/locales.d.ts +0 -22
- package/lib/client/locales.js +12 -34
- package/lib/client/main-agent-input.js +2 -1
- package/lib/client/main-agent-workflow-tab.js +1 -1
- package/lib/client/orchestration-tool-card.js +41 -14
- package/lib/client/orchestration-tool-model.d.ts +107 -17
- package/lib/client/orchestration-tool-model.js +165 -23
- package/lib/client/orchestration-tool-store.js +3 -3
- package/lib/client/orchestration-tool-view.d.ts +5 -2
- package/lib/client/orchestration-tool-view.js +13 -7
- package/lib/client/panel-model.d.ts +19 -1
- package/lib/client/panel-model.js +27 -1
- package/lib/client/run-view-model.d.ts +52 -0
- package/lib/client/run-view-model.js +95 -0
- package/lib/client/sandore-artifact-tab.d.ts +100 -0
- package/lib/client/sandore-artifact-tab.js +148 -0
- package/lib/client/seat-bridge.js +1 -1
- package/lib/client/step-view/ComposerBar.js +3 -2
- package/lib/client/step-view/ContextBody.js +2 -2
- package/lib/client/step-view/StepRetryRow.js +1 -1
- package/lib/client/step-view/tool/ToolCallView.js +7 -4
- package/lib/client/step-view/tool/tool-call-model.d.ts +11 -4
- package/lib/client/step-view/tool/tool-call-model.js +2 -2
- package/lib/client/theme-token-names.d.ts +38 -0
- package/lib/client/theme-token-names.js +117 -0
- package/lib/client/workflow-face.d.ts +29 -9
- package/lib/client/workflow-store.d.ts +24 -2
- package/lib/client/workflow-store.js +24 -1
- package/lib/client.js +17960 -13215
- package/lib/index.js +5469 -2054
- package/lib/microflow/concurrency-limiter.d.ts +2 -2
- package/lib/microflow/concurrency-limiter.js +2 -2
- package/lib/microflow/errors.d.ts +1 -1
- package/lib/microflow/file-utils.d.ts +22 -0
- package/lib/microflow/finalize-manager.d.ts +10 -10
- package/lib/microflow/finalize-manager.js +2 -2
- package/lib/microflow/index.d.ts +2 -2
- package/lib/microflow/index.js +2 -2
- package/lib/microflow/internal.d.ts +1 -1
- package/lib/microflow/loop-manager.d.ts +74 -24
- package/lib/microflow/loop-manager.js +100 -42
- package/lib/microflow/microflow-executor.d.ts +491 -0
- package/lib/microflow/microflow-executor.js +1429 -0
- package/lib/microflow/rules-resolver.d.ts +5 -5
- package/lib/microflow/rules-resolver.js +6 -6
- package/lib/microflow/stage-executor.d.ts +22 -20
- package/lib/microflow/stage-executor.js +40 -70
- package/lib/microflow/step-navigator.d.ts +63 -23
- package/lib/microflow/step-navigator.js +125 -52
- package/lib/microflow/step-runner.d.ts +9 -9
- package/lib/microflow/step-runner.js +7 -7
- package/lib/microflow/subagents.d.ts +1 -1
- package/lib/typert.remote-client.d.ts +32 -16
- package/lib/typert.remote-client.js +125 -46
- package/lib/workflow/ask-tool.d.ts +8 -4
- package/lib/workflow/ask-tool.js +13 -8
- package/lib/workflow/capability-handlers.d.ts +23 -0
- package/lib/workflow/capability-handlers.js +68 -0
- package/lib/workflow/capability-registry.d.ts +543 -0
- package/lib/workflow/capability-registry.js +1046 -0
- package/lib/workflow/control-tool.d.ts +11 -39
- package/lib/workflow/control-tool.js +20 -89
- package/lib/workflow/dag-navigator.d.ts +15 -8
- package/lib/workflow/dag-navigator.js +27 -20
- package/lib/workflow/definition-io.d.ts +122 -0
- package/lib/workflow/definition-io.js +205 -0
- package/lib/workflow/definition-lock.d.ts +140 -0
- package/lib/workflow/definition-lock.js +393 -0
- package/lib/workflow/domain.d.ts +78 -82
- package/lib/workflow/domain.js +17 -9
- package/lib/workflow/engine-surface.d.ts +5 -5
- package/lib/workflow/host-agent.js +1 -1
- package/lib/workflow/host-context.d.ts +35 -7
- package/lib/workflow/host-context.js +44 -21
- package/lib/workflow/host-tools.d.ts +29 -13
- package/lib/workflow/host-tools.js +27 -26
- package/lib/workflow/instance-order.d.ts +26 -0
- package/lib/workflow/instance-order.js +32 -0
- package/lib/workflow/instance-output.d.ts +162 -0
- package/lib/workflow/instance-output.js +137 -0
- package/lib/workflow/lib-sync-actions.d.ts +43 -0
- package/lib/workflow/lib-sync-actions.js +217 -0
- package/lib/workflow/lib-sync.d.ts +71 -0
- package/lib/workflow/lib-sync.js +152 -0
- package/lib/workflow/library-views.d.ts +17 -17
- package/lib/workflow/library-views.js +18 -21
- package/lib/workflow/lifecycle-manager.js +1 -1
- package/lib/workflow/list-instances-tool.d.ts +57 -0
- package/lib/workflow/list-instances-tool.js +96 -0
- package/lib/workflow/manager-tool.d.ts +83 -102
- package/lib/workflow/manager-tool.js +534 -399
- package/lib/workflow/message-tool.d.ts +10 -36
- package/lib/workflow/message-tool.js +21 -82
- package/lib/workflow/migration-format.d.ts +340 -0
- package/lib/workflow/migration-format.js +429 -0
- package/lib/workflow/nested-key.d.ts +72 -0
- package/lib/workflow/nested-key.js +344 -0
- package/lib/workflow/persistence.d.ts +65 -37
- package/lib/workflow/persistence.js +109 -77
- package/lib/workflow/plugin.d.ts +7 -3
- package/lib/workflow/plugin.js +22 -3
- package/lib/workflow/read-instance-file.d.ts +77 -0
- package/lib/workflow/read-instance-file.js +166 -0
- package/lib/workflow/remote.d.ts +109 -30
- package/lib/workflow/remote.js +236 -151
- package/lib/workflow/run-tool.d.ts +12 -56
- package/lib/workflow/run-tool.js +12 -94
- package/lib/workflow/schema.d.ts +529 -303
- package/lib/workflow/schema.js +130 -49
- package/lib/workflow/seam.d.ts +51 -4
- package/lib/workflow/skill-provider.d.ts +173 -0
- package/lib/workflow/skill-provider.js +557 -0
- package/lib/workflow/sse.js +12 -3
- package/lib/workflow/status-tool.d.ts +17 -48
- package/lib/workflow/status-tool.js +23 -103
- package/lib/workflow/tool-registration.d.ts +39 -0
- package/lib/workflow/tool-registration.js +18 -0
- package/lib/workflow/tool-support.d.ts +51 -41
- package/lib/workflow/tool-support.js +34 -22
- package/lib/workflow/typert/typert.remote-client.d.ts +32 -16
- package/lib/workflow/typert/typert.remote-client.js +125 -46
- package/lib/workflow/types.d.ts +38 -4
- package/lib/workflow/types.js +9 -1
- package/lib/workflow/visualize-tool.d.ts +49 -0
- package/lib/workflow/visualize-tool.js +38 -0
- package/lib/workflow/wire.d.ts +164 -25
- package/lib/workflow/wire.js +59 -11
- package/lib/workflow/workflow-engine.d.ts +24 -15
- package/lib/workflow/workflow-engine.js +102 -74
- package/lib/workflow/wrapper-tool.d.ts +43 -0
- package/lib/workflow/wrapper-tool.js +318 -0
- package/lib/workflow/yaml-parser.d.ts +22 -20
- package/lib/workflow/yaml-parser.js +163 -217
- package/package.json +9 -2
- package/packages/client/AddNodeDialog.tsx +9 -14
- package/packages/client/ArtifactContentView.tsx +181 -0
- package/packages/client/CommandEditor.tsx +1 -1
- package/packages/client/DagEditor.module.css +85 -26
- package/packages/client/DagEditor.tsx +830 -365
- package/packages/client/DefinitionDetail.module.css +69 -8
- package/packages/client/DefinitionDetail.tsx +89 -20
- package/packages/client/DefinitionList.tsx +32 -10
- package/packages/client/DirectoryBrowserDialog.module.css +4 -4
- package/packages/client/DirectoryBrowserDialog.tsx +502 -500
- package/packages/client/DiscussionInput.tsx +646 -639
- package/packages/client/EditorPane.tsx +118 -3
- package/packages/client/FlowEditor.tsx +17 -11
- package/packages/client/FlowView.tsx +197 -0
- package/packages/client/InstanceList.tsx +36 -22
- package/packages/client/LibraryEditModal.tsx +25 -44
- package/packages/client/LibraryList.tsx +54 -34
- package/packages/client/LibraryPickerModal.tsx +12 -14
- package/packages/client/NewInstanceDialog.tsx +495 -491
- package/packages/client/PreviewPanel.tsx +69 -56
- package/packages/client/RunView.module.css +18 -39
- package/packages/client/RunView.tsx +53 -16
- package/packages/client/StepChatPanel.tsx +77 -110
- package/packages/client/TreeNav.tsx +351 -341
- package/packages/client/UnifiedTimeline.tsx +131 -79
- package/packages/client/WorkflowList.tsx +172 -97
- package/packages/client/WorkflowOverlay.module.css +118 -67
- package/packages/client/WorkflowOverlay.tsx +179 -141
- package/packages/client/WorkflowPanel.module.css +64 -35
- package/packages/client/artifact-content-view.spec.ts +231 -0
- package/packages/client/artifact-content.module.css +116 -0
- package/packages/client/artifact-content.spec.ts +118 -0
- package/packages/client/artifact-content.ts +192 -0
- package/packages/client/better-sidebar-dependency.spec.ts +112 -0
- package/packages/client/better-sidebar-open.spec.ts +899 -0
- package/packages/client/better-sidebar-open.ts +1193 -0
- package/packages/client/better-sidebar-safe-area.spec.ts +187 -0
- package/packages/client/better-sidebar-safe-area.ts +179 -0
- package/packages/client/chat/attachment/MessageImage.tsx +139 -136
- package/packages/client/composer-selects.module.css +7 -4
- package/packages/client/composer-selects.tsx +563 -556
- package/packages/client/dag-editor-model.spec.ts +137 -145
- package/packages/client/dag-editor-model.ts +594 -595
- package/packages/client/definition-flow-open.spec.ts +294 -0
- package/packages/client/definition-flow-open.ts +143 -0
- package/packages/client/definition-flow-source.spec.ts +81 -0
- package/packages/client/definition-flow-source.ts +102 -0
- package/packages/client/definition-flow-tab.module.css +33 -0
- package/packages/client/definition-flow-tab.spec.ts +279 -0
- package/packages/client/definition-flow-tab.tsx +180 -0
- package/packages/client/definition-flow-tool-card.module.css +94 -0
- package/packages/client/definition-flow-tool-card.spec.ts +258 -0
- package/packages/client/definition-flow-tool-card.tsx +152 -0
- package/packages/client/definition-flow-view.tsx +123 -0
- package/packages/client/flow-layout.spec.ts +505 -0
- package/packages/client/flow-layout.ts +728 -0
- package/packages/client/flow-model.spec.ts +340 -0
- package/packages/client/flow-model.ts +335 -0
- package/packages/client/flow-render.spec.ts +315 -0
- package/packages/client/flow-render.ts +512 -0
- package/packages/client/flow-theme.ts +241 -0
- package/packages/client/flow-view.module.css +62 -0
- package/packages/client/index.ts +141 -20
- package/packages/client/input.module.css +51 -49
- package/packages/client/is-conditional-check.spec.ts +10 -6
- package/packages/client/lib-sync-ui.spec.ts +103 -0
- package/packages/client/list-rows.spec.ts +255 -0
- package/packages/client/locales/common-dictionary.ts +107 -0
- package/packages/client/locales/common-reuse.spec.ts +155 -0
- package/packages/client/locales/en.ts +646 -0
- package/packages/client/locales/index.ts +22 -0
- package/packages/client/locales/zh.ts +674 -0
- package/packages/client/locales.spec.ts +185 -10
- package/packages/client/main-agent-composer.spec.ts +8 -3
- package/packages/client/main-agent-input.spec.ts +3 -2
- package/packages/client/main-agent-input.tsx +208 -204
- package/packages/client/main-agent-workflow-tab.module.css +21 -1
- package/packages/client/main-agent-workflow-tab.spec.ts +31 -2
- package/packages/client/main-agent-workflow-tab.tsx +1 -1
- package/packages/client/microflow-dag-mode.spec.ts +562 -0
- package/packages/client/microflow-description.spec.ts +269 -0
- package/packages/client/node-builtin-isolation.spec.ts +130 -0
- package/packages/client/orchestration-tool-card.module.css +123 -43
- package/packages/client/orchestration-tool-card.spec.ts +268 -12
- package/packages/client/orchestration-tool-card.tsx +240 -192
- package/packages/client/orchestration-tool-model.spec.ts +180 -26
- package/packages/client/orchestration-tool-model.ts +193 -25
- package/packages/client/orchestration-tool-store.ts +3 -3
- package/packages/client/orchestration-tool-view.spec.ts +147 -30
- package/packages/client/orchestration-tool-view.tsx +18 -6
- package/packages/client/panel-model.spec.ts +87 -1
- package/packages/client/panel-model.ts +26 -1
- package/packages/client/preview.module.css +4 -4
- package/packages/client/reactflow-theme.css +61 -34
- package/packages/client/readonly-lock-ui.spec.ts +253 -0
- package/packages/client/run-view-host-filter.spec.ts +231 -2
- package/packages/client/run-view-model.ts +123 -0
- package/packages/client/sandore-artifact-tab.module.css +26 -0
- package/packages/client/sandore-artifact-tab.spec.ts +282 -0
- package/packages/client/sandore-artifact-tab.tsx +186 -0
- package/packages/client/seat-bridge.ts +1 -1
- package/packages/client/step-chat-composer-wiring.spec.ts +3 -2
- package/packages/client/step-chat-panel-paging.spec.ts +10 -5
- package/packages/client/step-chat-panel.module.css +57 -8
- package/packages/client/step-chat-retry-placeholder.spec.ts +3 -2
- package/packages/client/step-chat-retry-wiring.spec.ts +3 -2
- package/packages/client/step-mention-source.spec.ts +3 -2
- package/packages/client/step-mention-source.ts +1 -1
- package/packages/client/step-view/ComposerBar.tsx +552 -547
- package/packages/client/step-view/ContextBody.tsx +10 -7
- package/packages/client/step-view/StepRetryRow.tsx +1 -1
- package/packages/client/step-view/composer-bar-render.spec.ts +3 -2
- package/packages/client/step-view/composer-bar.module.css +3 -2
- package/packages/client/step-view/composer-trigger-menu-render.spec.ts +3 -2
- package/packages/client/step-view/step-retry-row.spec.ts +3 -2
- package/packages/client/step-view/step-view-render.spec.ts +3 -2
- package/packages/client/step-view/token-format.spec.ts +3 -2
- package/packages/client/step-view/tool/ToolCallView.tsx +9 -3
- package/packages/client/step-view/tool/tool-call-model.ts +11 -4
- package/packages/client/step-view/tool/tool-call-view.spec.ts +167 -0
- package/packages/client/step-view/turn-navigator.spec.ts +3 -2
- package/packages/client/step-view/user-message-row.spec.ts +3 -2
- package/packages/client/sublist-tabs.spec.ts +220 -0
- package/packages/client/theme-token-names.ts +119 -0
- package/packages/client/theme-tokens.spec.ts +283 -0
- package/packages/client/timeline-span.spec.ts +125 -0
- package/packages/client/timeline.module.css +99 -64
- package/packages/client/tooltip-usage.spec.ts +228 -0
- package/packages/client/tree-nav.module.css +2 -2
- package/packages/client/unified-timeline-remount.spec.ts +3 -2
- package/packages/client/workflow-face.ts +35 -10
- package/packages/client/workflow-list-mode-tabs.spec.ts +321 -0
- package/packages/client/workflow-list-sections.spec.ts +109 -0
- package/packages/client/workflow-seat.css +30 -5
- package/packages/client/workflow-seat.spec.ts +29 -0
- package/packages/client/workflow-store.ts +44 -3
- package/packages/microflow/concurrency-limiter.ts +2 -2
- package/packages/microflow/definition-intrinsic-steps.spec.ts +144 -0
- package/packages/microflow/errors.ts +77 -67
- package/packages/microflow/file-utils.ts +23 -0
- package/packages/microflow/finalize-manager.spec.ts +1 -1
- package/packages/microflow/finalize-manager.ts +13 -13
- package/packages/microflow/index.ts +2 -2
- package/packages/microflow/internal.ts +1 -1
- package/packages/microflow/loop-manager.ts +109 -46
- package/packages/microflow/{stage-executor.spec.ts → microflow-executor.spec.ts} +481 -289
- package/packages/microflow/{stage-executor.ts → microflow-executor.ts} +285 -177
- package/packages/microflow/rules-resolver.ts +9 -9
- package/packages/microflow/step-navigator.spec.ts +88 -78
- package/packages/microflow/step-navigator.ts +150 -63
- package/packages/microflow/step-runner.spec.ts +4 -4
- package/packages/microflow/step-runner.ts +16 -16
- package/packages/microflow/subagents.ts +1 -1
- package/packages/resources/README.md +148 -0
- package/packages/resources/skills/sandore-workflow-authoring/SKILL.md +249 -0
- package/packages/resources/skills/sandore-workflow-authoring/reference/authoring-microflow.md +273 -0
- package/packages/resources/skills/sandore-workflow-authoring/reference/authoring-step.md +324 -0
- package/packages/resources/skills/sandore-workflow-authoring/reference/authoring-workflow.md +274 -0
- package/packages/resources/skills/sandore-workflow-authoring/reference/index.md +54 -0
- package/packages/resources/skills/sandore-workflow-authoring/reference/template-microflow-entry.yaml +138 -0
- package/packages/resources/skills/sandore-workflow-authoring/reference/template-workflow.yaml +296 -0
- package/packages/resources/skills/sandore-workflow-authoring/reference/workflow-yaml-spec.md +606 -0
- package/packages/tests/fixtures/legacy-test-workflow.yaml +135 -0
- package/packages/tests/fixtures/test-workflow.yaml +83 -85
- package/packages/tests/fixtures/workflow-authoring-template.ts +303 -0
- package/packages/tests/flow-fixtures.ts +106 -0
- package/packages/tests/mock-llm-directive.spec.ts +56 -13
- package/packages/tests/theme-token-allowlist.ts +79 -0
- package/packages/workflow/ask-tool.ts +18 -9
- package/packages/workflow/capability-handlers.ts +90 -0
- package/packages/workflow/capability-registry.spec.ts +1045 -0
- package/packages/workflow/capability-registry.ts +1333 -0
- package/packages/workflow/control-tool.ts +31 -86
- package/packages/workflow/dag-navigator.spec.ts +52 -41
- package/packages/workflow/dag-navigator.ts +34 -24
- package/packages/workflow/def-lib-tool-surface-lock.spec.ts +443 -0
- package/packages/workflow/definition-io.spec.ts +288 -0
- package/packages/workflow/definition-io.ts +268 -0
- package/packages/workflow/definition-lock.spec.ts +377 -0
- package/packages/workflow/definition-lock.ts +441 -0
- package/packages/workflow/domain.ts +16 -10
- package/packages/workflow/engine-surface.ts +5 -5
- package/packages/workflow/errors.ts +1 -0
- package/packages/workflow/event-rename-lock.spec.ts +131 -0
- package/packages/workflow/host-agent.spec.ts +1 -1
- package/packages/workflow/host-agent.ts +1 -1
- package/packages/workflow/host-context.spec.ts +137 -93
- package/packages/workflow/host-context.ts +174 -123
- package/packages/workflow/host-tools.spec.ts +963 -805
- package/packages/workflow/host-tools.ts +44 -36
- package/packages/workflow/instance-order.ts +34 -0
- package/packages/workflow/instance-output.spec.ts +169 -0
- package/packages/workflow/instance-output.ts +187 -0
- package/packages/workflow/lib-sync-actions.ts +293 -0
- package/packages/workflow/lib-sync-rpc.spec.ts +474 -0
- package/packages/workflow/lib-sync.spec.ts +141 -0
- package/packages/workflow/lib-sync.ts +215 -0
- package/packages/workflow/library-sync-write.spec.ts +175 -0
- package/packages/workflow/library-views.spec.ts +54 -48
- package/packages/workflow/library-views.ts +25 -28
- package/packages/workflow/lifecycle-manager.spec.ts +87 -36
- package/packages/workflow/lifecycle-manager.ts +1 -1
- package/packages/workflow/list-instances-tool.spec.ts +197 -0
- package/packages/workflow/list-instances-tool.ts +130 -0
- package/packages/workflow/manager-tool.spec.ts +1309 -347
- package/packages/workflow/manager-tool.ts +636 -434
- package/packages/workflow/message-tool.ts +32 -79
- package/packages/workflow/migration-format.spec.ts +365 -0
- package/packages/workflow/migration-format.ts +544 -0
- package/packages/workflow/nested-key.spec.ts +336 -0
- package/packages/workflow/nested-key.ts +393 -0
- package/packages/workflow/persistence.spec.ts +191 -99
- package/packages/workflow/persistence.ts +259 -203
- package/packages/workflow/plugin.ts +21 -3
- package/packages/workflow/read-instance-file.spec.ts +217 -0
- package/packages/workflow/read-instance-file.ts +182 -0
- package/packages/workflow/remote.spec.ts +667 -214
- package/packages/workflow/remote.ts +268 -160
- package/packages/workflow/run-tool.ts +21 -85
- package/packages/workflow/schema-refactor-lock.spec.ts +394 -0
- package/packages/workflow/schema.spec.ts +130 -59
- package/packages/workflow/schema.ts +142 -56
- package/packages/workflow/seam.ts +45 -4
- package/packages/workflow/skill-provider.spec.ts +481 -0
- package/packages/workflow/skill-provider.ts +698 -0
- package/packages/workflow/skill-resource-lock.spec.ts +344 -0
- package/packages/workflow/sse.ts +12 -3
- package/packages/workflow/status-tool.ts +40 -101
- package/packages/workflow/step-settled-lock.spec.ts +75 -0
- package/packages/workflow/tool-registration.ts +48 -0
- package/packages/workflow/tool-support.spec.ts +7 -7
- package/packages/workflow/tool-support.ts +66 -34
- package/packages/workflow/tool-surface-artifact.spec.ts +176 -0
- package/packages/workflow/typert/typert.remote-client.d.ts +32 -16
- package/packages/workflow/typert/typert.remote-client.js +125 -46
- package/packages/workflow/types.ts +53 -7
- package/packages/workflow/visualize-tool.spec.ts +396 -0
- package/packages/workflow/visualize-tool.ts +94 -0
- package/packages/workflow/wire.ts +174 -22
- package/packages/workflow/workflow-engine-e2e.spec.ts +25 -23
- package/packages/workflow/workflow-engine-real-e2e.spec.ts +15 -13
- package/packages/workflow/workflow-engine.spec.ts +633 -642
- package/packages/workflow/workflow-engine.ts +109 -81
- package/packages/workflow/wrapper-prose-lock.spec.ts +148 -0
- package/packages/workflow/wrapper-tool.spec.ts +800 -0
- package/packages/workflow/wrapper-tool.ts +409 -0
- package/packages/workflow/yaml-parser.spec.ts +700 -590
- package/packages/workflow/yaml-parser.ts +202 -218
- package/packages/client/locales.ts +0 -1280
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
|
|
2
|
-
/** 目标节点种类。 */
|
|
3
|
-
export type AddNodeKind = 'stage' | 'step';
|
|
4
2
|
/** 新建/绑定的选择结果。 */
|
|
5
3
|
export type AddNodeChoice = 'blank' | 'library';
|
|
6
4
|
/** AddNodeDialog 接收的 props。 */
|
|
7
5
|
export interface AddNodeDialogProps {
|
|
8
6
|
/** 类型化翻译函数(sandore 命名空间)。 */
|
|
9
7
|
t: TranslateNS<'sandore'>;
|
|
10
|
-
/** 目标节点种类。 */
|
|
11
|
-
kind: AddNodeKind;
|
|
12
8
|
/** 关闭弹窗。 */
|
|
13
9
|
onClose(): void;
|
|
14
10
|
/** 确认(blank = 新建空白,library = 从库绑定)。 */
|
|
15
11
|
onConfirm(choice: AddNodeChoice): void;
|
|
16
12
|
}
|
|
17
|
-
/**
|
|
18
|
-
export declare function AddNodeDialog({ t,
|
|
13
|
+
/** 渲染「添加 Stage」弹窗(新建空白 / 从库绑定 二选一)。 */
|
|
14
|
+
export declare function AddNodeDialog({ t, onClose, onConfirm }: AddNodeDialogProps): import("react").JSX.Element;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
|
-
* AddNodeDialog:「+ 添加 Stage
|
|
3
|
+
* AddNodeDialog:「+ 添加 Stage」弹窗(plan §6.4)。
|
|
4
4
|
*
|
|
5
5
|
* 两个来源选项:新建空白(现状行为)/ 从库绑定(打开 LibraryPickerModal 选择)。
|
|
6
|
-
* Step
|
|
6
|
+
* Step 已无来源选择(Step 库并入 Microflow 库),故「+ 添加 Step」直接新建空白,
|
|
7
|
+
* 本弹窗只剩 Stage 一种目标。
|
|
7
8
|
* @module @deepseek-ai/dsh-client-ui-sandore/src/client/AddNodeDialog
|
|
8
9
|
*/
|
|
9
10
|
import { useState } from 'react';
|
|
10
11
|
import { Button, Modal } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
11
12
|
import css from './DagEditor.module.css';
|
|
12
|
-
/**
|
|
13
|
-
export function AddNodeDialog({ t,
|
|
13
|
+
/** 渲染「添加 Stage」弹窗(新建空白 / 从库绑定 二选一)。 */
|
|
14
|
+
export function AddNodeDialog({ t, onClose, onConfirm }) {
|
|
14
15
|
const [choice, setChoice] = useState('blank');
|
|
15
|
-
return (_jsx(Modal, { open: true, onClose: onClose, title:
|
|
16
|
+
return (_jsx(Modal, { open: true, onClose: onClose, title: t('add.microflow.title'), closeLabel: t('cancel'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: onClose, children: t('cancel') }), _jsx(Button, { variant: "primary", size: "sm", onClick: () => { onConfirm(choice); }, children: t('ok') })] })), children: _jsxs("div", { className: css.addNodeDialog, children: [_jsxs("label", { className: css.addNodeOption, children: [_jsx("input", { type: "radio", name: "sandore-add-node-choice", checked: choice === 'blank', onChange: () => { setChoice('blank'); } }), _jsx("span", { className: css.addNodeOptionBody, children: _jsx("span", { className: css.addNodeOptionTitle, children: t('add.create.blank') }) })] }), _jsxs("label", { className: css.addNodeOption, children: [_jsx("input", { type: "radio", name: "sandore-add-node-choice", checked: choice === 'library', onChange: () => { setChoice('library'); } }), _jsx("span", { className: css.addNodeOptionBody, children: _jsx("span", { className: css.addNodeOptionTitle, children: t('add.create.fromLibrary') }) })] })] }) }));
|
|
16
17
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
|
|
2
|
+
import { type ArtifactContent } from './artifact-content.ts';
|
|
3
|
+
/** ArtifactContentView 接收的 props。 */
|
|
4
|
+
export interface ArtifactContentViewProps {
|
|
5
|
+
/** 类型化翻译函数(sandore 命名空间)。 */
|
|
6
|
+
readonly t: TranslateNS<'sandore'>;
|
|
7
|
+
/** 视图模型(`artifactContentOf` 的产物)。 */
|
|
8
|
+
readonly content: ArtifactContent;
|
|
9
|
+
/**
|
|
10
|
+
* 渲染风格。
|
|
11
|
+
*
|
|
12
|
+
* `app`(缺省)用于应用内展示;`editor` 用于 C6 自注册 tab —— 它必须与 better-sidebar 自己的
|
|
13
|
+
* 编辑器 tab 的观感对齐(路径头 + 等宽只读原文),**不允许**把 `.md` 渲染成 Markdown 卡片。
|
|
14
|
+
*/
|
|
15
|
+
readonly variant?: 'app' | 'editor' | undefined;
|
|
16
|
+
}
|
|
17
|
+
/** 渲染一份展示内容(三处调用点共用;`variant='editor'` 时改用编辑器观感)。 */
|
|
18
|
+
export declare function ArtifactContentView({ t, content, variant }: ArtifactContentViewProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* ArtifactContentView:**应用内展示「产物 / Agent 输出」的唯一渲染组件**。
|
|
4
|
+
*
|
|
5
|
+
* ## 为什么只有一个组件
|
|
6
|
+
* 用户点击产物 / Agent 输出的地方有**三处**(RunView 右栏预览、工具行内嵌导航卡、step 面板
|
|
7
|
+
* 里的工具行 fileLink),而"打开通道不可见时"的兜底展示必须**三处一致**:同一个组件、
|
|
8
|
+
* 同一份文案(`locales/{zh,en}.ts` 的 `artifact.*`)、同一套锚点。否则就会出现
|
|
9
|
+
* "在这个位置点能看到内容、在那个位置点了没反应"的老问题。
|
|
10
|
+
*
|
|
11
|
+
* ## 四种呈现(由 `content.state` 决定,`artifact-content.ts` 是唯一判据)
|
|
12
|
+
* | state | 渲染 |
|
|
13
|
+
* |---|---|
|
|
14
|
+
* | `content` | 正文(`.md` 与 Agent 输出走 `MarkdownText`,其余等宽 `<pre>`,可横向滚动 + 折行) |
|
|
15
|
+
* | `notice` | 中性提示行(「该执行段没有输出文本」/「二进制文件(X),无法在此预览」) |
|
|
16
|
+
* | `error` | **`role="alert"` 的原因行**(带文件路径)+ 原始 message(有则显示)——L3 的落点 |
|
|
17
|
+
*
|
|
18
|
+
* ## 两种风格(`variant`,P14)
|
|
19
|
+
* - `app`(缺省)= 应用内展示(RunView 右栏 / 工具卡内联 / step 面板内联):`.md` 走 Markdown;
|
|
20
|
+
* - `editor` = **向 better-sidebar 的编辑器 tab 对齐**(C6 自注册 tab 专用):**永不渲染 Markdown**,
|
|
21
|
+
* 正文一律**等宽只读原文**(`white-space: pre` + 横向滚动),并以**路径头**取代 emoji 元信息行。
|
|
22
|
+
* 真机报障原文:「点击产物文件后……样式完全不对 ……里面是渲染过的 markdown」,而用户要的是
|
|
23
|
+
* 它那条 `editor` tab(路径输入 + CodeMirror 原文)。两者只能共用一个组件(同一份取数、同一套
|
|
24
|
+
* 锚点),差别只允许落在**渲染方式**上。
|
|
25
|
+
*
|
|
26
|
+
* ## 锚点(真机 / e2e 断言用)
|
|
27
|
+
* 根 `data-sandore-artifact-content`;状态与原因码 `data-artifact-state` / `data-artifact-reason`
|
|
28
|
+
* (e2e 用它区分"显示了内容"与"显示了原因");路径行 `data-artifact-path`;正文
|
|
29
|
+
* `data-artifact-text`;原因行 `data-artifact-notice`;截断提示 `data-artifact-truncated`;
|
|
30
|
+
* 风格 `data-artifact-variant`;编辑器风格的头行 `data-artifact-editor-head`。
|
|
31
|
+
* @module @deepseek-ai/dsh-client-ui-sandore/src/client/ArtifactContentView
|
|
32
|
+
*/
|
|
33
|
+
import { MarkdownText, Tooltip } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
34
|
+
import { formatBytesOf } from "./artifact-content.js";
|
|
35
|
+
import { markdownLabels } from "./chat-utils/markdown-labels.js";
|
|
36
|
+
import css from './artifact-content.module.css';
|
|
37
|
+
/**
|
|
38
|
+
* 原因码 → 文案。
|
|
39
|
+
*
|
|
40
|
+
* 为什么用 `switch` 而不是把文案塞进视图模型:`t()` 的键是**字面量联合**(每个键的参数
|
|
41
|
+
* 形状由字典决定),动态键会丢掉这层类型检查;纯函数只给**原因码**(可单测),
|
|
42
|
+
* 文案的映射留在组件里并被 `noFallthroughCasesInSwitch` + 穷尽性检查看住。
|
|
43
|
+
* @param content - 视图模型。
|
|
44
|
+
* @param t - 翻译函数。
|
|
45
|
+
* @returns 提示行文案;`undefined` = 这一态不需要提示行。
|
|
46
|
+
*/
|
|
47
|
+
function noticeTextOf(content, t) {
|
|
48
|
+
/** 路径兜底:没有 path 时用展示名(提示行必须能指认"是哪个东西出问题了")。 */
|
|
49
|
+
const path = content.path ?? content.name;
|
|
50
|
+
switch (content.reason) {
|
|
51
|
+
case 'empty-text':
|
|
52
|
+
return t('artifact.notice.emptyText');
|
|
53
|
+
case 'binary':
|
|
54
|
+
return content.size === undefined
|
|
55
|
+
? t('artifact.notice.binaryNoSize')
|
|
56
|
+
: t('artifact.notice.binary', { size: formatBytesOf(content.size) });
|
|
57
|
+
case 'missing':
|
|
58
|
+
return t('artifact.error.missing', { path });
|
|
59
|
+
case 'directory':
|
|
60
|
+
return t('artifact.error.directory', { path });
|
|
61
|
+
case 'denied':
|
|
62
|
+
return t('artifact.error.denied', { path });
|
|
63
|
+
case 'empty-path':
|
|
64
|
+
return t('artifact.error.emptyPath');
|
|
65
|
+
case 'no-cwd':
|
|
66
|
+
return t('artifact.error.noCwd');
|
|
67
|
+
case 'write-failed':
|
|
68
|
+
return t('artifact.error.writeFailed', { message: content.message ?? '' });
|
|
69
|
+
case 'read-failed':
|
|
70
|
+
return t('artifact.error.readFailed', { message: content.message ?? '', path });
|
|
71
|
+
case 'open-failed':
|
|
72
|
+
return t('artifact.error.openFailed', { message: content.message ?? '', path });
|
|
73
|
+
case 'no-sidebar-session':
|
|
74
|
+
// better-sidebar 在场但**还没有活跃会话** ⇒ `openTab` 只会静默 return(没有可落地的面板)。
|
|
75
|
+
// 这条文案必须能指认"为什么看不到",否则它就退化成"点了没反应"。
|
|
76
|
+
return t('artifact.error.noSidebarSession', { path });
|
|
77
|
+
case 'no-channel':
|
|
78
|
+
case 'outside-workspace':
|
|
79
|
+
case 'sandore-tab':
|
|
80
|
+
// 这三个只在"有正文"时才是正常路径(那时 state='content',本函数的结果不被使用);
|
|
81
|
+
// 落到这里说明**既没打开也没读到**(如内嵌读取通道未装配、自注册 tab 也没取到内容)
|
|
82
|
+
// ⇒ 必须给出可见原因。
|
|
83
|
+
return t('artifact.error.noChannel', { path });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** 渲染一份展示内容(三处调用点共用;`variant='editor'` 时改用编辑器观感)。 */
|
|
87
|
+
export function ArtifactContentView({ t, content, variant = 'app' }) {
|
|
88
|
+
const notice = content.state === 'content' ? undefined : noticeTextOf(content, t);
|
|
89
|
+
const alert = content.state === 'error';
|
|
90
|
+
/*
|
|
91
|
+
* `editor` 风格 = **只读原文**(用户点名的观感):正文一律走等宽 `<pre>`,**绝不**走 Markdown。
|
|
92
|
+
* 判据只改这里的这一处(`artifact-content.ts` 的 `body` 仍是"这是什么文件"的唯一判据,
|
|
93
|
+
* 应用内展示继续按它分流),锚点与提示行逻辑两边共用。
|
|
94
|
+
*/
|
|
95
|
+
const editor = variant === 'editor';
|
|
96
|
+
return (_jsxs("div", { className: css.root, "data-sandore-artifact-content": true, "data-artifact-variant": variant, "data-artifact-kind": content.kind, "data-artifact-state": content.state, "data-artifact-reason": content.reason, children: [editor ? (_jsxs("div", { className: css.editorHead, "data-artifact-editor-head": true, children: [_jsx(Tooltip, { label: content.path ?? content.name, side: "bottom", delayMs: 500, children: _jsx("span", { className: css.editorPath, "data-artifact-path": true, children: content.path ?? content.name }) }), content.size !== undefined && (_jsx("span", { className: css.editorSize, "data-artifact-size": true, children: formatBytesOf(content.size) }))] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: css.meta, "data-artifact-meta": true, children: [_jsxs("span", { children: [content.kind === 'result' ? '📝' : '📄', " ", content.kind === 'result' ? t('run.result') : t('run.artifact')] }), content.size !== undefined && (_jsx("span", { "data-artifact-size": true, children: formatBytesOf(content.size) }))] }), content.path !== undefined && (_jsx(Tooltip, { label: content.path, side: "bottom", delayMs: 500, children: _jsx("div", { className: css.path, "data-artifact-path": true, children: content.path }) }))] })), notice !== undefined && (_jsx("p", { className: alert ? css.error : css.notice, ...(alert ? { role: 'alert' } : {}), "data-artifact-notice": true, children: notice })), content.truncated === true && content.text !== undefined && (_jsx("p", { className: css.notice, "data-artifact-truncated": true, children: t('artifact.notice.truncated', {
|
|
97
|
+
size: formatBytesOf(content.limit ?? content.text.length),
|
|
98
|
+
total: formatBytesOf(content.size ?? content.text.length),
|
|
99
|
+
}) })), content.body === 'markdown' && !editor && content.text !== undefined && (_jsx("div", { className: css.text, "data-artifact-text": true, children: _jsx(MarkdownText, { text: content.text, labels: markdownLabels(t) }) })), (editor || content.body === 'text') && content.text !== undefined && (_jsx("pre", { className: editor ? css.editorPre : css.pre, "data-artifact-text": true, children: content.text }))] }));
|
|
100
|
+
}
|
|
@@ -1,8 +1,33 @@
|
|
|
1
1
|
import '@xyflow/react/dist/style.css';
|
|
2
2
|
import './reactflow-theme.css';
|
|
3
3
|
import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
|
|
4
|
+
import type { MicroflowDefinition, MicroflowRecord } from '@meiyukichan/dsh-sandore/schema';
|
|
4
5
|
import { type SaveDefinition } from './sandore-save.ts';
|
|
5
6
|
import type { WorkflowOverlayFace } from './workflow-face.ts';
|
|
7
|
+
/**
|
|
8
|
+
* 「库条目模式」的 props(第 6 条:点微流程行 → 右侧渲染**子 DAG**,不再弹 YAML 弹窗)。
|
|
9
|
+
*
|
|
10
|
+
* 复用同一个 `DagEditor`/`DagCanvas` 切一个模式(方案 A),**否决**抽两套渲染:
|
|
11
|
+
* `DagCanvas`、`StepEditor`、`MicroflowDescriptionField`、`dagreLayout`、增删节点/连线、
|
|
12
|
+
* YAML 预览、Toast、Ctrl+S 全部复用。数据面**零新增 RPC**:
|
|
13
|
+
* `listMicroflows` → `getMicroflow(id)` → `upsertMicroflow(serializeMicroflowYaml(record))`。
|
|
14
|
+
*/
|
|
15
|
+
export interface DagEditorLibraryEntryProps {
|
|
16
|
+
/** 库条目 id(≡ microflow id,不变量 I7:`sourceLib.id === microflow.id`)。 */
|
|
17
|
+
readonly id: string;
|
|
18
|
+
/** 已拉取的库条目记录(含 `steps`)。 */
|
|
19
|
+
readonly record: MicroflowRecord;
|
|
20
|
+
/**
|
|
21
|
+
* 保存**这一条库条目**:实现方必须走 `face.upsertMicroflow(serializeMicroflowYaml(record))`。
|
|
22
|
+
*
|
|
23
|
+
* ⚠️ 这是「不把库条目写坏成工作流定义」三重防护的第 2 重:库模式**绝不**复用 `props.save`
|
|
24
|
+
* (`SaveDefinition` 的第一站是 `createDefinition`/`updateYaml`,会写 `definitions` 表)。
|
|
25
|
+
* 独立 prop ⇒ 想误接也得先**显式**把它接到工作流保存通道上,而那正是单测抛错桩要抓的。
|
|
26
|
+
*/
|
|
27
|
+
save(record: MicroflowRecord): Promise<void>;
|
|
28
|
+
/** 次级入口:打开「编辑 YAML」弹窗(`LibraryEditModal` 的新触发点之一)。 */
|
|
29
|
+
onEditYaml(): void;
|
|
30
|
+
}
|
|
6
31
|
/** DagEditor 接收的最小业务 props:初始定义 + 保存回调 + face + locale。 */
|
|
7
32
|
export interface DagEditorProps {
|
|
8
33
|
/** 类型化的翻译函数(sandore 命名空间)。 */
|
|
@@ -17,6 +42,47 @@ export interface DagEditorProps {
|
|
|
17
42
|
onSaved?: (id: string) => void;
|
|
18
43
|
/** 业务 face(「▶ 测试运行」复用 NewInstanceDialog 选工作目录后启动实例,无 job 概念)。 */
|
|
19
44
|
face: WorkflowOverlayFace;
|
|
45
|
+
/**
|
|
46
|
+
* **库条目模式**(第 6 条):给定时本编辑器渲染**一条库条目**的子 DAG,而不是工作流 DAG。
|
|
47
|
+
* 省略 = 工作流模式(逐值不变)。
|
|
48
|
+
*/
|
|
49
|
+
libraryEntry?: DagEditorLibraryEntryProps | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* 该定义是否**只读**(overlay 拉取的只读集合命中它;新建未保存时恒 false)。
|
|
52
|
+
*
|
|
53
|
+
* 只读 = 模型不可编辑 **且** UI 不可编辑(§5.8):这里让**保存按钮 `disabled`**,
|
|
54
|
+
* 详情面板出现开关与一行说明。**不做全表单只读**(成本高、且会挡住「复制内容到新建」的
|
|
55
|
+
* 正常用法)——画布与字段仍可编辑,保存会被 Host 以 `READONLY` 拒绝并把原因原样显示
|
|
56
|
+
* (Ctrl+S 走的就是这条:它不经按钮的 `disabled`,正好是「保存被拒并显示原因」)。
|
|
57
|
+
*/
|
|
58
|
+
readonly?: boolean | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* 只读开关写入(按 id 写入,成功后就地刷新宿主集合;失败原样抛出由面板显示原因)。
|
|
61
|
+
* 缺省 = 开关不可用(渲染为 disabled)——新建未保存的定义没有 id,也走这一支。
|
|
62
|
+
*/
|
|
63
|
+
setReadonly?: ((id: string, readonly: boolean) => Promise<void>) | undefined;
|
|
20
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* microflow 详情里的**可选描述**输入(紧接名称行 / {@link LibSyncBar} 之后)。
|
|
67
|
+
*
|
|
68
|
+
* ## 为什么是 textarea 而不是单行 input
|
|
69
|
+
* 描述是"给人看的一段话",与 step 的 promptText 同属大段文本 ⇒ 复用同一个
|
|
70
|
+
* `ImeSafeTextarea`(composition 守卫与 prompt 完全同一套,中文输入不会被打断)。
|
|
71
|
+
*
|
|
72
|
+
* ## 空值语义(用户要求的不变量,落点在纯函数里)
|
|
73
|
+
* 清空 ⇒ 走 {@link withMicroflowDescription} **移除 `description` 键**(不写空串)——
|
|
74
|
+
* 这样"本来没有描述的旧 yaml 打开-保存"不会凭空多出一个 `description: ''`。
|
|
75
|
+
*
|
|
76
|
+
* ## 为什么下面挂一句说明
|
|
77
|
+
* 描述是**定义侧内容**(`lib-sync.ts` 的 `microflowContent` 参与内容哈希)⇒ 改了它再保存,
|
|
78
|
+
* 六态徽标会从「已同步」变成「本地领先」(保存路径随后按既有语义自动回写库条目)。
|
|
79
|
+
* 这是**预期行为**,不写一句说明会被当成 bug 报上来。
|
|
80
|
+
*/
|
|
81
|
+
export declare function MicroflowDescriptionField({ microflow, onChange, t }: {
|
|
82
|
+
readonly microflow: MicroflowDefinition;
|
|
83
|
+
/** 提交变更后的整份 microflow 定义(宿主按 id 就地替换)。 */
|
|
84
|
+
readonly onChange: (next: MicroflowDefinition) => void;
|
|
85
|
+
readonly t: TranslateNS<'sandore'>;
|
|
86
|
+
}): import("react").JSX.Element;
|
|
21
87
|
/** 渲染 DagEditor(两层 DAG 画布 + 编辑侧栏 + YAML 预览)。 */
|
|
22
|
-
export declare function DagEditor({ t, initialYaml, initialId, save, onSaved, face }: DagEditorProps): import("react").JSX.Element;
|
|
88
|
+
export declare function DagEditor({ t, initialYaml, initialId, save, onSaved, face, libraryEntry, readonly, setReadonly }: DagEditorProps): import("react").JSX.Element;
|