Skip to content

Commit 5371dec

Browse files
some fixes
1 parent dc49648 commit 5371dec

20 files changed

Lines changed: 1714 additions & 188 deletions

File tree

examples/ios/RunAnywhereAI/RunAnywhereAI.xcodeproj/project.pbxproj

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@
99
/* Begin PBXBuildFile section */
1010
541C59DA2E63772A00DD7839 /* RunAnywhere in Frameworks */ = {isa = PBXBuildFile; productRef = 541C59D92E63772A00DD7839 /* RunAnywhere */; };
1111
54398AC52F492D1D009D6B51 /* RunAnywhereKeyboard.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 54398ABE2F492D1D009D6B51 /* RunAnywhereKeyboard.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
12+
54398D222F4939A7009D6B51 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54398D212F4939A7009D6B51 /* WidgetKit.framework */; };
13+
54398D242F4939A7009D6B51 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54398D232F4939A7009D6B51 /* SwiftUI.framework */; };
14+
54398D332F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 54398D202F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1215
58ABEDD22ED16DA40058D033 /* RunAnywhereONNX in Frameworks */ = {isa = PBXBuildFile; productRef = 58ABEDD12ED16DA40058D033 /* RunAnywhereONNX */; };
1316
58LLAMACPP12ED16DA40058D0 /* RunAnywhereLlamaCPP in Frameworks */ = {isa = PBXBuildFile; productRef = 58LLAMACPP02ED16DA40058D0 /* RunAnywhereLlamaCPP */; };
17+
RACACTIVITY01ACTIVITY01RAC /* DictationActivityAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = RACACTIVITY02ACTIVITY02RAC /* DictationActivityAttributes.swift */; };
1418
RACSHARED01RACSHARED01RACS /* SharedConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = RACSHARED02RACSHARED02RACS /* SharedConstants.swift */; };
1519
RACSHARED03RACSHARED03RACS /* SharedDataBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = RACSHARED04RACSHARED04RACS /* SharedDataBridge.swift */; };
1620
/* End PBXBuildFile section */
@@ -23,6 +27,13 @@
2327
remoteGlobalIDString = 54398ABD2F492D1D009D6B51;
2428
remoteInfo = RunAnywhereKeyboard;
2529
};
30+
54398D312F4939A7009D6B51 /* PBXContainerItemProxy */ = {
31+
isa = PBXContainerItemProxy;
32+
containerPortal = 5480A1E82E2F250200337F2F /* Project object */;
33+
proxyType = 1;
34+
remoteGlobalIDString = 54398D1F2F4939A7009D6B51;
35+
remoteInfo = RunAnywhereActivityExtensionExtension;
36+
};
2637
5480A1FF2E2F250400337F2F /* PBXContainerItemProxy */ = {
2738
isa = PBXContainerItemProxy;
2839
containerPortal = 5480A1E82E2F250200337F2F /* Project object */;
@@ -46,6 +57,7 @@
4657
dstPath = "";
4758
dstSubfolderSpec = 13;
4859
files = (
60+
54398D332F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension.appex in Embed Foundation Extensions */,
4961
54398AC52F492D1D009D6B51 /* RunAnywhereKeyboard.appex in Embed Foundation Extensions */,
5062
);
5163
name = "Embed Foundation Extensions";
@@ -58,10 +70,14 @@
5870
0D23254BCD6273187BD2441C /* libbz2.tbd */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = usr/lib/libbz2.tbd; sourceTree = SDKROOT; };
5971
502F1BAB2C2556A11E24EA6F /* libc++.tbd */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
6072
54398ABE2F492D1D009D6B51 /* RunAnywhereKeyboard.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = RunAnywhereKeyboard.appex; sourceTree = BUILT_PRODUCTS_DIR; };
73+
54398D202F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = RunAnywhereActivityExtensionExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
74+
54398D212F4939A7009D6B51 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
75+
54398D232F4939A7009D6B51 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
6176
5480A1F02E2F250200337F2F /* RunAnywhereAI.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RunAnywhereAI.app; sourceTree = BUILT_PRODUCTS_DIR; };
6277
5480A1FE2E2F250400337F2F /* RunAnywhereAITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunAnywhereAITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
6378
5480A2082E2F250400337F2F /* RunAnywhereAIUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunAnywhereAIUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
6479
F8388285B0D64126DD4540F8 /* libarchive.tbd */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libarchive.tbd; path = usr/lib/libarchive.tbd; sourceTree = SDKROOT; };
80+
RACACTIVITY02ACTIVITY02RAC /* DictationActivityAttributes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DictationActivityAttributes.swift; path = RunAnywhereAI/Features/VoiceKeyboard/DictationActivityAttributes.swift; sourceTree = SOURCE_ROOT; };
6581
RACSHARED02RACSHARED02RACS /* SharedConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SharedConstants.swift; path = RunAnywhereAI/Shared/SharedConstants.swift; sourceTree = SOURCE_ROOT; };
6682
RACSHARED04RACSHARED04RACS /* SharedDataBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SharedDataBridge.swift; path = RunAnywhereAI/Shared/SharedDataBridge.swift; sourceTree = SOURCE_ROOT; };
6783
/* End PBXFileReference section */
@@ -81,6 +97,13 @@
8197
);
8298
target = 5480A1EF2E2F250200337F2F /* RunAnywhereAI */;
8399
};
100+
54398D372F4939A7009D6B51 /* Exceptions for "RunAnywhereActivityExtension" folder in "RunAnywhereActivityExtensionExtension" target */ = {
101+
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
102+
membershipExceptions = (
103+
Info.plist,
104+
);
105+
target = 54398D1F2F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension */;
106+
};
84107
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
85108

86109
/* Begin PBXFileSystemSynchronizedRootGroup section */
@@ -92,6 +115,14 @@
92115
path = RunAnywhereKeyboard;
93116
sourceTree = "<group>";
94117
};
118+
54398D252F4939A7009D6B51 /* RunAnywhereActivityExtension */ = {
119+
isa = PBXFileSystemSynchronizedRootGroup;
120+
exceptions = (
121+
54398D372F4939A7009D6B51 /* Exceptions for "RunAnywhereActivityExtension" folder in "RunAnywhereActivityExtensionExtension" target */,
122+
);
123+
path = RunAnywhereActivityExtension;
124+
sourceTree = "<group>";
125+
};
95126
5480A1F22E2F250200337F2F /* RunAnywhereAI */ = {
96127
isa = PBXFileSystemSynchronizedRootGroup;
97128
exceptions = (
@@ -120,6 +151,15 @@
120151
);
121152
runOnlyForDeploymentPostprocessing = 0;
122153
};
154+
54398D1D2F4939A7009D6B51 /* Frameworks */ = {
155+
isa = PBXFrameworksBuildPhase;
156+
buildActionMask = 2147483647;
157+
files = (
158+
54398D242F4939A7009D6B51 /* SwiftUI.framework in Frameworks */,
159+
54398D222F4939A7009D6B51 /* WidgetKit.framework in Frameworks */,
160+
);
161+
runOnlyForDeploymentPostprocessing = 0;
162+
};
123163
5480A1ED2E2F250200337F2F /* Frameworks */ = {
124164
isa = PBXFrameworksBuildPhase;
125165
buildActionMask = 2147483647;
@@ -152,6 +192,7 @@
152192
children = (
153193
RACSHARED02RACSHARED02RACS /* SharedConstants.swift */,
154194
RACSHARED04RACSHARED04RACS /* SharedDataBridge.swift */,
195+
RACACTIVITY02ACTIVITY02RAC /* DictationActivityAttributes.swift */,
155196
);
156197
name = "Recovered References";
157198
sourceTree = "<group>";
@@ -163,6 +204,8 @@
163204
0D23254BCD6273187BD2441C /* libbz2.tbd */,
164205
502F1BAB2C2556A11E24EA6F /* libc++.tbd */,
165206
0C5E8414EC72B380DADD6717 /* Accelerate.framework */,
207+
54398D212F4939A7009D6B51 /* WidgetKit.framework */,
208+
54398D232F4939A7009D6B51 /* SwiftUI.framework */,
166209
);
167210
name = Frameworks;
168211
sourceTree = "<group>";
@@ -174,6 +217,7 @@
174217
5480A2012E2F250400337F2F /* RunAnywhereAITests */,
175218
5480A20B2E2F250400337F2F /* RunAnywhereAIUITests */,
176219
54398ABF2F492D1D009D6B51 /* RunAnywhereKeyboard */,
220+
54398D252F4939A7009D6B51 /* RunAnywhereActivityExtension */,
177221
547A6C002E6374D1005EF0C7 /* Frameworks */,
178222
5480A1F12E2F250200337F2F /* Products */,
179223
54398C522F493174009D6B51 /* Recovered References */,
@@ -187,6 +231,7 @@
187231
5480A1FE2E2F250400337F2F /* RunAnywhereAITests.xctest */,
188232
5480A2082E2F250400337F2F /* RunAnywhereAIUITests.xctest */,
189233
54398ABE2F492D1D009D6B51 /* RunAnywhereKeyboard.appex */,
234+
54398D202F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension.appex */,
190235
);
191236
name = Products;
192237
sourceTree = "<group>";
@@ -216,6 +261,28 @@
216261
productReference = 54398ABE2F492D1D009D6B51 /* RunAnywhereKeyboard.appex */;
217262
productType = "com.apple.product-type.app-extension";
218263
};
264+
54398D1F2F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension */ = {
265+
isa = PBXNativeTarget;
266+
buildConfigurationList = 54398D342F4939A7009D6B51 /* Build configuration list for PBXNativeTarget "RunAnywhereActivityExtensionExtension" */;
267+
buildPhases = (
268+
54398D1C2F4939A7009D6B51 /* Sources */,
269+
54398D1D2F4939A7009D6B51 /* Frameworks */,
270+
54398D1E2F4939A7009D6B51 /* Resources */,
271+
);
272+
buildRules = (
273+
);
274+
dependencies = (
275+
);
276+
fileSystemSynchronizedGroups = (
277+
54398D252F4939A7009D6B51 /* RunAnywhereActivityExtension */,
278+
);
279+
name = RunAnywhereActivityExtensionExtension;
280+
packageProductDependencies = (
281+
);
282+
productName = RunAnywhereActivityExtensionExtension;
283+
productReference = 54398D202F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension.appex */;
284+
productType = "com.apple.product-type.app-extension";
285+
};
219286
5480A1EF2E2F250200337F2F /* RunAnywhereAI */ = {
220287
isa = PBXNativeTarget;
221288
buildConfigurationList = 5480A2122E2F250400337F2F /* Build configuration list for PBXNativeTarget "RunAnywhereAI" */;
@@ -229,6 +296,7 @@
229296
);
230297
dependencies = (
231298
54398AC42F492D1D009D6B51 /* PBXTargetDependency */,
299+
54398D322F4939A7009D6B51 /* PBXTargetDependency */,
232300
);
233301
fileSystemSynchronizedGroups = (
234302
5480A1F22E2F250200337F2F /* RunAnywhereAI */,
@@ -300,6 +368,9 @@
300368
54398ABD2F492D1D009D6B51 = {
301369
CreatedOnToolsVersion = 26.2;
302370
};
371+
54398D1F2F4939A7009D6B51 = {
372+
CreatedOnToolsVersion = 26.2;
373+
};
303374
5480A1EF2E2F250200337F2F = {
304375
CreatedOnToolsVersion = 16.4;
305376
};
@@ -334,6 +405,7 @@
334405
5480A1FD2E2F250400337F2F /* RunAnywhereAITests */,
335406
5480A2072E2F250400337F2F /* RunAnywhereAIUITests */,
336407
54398ABD2F492D1D009D6B51 /* RunAnywhereKeyboard */,
408+
54398D1F2F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension */,
337409
);
338410
};
339411
/* End PBXProject section */
@@ -346,6 +418,13 @@
346418
);
347419
runOnlyForDeploymentPostprocessing = 0;
348420
};
421+
54398D1E2F4939A7009D6B51 /* Resources */ = {
422+
isa = PBXResourcesBuildPhase;
423+
buildActionMask = 2147483647;
424+
files = (
425+
);
426+
runOnlyForDeploymentPostprocessing = 0;
427+
};
349428
5480A1EE2E2F250200337F2F /* Resources */ = {
350429
isa = PBXResourcesBuildPhase;
351430
buildActionMask = 2147483647;
@@ -426,6 +505,14 @@
426505
);
427506
runOnlyForDeploymentPostprocessing = 0;
428507
};
508+
54398D1C2F4939A7009D6B51 /* Sources */ = {
509+
isa = PBXSourcesBuildPhase;
510+
buildActionMask = 2147483647;
511+
files = (
512+
RACACTIVITY01ACTIVITY01RAC /* DictationActivityAttributes.swift in Sources */,
513+
);
514+
runOnlyForDeploymentPostprocessing = 0;
515+
};
429516
5480A1EC2E2F250200337F2F /* Sources */ = {
430517
isa = PBXSourcesBuildPhase;
431518
buildActionMask = 2147483647;
@@ -455,6 +542,11 @@
455542
target = 54398ABD2F492D1D009D6B51 /* RunAnywhereKeyboard */;
456543
targetProxy = 54398AC32F492D1D009D6B51 /* PBXContainerItemProxy */;
457544
};
545+
54398D322F4939A7009D6B51 /* PBXTargetDependency */ = {
546+
isa = PBXTargetDependency;
547+
target = 54398D1F2F4939A7009D6B51 /* RunAnywhereActivityExtensionExtension */;
548+
targetProxy = 54398D312F4939A7009D6B51 /* PBXContainerItemProxy */;
549+
};
458550
5480A2002E2F250400337F2F /* PBXTargetDependency */ = {
459551
isa = PBXTargetDependency;
460552
target = 5480A1EF2E2F250200337F2F /* RunAnywhereAI */;
@@ -531,6 +623,71 @@
531623
};
532624
name = Release;
533625
};
626+
54398D352F4939A7009D6B51 /* Debug */ = {
627+
isa = XCBuildConfiguration;
628+
buildSettings = {
629+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
630+
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
631+
CODE_SIGN_STYLE = Automatic;
632+
CURRENT_PROJECT_VERSION = 1;
633+
DEVELOPMENT_TEAM = L86FH3K93L;
634+
GENERATE_INFOPLIST_FILE = YES;
635+
INFOPLIST_FILE = RunAnywhereActivityExtension/Info.plist;
636+
INFOPLIST_KEY_CFBundleDisplayName = RunAnywhereActivityExtension;
637+
INFOPLIST_KEY_NSHumanReadableCopyright = "";
638+
IPHONEOS_DEPLOYMENT_TARGET = 26.2;
639+
LD_RUNPATH_SEARCH_PATHS = (
640+
"$(inherited)",
641+
"@executable_path/Frameworks",
642+
"@executable_path/../../Frameworks",
643+
);
644+
MARKETING_VERSION = 1.0;
645+
PRODUCT_BUNDLE_IDENTIFIER = com.runanywhere.RunAnywhere.RunAnywhereActivityExtension;
646+
PRODUCT_NAME = "$(TARGET_NAME)";
647+
SDKROOT = iphoneos;
648+
SKIP_INSTALL = YES;
649+
STRING_CATALOG_GENERATE_SYMBOLS = YES;
650+
SWIFT_APPROACHABLE_CONCURRENCY = YES;
651+
SWIFT_EMIT_LOC_STRINGS = YES;
652+
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
653+
SWIFT_VERSION = 5.0;
654+
TARGETED_DEVICE_FAMILY = "1,2";
655+
};
656+
name = Debug;
657+
};
658+
54398D362F4939A7009D6B51 /* Release */ = {
659+
isa = XCBuildConfiguration;
660+
buildSettings = {
661+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
662+
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
663+
CODE_SIGN_STYLE = Automatic;
664+
CURRENT_PROJECT_VERSION = 1;
665+
DEVELOPMENT_TEAM = L86FH3K93L;
666+
GENERATE_INFOPLIST_FILE = YES;
667+
INFOPLIST_FILE = RunAnywhereActivityExtension/Info.plist;
668+
INFOPLIST_KEY_CFBundleDisplayName = RunAnywhereActivityExtension;
669+
INFOPLIST_KEY_NSHumanReadableCopyright = "";
670+
IPHONEOS_DEPLOYMENT_TARGET = 26.2;
671+
LD_RUNPATH_SEARCH_PATHS = (
672+
"$(inherited)",
673+
"@executable_path/Frameworks",
674+
"@executable_path/../../Frameworks",
675+
);
676+
MARKETING_VERSION = 1.0;
677+
PRODUCT_BUNDLE_IDENTIFIER = com.runanywhere.RunAnywhere.RunAnywhereActivityExtension;
678+
PRODUCT_NAME = "$(TARGET_NAME)";
679+
SDKROOT = iphoneos;
680+
SKIP_INSTALL = YES;
681+
STRING_CATALOG_GENERATE_SYMBOLS = YES;
682+
SWIFT_APPROACHABLE_CONCURRENCY = YES;
683+
SWIFT_EMIT_LOC_STRINGS = YES;
684+
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
685+
SWIFT_VERSION = 5.0;
686+
TARGETED_DEVICE_FAMILY = "1,2";
687+
VALIDATE_PRODUCT = YES;
688+
};
689+
name = Release;
690+
};
534691
5480A2102E2F250400337F2F /* Debug */ = {
535692
isa = XCBuildConfiguration;
536693
buildSettings = {
@@ -836,6 +993,15 @@
836993
defaultConfigurationIsVisible = 0;
837994
defaultConfigurationName = Release;
838995
};
996+
54398D342F4939A7009D6B51 /* Build configuration list for PBXNativeTarget "RunAnywhereActivityExtensionExtension" */ = {
997+
isa = XCConfigurationList;
998+
buildConfigurations = (
999+
54398D352F4939A7009D6B51 /* Debug */,
1000+
54398D362F4939A7009D6B51 /* Release */,
1001+
);
1002+
defaultConfigurationIsVisible = 0;
1003+
defaultConfigurationName = Release;
1004+
};
8391005
5480A1EB2E2F250200337F2F /* Build configuration list for PBXProject "RunAnywhereAI" */ = {
8401006
isa = XCConfigurationList;
8411007
buildConfigurations = (

examples/ios/RunAnywhereAI/RunAnywhereAI/App/RunAnywhereAIApp.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ struct RunAnywhereAIApp: App {
2323
@StateObject private var modelManager = ModelManager.shared
2424
#if os(iOS)
2525
@StateObject private var flowSession = FlowSessionManager.shared
26+
@State private var showFlowActivation = false
2627
#endif
2728
@State private var isSDKInitialized = false
2829
@State private var initializationError: Error?
@@ -39,7 +40,12 @@ struct RunAnywhereAIApp: App {
3940
guard url.scheme == SharedConstants.urlScheme,
4041
url.host == "startFlow" else { return }
4142
logger.info("📲 Received startFlow deep link")
42-
flowSession.handleStartFlow()
43+
showFlowActivation = true
44+
Task { await flowSession.handleStartFlow() }
45+
}
46+
.fullScreenCover(isPresented: $showFlowActivation) {
47+
FlowActivationView(isPresented: $showFlowActivation)
48+
.environmentObject(flowSession)
4349
}
4450
#endif
4551
.onAppear {
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//
2+
// DictationActivityAttributes.swift
3+
// RunAnywhereAI + RunAnywhereActivityExtension
4+
//
5+
// Shared between the main app target and the Widget/LiveActivity extension target.
6+
// Defines the data contract for the Dynamic Island recording indicator.
7+
//
8+
// TARGET MEMBERSHIP: RunAnywhereAI (main app) + RunAnywhereActivityExtension (widget extension)
9+
// The extension gets this file via the manual pbxproj wiring (same pattern as SharedConstants.swift).
10+
//
11+
12+
import ActivityKit
13+
import Foundation
14+
15+
/// The static attributes for a dictation flow session.
16+
/// These do not change after the activity is started.
17+
struct DictationActivityAttributes: ActivityAttributes {
18+
19+
/// The dynamic / live state updated throughout the session.
20+
struct ContentState: Codable, Hashable {
21+
/// Current phase: "ready" | "listening" | "transcribing" | "done"
22+
var phase: String
23+
/// Seconds elapsed since session started
24+
var elapsedSeconds: Int
25+
/// Latest partial transcription (empty while recording/listening)
26+
var transcript: String
27+
/// Running total of words dictated in this session
28+
var wordCount: Int
29+
}
30+
31+
/// Session identifier — set once at start
32+
var sessionId: String
33+
}

0 commit comments

Comments
 (0)