viveworker 0.8.4 → 0.8.6
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/README.md +11 -1
- package/package.json +18 -10
- package/scripts/mcp-server.mjs +111 -5
- package/scripts/share-cli.mjs +326 -45
- package/scripts/viveworker-bridge.mjs +458 -39
- package/scripts/viveworker.mjs +9 -0
- package/templates/CLAUDE.viveworker.md +3 -1
- package/web/app.css +195 -0
- package/web/app.js +1017 -237
- package/web/build-id.js +1 -1
- package/web/i18n.js +114 -18
- package/web/sw.js +4 -0
package/scripts/viveworker.mjs
CHANGED
|
@@ -115,6 +115,9 @@ async function main(cliOptions) {
|
|
|
115
115
|
case "stop":
|
|
116
116
|
await runStop(cliOptions);
|
|
117
117
|
return;
|
|
118
|
+
case "restart":
|
|
119
|
+
await runRestart(cliOptions);
|
|
120
|
+
return;
|
|
118
121
|
case "status":
|
|
119
122
|
await runStatus(cliOptions);
|
|
120
123
|
return;
|
|
@@ -1181,6 +1184,11 @@ async function runStop(cliOptions) {
|
|
|
1181
1184
|
]);
|
|
1182
1185
|
}
|
|
1183
1186
|
|
|
1187
|
+
async function runRestart(cliOptions) {
|
|
1188
|
+
await runStop(cliOptions);
|
|
1189
|
+
await runStart(cliOptions);
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1184
1192
|
async function runStatus(cliOptions) {
|
|
1185
1193
|
const configDir = resolvePath(cliOptions.configDir || defaultConfigDir);
|
|
1186
1194
|
const envFile = resolvePath(cliOptions.envFile || path.join(configDir, "config.env"));
|
|
@@ -1834,6 +1842,7 @@ ${t(locale, "cli.help.commands")}
|
|
|
1834
1842
|
${t(locale, "cli.help.enable")}
|
|
1835
1843
|
${t(locale, "cli.help.start")}
|
|
1836
1844
|
${t(locale, "cli.help.stop")}
|
|
1845
|
+
${t(locale, "cli.help.restart")}
|
|
1837
1846
|
${t(locale, "cli.help.status")}
|
|
1838
1847
|
${t(locale, "cli.help.doctor")}
|
|
1839
1848
|
${t(locale, "cli.help.update")}
|
|
@@ -26,7 +26,8 @@ Then restart the Claude Code session. If the tools are not available, ask the us
|
|
|
26
26
|
- `viveworker_notify` sends an informational phone notification and records a timeline entry.
|
|
27
27
|
- `viveworker_ask` asks the paired phone a question and waits for the answer.
|
|
28
28
|
- `viveworker_request_approval` asks the phone to approve or reject a proposed action.
|
|
29
|
-
- `viveworker_share_file` uploads a workspace file to File Share after phone approval.
|
|
29
|
+
- `viveworker_share_file` uploads a workspace file to File Share after phone approval. For password-protected handoff, pass `tokenize: true` to return a short-lived passwordless `?t=` URL.
|
|
30
|
+
- `viveworker_share_link` mints a short-lived passwordless `?t=` URL for an existing password-protected File Share slug after phone approval.
|
|
30
31
|
- `viveworker_thread_share` shares context into another Codex / Claude / inbox thread.
|
|
31
32
|
- `viveworker_send_a2a_task` sends a task to a registered A2A target after phone approval.
|
|
32
33
|
|
|
@@ -35,6 +36,7 @@ Then restart the Claude Code session. If the tools are not available, ask the us
|
|
|
35
36
|
- If the user says "ask me on my phone", "スマホに聞いて", or a short decision blocks progress, use `viveworker_ask`.
|
|
36
37
|
- If the user asks you to proceed with a risky, external, irreversible, payment-related, or user-visible action, use `viveworker_request_approval`.
|
|
37
38
|
- If the user asks for a report, prototype, screenshot, PDF, CSV, or standalone HTML to become a shareable link, use `viveworker_share_file`.
|
|
39
|
+
- If the user asks for a password-protected share but wants the recipient to open it without knowing the password, use `viveworker_share_file` with `password` and `tokenize: true`, or use `viveworker_share_link` for an existing slug.
|
|
38
40
|
- If the user says "share this with Codex/Claude", "Aの内容をBに共有して", or wants context handed to another session, use `viveworker_thread_share`.
|
|
39
41
|
- If the user wants another registered agent to do work, use `viveworker_send_a2a_task`.
|
|
40
42
|
|
package/web/app.css
CHANGED
|
@@ -1061,6 +1061,69 @@ pre code {
|
|
|
1061
1061
|
text-align: left;
|
|
1062
1062
|
}
|
|
1063
1063
|
|
|
1064
|
+
.wallet-agent-defaults-summary-wrap {
|
|
1065
|
+
min-width: 0;
|
|
1066
|
+
max-width: min(100%, 15.5rem);
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
.wallet-agent-defaults-summary-button {
|
|
1070
|
+
max-width: 100%;
|
|
1071
|
+
display: inline-flex;
|
|
1072
|
+
align-items: center;
|
|
1073
|
+
justify-content: flex-end;
|
|
1074
|
+
gap: 0.32rem;
|
|
1075
|
+
min-width: 0;
|
|
1076
|
+
padding: 0;
|
|
1077
|
+
border: 0;
|
|
1078
|
+
background: transparent;
|
|
1079
|
+
color: inherit;
|
|
1080
|
+
cursor: pointer;
|
|
1081
|
+
-webkit-tap-highlight-color: transparent;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
.wallet-agent-default-pill {
|
|
1085
|
+
min-width: 0;
|
|
1086
|
+
display: inline-flex;
|
|
1087
|
+
align-items: center;
|
|
1088
|
+
min-height: 1.62rem;
|
|
1089
|
+
padding: 0.16rem 0.52rem;
|
|
1090
|
+
border-radius: 999px;
|
|
1091
|
+
border: 1px solid rgba(112, 202, 157, 0.24);
|
|
1092
|
+
background: rgba(112, 202, 157, 0.12);
|
|
1093
|
+
color: rgba(185, 239, 208, 0.96);
|
|
1094
|
+
font-size: 0.74rem;
|
|
1095
|
+
font-weight: 800;
|
|
1096
|
+
letter-spacing: 0.04em;
|
|
1097
|
+
line-height: 1;
|
|
1098
|
+
text-transform: uppercase;
|
|
1099
|
+
overflow: hidden;
|
|
1100
|
+
text-overflow: ellipsis;
|
|
1101
|
+
white-space: nowrap;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
.wallet-agent-default-more {
|
|
1105
|
+
flex: 0 0 auto;
|
|
1106
|
+
display: inline-flex;
|
|
1107
|
+
align-items: center;
|
|
1108
|
+
justify-content: center;
|
|
1109
|
+
min-height: 1.62rem;
|
|
1110
|
+
padding: 0.16rem 0.46rem;
|
|
1111
|
+
border-radius: 999px;
|
|
1112
|
+
border: 1px solid rgba(121, 196, 255, 0.22);
|
|
1113
|
+
background: rgba(121, 196, 255, 0.1);
|
|
1114
|
+
color: rgba(198, 232, 255, 0.96);
|
|
1115
|
+
font-size: 0.74rem;
|
|
1116
|
+
font-weight: 800;
|
|
1117
|
+
letter-spacing: 0.03em;
|
|
1118
|
+
line-height: 1;
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
.wallet-agent-defaults-summary-button:focus-visible {
|
|
1122
|
+
outline: 2px solid rgba(121, 196, 255, 0.55);
|
|
1123
|
+
outline-offset: 3px;
|
|
1124
|
+
border-radius: 999px;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1064
1127
|
.settings-info-row__value--mono {
|
|
1065
1128
|
font-family: ui-monospace, SFMono-Regular, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
1066
1129
|
font-size: 0.82rem;
|
|
@@ -1122,6 +1185,17 @@ pre code {
|
|
|
1122
1185
|
color: #79c4ff;
|
|
1123
1186
|
}
|
|
1124
1187
|
|
|
1188
|
+
.settings-choice-row__input {
|
|
1189
|
+
width: 1.05rem;
|
|
1190
|
+
height: 1.05rem;
|
|
1191
|
+
margin: 0;
|
|
1192
|
+
accent-color: #70ca9d;
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
.settings-choice-row--checkbox {
|
|
1196
|
+
cursor: pointer;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1125
1199
|
.settings-copy-block {
|
|
1126
1200
|
padding: 0.95rem 1rem;
|
|
1127
1201
|
}
|
|
@@ -1451,6 +1525,68 @@ pre code {
|
|
|
1451
1525
|
line-height: 1.5;
|
|
1452
1526
|
}
|
|
1453
1527
|
|
|
1528
|
+
.wallet-agent-draft-notice {
|
|
1529
|
+
border-color: rgba(240, 180, 40, 0.18);
|
|
1530
|
+
background: rgba(42, 34, 22, 0.52);
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1533
|
+
.wallet-agent-draft-notice p {
|
|
1534
|
+
color: rgba(255, 220, 140, 0.9);
|
|
1535
|
+
font-size: 0.84rem;
|
|
1536
|
+
line-height: 1.5;
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1539
|
+
.app-toast {
|
|
1540
|
+
position: fixed;
|
|
1541
|
+
left: 50%;
|
|
1542
|
+
bottom: max(1rem, calc(env(safe-area-inset-bottom, 0px) + 0.9rem));
|
|
1543
|
+
z-index: 80;
|
|
1544
|
+
display: grid;
|
|
1545
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
1546
|
+
align-items: center;
|
|
1547
|
+
gap: 0.68rem;
|
|
1548
|
+
width: min(calc(100vw - 2rem), 28rem);
|
|
1549
|
+
padding: 0.78rem 0.92rem;
|
|
1550
|
+
border: 1px solid rgba(112, 202, 157, 0.3);
|
|
1551
|
+
border-radius: 18px;
|
|
1552
|
+
background: linear-gradient(135deg, rgba(24, 41, 34, 0.98), rgba(18, 27, 31, 0.98));
|
|
1553
|
+
box-shadow: 0 18px 44px rgba(0, 0, 0, 0.36), 0 0 0 1px rgba(255, 255, 255, 0.04) inset;
|
|
1554
|
+
color: #ecfff5;
|
|
1555
|
+
transform: translateX(-50%);
|
|
1556
|
+
}
|
|
1557
|
+
|
|
1558
|
+
.app-toast--error {
|
|
1559
|
+
border-color: rgba(255, 140, 140, 0.28);
|
|
1560
|
+
background: linear-gradient(135deg, rgba(55, 28, 31, 0.98), rgba(22, 28, 33, 0.98));
|
|
1561
|
+
color: #fff0f0;
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
.app-toast__icon {
|
|
1565
|
+
width: 1.4rem;
|
|
1566
|
+
height: 1.4rem;
|
|
1567
|
+
display: inline-flex;
|
|
1568
|
+
align-items: center;
|
|
1569
|
+
justify-content: center;
|
|
1570
|
+
color: #7fe0a8;
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1573
|
+
.app-toast--error .app-toast__icon {
|
|
1574
|
+
color: #ff9e9e;
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
.app-toast__icon svg {
|
|
1578
|
+
width: 100%;
|
|
1579
|
+
height: 100%;
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
.app-toast__message {
|
|
1583
|
+
min-width: 0;
|
|
1584
|
+
font-size: 0.9rem;
|
|
1585
|
+
font-weight: 700;
|
|
1586
|
+
line-height: 1.45;
|
|
1587
|
+
overflow-wrap: anywhere;
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1454
1590
|
.settings-update-notice {
|
|
1455
1591
|
margin-top: 0.85rem;
|
|
1456
1592
|
border-color: rgba(121, 196, 255, 0.22);
|
|
@@ -1503,6 +1639,12 @@ pre code {
|
|
|
1503
1639
|
outline: none;
|
|
1504
1640
|
}
|
|
1505
1641
|
|
|
1642
|
+
.wallet-agent-actions {
|
|
1643
|
+
display: grid;
|
|
1644
|
+
gap: 0.65rem;
|
|
1645
|
+
padding: 0.8rem;
|
|
1646
|
+
}
|
|
1647
|
+
|
|
1506
1648
|
/* Wraps the banner + notice + step list on the wallet settings page.
|
|
1507
1649
|
Pulled out of `renderSettingsGroup`'s `.settings-list` so each child card
|
|
1508
1650
|
renders on the page background instead of nested inside another frame. */
|
|
@@ -1749,6 +1891,22 @@ pre code {
|
|
|
1749
1891
|
box-shadow: 0 0 0 3px rgba(47, 143, 103, 0.22);
|
|
1750
1892
|
}
|
|
1751
1893
|
|
|
1894
|
+
.wallet-step-card__field-input--error {
|
|
1895
|
+
border-color: rgba(255, 140, 140, 0.55);
|
|
1896
|
+
background: rgba(53, 26, 29, 0.42);
|
|
1897
|
+
}
|
|
1898
|
+
|
|
1899
|
+
.wallet-step-card__field-input--error:focus {
|
|
1900
|
+
border-color: rgba(255, 165, 165, 0.78);
|
|
1901
|
+
box-shadow: 0 0 0 3px rgba(255, 92, 92, 0.16);
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1904
|
+
.wallet-step-card__field-error {
|
|
1905
|
+
color: #ffb6b6;
|
|
1906
|
+
font-size: 0.78rem;
|
|
1907
|
+
line-height: 1.4;
|
|
1908
|
+
}
|
|
1909
|
+
|
|
1752
1910
|
.wallet-step-card__field-input--mono {
|
|
1753
1911
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
1754
1912
|
letter-spacing: 0.14em;
|
|
@@ -5050,6 +5208,43 @@ button:disabled {
|
|
|
5050
5208
|
gap: 0.9rem;
|
|
5051
5209
|
}
|
|
5052
5210
|
|
|
5211
|
+
.modal-card--wallet-defaults {
|
|
5212
|
+
display: grid;
|
|
5213
|
+
gap: 0.9rem;
|
|
5214
|
+
}
|
|
5215
|
+
|
|
5216
|
+
.wallet-agent-defaults-modal-list {
|
|
5217
|
+
display: grid;
|
|
5218
|
+
overflow: hidden;
|
|
5219
|
+
border: 1px solid rgba(156, 181, 197, 0.1);
|
|
5220
|
+
border-radius: 18px;
|
|
5221
|
+
background: rgba(255, 255, 255, 0.03);
|
|
5222
|
+
}
|
|
5223
|
+
|
|
5224
|
+
.wallet-agent-defaults-modal-row {
|
|
5225
|
+
display: grid;
|
|
5226
|
+
gap: 0.22rem;
|
|
5227
|
+
padding: 0.85rem 0.92rem;
|
|
5228
|
+
}
|
|
5229
|
+
|
|
5230
|
+
.wallet-agent-defaults-modal-row + .wallet-agent-defaults-modal-row {
|
|
5231
|
+
border-top: 1px solid rgba(255, 255, 255, 0.06);
|
|
5232
|
+
}
|
|
5233
|
+
|
|
5234
|
+
.wallet-agent-defaults-modal-title {
|
|
5235
|
+
color: var(--text);
|
|
5236
|
+
font-size: 0.98rem;
|
|
5237
|
+
font-weight: 760;
|
|
5238
|
+
line-height: 1.35;
|
|
5239
|
+
}
|
|
5240
|
+
|
|
5241
|
+
.wallet-agent-defaults-modal-meta {
|
|
5242
|
+
color: var(--muted);
|
|
5243
|
+
font-size: 0.84rem;
|
|
5244
|
+
line-height: 1.35;
|
|
5245
|
+
overflow-wrap: anywhere;
|
|
5246
|
+
}
|
|
5247
|
+
|
|
5053
5248
|
.logout-option {
|
|
5054
5249
|
display: grid;
|
|
5055
5250
|
gap: 0.8rem;
|