@worca/ui 0.8.1 → 0.9.0-rc.1
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/app/main.bundle.js +1424 -755
- package/app/main.bundle.js.map +4 -4
- package/app/styles.css +399 -23
- package/package.json +1 -1
- package/server/app.js +341 -6
- package/server/dispatch-events-aggregator.js +161 -0
- package/server/ensure-webhook.js +66 -0
- package/server/index.js +22 -0
- package/server/process-manager.js +61 -2
- package/server/project-registry.js +37 -0
- package/server/project-routes.js +175 -6
- package/server/settings-validator.js +279 -2
- package/server/subagents-discovery.js +116 -0
- package/server/version-check.js +35 -0
- package/server/watcher.js +37 -10
- package/server/worca-setup.js +15 -1
- package/server/ws-modular.js +6 -2
package/app/styles.css
CHANGED
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
--status-failed: #ef4444;
|
|
25
25
|
--status-resuming: #3b82f6;
|
|
26
26
|
--status-skipped: #94a3b8;
|
|
27
|
+
--status-interrupted: #f59e0b;
|
|
27
28
|
/* legacy */
|
|
28
29
|
--status-in-progress: #3b82f6;
|
|
29
30
|
--status-error: #ef4444;
|
|
@@ -714,7 +715,7 @@ h1, h2, h3, h4, h5, h6 {
|
|
|
714
715
|
|
|
715
716
|
.stage-node.status-in-progress .stage-icon {
|
|
716
717
|
border-color: var(--status-in-progress);
|
|
717
|
-
box-shadow: 0 0 0 4px rgba(
|
|
718
|
+
box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15);
|
|
718
719
|
}
|
|
719
720
|
|
|
720
721
|
.stage-node.status-completed .stage-icon {
|
|
@@ -730,8 +731,7 @@ h1, h2, h3, h4, h5, h6 {
|
|
|
730
731
|
}
|
|
731
732
|
|
|
732
733
|
.stage-node.status-interrupted .stage-icon {
|
|
733
|
-
border-color: var(--status-
|
|
734
|
-
opacity: 0.6;
|
|
734
|
+
border-color: var(--status-interrupted);
|
|
735
735
|
}
|
|
736
736
|
|
|
737
737
|
.stage-label {
|
|
@@ -1110,8 +1110,7 @@ sl-details.log-history-panel::part(content) {
|
|
|
1110
1110
|
}
|
|
1111
1111
|
|
|
1112
1112
|
.status-interrupted {
|
|
1113
|
-
color: var(--status-
|
|
1114
|
-
opacity: 0.6;
|
|
1113
|
+
color: var(--status-interrupted);
|
|
1115
1114
|
}
|
|
1116
1115
|
|
|
1117
1116
|
.status-running {
|
|
@@ -1539,6 +1538,11 @@ sl-details.log-history-panel::part(content) {
|
|
|
1539
1538
|
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
|
1540
1539
|
gap: 14px;
|
|
1541
1540
|
}
|
|
1541
|
+
/* Worca Versions panels — 50% wider min column (200 → 300) to fit longer
|
|
1542
|
+
version strings (e.g. RCs + local-repo dirty markers) without wrapping */
|
|
1543
|
+
.settings-grid--versions {
|
|
1544
|
+
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
|
1545
|
+
}
|
|
1542
1546
|
|
|
1543
1547
|
.settings-switches {
|
|
1544
1548
|
display: flex;
|
|
@@ -1648,8 +1652,8 @@ sl-details.log-history-panel::part(content) {
|
|
|
1648
1652
|
|
|
1649
1653
|
.settings-dispatch-row {
|
|
1650
1654
|
display: grid;
|
|
1651
|
-
grid-template-columns: 120px 1fr;
|
|
1652
|
-
align-items:
|
|
1655
|
+
grid-template-columns: 120px 1fr auto;
|
|
1656
|
+
align-items: start;
|
|
1653
1657
|
gap: 12px;
|
|
1654
1658
|
}
|
|
1655
1659
|
|
|
@@ -1658,6 +1662,97 @@ sl-details.log-history-panel::part(content) {
|
|
|
1658
1662
|
font-weight: 500;
|
|
1659
1663
|
color: var(--fg);
|
|
1660
1664
|
text-transform: capitalize;
|
|
1665
|
+
padding-top: 6px;
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1668
|
+
/* Tag input component */
|
|
1669
|
+
.dispatch-tag-input-wrapper {
|
|
1670
|
+
position: relative;
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
.dispatch-tag-input {
|
|
1674
|
+
display: flex;
|
|
1675
|
+
flex-wrap: wrap;
|
|
1676
|
+
gap: 4px;
|
|
1677
|
+
align-items: center;
|
|
1678
|
+
padding: 4px 8px;
|
|
1679
|
+
border: 1px solid var(--sl-color-neutral-300);
|
|
1680
|
+
border-radius: var(--sl-border-radius-medium);
|
|
1681
|
+
min-height: 32px;
|
|
1682
|
+
cursor: text;
|
|
1683
|
+
background: var(--sl-color-neutral-0);
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
.dispatch-tag-input:focus-within {
|
|
1687
|
+
border-color: var(--sl-color-primary-500);
|
|
1688
|
+
box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-color-primary-200);
|
|
1689
|
+
}
|
|
1690
|
+
|
|
1691
|
+
.dispatch-tag-input-field {
|
|
1692
|
+
border: none;
|
|
1693
|
+
outline: none;
|
|
1694
|
+
flex: 1;
|
|
1695
|
+
min-width: 60px;
|
|
1696
|
+
font-size: var(--sl-font-size-small);
|
|
1697
|
+
background: transparent;
|
|
1698
|
+
color: var(--fg);
|
|
1699
|
+
}
|
|
1700
|
+
|
|
1701
|
+
.dispatch-suggestions {
|
|
1702
|
+
position: absolute;
|
|
1703
|
+
z-index: 100;
|
|
1704
|
+
top: calc(100% + 2px);
|
|
1705
|
+
left: 0;
|
|
1706
|
+
right: 0;
|
|
1707
|
+
background: var(--sl-color-neutral-0);
|
|
1708
|
+
border: 1px solid var(--sl-color-neutral-200);
|
|
1709
|
+
border-radius: var(--sl-border-radius-medium);
|
|
1710
|
+
box-shadow: var(--sl-shadow-large);
|
|
1711
|
+
max-height: 200px;
|
|
1712
|
+
overflow-y: auto;
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
.dispatch-suggestions .item {
|
|
1716
|
+
padding: 6px 12px;
|
|
1717
|
+
cursor: pointer;
|
|
1718
|
+
font-size: var(--sl-font-size-small);
|
|
1719
|
+
display: flex;
|
|
1720
|
+
justify-content: space-between;
|
|
1721
|
+
align-items: center;
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
.dispatch-suggestions .item:hover,
|
|
1725
|
+
.dispatch-suggestions .item.active {
|
|
1726
|
+
background: var(--sl-color-primary-50);
|
|
1727
|
+
}
|
|
1728
|
+
|
|
1729
|
+
.dispatch-suggestions .item.denied {
|
|
1730
|
+
opacity: 0.5;
|
|
1731
|
+
text-decoration: line-through;
|
|
1732
|
+
cursor: not-allowed;
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
.dispatch-suggestions .item-label {
|
|
1736
|
+
font-size: 11px;
|
|
1737
|
+
color: var(--sl-color-neutral-500);
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
.dispatch-suggestions .group-label {
|
|
1741
|
+
padding: 4px 12px;
|
|
1742
|
+
font-size: 11px;
|
|
1743
|
+
color: var(--sl-color-neutral-500);
|
|
1744
|
+
text-transform: uppercase;
|
|
1745
|
+
letter-spacing: 0.05em;
|
|
1746
|
+
background: var(--sl-color-neutral-50);
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
.dispatch-reset-btn {
|
|
1750
|
+
padding-top: 2px;
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
.dispatch-reset-placeholder {
|
|
1754
|
+
width: 28px;
|
|
1755
|
+
display: inline-block;
|
|
1661
1756
|
}
|
|
1662
1757
|
|
|
1663
1758
|
/* Permissions list */
|
|
@@ -1823,27 +1918,22 @@ sl-input.pricing-input::part(input) {
|
|
|
1823
1918
|
color: var(--muted);
|
|
1824
1919
|
}
|
|
1825
1920
|
|
|
1826
|
-
|
|
1827
|
-
|
|
1921
|
+
/* --- Iteration Tags Row (trigger, outcome, classification, subagents) --- */
|
|
1922
|
+
.iteration-tags-row {
|
|
1923
|
+
display: flex;
|
|
1924
|
+
flex-wrap: wrap;
|
|
1828
1925
|
align-items: center;
|
|
1829
|
-
gap:
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
font-size: 11px;
|
|
1833
|
-
font-weight: 500;
|
|
1834
|
-
background: var(--bg-tertiary);
|
|
1926
|
+
gap: 6px;
|
|
1927
|
+
margin-top: 6px;
|
|
1928
|
+
font-size: 13px;
|
|
1835
1929
|
}
|
|
1836
1930
|
|
|
1837
|
-
.iteration-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
font-weight: 500;
|
|
1931
|
+
.iteration-tags-sep {
|
|
1932
|
+
color: var(--fg);
|
|
1933
|
+
opacity: 0.7;
|
|
1934
|
+
margin: 0 2px;
|
|
1842
1935
|
}
|
|
1843
1936
|
|
|
1844
|
-
.iteration-outcome.success { color: var(--status-completed); }
|
|
1845
|
-
.iteration-outcome.failure { color: var(--status-error); }
|
|
1846
|
-
|
|
1847
1937
|
/* --- Agent Prompt Section --- */
|
|
1848
1938
|
sl-details.agent-prompt-section {
|
|
1849
1939
|
margin-top: 12px;
|
|
@@ -4143,3 +4233,289 @@ sl-tooltip.bead-tooltip::part(body) {
|
|
|
4143
4233
|
text-overflow: ellipsis;
|
|
4144
4234
|
}
|
|
4145
4235
|
|
|
4236
|
+
/* ─── Add Project / Worca Setup dialog shared styles ─────────────────── */
|
|
4237
|
+
.dialog-meta-row {
|
|
4238
|
+
display: flex;
|
|
4239
|
+
align-items: center;
|
|
4240
|
+
gap: 0.5rem;
|
|
4241
|
+
flex-wrap: wrap;
|
|
4242
|
+
font-size: 0.85rem;
|
|
4243
|
+
color: var(--sl-color-neutral-700);
|
|
4244
|
+
margin-bottom: 0.5rem;
|
|
4245
|
+
}
|
|
4246
|
+
|
|
4247
|
+
.dialog-meta-row .sep {
|
|
4248
|
+
color: var(--sl-color-neutral-400);
|
|
4249
|
+
}
|
|
4250
|
+
|
|
4251
|
+
.dialog-meta-row .spacer {
|
|
4252
|
+
flex: 1;
|
|
4253
|
+
}
|
|
4254
|
+
|
|
4255
|
+
.dialog-section-heading {
|
|
4256
|
+
margin: 0.75rem 0 0.5rem;
|
|
4257
|
+
font-size: 0.95rem;
|
|
4258
|
+
font-weight: 600;
|
|
4259
|
+
color: var(--sl-color-neutral-900);
|
|
4260
|
+
}
|
|
4261
|
+
|
|
4262
|
+
.dialog-list {
|
|
4263
|
+
max-height: 300px;
|
|
4264
|
+
overflow-y: auto;
|
|
4265
|
+
border: 1px solid var(--sl-color-neutral-200);
|
|
4266
|
+
border-radius: 4px;
|
|
4267
|
+
padding: 6px 8px;
|
|
4268
|
+
}
|
|
4269
|
+
|
|
4270
|
+
.dialog-list-row {
|
|
4271
|
+
display: flex;
|
|
4272
|
+
align-items: center;
|
|
4273
|
+
gap: 8px;
|
|
4274
|
+
padding: 4px 0;
|
|
4275
|
+
min-height: 28px;
|
|
4276
|
+
}
|
|
4277
|
+
|
|
4278
|
+
.dialog-list-row + .dialog-list-row {
|
|
4279
|
+
border-top: 1px solid var(--sl-color-neutral-100);
|
|
4280
|
+
}
|
|
4281
|
+
|
|
4282
|
+
.dialog-list-row.is-terminal .dialog-list-row-name {
|
|
4283
|
+
opacity: 0.6;
|
|
4284
|
+
}
|
|
4285
|
+
|
|
4286
|
+
.dialog-list-row-icon {
|
|
4287
|
+
flex: 0 0 auto;
|
|
4288
|
+
width: 20px;
|
|
4289
|
+
display: inline-flex;
|
|
4290
|
+
align-items: center;
|
|
4291
|
+
justify-content: center;
|
|
4292
|
+
font-weight: 700;
|
|
4293
|
+
}
|
|
4294
|
+
|
|
4295
|
+
.dialog-list-row-icon.is-success {
|
|
4296
|
+
color: var(--sl-color-success-600);
|
|
4297
|
+
}
|
|
4298
|
+
|
|
4299
|
+
.dialog-list-row-icon.is-failed {
|
|
4300
|
+
color: var(--sl-color-danger-600);
|
|
4301
|
+
}
|
|
4302
|
+
|
|
4303
|
+
.dialog-list-row-name {
|
|
4304
|
+
flex: 0 0 auto;
|
|
4305
|
+
}
|
|
4306
|
+
|
|
4307
|
+
.dialog-list-row-error {
|
|
4308
|
+
color: var(--sl-color-danger-600);
|
|
4309
|
+
font-size: 0.8rem;
|
|
4310
|
+
margin-left: 0.25rem;
|
|
4311
|
+
}
|
|
4312
|
+
|
|
4313
|
+
.dialog-footer {
|
|
4314
|
+
display: flex;
|
|
4315
|
+
justify-content: center;
|
|
4316
|
+
gap: 0.75rem;
|
|
4317
|
+
width: 100%;
|
|
4318
|
+
}
|
|
4319
|
+
|
|
4320
|
+
/* ── Integrations (card catalog) ─────────────────────────────────────── */
|
|
4321
|
+
|
|
4322
|
+
.ig-page {
|
|
4323
|
+
max-width: 720px;
|
|
4324
|
+
}
|
|
4325
|
+
|
|
4326
|
+
.ig-subtitle {
|
|
4327
|
+
margin: 0 0 1.25rem;
|
|
4328
|
+
font-size: 0.85rem;
|
|
4329
|
+
color: var(--sl-color-neutral-500);
|
|
4330
|
+
}
|
|
4331
|
+
|
|
4332
|
+
.ig-cards {
|
|
4333
|
+
display: flex;
|
|
4334
|
+
flex-direction: column;
|
|
4335
|
+
gap: 0.75rem;
|
|
4336
|
+
}
|
|
4337
|
+
|
|
4338
|
+
.ig-card {
|
|
4339
|
+
border: 1px solid var(--sl-color-neutral-200);
|
|
4340
|
+
border-radius: var(--sl-border-radius-medium);
|
|
4341
|
+
padding: 1rem 1.25rem;
|
|
4342
|
+
background: var(--sl-color-neutral-0);
|
|
4343
|
+
}
|
|
4344
|
+
|
|
4345
|
+
.ig-card--connected {
|
|
4346
|
+
border-left: 3px solid var(--sl-color-success-500);
|
|
4347
|
+
}
|
|
4348
|
+
|
|
4349
|
+
.ig-card--disabled {
|
|
4350
|
+
border-left: 3px solid var(--sl-color-neutral-300);
|
|
4351
|
+
opacity: 0.7;
|
|
4352
|
+
}
|
|
4353
|
+
|
|
4354
|
+
.ig-card-footer {
|
|
4355
|
+
display: flex;
|
|
4356
|
+
justify-content: space-between;
|
|
4357
|
+
align-items: center;
|
|
4358
|
+
margin-top: 0.75rem;
|
|
4359
|
+
padding-left: 2.75rem;
|
|
4360
|
+
}
|
|
4361
|
+
|
|
4362
|
+
.ig-card--disconnected {
|
|
4363
|
+
opacity: 0.85;
|
|
4364
|
+
}
|
|
4365
|
+
|
|
4366
|
+
.ig-card-header {
|
|
4367
|
+
display: flex;
|
|
4368
|
+
align-items: center;
|
|
4369
|
+
gap: 0.75rem;
|
|
4370
|
+
}
|
|
4371
|
+
|
|
4372
|
+
.ig-card-icon {
|
|
4373
|
+
font-size: 1.5rem;
|
|
4374
|
+
line-height: 1;
|
|
4375
|
+
}
|
|
4376
|
+
|
|
4377
|
+
.ig-card-title {
|
|
4378
|
+
flex: 1;
|
|
4379
|
+
min-width: 0;
|
|
4380
|
+
}
|
|
4381
|
+
|
|
4382
|
+
.ig-card-name {
|
|
4383
|
+
display: block;
|
|
4384
|
+
font-weight: 600;
|
|
4385
|
+
font-size: 0.95rem;
|
|
4386
|
+
}
|
|
4387
|
+
|
|
4388
|
+
.ig-card-desc {
|
|
4389
|
+
display: block;
|
|
4390
|
+
font-size: 0.8rem;
|
|
4391
|
+
color: var(--sl-color-neutral-500);
|
|
4392
|
+
}
|
|
4393
|
+
|
|
4394
|
+
.ig-badges {
|
|
4395
|
+
display: flex;
|
|
4396
|
+
flex-direction: column;
|
|
4397
|
+
align-items: flex-end;
|
|
4398
|
+
gap: 0.25rem;
|
|
4399
|
+
}
|
|
4400
|
+
|
|
4401
|
+
.ig-card-stats {
|
|
4402
|
+
display: flex;
|
|
4403
|
+
gap: 1rem;
|
|
4404
|
+
margin-top: 0.5rem;
|
|
4405
|
+
padding-left: 2.75rem;
|
|
4406
|
+
font-size: 0.8rem;
|
|
4407
|
+
color: var(--sl-color-neutral-500);
|
|
4408
|
+
}
|
|
4409
|
+
|
|
4410
|
+
.ig-card-stats .stat-warn {
|
|
4411
|
+
color: var(--sl-color-warning-600);
|
|
4412
|
+
}
|
|
4413
|
+
|
|
4414
|
+
.ig-card-chats {
|
|
4415
|
+
display: flex;
|
|
4416
|
+
gap: 0.5rem;
|
|
4417
|
+
flex-wrap: wrap;
|
|
4418
|
+
margin-top: 0.4rem;
|
|
4419
|
+
padding-left: 2.75rem;
|
|
4420
|
+
}
|
|
4421
|
+
|
|
4422
|
+
.ig-chat-badge {
|
|
4423
|
+
display: inline-flex;
|
|
4424
|
+
align-items: center;
|
|
4425
|
+
gap: 0.35rem;
|
|
4426
|
+
font-size: 0.8rem;
|
|
4427
|
+
}
|
|
4428
|
+
|
|
4429
|
+
.ig-chat-id {
|
|
4430
|
+
font-family: var(--sl-font-mono);
|
|
4431
|
+
color: var(--sl-color-neutral-600);
|
|
4432
|
+
font-size: 0.8rem;
|
|
4433
|
+
}
|
|
4434
|
+
|
|
4435
|
+
.ig-card-actions {
|
|
4436
|
+
display: flex;
|
|
4437
|
+
gap: 0.5rem;
|
|
4438
|
+
margin-top: 0.75rem;
|
|
4439
|
+
padding-left: 2.75rem;
|
|
4440
|
+
}
|
|
4441
|
+
|
|
4442
|
+
/* Inline form */
|
|
4443
|
+
|
|
4444
|
+
.ig-form {
|
|
4445
|
+
margin-top: 1rem;
|
|
4446
|
+
padding: 1rem;
|
|
4447
|
+
border-top: 1px solid var(--sl-color-neutral-200);
|
|
4448
|
+
}
|
|
4449
|
+
|
|
4450
|
+
.ig-env-hint {
|
|
4451
|
+
font-size: 0.8rem;
|
|
4452
|
+
color: var(--sl-color-neutral-600);
|
|
4453
|
+
background: var(--sl-color-neutral-50);
|
|
4454
|
+
border: 1px solid var(--sl-color-neutral-200);
|
|
4455
|
+
border-radius: var(--sl-border-radius-small);
|
|
4456
|
+
padding: 0.5rem 0.75rem;
|
|
4457
|
+
margin-bottom: 0.75rem;
|
|
4458
|
+
font-family: var(--sl-font-mono);
|
|
4459
|
+
}
|
|
4460
|
+
|
|
4461
|
+
.ig-form-row {
|
|
4462
|
+
display: grid;
|
|
4463
|
+
grid-template-columns: 1fr 1fr;
|
|
4464
|
+
gap: 0.75rem;
|
|
4465
|
+
}
|
|
4466
|
+
|
|
4467
|
+
@media (max-width: 600px) {
|
|
4468
|
+
.ig-form-row {
|
|
4469
|
+
grid-template-columns: 1fr;
|
|
4470
|
+
}
|
|
4471
|
+
}
|
|
4472
|
+
|
|
4473
|
+
.ig-form-field {
|
|
4474
|
+
margin-bottom: 0.75rem;
|
|
4475
|
+
}
|
|
4476
|
+
|
|
4477
|
+
.ig-form-field label {
|
|
4478
|
+
display: block;
|
|
4479
|
+
font-size: 0.8rem;
|
|
4480
|
+
font-weight: 600;
|
|
4481
|
+
margin-bottom: 0.2rem;
|
|
4482
|
+
color: var(--sl-color-neutral-700);
|
|
4483
|
+
}
|
|
4484
|
+
|
|
4485
|
+
.ig-form-field .form-hint {
|
|
4486
|
+
display: block;
|
|
4487
|
+
font-size: 0.7rem;
|
|
4488
|
+
color: var(--sl-color-neutral-500);
|
|
4489
|
+
margin-top: 0.15rem;
|
|
4490
|
+
}
|
|
4491
|
+
|
|
4492
|
+
.ig-detect-row {
|
|
4493
|
+
display: flex;
|
|
4494
|
+
gap: 0.5rem;
|
|
4495
|
+
align-items: center;
|
|
4496
|
+
}
|
|
4497
|
+
|
|
4498
|
+
.ig-detect-row sl-input {
|
|
4499
|
+
flex: 1;
|
|
4500
|
+
}
|
|
4501
|
+
|
|
4502
|
+
.ig-event-grid {
|
|
4503
|
+
display: grid;
|
|
4504
|
+
grid-template-columns: 1fr 1fr;
|
|
4505
|
+
gap: 0.2rem 0.5rem;
|
|
4506
|
+
}
|
|
4507
|
+
|
|
4508
|
+
.ig-form-actions {
|
|
4509
|
+
display: flex;
|
|
4510
|
+
gap: 0.5rem;
|
|
4511
|
+
margin-top: 0.75rem;
|
|
4512
|
+
}
|
|
4513
|
+
|
|
4514
|
+
.ig-loading {
|
|
4515
|
+
display: flex;
|
|
4516
|
+
align-items: center;
|
|
4517
|
+
gap: 0.5rem;
|
|
4518
|
+
color: var(--sl-color-neutral-500);
|
|
4519
|
+
padding: 2rem;
|
|
4520
|
+
}
|
|
4521
|
+
|