@mycadet/assistant 0.12.10 → 0.13.0

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 (180) hide show
  1. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +10 -10
  2. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +3 -3
  3. package/node_modules/@mycadet/ces-client/src/http-credentials.ts +18 -1
  4. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +10 -10
  5. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +3 -3
  6. package/node_modules/@mycadet/gateway-client/src/gateway-ipc-contracts.ts +0 -20
  7. package/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +10 -10
  8. package/node_modules/@mycadet/service-contracts/src/ingress.ts +3 -3
  9. package/openapi.yaml +2 -708
  10. package/package.json +2 -3
  11. package/scripts/sync-web-search-catalog.ts +1 -2
  12. package/src/__tests__/cloud-profile-guard.test.ts +41 -5
  13. package/src/__tests__/config-schema.test.ts +6 -38
  14. package/src/__tests__/conversation-queue.test.ts +45 -6
  15. package/src/__tests__/db-readiness-http-gate.test.ts +0 -6
  16. package/src/__tests__/persist-onboarding-artifacts.test.ts +0 -1
  17. package/src/__tests__/persona-resolver.test.ts +0 -51
  18. package/src/__tests__/provider-cloud-proxy-integration.test.ts +2 -110
  19. package/src/__tests__/run-due-schedules.test.ts +0 -4
  20. package/src/__tests__/schedule-store.test.ts +0 -12
  21. package/src/__tests__/stt-stream-session.test.ts +4 -4
  22. package/src/__tests__/telephony-tts-guard.test.ts +2 -50
  23. package/src/__tests__/voice-config-update.test.ts +12 -167
  24. package/src/__tests__/web-search-catalog-parity.test.ts +0 -2
  25. package/src/__tests__/workspace-migration-130-speech-mode-to-provider.test.ts +9 -7
  26. package/src/__tests__/workspace-migration-132-web-search-mode-to-provider.test.ts +6 -6
  27. package/src/calls/__tests__/voice-session-bridge.test.ts +1 -4
  28. package/src/calls/resolve-call-tts-provider.ts +6 -25
  29. package/src/calls/telephony-credential-preflight.ts +0 -10
  30. package/src/calls/telephony-tts-capability.ts +1 -17
  31. package/src/cli/commands/tts.ts +1 -2
  32. package/src/cli/index.help.ts +0 -2
  33. package/src/cli/program.ts +0 -2
  34. package/src/config/bundled-skills/settings/tools/voice-config-update.ts +4 -42
  35. package/src/config/schemas/__tests__/stt.test.ts +10 -14
  36. package/src/config/schemas/llm.ts +3 -5
  37. package/src/config/schemas/services.ts +5 -6
  38. package/src/config/schemas/stt.ts +1 -3
  39. package/src/config/schemas/tts.ts +1 -30
  40. package/src/daemon/daemon-readiness.ts +4 -29
  41. package/src/daemon/lifecycle.ts +0 -31
  42. package/src/daemon/providers-setup.ts +0 -8
  43. package/src/heartbeat/__tests__/heartbeat-service.test.ts +0 -1
  44. package/src/heartbeat/heartbeat-service.ts +1 -66
  45. package/src/ipc/__tests__/db-readiness-ipc-gate.test.ts +1 -9
  46. package/src/live-voice/__tests__/live-voice-credential-preflight.test.ts +0 -44
  47. package/src/live-voice/__tests__/live-voice-flux-turn-end.test.ts +4 -6
  48. package/src/live-voice/__tests__/live-voice-stt.test.ts +1 -1
  49. package/src/live-voice/live-voice-credential-preflight.ts +9 -33
  50. package/src/live-voice/live-voice-session.ts +10 -6
  51. package/src/live-voice/live-voice-tts.ts +1 -8
  52. package/src/plugins/defaults/memory/worker.ts +3 -3
  53. package/src/prompts/persona-resolver.ts +0 -35
  54. package/src/providers/__tests__/search-provider-catalog.test.ts +5 -8
  55. package/src/providers/__tests__/voice-error-copy.test.ts +9 -10
  56. package/src/providers/search-provider-catalog.ts +7 -39
  57. package/src/providers/speech-to-text/__tests__/provider-catalog.test.ts +3 -47
  58. package/src/providers/speech-to-text/__tests__/resolve.test.ts +6 -372
  59. package/src/providers/speech-to-text/provider-catalog.ts +2 -73
  60. package/src/providers/speech-to-text/resolve.ts +3 -120
  61. package/src/runtime/http-router-types.ts +1 -3
  62. package/src/runtime/http-server.ts +1 -1
  63. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +13 -11
  64. package/src/runtime/routes/__tests__/tts-routes.test.ts +2 -6
  65. package/src/runtime/routes/conversation-query-routes.ts +0 -96
  66. package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +7 -7
  67. package/src/runtime/routes/index.ts +0 -4
  68. package/src/runtime/routes/live-voice-routes.test.ts +4 -11
  69. package/src/runtime/routes/live-voice-routes.ts +8 -11
  70. package/src/runtime/routes/secret-routes.ts +0 -6
  71. package/src/runtime/routes/tts-routes.ts +0 -38
  72. package/src/schedule/__tests__/plugin-schedule-reconciler.test.ts +1 -7
  73. package/src/schedule/__tests__/worker-mcp-readiness.test.ts +0 -4
  74. package/src/schedule/schedule-store.ts +0 -7
  75. package/src/schedule/scheduler.ts +0 -5
  76. package/src/schedule/worker.ts +1 -1
  77. package/src/stt/__tests__/daemon-batch-transcriber.test.ts +2 -10
  78. package/src/stt/daemon-batch-transcriber.ts +4 -38
  79. package/src/stt/types.ts +1 -9
  80. package/src/tools/network/__tests__/web-search.test.ts +3 -250
  81. package/src/tools/network/web-search.ts +4 -165
  82. package/src/tts/__tests__/provider-resolution.test.ts +0 -5
  83. package/src/tts/provider-catalog.ts +0 -4
  84. package/src/tts/types.ts +0 -1
  85. package/src/__tests__/cloud-speech-defaults.test.ts +0 -330
  86. package/src/__tests__/migration-cross-version-compatibility.test.ts +0 -1708
  87. package/src/__tests__/migration-export-http.test.ts +0 -557
  88. package/src/__tests__/migration-export-streaming.test.ts +0 -350
  89. package/src/__tests__/migration-export-to-gcs.test.ts +0 -706
  90. package/src/__tests__/migration-import-commit-http.test.ts +0 -1176
  91. package/src/__tests__/migration-import-from-gcs.test.ts +0 -534
  92. package/src/__tests__/migration-import-from-path.test.ts +0 -324
  93. package/src/__tests__/migration-import-from-url.test.ts +0 -588
  94. package/src/__tests__/migration-import-preflight-http.test.ts +0 -739
  95. package/src/__tests__/migration-jobs-status.test.ts +0 -139
  96. package/src/__tests__/migration-parity-persistence.test.ts +0 -1891
  97. package/src/__tests__/migration-transport.test.ts +0 -1089
  98. package/src/__tests__/migration-validate-http.test.ts +0 -634
  99. package/src/__tests__/migration-wizard.test.ts +0 -1395
  100. package/src/__tests__/rebind-secrets-screen.test.ts +0 -876
  101. package/src/__tests__/sanitize-config-for-transfer.test.ts +0 -259
  102. package/src/__tests__/transfer-progress-screen.test.ts +0 -1217
  103. package/src/__tests__/validation-results-screen.test.ts +0 -1130
  104. package/src/__tests__/vbundle-pax-and-symlink.test.ts +0 -147
  105. package/src/background-wake/background-wake-routes.test.ts +0 -906
  106. package/src/background-wake/cloud-client.test.ts +0 -328
  107. package/src/background-wake/cloud-client.ts +0 -196
  108. package/src/background-wake/next-wake.test.ts +0 -335
  109. package/src/background-wake/next-wake.ts +0 -188
  110. package/src/background-wake/publisher.ts +0 -93
  111. package/src/background-wake/wake-intent-hooks.test.ts +0 -234
  112. package/src/cli/commands/__tests__/backup.test.ts +0 -363
  113. package/src/cli/commands/backup.help.ts +0 -180
  114. package/src/cli/commands/backup.ts +0 -398
  115. package/src/cloud/cloud-speech.test.ts +0 -335
  116. package/src/cloud/cloud-speech.ts +0 -300
  117. package/src/config/cloud-speech-defaults.ts +0 -300
  118. package/src/config/sanitize-for-transfer.ts +0 -111
  119. package/src/live-voice/__tests__/live-voice-cloud-speech-fallback.test.ts +0 -250
  120. package/src/providers/speech-to-text/__tests__/cadet-cloud-realtime.test.ts +0 -457
  121. package/src/providers/speech-to-text/__tests__/cadet-cloud.test.ts +0 -271
  122. package/src/providers/speech-to-text/__tests__/cadet-speech-relay-connection.test.ts +0 -126
  123. package/src/providers/speech-to-text/cadet-cloud-flux-realtime.ts +0 -309
  124. package/src/providers/speech-to-text/cadet-cloud-realtime.ts +0 -315
  125. package/src/providers/speech-to-text/cadet-cloud.ts +0 -108
  126. package/src/providers/speech-to-text/cadet-speech-relay-connection.ts +0 -176
  127. package/src/runtime/migrations/__tests__/gcs-signed-url.test.ts +0 -254
  128. package/src/runtime/migrations/__tests__/job-registry.test.ts +0 -346
  129. package/src/runtime/migrations/__tests__/origin-mode.test.ts +0 -62
  130. package/src/runtime/migrations/__tests__/rebind-secrets-credentials.test.ts +0 -184
  131. package/src/runtime/migrations/__tests__/staged-import-path.test.ts +0 -110
  132. package/src/runtime/migrations/__tests__/v1-test-helpers.ts +0 -112
  133. package/src/runtime/migrations/__tests__/vbundle-builder-credentials.test.ts +0 -285
  134. package/src/runtime/migrations/__tests__/vbundle-builder-fd-leak.test.ts +0 -126
  135. package/src/runtime/migrations/__tests__/vbundle-builder-v1-shape.test.ts +0 -253
  136. package/src/runtime/migrations/__tests__/vbundle-import-credentials.test.ts +0 -208
  137. package/src/runtime/migrations/__tests__/vbundle-import-parity.test.ts +0 -485
  138. package/src/runtime/migrations/__tests__/vbundle-import-policy.test.ts +0 -349
  139. package/src/runtime/migrations/__tests__/vbundle-import-version-compat.test.ts +0 -196
  140. package/src/runtime/migrations/__tests__/vbundle-legacy-user-md.test.ts +0 -551
  141. package/src/runtime/migrations/__tests__/vbundle-metadata-merge-integration.test.ts +0 -428
  142. package/src/runtime/migrations/__tests__/vbundle-metadata-merge.test.ts +0 -220
  143. package/src/runtime/migrations/__tests__/vbundle-streaming-importer.test.ts +0 -1823
  144. package/src/runtime/migrations/__tests__/vbundle-streaming-validator.test.ts +0 -598
  145. package/src/runtime/migrations/__tests__/vbundle-symlink-importer.test.ts +0 -463
  146. package/src/runtime/migrations/__tests__/vbundle-symlink-streaming-importer.test.ts +0 -538
  147. package/src/runtime/migrations/__tests__/vbundle-symlink-streaming.test.ts +0 -515
  148. package/src/runtime/migrations/__tests__/vbundle-symlink-tar.test.ts +0 -453
  149. package/src/runtime/migrations/__tests__/vbundle-symlink-walker.test.ts +0 -319
  150. package/src/runtime/migrations/__tests__/vbundle-tar-stream.test.ts +0 -240
  151. package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +0 -473
  152. package/src/runtime/migrations/gcs-signed-url.ts +0 -190
  153. package/src/runtime/migrations/job-registry.ts +0 -297
  154. package/src/runtime/migrations/migration-transport.ts +0 -612
  155. package/src/runtime/migrations/migration-wizard.ts +0 -747
  156. package/src/runtime/migrations/origin-mode.ts +0 -42
  157. package/src/runtime/migrations/rebind-secrets-screen.ts +0 -412
  158. package/src/runtime/migrations/staged-import-path.ts +0 -116
  159. package/src/runtime/migrations/transfer-progress-screen.ts +0 -323
  160. package/src/runtime/migrations/validation-results-screen.ts +0 -469
  161. package/src/runtime/migrations/vbundle-builder.ts +0 -1382
  162. package/src/runtime/migrations/vbundle-import-analyzer.ts +0 -405
  163. package/src/runtime/migrations/vbundle-import-policy.ts +0 -241
  164. package/src/runtime/migrations/vbundle-importer.ts +0 -826
  165. package/src/runtime/migrations/vbundle-metadata-merge.ts +0 -113
  166. package/src/runtime/migrations/vbundle-streaming-importer.ts +0 -2844
  167. package/src/runtime/migrations/vbundle-streaming-validator.ts +0 -426
  168. package/src/runtime/migrations/vbundle-tar-stream.ts +0 -244
  169. package/src/runtime/migrations/vbundle-validator.ts +0 -724
  170. package/src/runtime/routes/__tests__/migration-cadet-metadata-reconcile.test.ts +0 -227
  171. package/src/runtime/routes/__tests__/migration-export-secrets-redacted.test.ts +0 -54
  172. package/src/runtime/routes/__tests__/migration-import-allowed-hosts-env.test.ts +0 -70
  173. package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +0 -257
  174. package/src/runtime/routes/background-wake-routes.ts +0 -387
  175. package/src/runtime/routes/migration-routes.ts +0 -2584
  176. package/src/tools/network/__tests__/cloud-search-proxy.test.ts +0 -282
  177. package/src/tools/network/cloud-search-proxy.ts +0 -211
  178. package/src/tts/__tests__/cadet-provider.test.ts +0 -253
  179. package/src/tts/providers/cadet-provider.ts +0 -244
  180. package/src/types/tar-stream.d.ts +0 -66
@@ -1,323 +0,0 @@
1
- /**
2
- * Transfer progress screen -- view model for the transfer step.
3
- *
4
- * Derives display state from the migration wizard state machine for rendering
5
- * a transfer/import progress UI. Usable from macOS/iOS web views, CLI, or
6
- * any TypeScript consumer.
7
- *
8
- * The transfer step is import-only: it commits a pre-uploaded bundle to
9
- * the destination. The export/poll phases are retained in the type system
10
- * for managed-source flows that still use them, but the default phase is
11
- * "import".
12
- *
13
- * View model states:
14
- * - disabled: step is not yet accessible (earlier steps incomplete)
15
- * - exporting: export phase is in progress (managed-source flows only)
16
- * - polling: managed async export job is being polled for completion
17
- * - importing: import phase is in progress
18
- * - success: import completed successfully
19
- * - error: an error occurred (with retry capability info)
20
- */
21
-
22
- import type {
23
- ExportManagedResult,
24
- ImportCommitSuccessResponse,
25
- } from "./migration-transport.js";
26
- import type {
27
- MigrationWizardState,
28
- StepError,
29
- StepExecutorOptions,
30
- } from "./migration-wizard.js";
31
- import {
32
- canRetryCurrentStep,
33
- executeTransferStep,
34
- goBackTo,
35
- isStepAccessible,
36
- resetStepForRetry,
37
- } from "./migration-wizard.js";
38
-
39
- // ---------------------------------------------------------------------------
40
- // View model types
41
- // ---------------------------------------------------------------------------
42
-
43
- /** Which phase of the transfer is currently active. */
44
- export type TransferPhase = "export" | "poll" | "import";
45
-
46
- /** Summary of the import result for display. */
47
- export interface TransferImportSummary {
48
- totalFiles: number;
49
- filesCreated: number;
50
- filesOverwritten: number;
51
- filesSkipped: number;
52
- backupsCreated: number;
53
- warnings: string[];
54
- }
55
-
56
- /**
57
- * Discriminated union representing the current display state of the
58
- * transfer progress screen.
59
- */
60
- export type TransferScreenState =
61
- | { phase: "disabled" }
62
- | { phase: "exporting"; message: string }
63
- | { phase: "polling"; message: string; jobId: string }
64
- | { phase: "importing"; message: string }
65
- | {
66
- phase: "error";
67
- error: StepError;
68
- /** Which transfer phase failed, if determinable. */
69
- failedPhase: TransferPhase | "unknown";
70
- canRetry: boolean;
71
- }
72
- | {
73
- phase: "success";
74
- importSummary: TransferImportSummary;
75
- canContinue: boolean;
76
- };
77
-
78
- // ---------------------------------------------------------------------------
79
- // State derivation
80
- // ---------------------------------------------------------------------------
81
-
82
- /**
83
- * Infer which transfer sub-phase is active based on wizard state.
84
- *
85
- * The default flow is import-only (bundleData provided directly). Managed
86
- * export flows that populate exportResult still get poll/export phases.
87
- */
88
- function inferActivePhase(state: MigrationWizardState): TransferPhase {
89
- // Managed export flows that populate exportResult
90
- if (state.exportResult && "jobId" in state.exportResult) {
91
- const managed = state.exportResult as ExportManagedResult;
92
- if (state.importResult) {
93
- return "import";
94
- }
95
- if (managed.status !== "complete") {
96
- return "poll";
97
- }
98
- }
99
-
100
- return "import";
101
- }
102
-
103
- /**
104
- * Infer the phase that failed when the transfer step is in error state.
105
- */
106
- function inferFailedPhase(
107
- state: MigrationWizardState,
108
- ): TransferPhase | "unknown" {
109
- const stepError = state.steps["transfer"].error;
110
- if (!stepError) {
111
- return "unknown";
112
- }
113
-
114
- // Export job failure codes
115
- if (
116
- stepError.code === "EXPORT_JOB_FAILED" ||
117
- stepError.code === "NO_DOWNLOAD_URL"
118
- ) {
119
- return "export";
120
- }
121
-
122
- // No exportResult means this is the import-only flow; attribute to import
123
- if (!state.exportResult) {
124
- return "import";
125
- }
126
-
127
- // If we have an export result but the error mentions import
128
- if (state.importResult && !state.importResult.success) {
129
- return "import";
130
- }
131
-
132
- // If export result exists but no import result, and error is transport-level,
133
- // it could be download failure or import failure
134
- if (state.exportResult && !state.importResult) {
135
- if ("jobId" in state.exportResult) {
136
- const managed = state.exportResult as ExportManagedResult;
137
- if (managed.status === "complete") {
138
- // Export completed but no importResult -- check whether the failure was
139
- // during archive download (between export and import) or during import.
140
- // Download failures surface with "download" in the message; actual
141
- // import failures would have set importResult.
142
- const msg = stepError.message?.toLowerCase() ?? "";
143
- if (msg.includes("download")) {
144
- return "poll";
145
- }
146
- return "import";
147
- }
148
- return "poll";
149
- }
150
- return "import";
151
- }
152
-
153
- return "unknown";
154
- }
155
-
156
- /**
157
- * Derive the current transfer screen state from the wizard state.
158
- *
159
- * This is a pure function -- no side effects. Call it whenever the wizard
160
- * state changes to get the latest display state.
161
- */
162
- export function deriveTransferScreenState(
163
- wizardState: MigrationWizardState,
164
- ): TransferScreenState {
165
- const transferStep = wizardState.steps["transfer"];
166
-
167
- // Not yet accessible -- earlier steps incomplete
168
- if (
169
- wizardState.currentStep !== "transfer" &&
170
- transferStep.status !== "success"
171
- ) {
172
- if (!isStepAccessible(wizardState, "transfer")) {
173
- return { phase: "disabled" };
174
- }
175
- }
176
-
177
- // Transfer step is in error state
178
- if (
179
- wizardState.currentStep === "transfer" &&
180
- transferStep.status === "error"
181
- ) {
182
- return {
183
- phase: "error",
184
- error: transferStep.error ?? {
185
- message: "Transfer failed",
186
- retryable: false,
187
- },
188
- failedPhase: inferFailedPhase(wizardState),
189
- canRetry: canRetryCurrentStep(wizardState),
190
- };
191
- }
192
-
193
- // Transfer step is loading -- determine sub-phase
194
- if (
195
- wizardState.currentStep === "transfer" &&
196
- (transferStep.status === "loading" || transferStep.status === "idle")
197
- ) {
198
- const activePhase = inferActivePhase(wizardState);
199
-
200
- if (
201
- activePhase === "poll" &&
202
- wizardState.exportResult &&
203
- "jobId" in wizardState.exportResult
204
- ) {
205
- return {
206
- phase: "polling",
207
- message: "Waiting for export job to complete...",
208
- jobId: (wizardState.exportResult as ExportManagedResult).jobId,
209
- };
210
- }
211
-
212
- if (activePhase === "export") {
213
- return {
214
- phase: "exporting",
215
- message: "Exporting data from source...",
216
- };
217
- }
218
-
219
- // Default: import phase
220
- return {
221
- phase: "importing",
222
- message: "Importing bundle to destination...",
223
- };
224
- }
225
-
226
- // Transfer step succeeded -- show results
227
- if (transferStep.status === "success") {
228
- const importResult = wizardState.importResult;
229
- if (importResult && importResult.success) {
230
- const successResult = importResult as ImportCommitSuccessResponse;
231
- return {
232
- phase: "success",
233
- importSummary: {
234
- totalFiles: successResult.summary.total_files,
235
- filesCreated: successResult.summary.files_created,
236
- filesOverwritten: successResult.summary.files_overwritten,
237
- filesSkipped: successResult.summary.files_skipped,
238
- backupsCreated: successResult.summary.backups_created,
239
- warnings: successResult.warnings,
240
- },
241
- canContinue: isStepAccessible(wizardState, "rebind-secrets"),
242
- };
243
- }
244
-
245
- // Success status but no import result (shouldn't happen, defensive)
246
- return {
247
- phase: "success",
248
- importSummary: {
249
- totalFiles: 0,
250
- filesCreated: 0,
251
- filesOverwritten: 0,
252
- filesSkipped: 0,
253
- backupsCreated: 0,
254
- warnings: [],
255
- },
256
- canContinue: isStepAccessible(wizardState, "rebind-secrets"),
257
- };
258
- }
259
-
260
- return { phase: "disabled" };
261
- }
262
-
263
- // ---------------------------------------------------------------------------
264
- // Actions -- delegate to wizard state machine
265
- // ---------------------------------------------------------------------------
266
-
267
- /**
268
- * Execute the full transfer flow: export from source and import to destination.
269
- *
270
- * For managed sources, this includes async export polling.
271
- * For runtime sources, the export returns binary data directly.
272
- *
273
- * Returns the final wizard state after the transfer step completes.
274
- */
275
- export async function executeTransferFlow(
276
- state: MigrationWizardState,
277
- options: StepExecutorOptions,
278
- ): Promise<MigrationWizardState> {
279
- return executeTransferStep(state, options);
280
- }
281
-
282
- /**
283
- * Retry the transfer step after an error.
284
- *
285
- * Resets the step to idle and re-executes the transfer flow.
286
- */
287
- export async function retryTransferFlow(
288
- state: MigrationWizardState,
289
- options: StepExecutorOptions,
290
- ): Promise<MigrationWizardState> {
291
- const reset = resetStepForRetry(state);
292
- const cleaned = {
293
- ...reset,
294
- exportResult: undefined,
295
- importResult: undefined,
296
- };
297
- options.onStateChange?.(cleaned);
298
- return executeTransferStep(cleaned, options);
299
- }
300
-
301
- /**
302
- * Navigate back to the preflight-review step.
303
- */
304
- export function goBackToPreflight(
305
- state: MigrationWizardState,
306
- ): MigrationWizardState {
307
- return goBackTo(state, "preflight-review");
308
- }
309
-
310
- // ---------------------------------------------------------------------------
311
- // Query helpers
312
- // ---------------------------------------------------------------------------
313
-
314
- /**
315
- * Check if the transfer progress screen is accessible from the current state.
316
- */
317
- export function isTransferScreenAccessible(
318
- state: MigrationWizardState,
319
- ): boolean {
320
- return (
321
- isStepAccessible(state, "transfer") || state.currentStep === "transfer"
322
- );
323
- }