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.
@@ -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;