@growthub/cli 0.13.0 → 0.13.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.
Files changed (27) hide show
  1. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/sandbox-run/route.js +50 -25
  2. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/ApiRegistryActionCard.jsx +141 -0
  3. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/ApiRegistryReviewModal.jsx +38 -0
  4. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/DataModelShell.jsx +522 -35
  5. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/OrchestrationGraphCanvas.jsx +242 -0
  6. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/OrchestrationGraphEmptyCanvas.jsx +52 -0
  7. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/OrchestrationNodeConfigPanel.jsx +1203 -0
  8. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/OrchestrationRunTracePanel.jsx +163 -0
  9. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/SandboxOrchestrationEditorPanel.jsx +190 -0
  10. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/SandboxToolConfirmModal.jsx +64 -0
  11. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/SandboxToolDraftPanel.jsx +376 -0
  12. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/page.jsx +6 -1
  13. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css +1062 -2
  14. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/page.jsx +10 -7
  15. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workflows/WorkflowSurface.jsx +906 -0
  16. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workflows/page.jsx +12 -0
  17. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-builder.jsx +492 -28
  18. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-rail.jsx +114 -30
  19. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/data-model/field-contracts.js +1 -0
  20. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/nav-workflows.js +54 -0
  21. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/orchestration-graph-runner.js +322 -0
  22. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/orchestration-graph.js +734 -0
  23. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/orchestration-run-trace.js +73 -0
  24. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/orchestration-sidecar-routing.js +24 -0
  25. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-data-model.js +2 -0
  26. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-schema.js +21 -1
  27. package/package.json +1 -1
@@ -432,6 +432,14 @@ body.workspace-rail-collapsed .workspace-builder {
432
432
  body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
433
433
  grid-template-columns: 52px minmax(0, 1fr);
434
434
  }
435
+ .workspace-builder.dm-workflow-page {
436
+ grid-template-columns: 264px minmax(0, 1fr);
437
+ height: 100vh;
438
+ overflow: hidden;
439
+ }
440
+ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
441
+ grid-template-columns: 52px minmax(0, 1fr);
442
+ }
435
443
  .workspace-rail.is-collapsed {
436
444
  padding: 18px 10px;
437
445
  align-items: center;
@@ -648,7 +656,7 @@ body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
648
656
  .workspace-table {
649
657
  margin-bottom: 14px;
650
658
  display: grid;
651
- grid-template-columns: minmax(190px, 1.25fr) minmax(116px, 0.75fr) minmax(92px, 0.6fr) minmax(118px, 0.7fr) minmax(210px, 1fr);
659
+ grid-template-columns: minmax(260px, 2fr) minmax(84px, .45fr) minmax(142px, .65fr) minmax(132px, .55fr) 64px;
652
660
  }
653
661
  .workspace-table-heading {
654
662
  grid-column: 1 / -1;
@@ -665,6 +673,62 @@ body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
665
673
  color: #999;
666
674
  font-size: 12px;
667
675
  }
676
+ .workspace-builder-filterbar {
677
+ grid-column: 1 / -1;
678
+ display: flex;
679
+ align-items: center;
680
+ justify-content: space-between;
681
+ gap: 10px;
682
+ border-bottom: 1px solid #ececec;
683
+ padding: 9px 12px;
684
+ }
685
+ .workspace-builder-filterbar__segments {
686
+ display: inline-flex;
687
+ align-items: center;
688
+ gap: 4px;
689
+ padding: 2px;
690
+ border: 1px solid #e5e7eb;
691
+ border-radius: 7px;
692
+ background: #f9fafb;
693
+ }
694
+ .workspace-builder-filterbar__segments button {
695
+ min-height: 26px;
696
+ border: 0;
697
+ border-radius: 5px;
698
+ background: transparent;
699
+ color: #667085;
700
+ cursor: pointer;
701
+ font: inherit;
702
+ font-size: 12px;
703
+ padding: 0 9px;
704
+ }
705
+ .workspace-builder-filterbar__segments button.is-active {
706
+ background: #fff;
707
+ color: #111827;
708
+ box-shadow: 0 1px 2px rgba(15, 23, 42, .08);
709
+ }
710
+ .workspace-builder-filterbar__search {
711
+ min-width: 240px;
712
+ display: grid;
713
+ grid-template-columns: 16px minmax(0, 1fr);
714
+ align-items: center;
715
+ gap: 6px;
716
+ min-height: 32px;
717
+ border: 1px solid #e5e7eb;
718
+ border-radius: 7px;
719
+ background: #fff;
720
+ color: #98a2b3;
721
+ padding: 0 9px;
722
+ }
723
+ .workspace-builder-filterbar__search input {
724
+ min-width: 0;
725
+ border: 0;
726
+ outline: 0;
727
+ background: transparent;
728
+ color: #111827;
729
+ font: inherit;
730
+ font-size: 12px;
731
+ }
668
732
  .workspace-table-row {
669
733
  display: contents;
670
734
  }
@@ -680,6 +744,14 @@ body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
680
744
  font-size: 12px;
681
745
  padding: 7px 10px;
682
746
  }
747
+ .workspace-table-row > span:nth-child(3) {
748
+ white-space: nowrap;
749
+ }
750
+ .workspace-table-row > span:nth-child(5) {
751
+ justify-content: center;
752
+ padding-left: 6px;
753
+ padding-right: 6px;
754
+ }
683
755
  .workspace-table-head > span {
684
756
  min-height: 36px;
685
757
  background: #fbfbfb;
@@ -712,6 +784,9 @@ body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
712
784
  }
713
785
  .workspace-dashboard-title button {
714
786
  min-width: 0;
787
+ display: inline-flex;
788
+ align-items: center;
789
+ gap: 6px;
715
790
  border: 0;
716
791
  background: transparent;
717
792
  color: #333;
@@ -764,6 +839,8 @@ body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
764
839
  .workspace-dashboard-actions {
765
840
  flex-wrap: wrap;
766
841
  justify-content: flex-start;
842
+ position: relative;
843
+ overflow: visible;
767
844
  }
768
845
  .workspace-dashboard-actions button {
769
846
  min-height: 30px;
@@ -784,6 +861,37 @@ body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
784
861
  background: #f7f7f7;
785
862
  border-color: #cfcfcd;
786
863
  }
864
+ .workspace-dashboard-actions .workspace-row-action-trigger {
865
+ width: 34px;
866
+ min-width: 34px;
867
+ padding: 0;
868
+ }
869
+ .workspace-row-action-menu {
870
+ position: fixed;
871
+ z-index: 1000;
872
+ min-width: 148px;
873
+ display: grid;
874
+ gap: 2px;
875
+ padding: 6px;
876
+ border: 1px solid #e5e7eb;
877
+ border-radius: 8px;
878
+ background: #ffffff;
879
+ box-shadow: 0 12px 30px rgba(15, 23, 42, .16);
880
+ }
881
+ .workspace-row-action-menu button {
882
+ width: 100%;
883
+ min-height: 30px;
884
+ justify-content: flex-start;
885
+ border: 0;
886
+ border-radius: 6px;
887
+ background: transparent;
888
+ color: #344054;
889
+ padding: 0 9px;
890
+ }
891
+ .workspace-row-action-menu button:hover {
892
+ background: #f5f5f5;
893
+ border-color: transparent;
894
+ }
787
895
  .workspace-integration-summary {
788
896
  display: grid;
789
897
  grid-template-columns: repeat(3, minmax(0, 1fr));
@@ -4241,6 +4349,9 @@ body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
4241
4349
  .dm-btn-primary-sm { display: inline-flex; align-items: center; gap: 5px; height: 28px; border: 0; border-radius: 6px; background: #111; color: #fff; font: inherit; font-size: 12px; padding: 0 11px; cursor: pointer; font-weight: 500; transition: background .12s; }
4242
4350
  .dm-btn-primary-sm:hover { background: #333; }
4243
4351
  .dm-btn-primary-sm:disabled { opacity: .45; cursor: not-allowed; }
4352
+ .dm-btn-danger-sm { display: inline-flex; align-items: center; justify-content: center; gap: 5px; height: 28px; border: 1px solid #fecaca; border-radius: 6px; background: #fff; color: #dc2626; font: inherit; font-size: 12px; padding: 0 10px; cursor: pointer; transition: background .1s, border-color .1s; }
4353
+ .dm-btn-danger-sm:hover { background: #fef2f2; border-color: #fca5a5; }
4354
+ .dm-btn-danger-sm:disabled { opacity: .5; cursor: not-allowed; }
4244
4355
  .dm-table-wrap { border: 1px solid #e5e7eb; border-radius: 8px; overflow-x: auto; }
4245
4356
  .dm-table { width: 100%; border-collapse: collapse; font-size: 13px; }
4246
4357
  .dm-table th { background: #f9fafb; border-bottom: 1px solid #e5e7eb; color: #6b7280; font-size: 11px; font-weight: 600; text-align: left; padding: 8px 10px; white-space: nowrap; text-transform: uppercase; letter-spacing: .04em; }
@@ -4277,7 +4388,7 @@ body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
4277
4388
  border-bottom: 1px solid #efefef;
4278
4389
  background: #fff;
4279
4390
  }
4280
- .dm-db-toolbar + * { padding-top: 4px; }
4391
+ .dm-db-toolbar + * { padding-top: 0; }
4281
4392
  .dm-db-toolbar .dm-records-actions {
4282
4393
  order: 1;
4283
4394
  margin-left: 0;
@@ -4366,6 +4477,955 @@ body.workspace-rail-collapsed .workspace-builder.workspace-settings-page {
4366
4477
  .dm-db-status.bad span { background: #ef4444; }
4367
4478
  .dm-record-backdrop { position: fixed; inset: 0; z-index: 80; background: rgba(15,23,42,.12); }
4368
4479
  .dm-record-drawer { position: fixed; top: 0; right: 0; bottom: 0; z-index: 81; display: flex; flex-direction: column; width: min(440px, 100vw); background: #fff; border-left: 1px solid #dfe3e8; box-shadow: -10px 0 34px rgba(15,23,42,.16); }
4480
+ .dm-record-drawer-wide { width: min(780px, 100vw); }
4481
+ .dm-api-action-card {
4482
+ display: grid;
4483
+ grid-template-columns: auto 1fr auto;
4484
+ gap: 12px;
4485
+ align-items: start;
4486
+ margin: 12px 16px 0;
4487
+ padding: 14px 14px;
4488
+ background: #fff;
4489
+ border: 1px solid #e5e7eb;
4490
+ border-radius: 5px;
4491
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
4492
+ }
4493
+ .dm-api-action-card-success { grid-template-columns: 1fr auto; }
4494
+ .dm-api-action-card-muted { grid-template-columns: 1fr; background: #fafafa; }
4495
+ .dm-api-action-card-note { font-size: 11px; color: #6b7280; margin-top: 4px; }
4496
+ .dm-api-action-checklist { margin: 8px 0 0; padding: 0; list-style: none; display: grid; gap: 6px; }
4497
+ .dm-api-action-checklist li { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #374151; }
4498
+ .dm-api-action-checklist li.is-done { color: #065f46; }
4499
+ .dm-api-action-checklist li.is-pending { color: #6b7280; }
4500
+ .dm-api-action-card-actions {
4501
+ display: flex;
4502
+ flex-direction: column;
4503
+ gap: 6px;
4504
+ align-items: stretch;
4505
+ flex-shrink: 0;
4506
+ }
4507
+ .dm-api-action-card-actions .dm-api-action-card-cta {
4508
+ display: inline-flex;
4509
+ align-items: center;
4510
+ justify-content: center;
4511
+ gap: 6px;
4512
+ }
4513
+ .dm-api-action-card-icon { color: #111827; margin-top: 2px; }
4514
+ .dm-api-action-card-body { display: grid; gap: 4px; min-width: 0; }
4515
+ .dm-api-action-card-eyebrow { margin: 0; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: #6b7280; }
4516
+ .dm-api-action-card-body h3 { margin: 0; font-size: 14px; font-weight: 650; color: #111827; }
4517
+ .dm-api-action-card-body p { margin: 0; font-size: 12px; line-height: 1.45; color: #4b5563; }
4518
+ .dm-api-action-card-cta { flex-shrink: 0; align-self: center; }
4519
+ .dm-api-review-banner {
4520
+ display: grid;
4521
+ grid-template-columns: auto 1fr auto;
4522
+ gap: 10px;
4523
+ align-items: start;
4524
+ padding: 12px 14px;
4525
+ margin-bottom: 12px;
4526
+ background: #fafafa;
4527
+ border: 1px solid #e5e7eb;
4528
+ border-radius: 5px;
4529
+ }
4530
+ .dm-api-review-banner-icon { color: #111827; }
4531
+ .dm-api-review-banner-body { display: grid; gap: 4px; }
4532
+ .dm-api-review-banner-eyebrow { margin: 0; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #6b7280; }
4533
+ .dm-api-review-banner-body h3 { margin: 0; font-size: 14px; color: #111827; }
4534
+ .dm-api-review-banner-body p { margin: 0; font-size: 12px; color: #4b5563; }
4535
+ .dm-api-review-banner-route { display: block; margin-top: 4px; font-size: 11px; color: #374151; word-break: break-all; }
4536
+ .dm-sandbox-tool-draft { display: flex; flex-direction: column; gap: 12px; padding: 12px 16px 0; overflow-y: auto; flex: 1; min-height: 0; }
4537
+ .dm-sandbox-tool-draft-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; }
4538
+ @media (max-width: 720px) { .dm-sandbox-tool-draft-grid { grid-template-columns: 1fr; } }
4539
+ .dm-sandbox-tool-draft-label { margin: 0 0 8px; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #6b7280; }
4540
+ .dm-sandbox-tool-draft-fields { display: grid; gap: 8px; align-content: start; }
4541
+ .dm-sandbox-tool-draft-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 0 16px; border-top: 1px solid #edf0f3; }
4542
+ .dm-sandbox-tool-advanced { border: 1px solid #e5e7eb; border-radius: 5px; background: #fff; }
4543
+ .dm-sandbox-tool-advanced summary { cursor: pointer; padding: 8px 10px; font-size: 12px; font-weight: 650; color: #111827; }
4544
+ .dm-sandbox-tool-advanced-hint { margin: 0; padding: 0 10px 10px; font-size: 11px; color: #6b7280; }
4545
+ .dm-sandbox-tool-error { margin: 0; font-size: 12px; color: #b91c1c; }
4546
+ .dm-sandbox-tool-test-msg { margin-top: 6px; color: #065f46; }
4547
+ .dm-orchestration-sidecar { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }
4548
+ .dm-orchestration-header { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 12px 16px; border-bottom: 1px solid #edf0f3; }
4549
+ .dm-orchestration-header__back { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: 1px solid #e5e7eb; border-radius: 5px; background: #fff; color: #374151; cursor: pointer; }
4550
+ .dm-orchestration-header__titles { flex: 1; min-width: 140px; }
4551
+ .dm-orchestration-header h2 { margin: 0; font-size: 15px; font-weight: 650; color: #111827; }
4552
+ .dm-orchestration-header p { margin: 4px 0 0; font-size: 12px; color: #6b7280; }
4553
+ .dm-orchestration-header__badge { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; padding: 4px 8px; border-radius: 5px; border: 1px solid #e5e7eb; background: #fafafa; color: #6b7280; }
4554
+ .dm-orchestration-header__badge.is-connected { border-color: #bbf7d0; background: #f0fdf4; color: #166534; }
4555
+ .dm-orchestration-header__badge.is-draft { border-color: #fde68a; background: #fffbeb; color: #92400e; }
4556
+ .dm-orchestration-header__actions { display: flex; gap: 8px; flex-shrink: 0; margin-left: auto; }
4557
+ .dm-orchestration-sidecar__body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 12px; padding: 12px 16px 16px; overflow-y: auto; flex: 1; min-height: 0; }
4558
+ @media (max-width: 720px) { .dm-orchestration-sidecar__body { grid-template-columns: 1fr; } }
4559
+ .dm-orchestration-sidecar__label { margin: 0 0 8px; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #6b7280; }
4560
+ .dm-orchestration-sidecar__footnote { margin: 10px 0 0; font-size: 11px; color: #6b7280; line-height: 1.45; }
4561
+ .dm-orchestration-canvas { position: relative; display: flex; flex-direction: column; align-items: stretch; padding: 28px 12px 12px; background: #fafafa; border: 1px solid #e5e7eb; border-radius: 5px; overflow: visible; }
4562
+ .dm-orchestration-canvas--empty { font-size: 12px; color: #6b7280; }
4563
+ .dm-orchestration-canvas__badge { position: absolute; top: 8px; left: 8px; font-size: 10px; font-weight: 700; text-transform: uppercase; padding: 2px 6px; border-radius: 4px; background: #fffbeb; border: 1px solid #fde68a; color: #92400e; }
4564
+ .dm-orchestration-canvas__step { display: flex; flex-direction: column; align-items: stretch; }
4565
+ .dm-orchestration-node { width: 100%; display: grid; grid-template-columns: auto 1fr; gap: 2px 8px; text-align: left; padding: 10px 12px; border: 1px solid #e5e7eb; border-radius: 5px; background: #fff; box-shadow: 0 1px 4px rgba(15, 23, 42, 0.05); cursor: pointer; transition: border-color 0.1s, box-shadow 0.1s; }
4566
+ .dm-orchestration-node:hover { box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08); border-color: #d1d5db; }
4567
+ .dm-orchestration-node--selected { border-color: #2563eb; box-shadow: 0 0 0 1px #2563eb, 0 2px 8px rgba(37, 99, 235, 0.12); }
4568
+ .dm-orchestration-node__icon { grid-row: 1 / span 3; color: #374151; display: inline-flex; align-items: flex-start; padding-top: 2px; }
4569
+ .dm-orchestration-node__type { grid-column: 2; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: #6b7280; }
4570
+ .dm-orchestration-node__title { grid-column: 2; font-size: 13px; font-weight: 650; color: #111827; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4571
+ .dm-orchestration-node__subtitle { grid-column: 2; font-size: 11px; color: #4b5563; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4572
+ .dm-orchestration-connector { position: relative; display: flex; flex-direction: column; align-items: center; padding: 4px 0; overflow: visible; z-index: 1; }
4573
+ .dm-orchestration-connector__line { width: 1px; height: 16px; background: #d1d5db; }
4574
+ .dm-orchestration-connector__add { width: 22px; height: 22px; margin: 2px 0; border: 1px solid #e5e7eb; border-radius: 50%; background: #fff; color: #374151; font-size: 14px; line-height: 1; cursor: pointer; opacity: 0; transition: opacity 0.1s; }
4575
+ .dm-orchestration-connector:hover .dm-orchestration-connector__add { opacity: 1; }
4576
+ .dm-orchestration-connector__popover { position: absolute; left: 50%; transform: translateX(-50%); top: 28px; z-index: 85; min-width: 180px; padding: 8px; background: #fff; border: 1px solid #e5e7eb; border-radius: 5px; box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12); }
4577
+ .dm-orchestration-connector__popover p { margin: 0 0 6px; font-size: 11px; color: #6b7280; }
4578
+ .dm-orchestration-connector__popover button { display: block; width: 100%; text-align: left; padding: 6px 8px; border: none; background: transparent; font-size: 12px; color: #111827; border-radius: 4px; cursor: pointer; }
4579
+ .dm-orchestration-connector__popover button:hover { background: #f3f4f6; }
4580
+ .dm-orchestration-connector__passes { font-size: 9px; color: #9ca3af; margin-top: 2px; }
4581
+ .dm-orchestration-config { display: grid; gap: 10px; padding: 12px; background: #fff; border: 1px solid #e5e7eb; border-radius: 5px; min-height: 200px; }
4582
+ .dm-orchestration-config--empty p { margin: 0; font-size: 12px; color: #6b7280; }
4583
+ .dm-orchestration-config__head { display: grid; gap: 2px; padding-bottom: 8px; border-bottom: 1px solid #f3f4f6; }
4584
+ .dm-orchestration-config__node-kind { margin: 0; font-size: 14px; font-weight: 650; color: #111827; }
4585
+ .dm-orchestration-config__node-sub { margin: 0; font-size: 11px; color: #6b7280; }
4586
+ .dm-orchestration-config__badge { display: inline-flex; align-self: start; font-size: 10px; font-weight: 700; text-transform: none; padding: 3px 8px; border-radius: 5px; border: 1px solid #e5e7eb; background: #fafafa; color: #374151; }
4587
+ .dm-orchestration-config__badge.is-connected { border-color: #bbf7d0; background: #f0fdf4; color: #166534; }
4588
+ .dm-orchestration-config__badge.is-failed { border-color: #fecaca; background: #fef2f2; color: #991b1b; }
4589
+ .dm-orchestration-config__meta { margin: 0; font-size: 11px; color: #4b5563; }
4590
+ .dm-orchestration-config__field-label { font-size: 11px; font-weight: 650; color: #475569; }
4591
+ .dm-orchestration-config__fieldmap,
4592
+ .dm-orchestration-config__payload { display: grid; gap: 8px; }
4593
+ .dm-orchestration-config__fieldmap-row,
4594
+ .dm-orchestration-config__payload-row { display: grid; grid-template-columns: 1fr 1fr auto; gap: 6px; align-items: center; }
4595
+ .dm-orchestration-config__advanced-json summary { cursor: pointer; font-size: 11px; font-weight: 650; color: #374151; }
4596
+ .dm-orchestration-preview { margin: 0; padding: 10px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 5px; font-size: 10px; overflow: auto; max-height: 160px; white-space: pre-wrap; word-break: break-word; }
4597
+ .dm-orchestration-preview > span { display: block; font-size: 10px; font-weight: 700; text-transform: uppercase; color: #6b7280; margin-bottom: 6px; }
4598
+ .dm-orchestration-config__preview-list { margin: 0; padding-left: 18px; font-size: 12px; color: #374151; display: grid; gap: 4px; }
4599
+ .dm-orchestration-config__tabs { display: flex; gap: 4px; flex-wrap: wrap; }
4600
+ .dm-orchestration-config__tabs button { padding: 5px 10px; border: 1px solid #e5e7eb; border-radius: 5px; background: #fafafa; font-size: 11px; font-weight: 600; color: #4b5563; cursor: pointer; }
4601
+ .dm-orchestration-config__tabs button.is-active { background: #fff; border-color: #111827; color: #111827; }
4602
+ .dm-orchestration-config__pane { display: grid; gap: 8px; }
4603
+ .dm-orchestration-config__field { display: grid; gap: 4px; }
4604
+ .dm-orchestration-config__field span { font-size: 11px; font-weight: 650; color: #475569; }
4605
+ .dm-orchestration-config__field input,
4606
+ .dm-orchestration-config__field textarea,
4607
+ .dm-orchestration-config__field select { border: 1px solid #cbd5e1; border-radius: 5px; padding: 7px 9px; font-size: 12px; color: #111827; }
4608
+ .dm-orchestration-config__field-inline { grid-template-columns: auto 1fr; align-items: center; }
4609
+ .dm-orchestration-config__filter-row { display: grid; grid-template-columns: 1fr auto 1fr auto; gap: 6px; align-items: center; }
4610
+ .dm-orchestration-config__add-filter { justify-self: start; }
4611
+ .dm-orchestration-config__preview { margin: 0; padding: 10px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 5px; font-size: 10px; overflow: auto; max-height: 160px; }
4612
+ .dm-orchestration-config__hint { margin: 0; font-size: 11px; color: #6b7280; }
4613
+ .dm-orchestration-config__error { margin: 0; font-size: 12px; color: #b91c1c; }
4614
+ .dm-orchestration-runtime { border: 1px solid #e5e7eb; border-radius: 5px; background: #fafafa; }
4615
+ .dm-orchestration-runtime summary { cursor: pointer; padding: 8px 10px; font-size: 12px; font-weight: 650; color: #111827; }
4616
+ .dm-orchestration-runtime__fields { display: grid; gap: 8px; padding: 0 10px 10px; }
4617
+ .dm-orchestration-run-status { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 12px; padding-top: 10px; border-top: 1px solid #e5e7eb; }
4618
+ .dm-orchestration-run-status__badge { font-size: 11px; font-weight: 600; text-transform: capitalize; color: #374151; }
4619
+ .dm-orchestration-run-status__badge.is-success { color: #166534; }
4620
+ .dm-orchestration-run-status__badge.is-failed { color: #b91c1c; }
4621
+ .dm-orchestration-run-status__badge.is-running { color: #1d4ed8; }
4622
+ .dm-orchestration-run-status__message { width: 100%; margin: 0; font-size: 11px; color: #4b5563; }
4623
+ .dm-orchestration-confirm__backdrop { position: fixed; inset: 0; z-index: 92; background: rgba(15, 23, 42, 0.35); display: flex; align-items: center; justify-content: center; padding: 16px; }
4624
+ .dm-orchestration-confirm__dialog { width: min(420px, 100%); background: #fff; border: 1px solid #e5e7eb; border-radius: 5px; box-shadow: 0 12px 40px rgba(15, 23, 42, 0.14); }
4625
+ .dm-orchestration-confirm__head { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid #edf0f3; }
4626
+ .dm-orchestration-confirm__head p { margin: 0 0 2px; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #6b7280; }
4627
+ .dm-orchestration-confirm__head h2 { margin: 0; font-size: 16px; color: #111827; }
4628
+ .dm-orchestration-confirm__body { padding: 14px 16px; display: grid; gap: 10px; font-size: 13px; color: #374151; line-height: 1.5; }
4629
+ .dm-orchestration-confirm__list { margin: 0; padding-left: 18px; }
4630
+ .dm-orchestration-confirm__summary { margin: 0; padding: 10px 12px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 5px; font-size: 12px; }
4631
+ .dm-orchestration-confirm__summary span { display: block; font-size: 10px; font-weight: 700; text-transform: uppercase; color: #6b7280; margin-bottom: 4px; }
4632
+ .dm-workflow-surface {
4633
+ display: flex;
4634
+ flex-direction: column;
4635
+ min-height: 0;
4636
+ width: 100%;
4637
+ padding: 0;
4638
+ background: #f7f7f8;
4639
+ overflow: hidden;
4640
+ }
4641
+ .dm-workflow-toolbar {
4642
+ height: 40px;
4643
+ min-height: 40px;
4644
+ align-items: center;
4645
+ flex-wrap: nowrap;
4646
+ gap: 12px;
4647
+ padding: 0 12px;
4648
+ margin: 0;
4649
+ border-bottom: 1px solid #ececef;
4650
+ background: #fbfbfc;
4651
+ overflow: hidden;
4652
+ }
4653
+ .dm-workflow-titlebar {
4654
+ display: flex;
4655
+ align-items: center;
4656
+ gap: 6px;
4657
+ min-width: 0;
4658
+ flex: 1;
4659
+ color: #8b8b91;
4660
+ font-size: 13px;
4661
+ font-weight: 500;
4662
+ }
4663
+ .dm-workflow-titlebar h1 {
4664
+ margin: 0;
4665
+ min-width: 0;
4666
+ max-width: 260px;
4667
+ overflow: hidden;
4668
+ text-overflow: ellipsis;
4669
+ white-space: nowrap;
4670
+ color: #4b4b52;
4671
+ font-size: 13px;
4672
+ font-weight: 600;
4673
+ letter-spacing: 0;
4674
+ }
4675
+ .dm-workflow-title-icon {
4676
+ display: grid;
4677
+ place-items: center;
4678
+ width: 18px;
4679
+ height: 18px;
4680
+ border: 1px solid #e1e1e5;
4681
+ border-radius: 4px;
4682
+ background: #f4f4f5;
4683
+ color: #a1a1aa;
4684
+ }
4685
+ .dm-workflow-title-muted,
4686
+ .dm-workflow-title-separator,
4687
+ .dm-workflow-count {
4688
+ color: #a1a1aa;
4689
+ }
4690
+ .dm-workflow-toolbar-actions {
4691
+ display: flex;
4692
+ align-items: center;
4693
+ gap: 6px;
4694
+ flex-shrink: 0;
4695
+ max-width: 66vw;
4696
+ overflow-x: auto;
4697
+ scrollbar-width: none;
4698
+ }
4699
+ .dm-workflow-toolbar-actions::-webkit-scrollbar { display: none; }
4700
+ .dm-workflow-icon-btn,
4701
+ .dm-workflow-chip-btn {
4702
+ height: 24px;
4703
+ display: inline-flex;
4704
+ align-items: center;
4705
+ justify-content: center;
4706
+ gap: 5px;
4707
+ border: 1px solid #dedee3;
4708
+ border-radius: 4px;
4709
+ background: transparent;
4710
+ color: #62626a;
4711
+ font: inherit;
4712
+ font-size: 12px;
4713
+ line-height: 1;
4714
+ text-decoration: none;
4715
+ cursor: pointer;
4716
+ }
4717
+ .dm-workflow-icon-btn {
4718
+ width: 24px;
4719
+ padding: 0;
4720
+ }
4721
+ .dm-workflow-chip-btn {
4722
+ padding: 0 9px;
4723
+ }
4724
+ .dm-workflow-icon-btn:hover:not(:disabled),
4725
+ .dm-workflow-chip-btn:hover:not(:disabled) {
4726
+ background: #ededf0;
4727
+ color: #303036;
4728
+ }
4729
+ .dm-workflow-icon-btn:disabled,
4730
+ .dm-workflow-chip-btn:disabled {
4731
+ opacity: .48;
4732
+ cursor: not-allowed;
4733
+ }
4734
+ .dm-workflow-orchestration {
4735
+ flex: 1;
4736
+ min-height: 0;
4737
+ height: calc(100vh - 40px);
4738
+ background: #f7f7f8;
4739
+ }
4740
+ .dm-workflow-empty { padding: 24px 16px; font-size: 13px; color: #6b7280; }
4741
+ .dm-workflow-error { color: #b91c1c; }
4742
+ .dm-workflow-status-msg { margin: 0 16px 16px; font-size: 12px; color: #374151; }
4743
+
4744
+ .dm-workflow-orchestration .dm-orchestration-sidecar__body {
4745
+ display: grid;
4746
+ grid-template-columns: minmax(0, 1fr) 0;
4747
+ gap: 8px;
4748
+ height: 100%;
4749
+ padding: 8px;
4750
+ overflow: hidden;
4751
+ }
4752
+ .dm-workflow-orchestration.has-panel .dm-orchestration-sidecar__body {
4753
+ grid-template-columns: minmax(420px, 1fr) minmax(360px, 480px);
4754
+ }
4755
+ .dm-workflow-orchestration .dm-orchestration-sidecar__canvas-col {
4756
+ min-width: 0;
4757
+ min-height: 0;
4758
+ overflow: hidden;
4759
+ border: 1px solid #ececef;
4760
+ border-radius: 6px;
4761
+ background: #fff;
4762
+ }
4763
+ .dm-workflow-orchestration .dm-orchestration-sidecar__config-col {
4764
+ min-width: 0;
4765
+ min-height: 0;
4766
+ display: flex;
4767
+ flex-direction: column;
4768
+ overflow: hidden;
4769
+ border: 1px solid #ececef;
4770
+ border-radius: 6px;
4771
+ background: #fff;
4772
+ }
4773
+ .dm-workflow-panel-head {
4774
+ height: 40px;
4775
+ display: flex;
4776
+ align-items: center;
4777
+ gap: 8px;
4778
+ padding: 0 12px;
4779
+ border-bottom: 1px solid #ececef;
4780
+ background: #fff;
4781
+ color: #303036;
4782
+ font-size: 13px;
4783
+ font-weight: 600;
4784
+ }
4785
+ .dm-workflow-panel-head em {
4786
+ color: #a1a1aa;
4787
+ font-size: 12px;
4788
+ font-style: normal;
4789
+ font-weight: 500;
4790
+ }
4791
+
4792
+ .dm-workflow-orchestration .dm-orchestration-canvas {
4793
+ height: 100%;
4794
+ min-height: 520px;
4795
+ align-items: center;
4796
+ justify-content: center;
4797
+ padding: 64px 24px;
4798
+ border: 0;
4799
+ border-radius: 0;
4800
+ background-color: #fff;
4801
+ background-image: radial-gradient(circle, #e7e7eb 1px, transparent 1px);
4802
+ background-size: 20px 20px;
4803
+ box-shadow: none;
4804
+ overflow: hidden;
4805
+ }
4806
+ .dm-workflow-orchestration .dm-orchestration-canvas__badge {
4807
+ top: 16px;
4808
+ left: 16px;
4809
+ height: 20px;
4810
+ display: inline-flex;
4811
+ align-items: center;
4812
+ padding: 0 8px;
4813
+ border: 0;
4814
+ border-radius: 4px;
4815
+ background: #fff5b8;
4816
+ color: #9a6b00;
4817
+ font-size: 12px;
4818
+ font-weight: 500;
4819
+ text-transform: none;
4820
+ letter-spacing: 0;
4821
+ }
4822
+ .dm-workflow-orchestration .dm-orchestration-canvas__badge.is-live {
4823
+ background: #dcfce7;
4824
+ color: #166534;
4825
+ }
4826
+ .dm-workflow-orchestration .dm-orchestration-canvas__badge.is-draft {
4827
+ background: #fff5b8;
4828
+ color: #9a6b00;
4829
+ }
4830
+ .dm-orchestration-floating-tools {
4831
+ position: absolute;
4832
+ right: 18px;
4833
+ top: 50%;
4834
+ transform: translateY(-50%);
4835
+ display: grid;
4836
+ gap: 2px;
4837
+ padding: 2px;
4838
+ border-radius: 6px;
4839
+ z-index: 3;
4840
+ }
4841
+ .dm-orchestration-floating-tools button {
4842
+ width: 28px;
4843
+ height: 28px;
4844
+ display: grid;
4845
+ place-items: center;
4846
+ border: 0;
4847
+ border-radius: 5px;
4848
+ background: transparent;
4849
+ color: #777780;
4850
+ cursor: pointer;
4851
+ }
4852
+ .dm-orchestration-floating-tools button:hover {
4853
+ background: #f0f0f2;
4854
+ color: #303036;
4855
+ }
4856
+ .dm-orchestration-canvas__viewport {
4857
+ display: flex;
4858
+ flex-direction: column;
4859
+ align-items: center;
4860
+ transform-origin: center top;
4861
+ transition: transform .12s ease;
4862
+ }
4863
+ .dm-workflow-orchestration .dm-orchestration-canvas__step {
4864
+ width: 173px;
4865
+ display: flex;
4866
+ flex-direction: column;
4867
+ align-items: center;
4868
+ }
4869
+ .dm-workflow-orchestration .dm-orchestration-node {
4870
+ position: relative;
4871
+ width: 173px;
4872
+ min-height: 50px;
4873
+ grid-template-columns: 28px minmax(0, 1fr);
4874
+ grid-template-rows: auto auto;
4875
+ gap: 1px 8px;
4876
+ align-items: center;
4877
+ align-content: center;
4878
+ padding: 8px 10px;
4879
+ border: 1px solid #dedee4;
4880
+ border-radius: 6px;
4881
+ background: #fff;
4882
+ box-shadow: 0 1px 2px rgba(15, 23, 42, .08), 0 2px 7px rgba(15, 23, 42, .04);
4883
+ }
4884
+ .dm-workflow-orchestration .dm-orchestration-node:hover {
4885
+ border-color: #b9b9c1;
4886
+ box-shadow: 0 2px 5px rgba(15, 23, 42, .1), 0 6px 14px rgba(15, 23, 42, .06);
4887
+ }
4888
+ .dm-workflow-orchestration .dm-orchestration-node--selected {
4889
+ border-color: #5166f1;
4890
+ box-shadow: 0 0 0 1px #5166f1;
4891
+ }
4892
+ .dm-workflow-orchestration .dm-orchestration-node__icon {
4893
+ width: 28px;
4894
+ height: 28px;
4895
+ grid-row: 1 / span 2;
4896
+ align-self: center;
4897
+ display: grid;
4898
+ place-items: center;
4899
+ padding: 0;
4900
+ border-radius: 5px;
4901
+ background: #f2f2f4;
4902
+ color: #111;
4903
+ }
4904
+ .dm-workflow-orchestration .dm-orchestration-node__icon svg { stroke: currentColor; }
4905
+ .dm-workflow-orchestration .dm-orchestration-node__type {
4906
+ align-self: end;
4907
+ color: #7b7b84;
4908
+ font-size: 10px;
4909
+ line-height: 1.1;
4910
+ font-weight: 500;
4911
+ text-transform: none;
4912
+ letter-spacing: 0;
4913
+ }
4914
+ .dm-workflow-orchestration .dm-orchestration-node__title {
4915
+ align-self: start;
4916
+ color: #303036;
4917
+ font-size: 13px;
4918
+ line-height: 1.15;
4919
+ font-weight: 500;
4920
+ }
4921
+ .dm-workflow-orchestration .dm-orchestration-node__gear {
4922
+ position: absolute;
4923
+ top: 6px;
4924
+ right: 6px;
4925
+ display: grid;
4926
+ place-items: center;
4927
+ width: 18px;
4928
+ height: 18px;
4929
+ border-radius: 4px;
4930
+ color: #6b7280;
4931
+ background: #fff;
4932
+ opacity: 0;
4933
+ transition: opacity .1s ease, background .1s ease;
4934
+ }
4935
+ .dm-workflow-orchestration .dm-orchestration-node:hover .dm-orchestration-node__gear,
4936
+ .dm-workflow-orchestration .dm-orchestration-node:focus-within .dm-orchestration-node__gear,
4937
+ .dm-workflow-orchestration .dm-orchestration-node:focus-visible .dm-orchestration-node__gear {
4938
+ opacity: 1;
4939
+ }
4940
+ .dm-workflow-orchestration .dm-orchestration-node__gear:hover {
4941
+ background: #f3f4f6;
4942
+ color: #111;
4943
+ }
4944
+ .dm-workflow-orchestration .dm-orchestration-node__subtitle {
4945
+ display: none;
4946
+ }
4947
+ .dm-workflow-orchestration .dm-orchestration-connector {
4948
+ height: 60px;
4949
+ padding: 0;
4950
+ justify-content: center;
4951
+ }
4952
+ .dm-workflow-orchestration .dm-orchestration-connector__line {
4953
+ position: absolute;
4954
+ top: 5px;
4955
+ bottom: 8px;
4956
+ height: auto;
4957
+ width: 1px;
4958
+ background: #c4c4cc;
4959
+ }
4960
+ .dm-workflow-orchestration .dm-orchestration-connector__line::before {
4961
+ content: "";
4962
+ position: absolute;
4963
+ top: -8px;
4964
+ left: 50%;
4965
+ width: 7px;
4966
+ height: 7px;
4967
+ transform: translateX(-50%);
4968
+ border: 1px solid #c4c4cc;
4969
+ border-radius: 999px;
4970
+ background: #fff;
4971
+ }
4972
+ .dm-workflow-orchestration .dm-orchestration-connector__line::after {
4973
+ content: "";
4974
+ position: absolute;
4975
+ bottom: -6px;
4976
+ left: 50%;
4977
+ width: 9px;
4978
+ height: 7px;
4979
+ transform: translateX(-50%);
4980
+ border: 0;
4981
+ clip-path: polygon(0 0, 100% 0, 50% 100%);
4982
+ background: #c4c4cc;
4983
+ }
4984
+ .dm-workflow-orchestration .dm-orchestration-connector__add {
4985
+ position: relative;
4986
+ z-index: 2;
4987
+ width: 22px;
4988
+ height: 22px;
4989
+ display: grid;
4990
+ place-items: center;
4991
+ margin: 0;
4992
+ padding: 0;
4993
+ border-radius: 999px;
4994
+ background: #fff;
4995
+ border: 1px solid #d9d9df;
4996
+ color: #8b8b91;
4997
+ opacity: 0;
4998
+ box-shadow: 0 1px 2px rgba(15, 23, 42, .08);
4999
+ transition: opacity .1s ease, background .1s ease, color .1s ease, border-color .1s ease;
5000
+ }
5001
+ .dm-workflow-orchestration .dm-orchestration-connector:hover .dm-orchestration-connector__add,
5002
+ .dm-workflow-orchestration .dm-orchestration-connector__add:focus-visible {
5003
+ opacity: 1;
5004
+ }
5005
+ .dm-workflow-orchestration .dm-orchestration-connector__add:hover {
5006
+ background: #f7f7f8;
5007
+ border-color: #c9c9d1;
5008
+ color: #111;
5009
+ }
5010
+ .dm-workflow-orchestration .dm-orchestration-config {
5011
+ flex: 1;
5012
+ min-height: 0;
5013
+ display: flex;
5014
+ flex-direction: column;
5015
+ overflow-y: auto;
5016
+ border: 0;
5017
+ border-radius: 0;
5018
+ padding: 16px;
5019
+ background: #fff;
5020
+ align-content: start;
5021
+ }
5022
+ .dm-workflow-orchestration .dm-orchestration-config__head {
5023
+ padding-bottom: 12px;
5024
+ border-bottom-color: #edf0f3;
5025
+ }
5026
+ .dm-workflow-orchestration .dm-orchestration-config__node-kind {
5027
+ font-size: 14px;
5028
+ font-weight: 650;
5029
+ }
5030
+ .dm-workflow-orchestration .dm-orchestration-config__node-sub,
5031
+ .dm-workflow-orchestration .dm-orchestration-config__hint {
5032
+ font-size: 12px;
5033
+ line-height: 1.35;
5034
+ color: #667085;
5035
+ }
5036
+ .dm-workflow-orchestration .dm-orchestration-config__tabs {
5037
+ gap: 6px;
5038
+ }
5039
+ .dm-workflow-orchestration .dm-orchestration-config__tabs button {
5040
+ height: 32px;
5041
+ padding: 0 12px;
5042
+ border: 1px solid #e0e0e0;
5043
+ border-radius: 6px;
5044
+ background: #fff;
5045
+ color: #4b5563;
5046
+ font-size: 13px;
5047
+ font-weight: 600;
5048
+ }
5049
+ .dm-workflow-orchestration .dm-orchestration-config__tabs button:hover {
5050
+ background: #f5f5f5;
5051
+ border-color: #bbb;
5052
+ }
5053
+ .dm-workflow-orchestration .dm-orchestration-config__tabs button.is-active {
5054
+ border-color: #111;
5055
+ background: #fff;
5056
+ color: #111;
5057
+ }
5058
+ .dm-workflow-orchestration .dm-orchestration-config__pane {
5059
+ gap: 12px;
5060
+ }
5061
+ .dm-workflow-orchestration .dm-orchestration-config__field {
5062
+ gap: 6px;
5063
+ }
5064
+ .dm-workflow-orchestration .dm-orchestration-config__field span {
5065
+ color: #475569;
5066
+ font-size: 11px;
5067
+ font-weight: 650;
5068
+ }
5069
+ .dm-workflow-orchestration .dm-orchestration-config__section {
5070
+ display: grid;
5071
+ gap: 10px;
5072
+ padding-top: 12px;
5073
+ border-top: 1px solid #edf0f3;
5074
+ }
5075
+ .dm-workflow-orchestration .dm-orchestration-config__pane > .dm-orchestration-config__section:first-child {
5076
+ padding-top: 0;
5077
+ border-top: 0;
5078
+ }
5079
+ .dm-workflow-orchestration .dm-orchestration-config__section > span,
5080
+ .dm-workflow-orchestration .dm-orchestration-config__field-label,
5081
+ .dm-workflow-action-group__label {
5082
+ color: #111827;
5083
+ font-weight: 650;
5084
+ }
5085
+ .dm-workflow-orchestration .dm-orchestration-config__field input,
5086
+ .dm-workflow-orchestration .dm-orchestration-config__field textarea,
5087
+ .dm-workflow-orchestration .dm-orchestration-config__field select {
5088
+ width: 100%;
5089
+ min-height: 32px;
5090
+ border: 1px solid #cbd5e1;
5091
+ border-radius: 6px;
5092
+ background: #fff;
5093
+ color: #111827;
5094
+ font: inherit;
5095
+ font-size: 12px;
5096
+ padding: 7px 9px;
5097
+ box-sizing: border-box;
5098
+ }
5099
+ .dm-workflow-orchestration .dm-orchestration-config__field input:focus,
5100
+ .dm-workflow-orchestration .dm-orchestration-config__field textarea:focus,
5101
+ .dm-workflow-orchestration .dm-orchestration-config__field select:focus {
5102
+ outline: none;
5103
+ border-color: #64748b;
5104
+ box-shadow: 0 0 0 3px rgba(100, 116, 139, .12);
5105
+ }
5106
+ .dm-workflow-orchestration .dm-orchestration-config__field input:disabled,
5107
+ .dm-workflow-orchestration .dm-orchestration-config__field textarea:disabled,
5108
+ .dm-workflow-orchestration .dm-orchestration-config__field select:disabled {
5109
+ background: #fff;
5110
+ color: #111827;
5111
+ -webkit-text-fill-color: #111827;
5112
+ opacity: 1;
5113
+ }
5114
+ .dm-workflow-orchestration .dm-orchestration-config__preview,
5115
+ .dm-workflow-orchestration .dm-orchestration-preview {
5116
+ border-color: #e5e7eb;
5117
+ border-radius: 6px;
5118
+ background: #fbfdff;
5119
+ }
5120
+ .dm-workflow-orchestration .dm-version-delta {
5121
+ gap: 12px;
5122
+ }
5123
+ .dm-workflow-orchestration .dm-version-delta__label-row {
5124
+ display: inline-flex;
5125
+ align-items: center;
5126
+ gap: 6px;
5127
+ }
5128
+ .dm-workflow-orchestration .dm-version-delta__info {
5129
+ width: 15px;
5130
+ height: 15px;
5131
+ display: inline-grid;
5132
+ place-items: center;
5133
+ border: 1px solid #d1d5db;
5134
+ border-radius: 999px;
5135
+ color: #667085;
5136
+ font-size: 10px;
5137
+ font-weight: 700;
5138
+ line-height: 1;
5139
+ opacity: 0;
5140
+ transition: opacity .12s ease, border-color .12s ease, color .12s ease;
5141
+ }
5142
+ .dm-workflow-orchestration .dm-version-delta:hover .dm-version-delta__info,
5143
+ .dm-workflow-orchestration .dm-version-delta__info:focus-visible {
5144
+ opacity: 1;
5145
+ }
5146
+ .dm-workflow-orchestration .dm-version-delta__info:hover {
5147
+ border-color: #9ca3af;
5148
+ color: #111827;
5149
+ }
5150
+ .dm-workflow-orchestration .dm-version-delta__tag-fields {
5151
+ display: grid;
5152
+ gap: 10px;
5153
+ }
5154
+ .dm-workflow-orchestration .dm-orchestration-config__node-json {
5155
+ border-top: 1px solid #e5e7eb;
5156
+ padding-top: 12px;
5157
+ }
5158
+ .dm-workflow-orchestration .dm-orchestration-config__node-json summary {
5159
+ width: fit-content;
5160
+ color: #475467;
5161
+ font-size: 12px;
5162
+ font-weight: 650;
5163
+ }
5164
+ .dm-workflow-orchestration .dm-orchestration-config__node-json .dm-orchestration-preview {
5165
+ margin-top: 8px;
5166
+ max-height: 220px;
5167
+ overflow: auto;
5168
+ border-color: #e5e7eb;
5169
+ background: #ffffff;
5170
+ color: #111827;
5171
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
5172
+ font-size: 11px;
5173
+ line-height: 1.45;
5174
+ white-space: pre;
5175
+ word-break: normal;
5176
+ }
5177
+ .dm-workflow-add-panel {
5178
+ display: grid;
5179
+ gap: 14px;
5180
+ padding: 16px;
5181
+ overflow-y: auto;
5182
+ background: #fff;
5183
+ }
5184
+ .dm-workflow-add-panel__context {
5185
+ display: grid;
5186
+ gap: 2px;
5187
+ padding-bottom: 12px;
5188
+ border-bottom: 1px solid #edf0f3;
5189
+ }
5190
+ .dm-workflow-add-panel__context span,
5191
+ .dm-workflow-action-group__label {
5192
+ color: #94a3b8;
5193
+ font-size: 11px;
5194
+ font-weight: 700;
5195
+ }
5196
+ .dm-workflow-add-panel__context strong {
5197
+ color: #111827;
5198
+ font-size: 13px;
5199
+ font-weight: 650;
5200
+ }
5201
+ .dm-workflow-add-panel__context em {
5202
+ color: #64748b;
5203
+ font-size: 12px;
5204
+ font-style: normal;
5205
+ }
5206
+ .dm-workflow-action-group {
5207
+ display: grid;
5208
+ gap: 4px;
5209
+ padding-top: 10px;
5210
+ border-top: 1px solid #edf0f3;
5211
+ }
5212
+ .dm-workflow-action-group:first-of-type {
5213
+ border-top: 0;
5214
+ padding-top: 0;
5215
+ }
5216
+ .dm-workflow-action-option {
5217
+ min-height: 34px;
5218
+ display: grid;
5219
+ grid-template-columns: 24px minmax(0, 1fr);
5220
+ gap: 8px;
5221
+ align-items: center;
5222
+ border: 0;
5223
+ border-radius: 6px;
5224
+ background: #fff;
5225
+ color: #666;
5226
+ font: inherit;
5227
+ font-size: 13px;
5228
+ padding: 5px 7px;
5229
+ text-align: left;
5230
+ cursor: pointer;
5231
+ }
5232
+ .dm-workflow-action-option:hover {
5233
+ background: #f5f5f5;
5234
+ color: #111;
5235
+ }
5236
+ .dm-workflow-action-option > span {
5237
+ width: 24px;
5238
+ height: 24px;
5239
+ display: grid;
5240
+ place-items: center;
5241
+ border-radius: 5px;
5242
+ background: #f3f4f6;
5243
+ color: #111;
5244
+ }
5245
+ .dm-workflow-action-option strong {
5246
+ min-width: 0;
5247
+ color: inherit;
5248
+ font-size: 13px;
5249
+ font-weight: 500;
5250
+ }
5251
+ .dm-workflow-action-option em,
5252
+ .dm-workflow-action-option small {
5253
+ grid-column: 2;
5254
+ color: #94a3b8;
5255
+ font-size: 11px;
5256
+ font-style: normal;
5257
+ }
5258
+ .dm-workflow-add-panel .dm-workflow-action-group__label {
5259
+ color: #111827;
5260
+ }
5261
+ .dm-workflow-node-config-foot {
5262
+ display: flex;
5263
+ justify-content: flex-end;
5264
+ gap: 8px;
5265
+ margin-top: auto;
5266
+ padding-top: 14px;
5267
+ border-top: 1px solid #edf0f3;
5268
+ }
5269
+ .dm-workflow-node-options,
5270
+ .dm-workflow-node-delete {
5271
+ height: 28px;
5272
+ display: inline-flex;
5273
+ align-items: center;
5274
+ justify-content: center;
5275
+ border: 1px solid #e5e7eb;
5276
+ border-radius: 6px;
5277
+ background: #fff;
5278
+ font: inherit;
5279
+ font-size: 12px;
5280
+ cursor: pointer;
5281
+ }
5282
+ .dm-workflow-node-options {
5283
+ color: #6b7280;
5284
+ padding: 0 10px;
5285
+ }
5286
+ .dm-workflow-node-delete {
5287
+ color: #ef4444;
5288
+ padding: 0 10px;
5289
+ }
5290
+ .dm-workflow-node-options:hover:not(:disabled),
5291
+ .dm-workflow-node-delete:hover:not(:disabled) {
5292
+ background: #f8fafc;
5293
+ }
5294
+ @media (max-width: 1100px) {
5295
+ .dm-workflow-orchestration.has-panel .dm-orchestration-sidecar__body {
5296
+ position: relative;
5297
+ grid-template-columns: minmax(0, 1fr);
5298
+ }
5299
+ .dm-workflow-orchestration.has-panel .dm-orchestration-sidecar__config-col {
5300
+ position: absolute;
5301
+ top: 8px;
5302
+ right: 8px;
5303
+ bottom: 8px;
5304
+ z-index: 6;
5305
+ width: min(420px, calc(100% - 16px));
5306
+ box-shadow: -10px 0 34px rgba(15, 23, 42, .16);
5307
+ }
5308
+ }
5309
+ .workspace-rail-folder-picker-item-text { display: grid; gap: 2px; text-align: left; min-width: 0; }
5310
+ .dm-orchestration-confirm__foot { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 16px; border-top: 1px solid #edf0f3; }
5311
+ .dm-orchestration-canvas--empty-state {
5312
+ background: #fff;
5313
+ background-image: radial-gradient(circle, #e5e7eb 1px, transparent 1px);
5314
+ background-size: 12px 12px;
5315
+ border: 1px solid #e5e7eb;
5316
+ border-radius: 5px;
5317
+ min-height: 220px;
5318
+ align-items: center;
5319
+ justify-content: center;
5320
+ }
5321
+ .dm-orchestration-canvas__empty-card {
5322
+ max-width: 360px;
5323
+ padding: 20px;
5324
+ text-align: center;
5325
+ background: #fff;
5326
+ border: 1px solid #edf0f3;
5327
+ border-radius: 5px;
5328
+ }
5329
+ .dm-orchestration-canvas__empty-card h3 { margin: 0 0 6px; font-size: 14px; font-weight: 650; color: #111827; }
5330
+ .dm-orchestration-canvas__empty-card p { margin: 0 0 14px; font-size: 12px; line-height: 1.45; color: #6b7280; }
5331
+ .dm-orchestration-canvas__empty-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
5332
+ .dm-orchestration-canvas__paste { margin-top: 12px; text-align: left; font-size: 11px; color: #6b7280; }
5333
+ .dm-orchestration-canvas__paste textarea { width: 100%; margin-top: 6px; font-size: 11px; border: 1px solid #e5e7eb; border-radius: 5px; padding: 8px; }
5334
+ .dm-orchestration-canvas--blank-shell {
5335
+ background: #fff;
5336
+ background-image: radial-gradient(circle, #f3f4f6 1px, transparent 1px);
5337
+ background-size: 10px 10px;
5338
+ border: 1px solid #e5e7eb;
5339
+ border-radius: 5px;
5340
+ min-height: 180px;
5341
+ align-items: center;
5342
+ justify-content: center;
5343
+ gap: 10px;
5344
+ }
5345
+ .dm-orchestration-canvas__blank-hint { margin: 0; font-size: 12px; color: #6b7280; }
5346
+ .dm-orchestration-canvas__add-node { margin-top: 8px; align-self: center; }
5347
+ .dm-orchestration-trace { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }
5348
+ .dm-orchestration-trace__head { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid #edf0f3; flex-wrap: wrap; }
5349
+ .dm-orchestration-trace__head h2 { margin: 0; font-size: 15px; font-weight: 650; }
5350
+ .dm-orchestration-trace__head p { margin: 4px 0 0; font-size: 12px; color: #6b7280; }
5351
+ .dm-orchestration-trace__body { display: grid; grid-template-columns: minmax(140px, 200px) minmax(0, 1fr); gap: 12px; padding: 12px 16px 16px; overflow: hidden; flex: 1; min-height: 0; }
5352
+ @media (max-width: 720px) { .dm-orchestration-trace__body { grid-template-columns: 1fr; } }
5353
+ .dm-orchestration-trace__list { display: flex; flex-direction: column; gap: 6px; overflow-y: auto; min-height: 0; }
5354
+ .dm-orchestration-trace__list-title { margin: 0 0 4px; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #6b7280; }
5355
+ .dm-orchestration-trace__run { display: grid; gap: 2px; text-align: left; padding: 8px 10px; border: 1px solid #e5e7eb; border-radius: 5px; background: #fff; cursor: pointer; font-size: 11px; }
5356
+ .dm-orchestration-trace__run.is-active { border-color: #2563eb; box-shadow: 0 0 0 1px #2563eb; }
5357
+ .dm-orchestration-trace__run span:first-child { font-weight: 650; color: #111827; word-break: break-all; }
5358
+ .dm-orchestration-trace__run span:last-child { color: #6b7280; }
5359
+ .dm-orchestration-trace__detail { overflow-y: auto; min-height: 0; display: grid; gap: 10px; align-content: start; }
5360
+ .dm-orchestration-trace__meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px; margin: 0; font-size: 11px; }
5361
+ .dm-orchestration-trace__meta dt { margin: 0; font-weight: 650; color: #6b7280; }
5362
+ .dm-orchestration-trace__meta dd { margin: 0; color: #111827; word-break: break-all; }
5363
+ .dm-orchestration-trace__error,
5364
+ .dm-orchestration-trace__output { display: grid; gap: 4px; }
5365
+ .dm-orchestration-trace__error span,
5366
+ .dm-orchestration-trace__output span { font-size: 10px; font-weight: 700; text-transform: uppercase; color: #6b7280; }
5367
+ .dm-orchestration-trace__error pre,
5368
+ .dm-orchestration-trace__output pre { margin: 0; padding: 10px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 5px; font-size: 10px; overflow: auto; max-height: 200px; white-space: pre-wrap; word-break: break-word; }
5369
+ .dm-field-link { gap: 6px; }
5370
+ .dm-field-link__btn { text-align: left; padding: 8px 10px; border: 1px solid #e5e7eb; border-radius: 5px; background: #fafafa; font-size: 12px; color: #111827; cursor: pointer; width: 100%; }
5371
+ .dm-field-link__btn:hover:not(:disabled) { border-color: #2563eb; background: #fff; }
5372
+ .dm-field-link__btn:disabled { opacity: 0.5; cursor: default; }
5373
+ .dm-field-link__hint { font-size: 10px; color: #9ca3af; }
5374
+ .dm-field-link__row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
5375
+ .dm-cell-link { display: block; width: 100%; text-align: left; padding: 0; border: none; background: transparent; font-size: inherit; color: #2563eb; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
5376
+ .dm-cell-link.dm-cell-empty { color: #9ca3af; text-decoration: none; cursor: default; }
5377
+ .dm-cell-link:not(:disabled):hover { color: #1d4ed8; }
5378
+ .dm-drawer-field { display: grid; gap: 4px; }
5379
+ .dm-drawer-field span { font-size: 11px; font-weight: 650; color: #475569; }
5380
+ .dm-drawer-field input,
5381
+ .dm-drawer-field textarea,
5382
+ .dm-drawer-field select { border: 1px solid #cbd5e1; border-radius: 5px; padding: 7px 9px; font-size: 12px; color: #111827; }
5383
+ .dm-drawer-field-inline { grid-template-columns: auto 1fr; align-items: center; }
5384
+ .dm-orch-canvas {
5385
+ display: flex;
5386
+ flex-direction: column;
5387
+ align-items: stretch;
5388
+ gap: 0;
5389
+ padding: 14px;
5390
+ background: #fff;
5391
+ border: 1px solid #e5e7eb;
5392
+ border-radius: 5px;
5393
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
5394
+ }
5395
+ .dm-orch-canvas-empty { color: #6b7280; font-size: 12px; }
5396
+ .dm-orch-canvas-step { display: flex; flex-direction: column; align-items: center; }
5397
+ .dm-orch-canvas-arrow { width: 1px; height: 14px; background: #d1d5db; margin: 2px 0; }
5398
+ .dm-orch-node {
5399
+ width: 100%;
5400
+ display: grid;
5401
+ gap: 2px;
5402
+ text-align: left;
5403
+ padding: 10px 12px;
5404
+ border: 1px solid #e5e7eb;
5405
+ border-radius: 5px;
5406
+ background: #fff;
5407
+ box-shadow: 0 1px 4px rgba(15, 23, 42, 0.05);
5408
+ cursor: pointer;
5409
+ transition: border-color 0.1s, box-shadow 0.1s;
5410
+ }
5411
+ .dm-orch-node:hover { border-color: #9ca3af; }
5412
+ .dm-orch-node.is-selected { border-color: #111827; box-shadow: 0 2px 8px rgba(15, 23, 42, 0.1); }
5413
+ .dm-orch-node-type { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: #6b7280; }
5414
+ .dm-orch-node-label { font-size: 13px; font-weight: 650; color: #111827; }
5415
+ .dm-orch-node-meta { font-size: 11px; color: #4b5563; font-family: ui-monospace, monospace; }
5416
+ .dm-orch-node-inspector { margin-top: 10px; padding: 10px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 5px; }
5417
+ .dm-orch-node-inspector-title { display: block; font-size: 11px; font-weight: 700; color: #374151; margin-bottom: 6px; }
5418
+ .dm-orch-node-inspector pre { margin: 0; font-size: 10px; color: #374151; overflow: auto; max-height: 120px; }
5419
+ .dm-orch-modal-backdrop { position: fixed; inset: 0; z-index: 90; background: rgba(15, 23, 42, 0.35); display: flex; align-items: center; justify-content: center; padding: 16px; }
5420
+ .dm-orch-modal { width: min(420px, 100%); background: #fff; border: 1px solid #e5e7eb; border-radius: 5px; box-shadow: 0 12px 40px rgba(15, 23, 42, 0.14); }
5421
+ .dm-orch-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid #edf0f3; }
5422
+ .dm-orch-modal-head p { margin: 0 0 2px; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #6b7280; }
5423
+ .dm-orch-modal-head h2 { margin: 0; font-size: 16px; color: #111827; }
5424
+ .dm-orch-modal-body { padding: 14px 16px; display: grid; gap: 10px; font-size: 13px; color: #374151; line-height: 1.5; }
5425
+ .dm-orch-modal-list { margin: 0; padding-left: 18px; }
5426
+ .dm-orch-modal-summary { margin: 0; padding: 10px 12px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 5px; font-size: 12px; }
5427
+ .dm-orch-modal-summary span { display: block; font-size: 10px; font-weight: 700; text-transform: uppercase; color: #6b7280; margin-bottom: 4px; }
5428
+ .dm-orch-modal-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 16px; border-top: 1px solid #edf0f3; }
4369
5429
  .dm-record-drawer-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px; border-bottom: 1px solid #edf0f3; }
4370
5430
  .dm-record-drawer-actions { display: inline-flex; align-items: center; gap: 8px; }
4371
5431
  .dm-record-drawer-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 16px; border-top: 1px solid #edf0f3; background: #fff; }