From 1fe368ad2ca33d48f3e283268a13c2c672b7cec8 Mon Sep 17 00:00:00 2001 From: toki Date: Thu, 28 May 2026 20:24:45 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20portal=20=E2=86=92=20client=20?= =?UTF-8?q?=EC=95=B1=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81=20=EB=B0=8F=20?= =?UTF-8?q?=EC=A0=9C=EC=96=B4=ED=94=8C=EB=9E=AB=ED=8F=BC=20=EC=99=80?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=20=ED=81=B4=EB=9D=BC=EC=9D=B4=EC=96=B8?= =?UTF-8?q?=ED=8A=B8=20=EB=AA=85=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - apps/portal 디렉터리를 apps/client로 리팩터링 - ControlPlaneWireClient → WireClient 명명 변경 - 관련_proto import 정렬, struct protobuf 생성 제거 - README, docker-compose, 스크립트 등 일관성 개선 --- Makefile | 17 +- README.md | 14 +- .../milestones/remote-terminal-bridge-poc.md | 8 +- .../phase/control-plane-portal-ops/PHASE.md | 6 +- .../client-integration-clone-adoption.md | 10 +- ...lane-portal.md => control-plane-client.md} | 14 +- .../milestones/multi-edge-operations.md | 2 +- apps/{portal => client}/.gitignore | 0 apps/{portal => client}/.metadata | 0 apps/{portal => client}/Dockerfile | 12 +- apps/{portal => client}/README.md | 8 +- apps/{portal => client}/analysis_options.yaml | 0 apps/{portal => client}/android/.gitignore | 0 .../android/app/build.gradle.kts | 4 +- .../android/app/src/debug/AndroidManifest.xml | 0 .../android/app/src/main/AndroidManifest.xml | 2 +- .../com/example/iop_client}/MainActivity.kt | 2 +- .../res/drawable-v21/launch_background.xml | 0 .../main/res/drawable/launch_background.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../app/src/main/res/values-night/styles.xml | 0 .../app/src/main/res/values/styles.xml | 0 .../app/src/profile/AndroidManifest.xml | 0 .../android/build.gradle.kts | 0 .../android/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../android/settings.gradle.kts | 0 apps/{portal => client}/ios/.gitignore | 0 .../ios/Flutter/AppFrameworkInfo.plist | 0 .../ios/Flutter/Debug.xcconfig | 0 .../ios/Flutter/Release.xcconfig | 0 .../ios/Runner.xcodeproj/project.pbxproj | 12 +- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../ios/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../Icon-App-1024x1024@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../Icon-App-83.5x83.5@2x.png | Bin .../LaunchImage.imageset/Contents.json | 0 .../LaunchImage.imageset/LaunchImage.png | Bin .../LaunchImage.imageset/LaunchImage@2x.png | Bin .../LaunchImage.imageset/LaunchImage@3x.png | Bin .../LaunchImage.imageset/README.md | 0 .../Runner/Base.lproj/LaunchScreen.storyboard | 0 .../ios/Runner/Base.lproj/Main.storyboard | 0 apps/{portal => client}/ios/Runner/Info.plist | 4 +- .../ios/Runner/Runner-Bridging-Header.h | 0 .../ios/Runner/SceneDelegate.swift | 0 .../ios/RunnerTests/RunnerTests.swift | 0 .../lib/client_config.dart} | 4 +- apps/client/lib/gen/proto/iop/control.pb.dart | 421 ++++ .../lib/gen/proto/iop/control.pbenum.dart | 11 + .../lib/gen/proto/iop/control.pbjson.dart | 76 +- .../lib/gen/proto/iop/control.pbserver.dart | 1 - apps/client/lib/gen/proto/iop/job.pb.dart | 338 +++ apps/client/lib/gen/proto/iop/job.pbenum.dart | 49 + .../lib/gen/proto/iop/job.pbjson.dart | 44 +- .../lib/gen/proto/iop/job.pbserver.dart | 1 - apps/client/lib/gen/proto/iop/node.pb.dart | 280 +++ .../client/lib/gen/proto/iop/node.pbenum.dart | 43 + .../lib/gen/proto/iop/node.pbjson.dart | 35 +- .../lib/gen/proto/iop/node.pbserver.dart | 1 - apps/client/lib/gen/proto/iop/runtime.pb.dart | 2041 ++++++++++++++++ .../lib/gen/proto/iop/runtime.pbenum.dart | 100 + .../lib/gen/proto/iop/runtime.pbjson.dart | 255 +- .../lib/gen/proto/iop/runtime.pbserver.dart | 1 - .../lib/iop_wire/client_wire_client.dart} | 34 +- apps/client/lib/iop_wire/parser_map.dart | 9 + apps/{portal => client}/lib/main.dart | 103 +- apps/{portal => client}/linux/.gitignore | 0 apps/{portal => client}/linux/CMakeLists.txt | 4 +- .../linux/flutter/CMakeLists.txt | 0 .../flutter/generated_plugin_registrant.cc | 0 .../flutter/generated_plugin_registrant.h | 0 .../linux/flutter/generated_plugins.cmake | 0 .../linux/runner/CMakeLists.txt | 0 apps/{portal => client}/linux/runner/main.cc | 0 .../linux/runner/my_application.cc | 4 +- .../linux/runner/my_application.h | 0 apps/{portal => client}/macos/.gitignore | 0 .../macos/Flutter/Flutter-Debug.xcconfig | 0 .../macos/Flutter/Flutter-Release.xcconfig | 0 .../Flutter/GeneratedPluginRegistrant.swift | 0 .../macos/Runner.xcodeproj/project.pbxproj | 18 +- .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 8 +- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../macos/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/app_icon_1024.png | Bin .../AppIcon.appiconset/app_icon_128.png | Bin .../AppIcon.appiconset/app_icon_16.png | Bin .../AppIcon.appiconset/app_icon_256.png | Bin .../AppIcon.appiconset/app_icon_32.png | Bin .../AppIcon.appiconset/app_icon_512.png | Bin .../AppIcon.appiconset/app_icon_64.png | Bin .../macos/Runner/Base.lproj/MainMenu.xib | 0 .../macos/Runner/Configs/AppInfo.xcconfig | 4 +- .../macos/Runner/Configs/Debug.xcconfig | 0 .../macos/Runner/Configs/Release.xcconfig | 0 .../macos/Runner/Configs/Warnings.xcconfig | 0 .../macos/Runner/DebugProfile.entitlements | 0 .../macos/Runner/Info.plist | 0 .../macos/Runner/MainFlutterWindow.swift | 0 .../macos/Runner/Release.entitlements | 0 .../macos/RunnerTests/RunnerTests.swift | 0 apps/{portal => client}/nginx.conf | 0 apps/{portal => client}/pubspec.lock | 4 +- apps/{portal => client}/pubspec.yaml | 4 +- apps/client/test/client_config_test.dart | 9 + .../iop_wire/client_wire_client_test.dart} | 41 +- .../iop_wire/generated_proto_import_test.dart | 16 +- .../client/test/iop_wire/parser_map_test.dart | 40 + apps/client/test/widget_test.dart | 111 + apps/{portal => client}/web/favicon.png | Bin .../{portal => client}/web/icons/Icon-192.png | Bin .../{portal => client}/web/icons/Icon-512.png | Bin .../web/icons/Icon-maskable-192.png | Bin .../web/icons/Icon-maskable-512.png | Bin apps/{portal => client}/web/index.html | 4 +- apps/{portal => client}/web/manifest.json | 4 +- apps/{portal => client}/windows/.gitignore | 0 .../{portal => client}/windows/CMakeLists.txt | 4 +- .../windows/flutter/CMakeLists.txt | 0 .../flutter/generated_plugin_registrant.cc | 0 .../flutter/generated_plugin_registrant.h | 0 .../windows/flutter/generated_plugins.cmake | 0 .../windows/runner/CMakeLists.txt | 0 .../windows/runner/Runner.rc | 8 +- .../windows/runner/flutter_window.cpp | 0 .../windows/runner/flutter_window.h | 0 .../windows/runner/main.cpp | 2 +- .../windows/runner/resource.h | 0 .../windows/runner/resources/app_icon.ico | Bin .../windows/runner/runner.exe.manifest | 0 .../windows/runner/utils.cpp | 0 .../{portal => client}/windows/runner/utils.h | 0 .../windows/runner/win32_window.cpp | 0 .../windows/runner/win32_window.h | 0 apps/control-plane/README.md | 2 +- apps/control-plane/cmd/control-plane/main.go | 6 +- .../internal/wire/{portal.go => client.go} | 48 +- .../wire/{portal_test.go => client_test.go} | 48 +- apps/control-plane/internal/wire/wire.go | 2 +- apps/edge/README.md | 2 +- .../lib/gen/google/protobuf/struct.pb.dart | 283 --- .../gen/google/protobuf/struct.pbenum.dart | 34 - .../gen/google/protobuf/struct.pbjson.dart | 90 - .../gen/google/protobuf/struct.pbserver.dart | 14 - apps/portal/lib/gen/proto/iop/control.pb.dart | 410 ---- .../lib/gen/proto/iop/control.pbenum.dart | 11 - apps/portal/lib/gen/proto/iop/job.pb.dart | 343 --- apps/portal/lib/gen/proto/iop/job.pbenum.dart | 40 - apps/portal/lib/gen/proto/iop/node.pb.dart | 273 --- .../portal/lib/gen/proto/iop/node.pbenum.dart | 36 - apps/portal/lib/gen/proto/iop/runtime.pb.dart | 2062 ----------------- .../lib/gen/proto/iop/runtime.pbenum.dart | 72 - apps/portal/lib/iop_wire/parser_map.dart | 9 - .../portal/test/iop_wire/parser_map_test.dart | 37 - apps/portal/test/portal_config_test.dart | 9 - apps/portal/test/widget_test.dart | 90 - docker-compose.yml | 4 +- proto/gen/iop/control.pb.go | 52 +- proto/iop/control.proto | 4 +- scripts/dev/web.sh | 8 +- 188 files changed, 4063 insertions(+), 4173 deletions(-) rename agent-roadmap/phase/control-plane-portal-ops/milestones/{control-plane-portal.md => control-plane-client.md} (85%) rename apps/{portal => client}/.gitignore (100%) rename apps/{portal => client}/.metadata (100%) rename apps/{portal => client}/Dockerfile (74%) rename apps/{portal => client}/README.md (92%) rename apps/{portal => client}/analysis_options.yaml (100%) rename apps/{portal => client}/android/.gitignore (100%) rename apps/{portal => client}/android/app/build.gradle.kts (93%) rename apps/{portal => client}/android/app/src/debug/AndroidManifest.xml (100%) rename apps/{portal => client}/android/app/src/main/AndroidManifest.xml (98%) rename apps/{portal/android/app/src/main/kotlin/com/example/iop_portal => client/android/app/src/main/kotlin/com/example/iop_client}/MainActivity.kt (75%) rename apps/{portal => client}/android/app/src/main/res/drawable-v21/launch_background.xml (100%) rename apps/{portal => client}/android/app/src/main/res/drawable/launch_background.xml (100%) rename apps/{portal => client}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename apps/{portal => client}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename apps/{portal => client}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename apps/{portal => client}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename apps/{portal => client}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename apps/{portal => client}/android/app/src/main/res/values-night/styles.xml (100%) rename apps/{portal => client}/android/app/src/main/res/values/styles.xml (100%) rename apps/{portal => client}/android/app/src/profile/AndroidManifest.xml (100%) rename apps/{portal => client}/android/build.gradle.kts (100%) rename apps/{portal => client}/android/gradle.properties (100%) rename apps/{portal => client}/android/gradle/wrapper/gradle-wrapper.properties (100%) rename apps/{portal => client}/android/settings.gradle.kts (100%) rename apps/{portal => client}/ios/.gitignore (100%) rename apps/{portal => client}/ios/Flutter/AppFrameworkInfo.plist (100%) rename apps/{portal => client}/ios/Flutter/Debug.xcconfig (100%) rename apps/{portal => client}/ios/Flutter/Release.xcconfig (100%) rename apps/{portal => client}/ios/Runner.xcodeproj/project.pbxproj (98%) rename apps/{portal => client}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename apps/{portal => client}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename apps/{portal => client}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename apps/{portal => client}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename apps/{portal => client}/ios/Runner.xcworkspace/contents.xcworkspacedata (100%) rename apps/{portal => client}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename apps/{portal => client}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename apps/{portal => client}/ios/Runner/AppDelegate.swift (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png (100%) rename apps/{portal => client}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md (100%) rename apps/{portal => client}/ios/Runner/Base.lproj/LaunchScreen.storyboard (100%) rename apps/{portal => client}/ios/Runner/Base.lproj/Main.storyboard (100%) rename apps/{portal => client}/ios/Runner/Info.plist (97%) rename apps/{portal => client}/ios/Runner/Runner-Bridging-Header.h (100%) rename apps/{portal => client}/ios/Runner/SceneDelegate.swift (100%) rename apps/{portal => client}/ios/RunnerTests/RunnerTests.swift (100%) rename apps/{portal/lib/portal_config.dart => client/lib/client_config.dart} (78%) create mode 100644 apps/client/lib/gen/proto/iop/control.pb.dart create mode 100644 apps/client/lib/gen/proto/iop/control.pbenum.dart rename apps/{portal => client}/lib/gen/proto/iop/control.pbjson.dart (69%) rename apps/{portal => client}/lib/gen/proto/iop/control.pbserver.dart (99%) create mode 100644 apps/client/lib/gen/proto/iop/job.pb.dart create mode 100644 apps/client/lib/gen/proto/iop/job.pbenum.dart rename apps/{portal => client}/lib/gen/proto/iop/job.pbjson.dart (82%) rename apps/{portal => client}/lib/gen/proto/iop/job.pbserver.dart (99%) create mode 100644 apps/client/lib/gen/proto/iop/node.pb.dart create mode 100644 apps/client/lib/gen/proto/iop/node.pbenum.dart rename apps/{portal => client}/lib/gen/proto/iop/node.pbjson.dart (82%) rename apps/{portal => client}/lib/gen/proto/iop/node.pbserver.dart (99%) create mode 100644 apps/client/lib/gen/proto/iop/runtime.pb.dart create mode 100644 apps/client/lib/gen/proto/iop/runtime.pbenum.dart rename apps/{portal => client}/lib/gen/proto/iop/runtime.pbjson.dart (82%) rename apps/{portal => client}/lib/gen/proto/iop/runtime.pbserver.dart (99%) rename apps/{portal/lib/iop_wire/portal_wire_client.dart => client/lib/iop_wire/client_wire_client.dart} (66%) create mode 100644 apps/client/lib/iop_wire/parser_map.dart rename apps/{portal => client}/lib/main.dart (83%) rename apps/{portal => client}/linux/.gitignore (100%) rename apps/{portal => client}/linux/CMakeLists.txt (98%) rename apps/{portal => client}/linux/flutter/CMakeLists.txt (100%) rename apps/{portal => client}/linux/flutter/generated_plugin_registrant.cc (100%) rename apps/{portal => client}/linux/flutter/generated_plugin_registrant.h (100%) rename apps/{portal => client}/linux/flutter/generated_plugins.cmake (100%) rename apps/{portal => client}/linux/runner/CMakeLists.txt (100%) rename apps/{portal => client}/linux/runner/main.cc (100%) rename apps/{portal => client}/linux/runner/my_application.cc (98%) rename apps/{portal => client}/linux/runner/my_application.h (100%) rename apps/{portal => client}/macos/.gitignore (100%) rename apps/{portal => client}/macos/Flutter/Flutter-Debug.xcconfig (100%) rename apps/{portal => client}/macos/Flutter/Flutter-Release.xcconfig (100%) rename apps/{portal => client}/macos/Flutter/GeneratedPluginRegistrant.swift (100%) rename apps/{portal => client}/macos/Runner.xcodeproj/project.pbxproj (97%) rename apps/{portal => client}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename apps/{portal => client}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (95%) rename apps/{portal => client}/macos/Runner.xcworkspace/contents.xcworkspacedata (100%) rename apps/{portal => client}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename apps/{portal => client}/macos/Runner/AppDelegate.swift (100%) rename apps/{portal => client}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename apps/{portal => client}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png (100%) rename apps/{portal => client}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png (100%) rename apps/{portal => client}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png (100%) rename apps/{portal => client}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png (100%) rename apps/{portal => client}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png (100%) rename apps/{portal => client}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png (100%) rename apps/{portal => client}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png (100%) rename apps/{portal => client}/macos/Runner/Base.lproj/MainMenu.xib (100%) rename apps/{portal => client}/macos/Runner/Configs/AppInfo.xcconfig (87%) rename apps/{portal => client}/macos/Runner/Configs/Debug.xcconfig (100%) rename apps/{portal => client}/macos/Runner/Configs/Release.xcconfig (100%) rename apps/{portal => client}/macos/Runner/Configs/Warnings.xcconfig (100%) rename apps/{portal => client}/macos/Runner/DebugProfile.entitlements (100%) rename apps/{portal => client}/macos/Runner/Info.plist (100%) rename apps/{portal => client}/macos/Runner/MainFlutterWindow.swift (100%) rename apps/{portal => client}/macos/Runner/Release.entitlements (100%) rename apps/{portal => client}/macos/RunnerTests/RunnerTests.swift (100%) rename apps/{portal => client}/nginx.conf (100%) rename apps/{portal => client}/pubspec.lock (98%) rename apps/{portal => client}/pubspec.yaml (99%) create mode 100644 apps/client/test/client_config_test.dart rename apps/{portal/test/iop_wire/portal_wire_client_test.dart => client/test/iop_wire/client_wire_client_test.dart} (65%) rename apps/{portal => client}/test/iop_wire/generated_proto_import_test.dart (73%) create mode 100644 apps/client/test/iop_wire/parser_map_test.dart create mode 100644 apps/client/test/widget_test.dart rename apps/{portal => client}/web/favicon.png (100%) rename apps/{portal => client}/web/icons/Icon-192.png (100%) rename apps/{portal => client}/web/icons/Icon-512.png (100%) rename apps/{portal => client}/web/icons/Icon-maskable-192.png (100%) rename apps/{portal => client}/web/icons/Icon-maskable-512.png (100%) rename apps/{portal => client}/web/index.html (93%) rename apps/{portal => client}/web/manifest.json (93%) rename apps/{portal => client}/windows/.gitignore (100%) rename apps/{portal => client}/windows/CMakeLists.txt (98%) rename apps/{portal => client}/windows/flutter/CMakeLists.txt (100%) rename apps/{portal => client}/windows/flutter/generated_plugin_registrant.cc (100%) rename apps/{portal => client}/windows/flutter/generated_plugin_registrant.h (100%) rename apps/{portal => client}/windows/flutter/generated_plugins.cmake (100%) rename apps/{portal => client}/windows/runner/CMakeLists.txt (100%) rename apps/{portal => client}/windows/runner/Runner.rc (92%) rename apps/{portal => client}/windows/runner/flutter_window.cpp (100%) rename apps/{portal => client}/windows/runner/flutter_window.h (100%) rename apps/{portal => client}/windows/runner/main.cpp (95%) rename apps/{portal => client}/windows/runner/resource.h (100%) rename apps/{portal => client}/windows/runner/resources/app_icon.ico (100%) rename apps/{portal => client}/windows/runner/runner.exe.manifest (100%) rename apps/{portal => client}/windows/runner/utils.cpp (100%) rename apps/{portal => client}/windows/runner/utils.h (100%) rename apps/{portal => client}/windows/runner/win32_window.cpp (100%) rename apps/{portal => client}/windows/runner/win32_window.h (100%) rename apps/control-plane/internal/wire/{portal.go => client.go} (60%) rename apps/control-plane/internal/wire/{portal_test.go => client_test.go} (75%) delete mode 100644 apps/portal/lib/gen/google/protobuf/struct.pb.dart delete mode 100644 apps/portal/lib/gen/google/protobuf/struct.pbenum.dart delete mode 100644 apps/portal/lib/gen/google/protobuf/struct.pbjson.dart delete mode 100644 apps/portal/lib/gen/google/protobuf/struct.pbserver.dart delete mode 100644 apps/portal/lib/gen/proto/iop/control.pb.dart delete mode 100644 apps/portal/lib/gen/proto/iop/control.pbenum.dart delete mode 100644 apps/portal/lib/gen/proto/iop/job.pb.dart delete mode 100644 apps/portal/lib/gen/proto/iop/job.pbenum.dart delete mode 100644 apps/portal/lib/gen/proto/iop/node.pb.dart delete mode 100644 apps/portal/lib/gen/proto/iop/node.pbenum.dart delete mode 100644 apps/portal/lib/gen/proto/iop/runtime.pb.dart delete mode 100644 apps/portal/lib/gen/proto/iop/runtime.pbenum.dart delete mode 100644 apps/portal/lib/iop_wire/parser_map.dart delete mode 100644 apps/portal/test/iop_wire/parser_map_test.dart delete mode 100644 apps/portal/test/portal_config_test.dart delete mode 100644 apps/portal/test/widget_test.dart diff --git a/Makefile b/Makefile index c7ce2d0..bfb1338 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all build build-local build-edge build-node build-node-target build-node-targets pack-node-target pack-edge archive-edge tidy test test-e2e test-openai-ollama proto proto-dart portal-test portal-build-web clean +.PHONY: all build build-local build-edge build-node build-node-target build-node-targets pack-node-target pack-edge archive-edge tidy test test-e2e test-openai-ollama proto proto-dart client-test client-build-web clean GOFLAGS ?= -trimpath BUILD_DIR ?= build @@ -98,25 +98,24 @@ ifeq ($(PROTOC_GEN_DART),) @echo "Please install it by running: flutter pub global activate protoc_plugin" @exit 1 endif - mkdir -p apps/portal/lib/gen + mkdir -p apps/client/lib/gen protoc \ --plugin=protoc-gen-dart=$(PROTOC_GEN_DART) \ - --dart_out=apps/portal/lib/gen \ + --dart_out=apps/client/lib/gen \ --proto_path=. \ --proto_path=/config/.local/include \ - /config/.local/include/google/protobuf/struct.proto \ proto/iop/runtime.proto \ proto/iop/node.proto \ proto/iop/control.proto \ proto/iop/job.proto -portal-test: - cd apps/portal && flutter test +client-test: + cd apps/client && flutter test -portal-build-web: - cd apps/portal && flutter build web \ +client-build-web: + cd apps/client && flutter build web \ --dart-define=IOP_CONTROL_PLANE_HTTP_URL=http://localhost:9080 \ - --dart-define=IOP_CONTROL_PLANE_WIRE_URL=ws://localhost:19080/portal + --dart-define=IOP_CONTROL_PLANE_WIRE_URL=ws://localhost:19080/client clean: rm -rf build diff --git a/README.md b/README.md index c275780..83a4bc2 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ IOP(Inference Operations Platform)는 단순한 모델 라우터나 OpenAI API p IOP는 **Control Plane - Edge - Node** 계층 구조를 기반으로, 여러 로컬 모델 런타임과 CLI Agent 실행 환경을 통합 관리하는 실행 오케스트레이션 플랫폼을 지향한다. 모델 서빙, CLI Agent 실행, shell/git/docker/code workspace 작업, node maintenance 작업을 같은 실행 파이프라인에서 다룰 수 있도록 만드는 것이 핵심 방향이다. -IOP는 NomadCode 전용 Agent Shell이 아니라, NomadCode와 외부 agent, 운영 CLI, Portal, 자동화 도구가 함께 소비할 수 있는 범용 추론/자동화 운영 엔진이다. NomadCode는 IOP의 중요한 소비자 중 하나지만, IOP의 프로토콜과 운영 계층은 특정 제품 UX에 종속되지 않는다. +IOP는 NomadCode 전용 Agent Shell이 아니라, NomadCode와 외부 agent, 운영 CLI, Client, 자동화 도구가 함께 소비할 수 있는 범용 추론/자동화 운영 엔진이다. NomadCode는 IOP의 중요한 소비자 중 하나지만, IOP의 프로토콜과 운영 계층은 특정 제품 UX에 종속되지 않는다. 모델 선택, 로컬/클라우드 라우팅, 모델별 profile, token/속도/품질 최적화, 모델 호출 로그와 품질 평가는 IOP 책임으로 둔다. RAG, context 구성/압축, web search, MCP 정책, tool policy, output validation, retry/fallback은 기본 모델 서빙과 부하 라우팅이 가능해진 뒤 확장하는 최적화 계층으로 본다. @@ -221,22 +221,22 @@ NomadCode - 현재 실행 이력은 Node local SQLite store에서 검증 중이다. Edge 단위 이력 집계와 로컬 실행 그룹 상태 소유권은 로드맵에 따라 정리한다. - `mock` adapter와 dummy/TODO 구현은 개발 단계에서 정상적인 구성이다. - Ollama/vLLM 등 모델 runtime adapter는 단계적으로 확장한다. -- Control Plane은 향후 여러 Edge 관리와 Portal 제공을 위해 추가된다. +- Control Plane은 향후 여러 Edge 관리와 Client 제공을 위해 추가된다. 현재 앱 구성은 다음과 같다. | 경로 | 현재 의미 | |---|---| -| `apps/portal` | IOP Portal UI의 기준 구현인 Flutter 애플리케이션. Flutter Web 산출물이 compose `web` 서비스로 배포된다 | +| `apps/client` | IOP Client UI의 기준 구현인 Flutter 애플리케이션. Flutter Web 산출물이 compose `web` 서비스로 배포된다 | | `apps/node` | Edge에 연결되어 adapter execution을 수행하는 Node agent | | `apps/edge` | Node/domain agent registry, 설정 전달, bootstrap, routing, stream relay를 담당하는 Edge skeleton | -| `apps/control-plane` | 여러 Edge를 연결하고 Portal과 통신할 Go 기반 운영 제어 서버 스캐폴드 | +| `apps/control-plane` | 여러 Edge를 연결하고 Client과 통신할 Go 기반 운영 제어 서버 스캐폴드 | | `apps/worker` | 현재 placeholder이며, Worker 구조는 우선 각 Go 서비스 내부 공통 모듈 방향으로 둔다 | | `packages` | 설정, 인증, 정책, 작업, 관측성, 버전 등 공통 패키지 | | `proto` | 앱 간 메시지 계약 원본과 생성물 | | `configs` | 현재 개발용 설정 예시 | -Portal의 장기 UI 기준은 Flutter 앱이며, 필요한 웹 표면은 Flutter Web 산출물로 제공한다. `apps/control-plane`은 Go 기반 운영 제어 서버다. 주요 통신은 edge-node에서 사용 중인 proto-socket을 IOP Wire Protocol 기준으로 Portal-Control Plane, Control Plane-Edge, Edge-Node 방향으로 확장한다. Portal-Control Plane은 앱/브라우저 경계를 고려해 proto-socket WebSocket/WSS를 우선하고, `net/http`는 health/readiness/bootstrap 같은 보조 endpoint 용도로 유지한다. +Client의 장기 UI 기준은 Flutter 앱이며, 필요한 웹 표면은 Flutter Web 산출물로 제공한다. `apps/control-plane`은 Go 기반 운영 제어 서버다. 주요 통신은 edge-node에서 사용 중인 proto-socket을 IOP Wire Protocol 기준으로 Client-Control Plane, Control Plane-Edge, Edge-Node 방향으로 확장한다. Client-Control Plane은 앱/브라우저 경계를 고려해 proto-socket WebSocket/WSS를 우선하고, `net/http`는 health/readiness/bootstrap 같은 보조 endpoint 용도로 유지한다. ## Guide @@ -247,13 +247,13 @@ Portal의 장기 UI 기준은 Flutter 앱이며, 필요한 웹 표면은 Flutter 제품 방향, 단계, 마일스톤, 우선순위의 단일 기준 문서는 `agent-roadmap/ROADMAP.md`다. 일반 작업에서 AI가 읽어야 하는 현재 작업 기준은 `agent-roadmap/current.md`가 가리키는 기본 마일스톤 또는 요청에 맞는 활성 마일스톤 문서다. -로드맵의 큰 축은 Edge-Node 실행 기반, Edge input surface, CLI Automation runtime, remote terminal bridge, agent bootstrap/OTO enrollment, 모델 서빙과 부하 라우팅, RAG/web search/MCP/tool policy/검증 최적화, Control Plane/Portal, policy/history/audit, multi-edge operations로 관리한다. +로드맵의 큰 축은 Edge-Node 실행 기반, Edge input surface, CLI Automation runtime, remote terminal bridge, agent bootstrap/OTO enrollment, 모델 서빙과 부하 라우팅, RAG/web search/MCP/tool policy/검증 최적화, Control Plane/Client, policy/history/audit, multi-edge operations로 관리한다. ## Development Notes - 기존 구조를 우선하며, 세부 구현은 각 작업의 domain rule과 현재 코드 경계를 먼저 확인한 뒤 진행한다. - Edge-Node 내부 통신은 TCP/protobuf 기반 소켓 흐름을 우선한다. -- Portal-Control Plane처럼 앱/브라우저 표면이 필요한 경계는 proto-socket WebSocket/WSS를 사용할 수 있다. Edge-Node 기본 transport를 WebSocket으로 전환하거나 gRPC, actor/FSM/plugin framework를 도입하는 것은 현재 단계의 기본 방향이 아니다. +- Client-Control Plane처럼 앱/브라우저 표면이 필요한 경계는 proto-socket WebSocket/WSS를 사용할 수 있다. Edge-Node 기본 transport를 WebSocket으로 전환하거나 gRPC, actor/FSM/plugin framework를 도입하는 것은 현재 단계의 기본 방향이 아니다. - OpenAI-compatible API 계층은 외부 모델 호출 호환을 위한 표면이며, 내부 실행 모델 전체를 대표하지 않는다. - OpenAI-compatible API는 현재 chat completions baseline을 가지며, Responses API 호환 표면까지 지원하는 방향으로 확장한다. - A2A API 계층은 agent 간 작업 위임과 상태 공유를 위한 표면이며, 단순 모델 호출 호환은 OpenAI-compatible API를 사용한다. NomadCode의 A2A 도입 시점은 아직 강제하지 않는다. diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md index 9f326b1..f759135 100644 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md +++ b/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md @@ -20,7 +20,7 @@ Edge는 terminal session broker가 되고, 대상에 도달 가능한 Node가 SS - 결정 필요: 아래 체크리스트 - [ ] POC에서 우선 지원할 terminal transport를 local shell만으로 둘지, SSH/WinRM/serial 후보 중 일부를 포함할지 결정한다. - [ ] target allowlist, credential 주입, session audit의 최소 보안 기준을 결정한다. - - [ ] 운영 CLI, Portal, Control Plane 중 어느 입력 표면을 POC에 포함할지 결정한다. + - [ ] 운영 CLI, Client, Control Plane 중 어느 입력 표면을 POC에 포함할지 결정한다. ## 범위 @@ -35,7 +35,7 @@ Edge는 terminal session broker가 되고, 대상에 도달 가능한 Node가 SS ### Epic: [bridge-boundary] Remote Terminal Bridge Boundary - [ ] [agentless-boundary] 원격 터미널 브리지는 완전 agentless 제어가 아니라 target device에 IOP agent를 설치하지 않는 운영 경로로 정의한다. -- [ ] [edge-broker] Control Plane/Portal/운영 CLI는 Edge에 terminal session을 요청하고, Node에 직접 붙지 않는다. +- [ ] [edge-broker] Control Plane/Client/운영 CLI는 Edge에 terminal session을 요청하고, Node에 직접 붙지 않는다. - [ ] [node-transport] Node terminal transport는 adapter/profile 또는 별도 adapter 경계에서 실행된다. - [ ] [terminal-events] stdin/stdout/stderr, resize, signal, close lifecycle과 adapter execution stream 경계를 IOP native protocol에서 표현한다. 검증: 허용된 target profile로 Edge remote shell session을 열고 입출력 relay가 되는지 확인한다. - [ ] [security-boundary] target allowlist, credential, timeout, audit 보안 전제를 milestone 산출물에 포함한다. @@ -61,7 +61,7 @@ Edge는 terminal session broker가 되고, 대상에 도달 가능한 Node가 SS ## 작업 컨텍스트 - 관련 경로: `apps/edge`, `apps/node`, `README.md`, `agent-ops/rules/private/rules.md` -- 표준선(선택): Control Plane/Portal/운영 CLI는 Edge에 terminal session을 요청하고, Edge가 Node terminal transport로 중계한다. OpenAI-compatible/A2A payload에 terminal 제어를 싣지 않는다. +- 표준선(선택): Control Plane/Client/운영 CLI는 Edge에 terminal session을 요청하고, Edge가 Node terminal transport로 중계한다. OpenAI-compatible/A2A payload에 terminal 제어를 싣지 않는다. - 선행 작업: Edge-Node 실행 스켈레톤, CLI Automation Runtime 안정화 -- 후속 작업: 정책, 이력, 감사; Control Plane과 Portal의 terminal session 운영 표면 +- 후속 작업: 정책, 이력, 감사; Control Plane과 Client의 terminal session 운영 표면 - 확인 필요: Agent Bootstrap과 OTO 등록과의 대상 구분. 설치 가능한 대상은 bootstrap/enrollment 경로로, 설치가 어렵거나 일회성 유지보수 대상은 remote terminal bridge 경로로 구분한다. diff --git a/agent-roadmap/phase/control-plane-portal-ops/PHASE.md b/agent-roadmap/phase/control-plane-portal-ops/PHASE.md index 7ce65ef..6a50845 100644 --- a/agent-roadmap/phase/control-plane-portal-ops/PHASE.md +++ b/agent-roadmap/phase/control-plane-portal-ops/PHASE.md @@ -13,9 +13,9 @@ 완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다. 완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. -- [완료] Flutter-first Portal 마이그레이션 +- [완료] Flutter-first Client 마이그레이션 - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md` - - 요약: Next.js `apps/web` scaffold를 제거하고 `apps/portal` Flutter 앱, Flutter Web compose 배포 흐름, Portal-Control Plane proto-socket WS hello 기반을 세웠다. + - 요약: Next.js `apps/web` scaffold를 제거하고 `apps/client` Flutter 앱, Flutter Web compose 배포 흐름, Client-Control Plane proto-socket WS hello 기반을 세웠다. - [완료] Edge-local Dev Config와 바이너리 중심 실행 루프 - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/edge-local-dev-config-runtime.md` @@ -26,7 +26,7 @@ - 요약: NomadCode client 표준을 IOP client에 복제하기 위한 모듈명, bootstrap, proto-socket, Mattermost push host integration 기준을 정리한다. - [계획] Control Plane과 Client - - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md` + - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-client.md` - 요약: 여러 Edge를 연결하고 관찰하며 Edge 설정 변경, 명령 전달, 이벤트 수신을 담당하는 중앙 제어면과 Flutter client 운영면을 구축한다. - [계획] 정책, 이력, 감사 diff --git a/agent-roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md index e7bec6f..768879f 100644 --- a/agent-roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md @@ -18,7 +18,7 @@ NomadCode의 `Client Integration Standardization` 결과를 IOP Flutter client - 상태: 잠금 - 결정 필요: 아래 체크리스트 - [ ] NomadCode client 표준화 산출물을 받은 뒤 IOP client에 복제할 파일/구조/설정 범위를 확정한다. - - [ ] 기존 `apps/portal` 경로를 `apps/client`로 전환할지, 호환 경로를 둘지 결정한다. + - [x] 이전 Flutter 앱 경로는 `apps/client`로 전환하고 호환 경로는 두지 않는다. - [ ] IOP client에서 Mattermost push routing을 내부 화면, 외부 링크, 운영 이벤트 중 어디로 연결할지 결정한다. ## 범위 @@ -37,7 +37,7 @@ NomadCode의 `Client Integration Standardization` 결과를 IOP Flutter client NomadCode client 표준을 IOP client에 맞게 복제한다. -- [ ] [module-name] IOP Flutter host 경로와 모듈명은 `client` 기준 모듈/문서 표준을 따른다. +- [x] [module-name] IOP Flutter host 경로와 모듈명은 `client` 기준 모듈/문서 표준을 따른다. - [ ] [bootstrap] Web + Android 우선 bootstrap과 platform-specific initialization guard를 반영한다. - [ ] [folder-layout] `src/app`, `src/integrations`, `src/features` 기준의 client skeleton을 정리한다. @@ -54,7 +54,7 @@ NomadCode client 표준을 IOP client에 맞게 복제한다. NomadCode 표준과 IOP 차이를 추적 가능하게 남긴다. - [ ] [clone-checklist] NomadCode에서 가져올 항목과 IOP에서 치환할 항목을 checklist로 남긴다. -- [ ] [naming] IOP 제품 표면에서는 Portal 명칭을 강조하지 않고 client/product surface 기준으로 정리한다. +- [x] [naming] IOP 제품 표면에서는 client/product surface 기준으로 정리한다. - [ ] [related-locks] 기존 Control Plane client milestone과 충돌하는 범위는 이 milestone의 표준 적용 범위가 확정되기 전까지 잠금 또는 후속 작업으로 정리한다. ## 완료 리뷰 @@ -77,8 +77,8 @@ NomadCode 표준과 IOP 차이를 추적 가능하게 남긴다. ## 작업 컨텍스트 -- 관련 경로: `apps/portal/`, `apps/control-plane/`, `docs/`, `bin/web.sh`, `../nomadcode/apps/client`, `../mattermost-push-plugin/` -- 표준선(선택): IOP 제품 표면은 client로 부르고, 기존 Portal 명칭은 legacy 경로 또는 wire endpoint 명칭에 남은 경우에만 제한적으로 다룬다. +- 관련 경로: `apps/client/`, `apps/control-plane/`, `docs/`, `scripts/dev/web.sh`, `../nomadcode/apps/client`, `../mattermost-push-plugin/` +- 표준선(선택): IOP 제품 표면은 client로 부르고, 이전 UI 명칭은 roadmap/archive history나 외부 tool API 고정명에만 제한한다. - 표준선(선택): NomadCode에서 가져올 것은 client skeleton, integration boundary, bootstrap convention, handoff 문서이며 제품 feature는 복제하지 않는다. - 선행 작업: NomadCode `Client Integration Standardization` - 후속 작업: Control Plane과 Client, Multi-Edge 운영 diff --git a/agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-client.md similarity index 85% rename from agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md rename to agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-client.md index c28fc02..242b903 100644 --- a/agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-client.md @@ -40,14 +40,14 @@ Client는 NomadCode 전용 화면이 아니라 IOP가 독립적으로 운영되 - [ ] [edge-mediated] Control Plane은 Node를 직접 연결하거나 직접 스케줄링하지 않는다. - [ ] [edge-status] Control Plane은 하나 이상의 Edge 연결 상태를 조회할 수 있다. 검증: Edge 연결 상태 조회 경로가 동작하는지 확인한다. - [ ] [edge-command-events] Edge 명령 전달과 이벤트 수신 흐름이 IOP Wire Protocol 기준으로 문서화된다. -- [ ] [portal-via-cp] Client는 Control Plane을 통해 Edge 운영 상태를 조회한다. +- [ ] [client-via-cp] Client는 Control Plane을 통해 Edge 운영 상태를 조회한다. -### Epic: [portal-wire-surface] Client Wire Surface +### Epic: [client-wire-surface] Client Wire Surface -- [x] [portal-boundary] Flutter client는 IOP 자체 운영 UI/UX이며 NomadCode에 맞춘 전용 shell로 만들지 않는다. +- [x] [client-boundary] Flutter client는 IOP 자체 운영 UI/UX이며 NomadCode에 맞춘 전용 shell로 만들지 않는다. - [ ] [client-status] Client는 Edge/Node/agent 상태를 사용자에게 보여줄 수 있다. 검증: Client 상태 화면 또는 상태 표시 경로를 확인한다. - [x] [server-bridge] 브라우저 직접 TCP가 어려운 구간은 Control Plane server-side bridge를 둔다. -- [x] [portal-wire-hello] Client-Control Plane proto-socket WebSocket hello handshake scaffold가 구현되고 테스트되어 있다. 검증: Control Plane과 client 테스트에서 hello handshake가 통과한다. +- [x] [client-wire-hello] Client-Control Plane proto-socket WebSocket hello handshake scaffold가 구현되고 테스트되어 있다. 검증: Control Plane과 client 테스트에서 hello handshake가 통과한다. - [x] [http-boundary] `net/http`는 health/readiness/bootstrap 같은 보조 endpoint 용도로 유지한다. - [x] [deploy-docs] Control Plane과 Flutter client의 배포/검증 절차가 `README.md`의 운영 경계와 private local testing rule의 환경 기준에 맞게 정리되어 있다. @@ -71,9 +71,9 @@ Client는 NomadCode 전용 화면이 아니라 IOP가 독립적으로 운영되 ## 작업 컨텍스트 -- 관련 경로: `apps/control-plane`, `apps/portal`, `apps/control-plane/README.md`, `apps/portal/README.md`, `agent-ops/rules/private/rules.md`, `docker-compose.yml`, `bin/web.sh` +- 관련 경로: `apps/control-plane`, `apps/client`, `apps/control-plane/README.md`, `apps/client/README.md`, `agent-ops/rules/private/rules.md`, `docker-compose.yml`, `scripts/dev/web.sh` - 표준선(선택): Control Plane은 Node를 직접 스케줄링하지 않고 Edge를 통해 관찰/제어한다. -- 표준선(선택): Client-Control Plane의 첫 wire surface는 기존 `/portal` WebSocket hello handshake를 유지할 수 있으며, Edge 운영 조회와 명령 전달은 후속 IOP Wire Protocol 확장에서 붙인다. -- 선행 작업: Flutter-first Portal 마이그레이션, Client Integration Clone Adoption, Agent Bootstrap과 OTO 등록, 정책/이력/감사 일부 기준 +- 표준선(선택): Client-Control Plane의 첫 wire surface는 `/client` WebSocket hello handshake를 기준으로 둔다. +- 선행 작업: Flutter-first Client 마이그레이션, Client Integration Clone Adoption, Agent Bootstrap과 OTO 등록, 정책/이력/감사 일부 기준 - 후속 작업: Multi-Edge 운영 - 확인 필요: Client 첫 화면 범위, Control Plane-Edge wire 우선순위, NomadCode 전용 UX 제외 기준, client 표준 clone 반영 범위 diff --git a/agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md index 724587a..4290371 100644 --- a/agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md @@ -60,7 +60,7 @@ Multi-edge scheduling과 fleet-wide state ownership은 Control Plane과 IOP nati ## 작업 컨텍스트 -- 관련 경로: `apps/control-plane`, `apps/portal`, `apps/edge`, `README.md` +- 관련 경로: `apps/control-plane`, `apps/client`, `apps/edge`, `README.md` - 표준선(선택): Edge는 로컬 런타임 상태와 registry 소유권을 유지하고, Control Plane은 관찰/집계 계층으로 시작한다. - 선행 작업: Control Plane과 Client, 정책/이력/감사 - 후속 작업: 없음 diff --git a/apps/portal/.gitignore b/apps/client/.gitignore similarity index 100% rename from apps/portal/.gitignore rename to apps/client/.gitignore diff --git a/apps/portal/.metadata b/apps/client/.metadata similarity index 100% rename from apps/portal/.metadata rename to apps/client/.metadata diff --git a/apps/portal/Dockerfile b/apps/client/Dockerfile similarity index 74% rename from apps/portal/Dockerfile rename to apps/client/Dockerfile index 2bdfa0e..f4b616d 100644 --- a/apps/portal/Dockerfile +++ b/apps/client/Dockerfile @@ -3,20 +3,20 @@ FROM ghcr.io/cirruslabs/flutter:stable AS builder ARG IOP_CONTROL_PLANE_HTTP_URL=http://localhost:9080 -ARG IOP_CONTROL_PLANE_WIRE_URL=ws://localhost:19080/portal +ARG IOP_CONTROL_PLANE_WIRE_URL=ws://localhost:19080/client -WORKDIR /workspace/iop/apps/portal +WORKDIR /workspace/iop/apps/client # docker-compose builds this Dockerfile with /config/workspace as context so the # sibling proto-socket/dart path dependency declared in pubspec.yaml resolves to # /workspace/proto-socket/dart inside the image. Copy its manifest first so pub # get can cache, then copy full source before the build step. COPY proto-socket/dart/pubspec.yaml proto-socket/dart/pubspec.lock /workspace/proto-socket/dart/ -COPY iop/apps/portal/pubspec.yaml iop/apps/portal/pubspec.lock ./ +COPY iop/apps/client/pubspec.yaml iop/apps/client/pubspec.lock ./ RUN flutter pub get COPY proto-socket/dart/ /workspace/proto-socket/dart/ -COPY iop/apps/portal/ ./ +COPY iop/apps/client/ ./ RUN flutter build web \ --release \ --dart-define=IOP_CONTROL_PLANE_HTTP_URL=$IOP_CONTROL_PLANE_HTTP_URL \ @@ -24,8 +24,8 @@ RUN flutter build web \ FROM nginx:1.27-alpine AS runner -COPY --from=builder /workspace/iop/apps/portal/build/web /usr/share/nginx/html -COPY iop/apps/portal/nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=builder /workspace/iop/apps/client/build/web /usr/share/nginx/html +COPY iop/apps/client/nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 3000 diff --git a/apps/portal/README.md b/apps/client/README.md similarity index 92% rename from apps/portal/README.md rename to apps/client/README.md index 0f03677..2806227 100644 --- a/apps/portal/README.md +++ b/apps/client/README.md @@ -1,6 +1,6 @@ -# IOP Portal +# IOP Client -IOP(Inference Operations Platform)의 공식 Portal UI 애플리케이션입니다. Flutter를 사용하여 다중 플랫폼(Web, Desktop, Mobile)을 단일 코드베이스로 지원합니다. +IOP(Inference Operations Platform)의 공식 Client UI 애플리케이션입니다. Flutter를 사용하여 다중 플랫폼(Web, Desktop, Mobile)을 단일 코드베이스로 지원합니다. ## 개발 및 검증 명령 @@ -30,7 +30,7 @@ Dart proto 코드를 새로 생성하려면 루트 `Makefile`에서 `make proto- ```bash flutter build web \ --dart-define=IOP_CONTROL_PLANE_HTTP_URL=http://localhost:9080 \ - --dart-define=IOP_CONTROL_PLANE_WIRE_URL=ws://localhost:19080/portal + --dart-define=IOP_CONTROL_PLANE_WIRE_URL=ws://localhost:19080/client ``` ## 환경 변수 및 설정 정의 @@ -40,4 +40,4 @@ flutter build web \ | 변수명 | 설명 | 기본값 | |--------|------|--------| | `IOP_CONTROL_PLANE_HTTP_URL` | Control Plane HTTP API 주소 | `http://localhost:9080` | -| `IOP_CONTROL_PLANE_WIRE_URL` | Control Plane WebSocket 연결 주소 | `ws://localhost:19080/portal` | +| `IOP_CONTROL_PLANE_WIRE_URL` | Control Plane WebSocket 연결 주소 | `ws://localhost:19080/client` | diff --git a/apps/portal/analysis_options.yaml b/apps/client/analysis_options.yaml similarity index 100% rename from apps/portal/analysis_options.yaml rename to apps/client/analysis_options.yaml diff --git a/apps/portal/android/.gitignore b/apps/client/android/.gitignore similarity index 100% rename from apps/portal/android/.gitignore rename to apps/client/android/.gitignore diff --git a/apps/portal/android/app/build.gradle.kts b/apps/client/android/app/build.gradle.kts similarity index 93% rename from apps/portal/android/app/build.gradle.kts rename to apps/client/android/app/build.gradle.kts index 6089775..ebb790d 100644 --- a/apps/portal/android/app/build.gradle.kts +++ b/apps/client/android/app/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - namespace = "com.example.iop_portal" + namespace = "com.example.iop_client" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion @@ -21,7 +21,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "com.example.iop_portal" + applicationId = "com.example.iop_client" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion diff --git a/apps/portal/android/app/src/debug/AndroidManifest.xml b/apps/client/android/app/src/debug/AndroidManifest.xml similarity index 100% rename from apps/portal/android/app/src/debug/AndroidManifest.xml rename to apps/client/android/app/src/debug/AndroidManifest.xml diff --git a/apps/portal/android/app/src/main/AndroidManifest.xml b/apps/client/android/app/src/main/AndroidManifest.xml similarity index 98% rename from apps/portal/android/app/src/main/AndroidManifest.xml rename to apps/client/android/app/src/main/AndroidManifest.xml index 1c290c3..2e41363 100644 --- a/apps/portal/android/app/src/main/AndroidManifest.xml +++ b/apps/client/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Iop Portal + Iop Client CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -15,7 +15,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - iop_portal + iop_client CFBundlePackageType APPL CFBundleShortVersionString diff --git a/apps/portal/ios/Runner/Runner-Bridging-Header.h b/apps/client/ios/Runner/Runner-Bridging-Header.h similarity index 100% rename from apps/portal/ios/Runner/Runner-Bridging-Header.h rename to apps/client/ios/Runner/Runner-Bridging-Header.h diff --git a/apps/portal/ios/Runner/SceneDelegate.swift b/apps/client/ios/Runner/SceneDelegate.swift similarity index 100% rename from apps/portal/ios/Runner/SceneDelegate.swift rename to apps/client/ios/Runner/SceneDelegate.swift diff --git a/apps/portal/ios/RunnerTests/RunnerTests.swift b/apps/client/ios/RunnerTests/RunnerTests.swift similarity index 100% rename from apps/portal/ios/RunnerTests/RunnerTests.swift rename to apps/client/ios/RunnerTests/RunnerTests.swift diff --git a/apps/portal/lib/portal_config.dart b/apps/client/lib/client_config.dart similarity index 78% rename from apps/portal/lib/portal_config.dart rename to apps/client/lib/client_config.dart index 3e970b8..dfd0737 100644 --- a/apps/portal/lib/portal_config.dart +++ b/apps/client/lib/client_config.dart @@ -1,4 +1,4 @@ -class PortalConfig { +class ClientConfig { static const String controlPlaneHttpUrl = String.fromEnvironment( 'IOP_CONTROL_PLANE_HTTP_URL', defaultValue: 'http://localhost:9080', @@ -6,6 +6,6 @@ class PortalConfig { static const String controlPlaneWireUrl = String.fromEnvironment( 'IOP_CONTROL_PLANE_WIRE_URL', - defaultValue: 'ws://localhost:19080/portal', + defaultValue: 'ws://localhost:19080/client', ); } diff --git a/apps/client/lib/gen/proto/iop/control.pb.dart b/apps/client/lib/gen/proto/iop/control.pb.dart new file mode 100644 index 0000000..3b01ef1 --- /dev/null +++ b/apps/client/lib/gen/proto/iop/control.pb.dart @@ -0,0 +1,421 @@ +// This is a generated file - do not edit. +// +// Generated from proto/iop/control.proto. + +// @dart = 3.3 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions; + +/// PolicyRule is a placeholder for future edge-level routing/resource constraints. +class PolicyRule extends $pb.GeneratedMessage { + factory PolicyRule({ + $core.String? name, + $core.String? expression, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? params, + }) { + final result = create(); + if (name != null) result.name = name; + if (expression != null) result.expression = expression; + if (params != null) result.params.addEntries(params); + return result; + } + + PolicyRule._(); + + factory PolicyRule.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory PolicyRule.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'PolicyRule', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..aOS(2, _omitFieldNames ? '' : 'expression') + ..m<$core.String, $core.String>(3, _omitFieldNames ? '' : 'params', + entryClassName: 'PolicyRule.ParamsEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + PolicyRule clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + PolicyRule copyWith(void Function(PolicyRule) updates) => + super.copyWith((message) => updates(message as PolicyRule)) as PolicyRule; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static PolicyRule create() => PolicyRule._(); + @$core.override + PolicyRule createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static PolicyRule getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static PolicyRule? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get expression => $_getSZ(1); + @$pb.TagNumber(2) + set expression($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasExpression() => $_has(1); + @$pb.TagNumber(2) + void clearExpression() => $_clearField(2); + + @$pb.TagNumber(3) + $pb.PbMap<$core.String, $core.String> get params => $_getMap(2); +} + +/// ScheduleRequest is a legacy placeholder for future Control Plane orchestration. +/// It must not be treated as an active contract for direct Node scheduling. +class ScheduleRequest extends $pb.GeneratedMessage { + factory ScheduleRequest({ + $core.String? jobId, + $core.String? target, + $core.Iterable? policies, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? metadata, + }) { + final result = create(); + if (jobId != null) result.jobId = jobId; + if (target != null) result.target = target; + if (policies != null) result.policies.addAll(policies); + if (metadata != null) result.metadata.addEntries(metadata); + return result; + } + + ScheduleRequest._(); + + factory ScheduleRequest.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory ScheduleRequest.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'ScheduleRequest', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'jobId') + ..aOS(2, _omitFieldNames ? '' : 'target') + ..pPM(3, _omitFieldNames ? '' : 'policies', + subBuilder: PolicyRule.create) + ..m<$core.String, $core.String>(4, _omitFieldNames ? '' : 'metadata', + entryClassName: 'ScheduleRequest.MetadataEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + ScheduleRequest clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + ScheduleRequest copyWith(void Function(ScheduleRequest) updates) => + super.copyWith((message) => updates(message as ScheduleRequest)) + as ScheduleRequest; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ScheduleRequest create() => ScheduleRequest._(); + @$core.override + ScheduleRequest createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static ScheduleRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static ScheduleRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get jobId => $_getSZ(0); + @$pb.TagNumber(1) + set jobId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasJobId() => $_has(0); + @$pb.TagNumber(1) + void clearJobId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get target => $_getSZ(1); + @$pb.TagNumber(2) + set target($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasTarget() => $_has(1); + @$pb.TagNumber(2) + void clearTarget() => $_clearField(2); + + @$pb.TagNumber(3) + $pb.PbList get policies => $_getList(2); + + @$pb.TagNumber(4) + $pb.PbMap<$core.String, $core.String> get metadata => $_getMap(3); +} + +/// ScheduleResponse is a legacy placeholder. Future scheduling should be +/// reworked around Edge-owned runtime state instead of bypassing Edge. +class ScheduleResponse extends $pb.GeneratedMessage { + factory ScheduleResponse({ + $core.String? nodeId, + $core.String? address, + $core.String? token, + }) { + final result = create(); + if (nodeId != null) result.nodeId = nodeId; + if (address != null) result.address = address; + if (token != null) result.token = token; + return result; + } + + ScheduleResponse._(); + + factory ScheduleResponse.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory ScheduleResponse.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'ScheduleResponse', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'nodeId') + ..aOS(2, _omitFieldNames ? '' : 'address') + ..aOS(3, _omitFieldNames ? '' : 'token') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + ScheduleResponse clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + ScheduleResponse copyWith(void Function(ScheduleResponse) updates) => + super.copyWith((message) => updates(message as ScheduleResponse)) + as ScheduleResponse; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ScheduleResponse create() => ScheduleResponse._(); + @$core.override + ScheduleResponse createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static ScheduleResponse getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static ScheduleResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get nodeId => $_getSZ(0); + @$pb.TagNumber(1) + set nodeId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasNodeId() => $_has(0); + @$pb.TagNumber(1) + void clearNodeId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get address => $_getSZ(1); + @$pb.TagNumber(2) + set address($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasAddress() => $_has(1); + @$pb.TagNumber(2) + void clearAddress() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get token => $_getSZ(2); + @$pb.TagNumber(3) + set token($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasToken() => $_has(2); + @$pb.TagNumber(3) + void clearToken() => $_clearField(3); +} + +class ClientHelloRequest extends $pb.GeneratedMessage { + factory ClientHelloRequest({ + $core.String? clientId, + $core.String? clientVersion, + }) { + final result = create(); + if (clientId != null) result.clientId = clientId; + if (clientVersion != null) result.clientVersion = clientVersion; + return result; + } + + ClientHelloRequest._(); + + factory ClientHelloRequest.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory ClientHelloRequest.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'ClientHelloRequest', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'clientId') + ..aOS(2, _omitFieldNames ? '' : 'clientVersion') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + ClientHelloRequest clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + ClientHelloRequest copyWith(void Function(ClientHelloRequest) updates) => + super.copyWith((message) => updates(message as ClientHelloRequest)) + as ClientHelloRequest; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ClientHelloRequest create() => ClientHelloRequest._(); + @$core.override + ClientHelloRequest createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static ClientHelloRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static ClientHelloRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get clientId => $_getSZ(0); + @$pb.TagNumber(1) + set clientId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasClientId() => $_has(0); + @$pb.TagNumber(1) + void clearClientId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get clientVersion => $_getSZ(1); + @$pb.TagNumber(2) + set clientVersion($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasClientVersion() => $_has(1); + @$pb.TagNumber(2) + void clearClientVersion() => $_clearField(2); +} + +class ClientHelloResponse extends $pb.GeneratedMessage { + factory ClientHelloResponse({ + $core.bool? ready, + $core.String? protocol, + $fixnum.Int64? serverTimeUnixNano, + $core.String? message, + }) { + final result = create(); + if (ready != null) result.ready = ready; + if (protocol != null) result.protocol = protocol; + if (serverTimeUnixNano != null) + result.serverTimeUnixNano = serverTimeUnixNano; + if (message != null) result.message = message; + return result; + } + + ClientHelloResponse._(); + + factory ClientHelloResponse.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory ClientHelloResponse.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'ClientHelloResponse', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOB(1, _omitFieldNames ? '' : 'ready') + ..aOS(2, _omitFieldNames ? '' : 'protocol') + ..aInt64(3, _omitFieldNames ? '' : 'serverTimeUnixNano') + ..aOS(4, _omitFieldNames ? '' : 'message') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + ClientHelloResponse clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + ClientHelloResponse copyWith(void Function(ClientHelloResponse) updates) => + super.copyWith((message) => updates(message as ClientHelloResponse)) + as ClientHelloResponse; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ClientHelloResponse create() => ClientHelloResponse._(); + @$core.override + ClientHelloResponse createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static ClientHelloResponse getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static ClientHelloResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.bool get ready => $_getBF(0); + @$pb.TagNumber(1) + set ready($core.bool value) => $_setBool(0, value); + @$pb.TagNumber(1) + $core.bool hasReady() => $_has(0); + @$pb.TagNumber(1) + void clearReady() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get protocol => $_getSZ(1); + @$pb.TagNumber(2) + set protocol($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasProtocol() => $_has(1); + @$pb.TagNumber(2) + void clearProtocol() => $_clearField(2); + + @$pb.TagNumber(3) + $fixnum.Int64 get serverTimeUnixNano => $_getI64(2); + @$pb.TagNumber(3) + set serverTimeUnixNano($fixnum.Int64 value) => $_setInt64(2, value); + @$pb.TagNumber(3) + $core.bool hasServerTimeUnixNano() => $_has(2); + @$pb.TagNumber(3) + void clearServerTimeUnixNano() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get message => $_getSZ(3); + @$pb.TagNumber(4) + set message($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasMessage() => $_has(3); + @$pb.TagNumber(4) + void clearMessage() => $_clearField(4); +} + +const $core.bool _omitFieldNames = + $core.bool.fromEnvironment('protobuf.omit_field_names'); +const $core.bool _omitMessageNames = + $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/apps/client/lib/gen/proto/iop/control.pbenum.dart b/apps/client/lib/gen/proto/iop/control.pbenum.dart new file mode 100644 index 0000000..730e4bc --- /dev/null +++ b/apps/client/lib/gen/proto/iop/control.pbenum.dart @@ -0,0 +1,11 @@ +// This is a generated file - do not edit. +// +// Generated from proto/iop/control.proto. + +// @dart = 3.3 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports diff --git a/apps/portal/lib/gen/proto/iop/control.pbjson.dart b/apps/client/lib/gen/proto/iop/control.pbjson.dart similarity index 69% rename from apps/portal/lib/gen/proto/iop/control.pbjson.dart rename to apps/client/lib/gen/proto/iop/control.pbjson.dart index f816f5d..53bd55f 100644 --- a/apps/portal/lib/gen/proto/iop/control.pbjson.dart +++ b/apps/client/lib/gen/proto/iop/control.pbjson.dart @@ -1,13 +1,15 @@ +// This is a generated file - do not edit. // -// Generated code. Do not modify. -// source: proto/iop/control.proto -// -// @dart = 2.12 +// Generated from proto/iop/control.proto. + +// @dart = 3.3 // ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports +// ignore_for_file: unused_import import 'dart:convert' as $convert; import 'dart:core' as $core; @@ -19,7 +21,14 @@ const PolicyRule$json = { '2': [ {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, {'1': 'expression', '3': 2, '4': 1, '5': 9, '10': 'expression'}, - {'1': 'params', '3': 3, '4': 3, '5': 11, '6': '.iop.PolicyRule.ParamsEntry', '10': 'params'}, + { + '1': 'params', + '3': 3, + '4': 3, + '5': 11, + '6': '.iop.PolicyRule.ParamsEntry', + '10': 'params' + }, ], '3': [PolicyRule_ParamsEntry$json], }; @@ -47,8 +56,22 @@ const ScheduleRequest$json = { '2': [ {'1': 'job_id', '3': 1, '4': 1, '5': 9, '10': 'jobId'}, {'1': 'target', '3': 2, '4': 1, '5': 9, '10': 'target'}, - {'1': 'policies', '3': 3, '4': 3, '5': 11, '6': '.iop.PolicyRule', '10': 'policies'}, - {'1': 'metadata', '3': 4, '4': 3, '5': 11, '6': '.iop.ScheduleRequest.MetadataEntry', '10': 'metadata'}, + { + '1': 'policies', + '3': 3, + '4': 3, + '5': 11, + '6': '.iop.PolicyRule', + '10': 'policies' + }, + { + '1': 'metadata', + '3': 4, + '4': 3, + '5': 11, + '6': '.iop.ScheduleRequest.MetadataEntry', + '10': 'metadata' + }, ], '3': [ScheduleRequest_MetadataEntry$json], }; @@ -86,34 +109,39 @@ final $typed_data.Uint8List scheduleResponseDescriptor = $convert.base64Decode( 'ChBTY2hlZHVsZVJlc3BvbnNlEhcKB25vZGVfaWQYASABKAlSBm5vZGVJZBIYCgdhZGRyZXNzGA' 'IgASgJUgdhZGRyZXNzEhQKBXRva2VuGAMgASgJUgV0b2tlbg=='); -@$core.Deprecated('Use portalHelloRequestDescriptor instead') -const PortalHelloRequest$json = { - '1': 'PortalHelloRequest', +@$core.Deprecated('Use clientHelloRequestDescriptor instead') +const ClientHelloRequest$json = { + '1': 'ClientHelloRequest', '2': [ {'1': 'client_id', '3': 1, '4': 1, '5': 9, '10': 'clientId'}, {'1': 'client_version', '3': 2, '4': 1, '5': 9, '10': 'clientVersion'}, ], }; -/// Descriptor for `PortalHelloRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List portalHelloRequestDescriptor = $convert.base64Decode( - 'ChJQb3J0YWxIZWxsb1JlcXVlc3QSGwoJY2xpZW50X2lkGAEgASgJUghjbGllbnRJZBIlCg5jbG' +/// Descriptor for `ClientHelloRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List clientHelloRequestDescriptor = $convert.base64Decode( + 'ChJDbGllbnRIZWxsb1JlcXVlc3QSGwoJY2xpZW50X2lkGAEgASgJUghjbGllbnRJZBIlCg5jbG' 'llbnRfdmVyc2lvbhgCIAEoCVINY2xpZW50VmVyc2lvbg=='); -@$core.Deprecated('Use portalHelloResponseDescriptor instead') -const PortalHelloResponse$json = { - '1': 'PortalHelloResponse', +@$core.Deprecated('Use clientHelloResponseDescriptor instead') +const ClientHelloResponse$json = { + '1': 'ClientHelloResponse', '2': [ {'1': 'ready', '3': 1, '4': 1, '5': 8, '10': 'ready'}, {'1': 'protocol', '3': 2, '4': 1, '5': 9, '10': 'protocol'}, - {'1': 'server_time_unix_nano', '3': 3, '4': 1, '5': 3, '10': 'serverTimeUnixNano'}, + { + '1': 'server_time_unix_nano', + '3': 3, + '4': 1, + '5': 3, + '10': 'serverTimeUnixNano' + }, {'1': 'message', '3': 4, '4': 1, '5': 9, '10': 'message'}, ], }; -/// Descriptor for `PortalHelloResponse`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List portalHelloResponseDescriptor = $convert.base64Decode( - 'ChNQb3J0YWxIZWxsb1Jlc3BvbnNlEhQKBXJlYWR5GAEgASgIUgVyZWFkeRIaCghwcm90b2NvbB' +/// Descriptor for `ClientHelloResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List clientHelloResponseDescriptor = $convert.base64Decode( + 'ChNDbGllbnRIZWxsb1Jlc3BvbnNlEhQKBXJlYWR5GAEgASgIUgVyZWFkeRIaCghwcm90b2NvbB' 'gCIAEoCVIIcHJvdG9jb2wSMQoVc2VydmVyX3RpbWVfdW5peF9uYW5vGAMgASgDUhJzZXJ2ZXJU' 'aW1lVW5peE5hbm8SGAoHbWVzc2FnZRgEIAEoCVIHbWVzc2FnZQ=='); - diff --git a/apps/portal/lib/gen/proto/iop/control.pbserver.dart b/apps/client/lib/gen/proto/iop/control.pbserver.dart similarity index 99% rename from apps/portal/lib/gen/proto/iop/control.pbserver.dart rename to apps/client/lib/gen/proto/iop/control.pbserver.dart index cbcf4cd..0c7d413 100644 --- a/apps/portal/lib/gen/proto/iop/control.pbserver.dart +++ b/apps/client/lib/gen/proto/iop/control.pbserver.dart @@ -11,4 +11,3 @@ // ignore_for_file: unnecessary_import, unnecessary_this, unused_import export 'control.pb.dart'; - diff --git a/apps/client/lib/gen/proto/iop/job.pb.dart b/apps/client/lib/gen/proto/iop/job.pb.dart new file mode 100644 index 0000000..2d4f90d --- /dev/null +++ b/apps/client/lib/gen/proto/iop/job.pb.dart @@ -0,0 +1,338 @@ +// This is a generated file - do not edit. +// +// Generated from proto/iop/job.proto. + +// @dart = 3.3 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'job.pbenum.dart'; + +export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions; + +export 'job.pbenum.dart'; + +class Job extends $pb.GeneratedMessage { + factory Job({ + $core.String? jobId, + $core.String? runId, + $core.String? nodeId, + $core.String? adapter, + $core.String? target, + JobStatus? status, + $fixnum.Int64? createdAt, + $fixnum.Int64? startedAt, + $fixnum.Int64? finishedAt, + $core.String? error, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? metadata, + }) { + final result = create(); + if (jobId != null) result.jobId = jobId; + if (runId != null) result.runId = runId; + if (nodeId != null) result.nodeId = nodeId; + if (adapter != null) result.adapter = adapter; + if (target != null) result.target = target; + if (status != null) result.status = status; + if (createdAt != null) result.createdAt = createdAt; + if (startedAt != null) result.startedAt = startedAt; + if (finishedAt != null) result.finishedAt = finishedAt; + if (error != null) result.error = error; + if (metadata != null) result.metadata.addEntries(metadata); + return result; + } + + Job._(); + + factory Job.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory Job.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'Job', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'jobId') + ..aOS(2, _omitFieldNames ? '' : 'runId') + ..aOS(3, _omitFieldNames ? '' : 'nodeId') + ..aOS(4, _omitFieldNames ? '' : 'adapter') + ..aOS(5, _omitFieldNames ? '' : 'target') + ..aE(6, _omitFieldNames ? '' : 'status', + enumValues: JobStatus.values) + ..aInt64(7, _omitFieldNames ? '' : 'createdAt') + ..aInt64(8, _omitFieldNames ? '' : 'startedAt') + ..aInt64(9, _omitFieldNames ? '' : 'finishedAt') + ..aOS(10, _omitFieldNames ? '' : 'error') + ..m<$core.String, $core.String>(11, _omitFieldNames ? '' : 'metadata', + entryClassName: 'Job.MetadataEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + Job clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + Job copyWith(void Function(Job) updates) => + super.copyWith((message) => updates(message as Job)) as Job; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Job create() => Job._(); + @$core.override + Job createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static Job getDefault() => + _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Job? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get jobId => $_getSZ(0); + @$pb.TagNumber(1) + set jobId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasJobId() => $_has(0); + @$pb.TagNumber(1) + void clearJobId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get runId => $_getSZ(1); + @$pb.TagNumber(2) + set runId($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasRunId() => $_has(1); + @$pb.TagNumber(2) + void clearRunId() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get nodeId => $_getSZ(2); + @$pb.TagNumber(3) + set nodeId($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasNodeId() => $_has(2); + @$pb.TagNumber(3) + void clearNodeId() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get adapter => $_getSZ(3); + @$pb.TagNumber(4) + set adapter($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasAdapter() => $_has(3); + @$pb.TagNumber(4) + void clearAdapter() => $_clearField(4); + + @$pb.TagNumber(5) + $core.String get target => $_getSZ(4); + @$pb.TagNumber(5) + set target($core.String value) => $_setString(4, value); + @$pb.TagNumber(5) + $core.bool hasTarget() => $_has(4); + @$pb.TagNumber(5) + void clearTarget() => $_clearField(5); + + @$pb.TagNumber(6) + JobStatus get status => $_getN(5); + @$pb.TagNumber(6) + set status(JobStatus value) => $_setField(6, value); + @$pb.TagNumber(6) + $core.bool hasStatus() => $_has(5); + @$pb.TagNumber(6) + void clearStatus() => $_clearField(6); + + @$pb.TagNumber(7) + $fixnum.Int64 get createdAt => $_getI64(6); + @$pb.TagNumber(7) + set createdAt($fixnum.Int64 value) => $_setInt64(6, value); + @$pb.TagNumber(7) + $core.bool hasCreatedAt() => $_has(6); + @$pb.TagNumber(7) + void clearCreatedAt() => $_clearField(7); + + @$pb.TagNumber(8) + $fixnum.Int64 get startedAt => $_getI64(7); + @$pb.TagNumber(8) + set startedAt($fixnum.Int64 value) => $_setInt64(7, value); + @$pb.TagNumber(8) + $core.bool hasStartedAt() => $_has(7); + @$pb.TagNumber(8) + void clearStartedAt() => $_clearField(8); + + @$pb.TagNumber(9) + $fixnum.Int64 get finishedAt => $_getI64(8); + @$pb.TagNumber(9) + set finishedAt($fixnum.Int64 value) => $_setInt64(8, value); + @$pb.TagNumber(9) + $core.bool hasFinishedAt() => $_has(8); + @$pb.TagNumber(9) + void clearFinishedAt() => $_clearField(9); + + @$pb.TagNumber(10) + $core.String get error => $_getSZ(9); + @$pb.TagNumber(10) + set error($core.String value) => $_setString(9, value); + @$pb.TagNumber(10) + $core.bool hasError() => $_has(9); + @$pb.TagNumber(10) + void clearError() => $_clearField(10); + + @$pb.TagNumber(11) + $pb.PbMap<$core.String, $core.String> get metadata => $_getMap(10); +} + +class JobListRequest extends $pb.GeneratedMessage { + factory JobListRequest({ + JobStatus? statusFilter, + $core.int? limit, + $core.String? cursor, + }) { + final result = create(); + if (statusFilter != null) result.statusFilter = statusFilter; + if (limit != null) result.limit = limit; + if (cursor != null) result.cursor = cursor; + return result; + } + + JobListRequest._(); + + factory JobListRequest.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory JobListRequest.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'JobListRequest', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aE(1, _omitFieldNames ? '' : 'statusFilter', + enumValues: JobStatus.values) + ..aI(2, _omitFieldNames ? '' : 'limit') + ..aOS(3, _omitFieldNames ? '' : 'cursor') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + JobListRequest clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + JobListRequest copyWith(void Function(JobListRequest) updates) => + super.copyWith((message) => updates(message as JobListRequest)) + as JobListRequest; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static JobListRequest create() => JobListRequest._(); + @$core.override + JobListRequest createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static JobListRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static JobListRequest? _defaultInstance; + + @$pb.TagNumber(1) + JobStatus get statusFilter => $_getN(0); + @$pb.TagNumber(1) + set statusFilter(JobStatus value) => $_setField(1, value); + @$pb.TagNumber(1) + $core.bool hasStatusFilter() => $_has(0); + @$pb.TagNumber(1) + void clearStatusFilter() => $_clearField(1); + + @$pb.TagNumber(2) + $core.int get limit => $_getIZ(1); + @$pb.TagNumber(2) + set limit($core.int value) => $_setSignedInt32(1, value); + @$pb.TagNumber(2) + $core.bool hasLimit() => $_has(1); + @$pb.TagNumber(2) + void clearLimit() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get cursor => $_getSZ(2); + @$pb.TagNumber(3) + set cursor($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasCursor() => $_has(2); + @$pb.TagNumber(3) + void clearCursor() => $_clearField(3); +} + +class JobListResponse extends $pb.GeneratedMessage { + factory JobListResponse({ + $core.Iterable? jobs, + $core.String? next, + }) { + final result = create(); + if (jobs != null) result.jobs.addAll(jobs); + if (next != null) result.next = next; + return result; + } + + JobListResponse._(); + + factory JobListResponse.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory JobListResponse.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'JobListResponse', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..pPM(1, _omitFieldNames ? '' : 'jobs', subBuilder: Job.create) + ..aOS(2, _omitFieldNames ? '' : 'next') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + JobListResponse clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + JobListResponse copyWith(void Function(JobListResponse) updates) => + super.copyWith((message) => updates(message as JobListResponse)) + as JobListResponse; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static JobListResponse create() => JobListResponse._(); + @$core.override + JobListResponse createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static JobListResponse getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static JobListResponse? _defaultInstance; + + @$pb.TagNumber(1) + $pb.PbList get jobs => $_getList(0); + + @$pb.TagNumber(2) + $core.String get next => $_getSZ(1); + @$pb.TagNumber(2) + set next($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasNext() => $_has(1); + @$pb.TagNumber(2) + void clearNext() => $_clearField(2); +} + +const $core.bool _omitFieldNames = + $core.bool.fromEnvironment('protobuf.omit_field_names'); +const $core.bool _omitMessageNames = + $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/apps/client/lib/gen/proto/iop/job.pbenum.dart b/apps/client/lib/gen/proto/iop/job.pbenum.dart new file mode 100644 index 0000000..a11e2be --- /dev/null +++ b/apps/client/lib/gen/proto/iop/job.pbenum.dart @@ -0,0 +1,49 @@ +// This is a generated file - do not edit. +// +// Generated from proto/iop/job.proto. + +// @dart = 3.3 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class JobStatus extends $pb.ProtobufEnum { + static const JobStatus JOB_STATUS_UNSPECIFIED = + JobStatus._(0, _omitEnumNames ? '' : 'JOB_STATUS_UNSPECIFIED'); + static const JobStatus JOB_STATUS_PENDING = + JobStatus._(1, _omitEnumNames ? '' : 'JOB_STATUS_PENDING'); + static const JobStatus JOB_STATUS_RUNNING = + JobStatus._(2, _omitEnumNames ? '' : 'JOB_STATUS_RUNNING'); + static const JobStatus JOB_STATUS_COMPLETED = + JobStatus._(3, _omitEnumNames ? '' : 'JOB_STATUS_COMPLETED'); + static const JobStatus JOB_STATUS_FAILED = + JobStatus._(4, _omitEnumNames ? '' : 'JOB_STATUS_FAILED'); + static const JobStatus JOB_STATUS_CANCELLED = + JobStatus._(5, _omitEnumNames ? '' : 'JOB_STATUS_CANCELLED'); + + static const $core.List values = [ + JOB_STATUS_UNSPECIFIED, + JOB_STATUS_PENDING, + JOB_STATUS_RUNNING, + JOB_STATUS_COMPLETED, + JOB_STATUS_FAILED, + JOB_STATUS_CANCELLED, + ]; + + static final $core.List _byValue = + $pb.ProtobufEnum.$_initByValueList(values, 5); + static JobStatus? valueOf($core.int value) => + value < 0 || value >= _byValue.length ? null : _byValue[value]; + + const JobStatus._(super.value, super.name); +} + +const $core.bool _omitEnumNames = + $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/apps/portal/lib/gen/proto/iop/job.pbjson.dart b/apps/client/lib/gen/proto/iop/job.pbjson.dart similarity index 82% rename from apps/portal/lib/gen/proto/iop/job.pbjson.dart rename to apps/client/lib/gen/proto/iop/job.pbjson.dart index a939007..3adbd8e 100644 --- a/apps/portal/lib/gen/proto/iop/job.pbjson.dart +++ b/apps/client/lib/gen/proto/iop/job.pbjson.dart @@ -1,13 +1,15 @@ +// This is a generated file - do not edit. // -// Generated code. Do not modify. -// source: proto/iop/job.proto -// -// @dart = 2.12 +// Generated from proto/iop/job.proto. + +// @dart = 3.3 // ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports +// ignore_for_file: unused_import import 'dart:convert' as $convert; import 'dart:core' as $core; @@ -41,12 +43,26 @@ const Job$json = { {'1': 'node_id', '3': 3, '4': 1, '5': 9, '10': 'nodeId'}, {'1': 'adapter', '3': 4, '4': 1, '5': 9, '10': 'adapter'}, {'1': 'target', '3': 5, '4': 1, '5': 9, '10': 'target'}, - {'1': 'status', '3': 6, '4': 1, '5': 14, '6': '.iop.JobStatus', '10': 'status'}, + { + '1': 'status', + '3': 6, + '4': 1, + '5': 14, + '6': '.iop.JobStatus', + '10': 'status' + }, {'1': 'created_at', '3': 7, '4': 1, '5': 3, '10': 'createdAt'}, {'1': 'started_at', '3': 8, '4': 1, '5': 3, '10': 'startedAt'}, {'1': 'finished_at', '3': 9, '4': 1, '5': 3, '10': 'finishedAt'}, {'1': 'error', '3': 10, '4': 1, '5': 9, '10': 'error'}, - {'1': 'metadata', '3': 11, '4': 3, '5': 11, '6': '.iop.Job.MetadataEntry', '10': 'metadata'}, + { + '1': 'metadata', + '3': 11, + '4': 3, + '5': 11, + '6': '.iop.Job.MetadataEntry', + '10': 'metadata' + }, ], '3': [Job_MetadataEntry$json], }; @@ -76,7 +92,14 @@ final $typed_data.Uint8List jobDescriptor = $convert.base64Decode( const JobListRequest$json = { '1': 'JobListRequest', '2': [ - {'1': 'status_filter', '3': 1, '4': 1, '5': 14, '6': '.iop.JobStatus', '10': 'statusFilter'}, + { + '1': 'status_filter', + '3': 1, + '4': 1, + '5': 14, + '6': '.iop.JobStatus', + '10': 'statusFilter' + }, {'1': 'limit', '3': 2, '4': 1, '5': 5, '10': 'limit'}, {'1': 'cursor', '3': 3, '4': 1, '5': 9, '10': 'cursor'}, ], @@ -101,4 +124,3 @@ const JobListResponse$json = { final $typed_data.Uint8List jobListResponseDescriptor = $convert.base64Decode( 'Cg9Kb2JMaXN0UmVzcG9uc2USHAoEam9icxgBIAMoCzIILmlvcC5Kb2JSBGpvYnMSEgoEbmV4dB' 'gCIAEoCVIEbmV4dA=='); - diff --git a/apps/portal/lib/gen/proto/iop/job.pbserver.dart b/apps/client/lib/gen/proto/iop/job.pbserver.dart similarity index 99% rename from apps/portal/lib/gen/proto/iop/job.pbserver.dart rename to apps/client/lib/gen/proto/iop/job.pbserver.dart index 262ed48..8f298a1 100644 --- a/apps/portal/lib/gen/proto/iop/job.pbserver.dart +++ b/apps/client/lib/gen/proto/iop/job.pbserver.dart @@ -11,4 +11,3 @@ // ignore_for_file: unnecessary_import, unnecessary_this, unused_import export 'job.pb.dart'; - diff --git a/apps/client/lib/gen/proto/iop/node.pb.dart b/apps/client/lib/gen/proto/iop/node.pb.dart new file mode 100644 index 0000000..c30762f --- /dev/null +++ b/apps/client/lib/gen/proto/iop/node.pb.dart @@ -0,0 +1,280 @@ +// This is a generated file - do not edit. +// +// Generated from proto/iop/node.proto. + +// @dart = 3.3 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'node.pbenum.dart'; + +export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions; + +export 'node.pbenum.dart'; + +/// NodeInfo is a legacy placeholder for node snapshots. +/// Current Edge-Node registration uses RegisterRequest/RegisterResponse in +/// runtime.proto, and Control Plane should observe nodes through Edge. +class NodeInfo extends $pb.GeneratedMessage { + factory NodeInfo({ + $core.String? nodeId, + $core.String? name, + $core.String? address, + $core.String? version, + NodeStatus? status, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? labels, + }) { + final result = create(); + if (nodeId != null) result.nodeId = nodeId; + if (name != null) result.name = name; + if (address != null) result.address = address; + if (version != null) result.version = version; + if (status != null) result.status = status; + if (labels != null) result.labels.addEntries(labels); + return result; + } + + NodeInfo._(); + + factory NodeInfo.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory NodeInfo.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'NodeInfo', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'nodeId') + ..aOS(2, _omitFieldNames ? '' : 'name') + ..aOS(3, _omitFieldNames ? '' : 'address') + ..aOS(4, _omitFieldNames ? '' : 'version') + ..aE(5, _omitFieldNames ? '' : 'status', + enumValues: NodeStatus.values) + ..m<$core.String, $core.String>(6, _omitFieldNames ? '' : 'labels', + entryClassName: 'NodeInfo.LabelsEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeInfo clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeInfo copyWith(void Function(NodeInfo) updates) => + super.copyWith((message) => updates(message as NodeInfo)) as NodeInfo; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static NodeInfo create() => NodeInfo._(); + @$core.override + NodeInfo createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static NodeInfo getDefault() => + _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static NodeInfo? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get nodeId => $_getSZ(0); + @$pb.TagNumber(1) + set nodeId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasNodeId() => $_has(0); + @$pb.TagNumber(1) + void clearNodeId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get name => $_getSZ(1); + @$pb.TagNumber(2) + set name($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasName() => $_has(1); + @$pb.TagNumber(2) + void clearName() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get address => $_getSZ(2); + @$pb.TagNumber(3) + set address($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasAddress() => $_has(2); + @$pb.TagNumber(3) + void clearAddress() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get version => $_getSZ(3); + @$pb.TagNumber(4) + set version($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasVersion() => $_has(3); + @$pb.TagNumber(4) + void clearVersion() => $_clearField(4); + + @$pb.TagNumber(5) + NodeStatus get status => $_getN(4); + @$pb.TagNumber(5) + set status(NodeStatus value) => $_setField(5, value); + @$pb.TagNumber(5) + $core.bool hasStatus() => $_has(4); + @$pb.TagNumber(5) + void clearStatus() => $_clearField(5); + + @$pb.TagNumber(6) + $pb.PbMap<$core.String, $core.String> get labels => $_getMap(5); +} + +/// NodeRegisterRequest is a legacy placeholder and is not the active startup +/// contract. Nodes connect to Edge, not directly to Control Plane. +class NodeRegisterRequest extends $pb.GeneratedMessage { + factory NodeRegisterRequest({ + NodeInfo? info, + }) { + final result = create(); + if (info != null) result.info = info; + return result; + } + + NodeRegisterRequest._(); + + factory NodeRegisterRequest.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory NodeRegisterRequest.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'NodeRegisterRequest', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'info', + subBuilder: NodeInfo.create) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeRegisterRequest clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeRegisterRequest copyWith(void Function(NodeRegisterRequest) updates) => + super.copyWith((message) => updates(message as NodeRegisterRequest)) + as NodeRegisterRequest; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static NodeRegisterRequest create() => NodeRegisterRequest._(); + @$core.override + NodeRegisterRequest createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static NodeRegisterRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static NodeRegisterRequest? _defaultInstance; + + @$pb.TagNumber(1) + NodeInfo get info => $_getN(0); + @$pb.TagNumber(1) + set info(NodeInfo value) => $_setField(1, value); + @$pb.TagNumber(1) + $core.bool hasInfo() => $_has(0); + @$pb.TagNumber(1) + void clearInfo() => $_clearField(1); + @$pb.TagNumber(1) + NodeInfo ensureInfo() => $_ensure(0); +} + +/// NodeRegisterResponse is a legacy placeholder retained until the +/// Control Plane contracts are redesigned around Edge. +class NodeRegisterResponse extends $pb.GeneratedMessage { + factory NodeRegisterResponse({ + $core.bool? accepted, + $core.String? token, + $core.String? reason, + }) { + final result = create(); + if (accepted != null) result.accepted = accepted; + if (token != null) result.token = token; + if (reason != null) result.reason = reason; + return result; + } + + NodeRegisterResponse._(); + + factory NodeRegisterResponse.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory NodeRegisterResponse.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'NodeRegisterResponse', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOB(1, _omitFieldNames ? '' : 'accepted') + ..aOS(2, _omitFieldNames ? '' : 'token') + ..aOS(3, _omitFieldNames ? '' : 'reason') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeRegisterResponse clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeRegisterResponse copyWith(void Function(NodeRegisterResponse) updates) => + super.copyWith((message) => updates(message as NodeRegisterResponse)) + as NodeRegisterResponse; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static NodeRegisterResponse create() => NodeRegisterResponse._(); + @$core.override + NodeRegisterResponse createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static NodeRegisterResponse getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static NodeRegisterResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.bool get accepted => $_getBF(0); + @$pb.TagNumber(1) + set accepted($core.bool value) => $_setBool(0, value); + @$pb.TagNumber(1) + $core.bool hasAccepted() => $_has(0); + @$pb.TagNumber(1) + void clearAccepted() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get token => $_getSZ(1); + @$pb.TagNumber(2) + set token($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasToken() => $_has(1); + @$pb.TagNumber(2) + void clearToken() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get reason => $_getSZ(2); + @$pb.TagNumber(3) + set reason($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasReason() => $_has(2); + @$pb.TagNumber(3) + void clearReason() => $_clearField(3); +} + +const $core.bool _omitFieldNames = + $core.bool.fromEnvironment('protobuf.omit_field_names'); +const $core.bool _omitMessageNames = + $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/apps/client/lib/gen/proto/iop/node.pbenum.dart b/apps/client/lib/gen/proto/iop/node.pbenum.dart new file mode 100644 index 0000000..46d9167 --- /dev/null +++ b/apps/client/lib/gen/proto/iop/node.pbenum.dart @@ -0,0 +1,43 @@ +// This is a generated file - do not edit. +// +// Generated from proto/iop/node.proto. + +// @dart = 3.3 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class NodeStatus extends $pb.ProtobufEnum { + static const NodeStatus NODE_STATUS_UNSPECIFIED = + NodeStatus._(0, _omitEnumNames ? '' : 'NODE_STATUS_UNSPECIFIED'); + static const NodeStatus NODE_STATUS_ONLINE = + NodeStatus._(1, _omitEnumNames ? '' : 'NODE_STATUS_ONLINE'); + static const NodeStatus NODE_STATUS_OFFLINE = + NodeStatus._(2, _omitEnumNames ? '' : 'NODE_STATUS_OFFLINE'); + static const NodeStatus NODE_STATUS_DRAINING = + NodeStatus._(3, _omitEnumNames ? '' : 'NODE_STATUS_DRAINING'); + + static const $core.List values = [ + NODE_STATUS_UNSPECIFIED, + NODE_STATUS_ONLINE, + NODE_STATUS_OFFLINE, + NODE_STATUS_DRAINING, + ]; + + static final $core.List _byValue = + $pb.ProtobufEnum.$_initByValueList(values, 3); + static NodeStatus? valueOf($core.int value) => + value < 0 || value >= _byValue.length ? null : _byValue[value]; + + const NodeStatus._(super.value, super.name); +} + +const $core.bool _omitEnumNames = + $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/apps/portal/lib/gen/proto/iop/node.pbjson.dart b/apps/client/lib/gen/proto/iop/node.pbjson.dart similarity index 82% rename from apps/portal/lib/gen/proto/iop/node.pbjson.dart rename to apps/client/lib/gen/proto/iop/node.pbjson.dart index ff76212..17e4703 100644 --- a/apps/portal/lib/gen/proto/iop/node.pbjson.dart +++ b/apps/client/lib/gen/proto/iop/node.pbjson.dart @@ -1,13 +1,15 @@ +// This is a generated file - do not edit. // -// Generated code. Do not modify. -// source: proto/iop/node.proto -// -// @dart = 2.12 +// Generated from proto/iop/node.proto. + +// @dart = 3.3 // ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports +// ignore_for_file: unused_import import 'dart:convert' as $convert; import 'dart:core' as $core; @@ -38,8 +40,22 @@ const NodeInfo$json = { {'1': 'name', '3': 2, '4': 1, '5': 9, '10': 'name'}, {'1': 'address', '3': 3, '4': 1, '5': 9, '10': 'address'}, {'1': 'version', '3': 4, '4': 1, '5': 9, '10': 'version'}, - {'1': 'status', '3': 5, '4': 1, '5': 14, '6': '.iop.NodeStatus', '10': 'status'}, - {'1': 'labels', '3': 6, '4': 3, '5': 11, '6': '.iop.NodeInfo.LabelsEntry', '10': 'labels'}, + { + '1': 'status', + '3': 5, + '4': 1, + '5': 14, + '6': '.iop.NodeStatus', + '10': 'status' + }, + { + '1': 'labels', + '3': 6, + '4': 3, + '5': 11, + '6': '.iop.NodeInfo.LabelsEntry', + '10': 'labels' + }, ], '3': [NodeInfo_LabelsEntry$json], }; @@ -89,4 +105,3 @@ const NodeRegisterResponse$json = { final $typed_data.Uint8List nodeRegisterResponseDescriptor = $convert.base64Decode( 'ChROb2RlUmVnaXN0ZXJSZXNwb25zZRIaCghhY2NlcHRlZBgBIAEoCFIIYWNjZXB0ZWQSFAoFdG' '9rZW4YAiABKAlSBXRva2VuEhYKBnJlYXNvbhgDIAEoCVIGcmVhc29u'); - diff --git a/apps/portal/lib/gen/proto/iop/node.pbserver.dart b/apps/client/lib/gen/proto/iop/node.pbserver.dart similarity index 99% rename from apps/portal/lib/gen/proto/iop/node.pbserver.dart rename to apps/client/lib/gen/proto/iop/node.pbserver.dart index 94c8a31..63a5350 100644 --- a/apps/portal/lib/gen/proto/iop/node.pbserver.dart +++ b/apps/client/lib/gen/proto/iop/node.pbserver.dart @@ -11,4 +11,3 @@ // ignore_for_file: unnecessary_import, unnecessary_this, unused_import export 'node.pb.dart'; - diff --git a/apps/client/lib/gen/proto/iop/runtime.pb.dart b/apps/client/lib/gen/proto/iop/runtime.pb.dart new file mode 100644 index 0000000..fb5730e --- /dev/null +++ b/apps/client/lib/gen/proto/iop/runtime.pb.dart @@ -0,0 +1,2041 @@ +// This is a generated file - do not edit. +// +// Generated from proto/iop/runtime.proto. + +// @dart = 3.3 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; +import 'package:protobuf/well_known_types/google/protobuf/struct.pb.dart' as $0; + +import 'runtime.pbenum.dart'; + +export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions; + +export 'runtime.pbenum.dart'; + +/// RunRequest initiates an adapter execution on a node. +class RunRequest extends $pb.GeneratedMessage { + factory RunRequest({ + $core.String? runId, + $core.String? adapter, + $core.String? target, + $core.String? workspace, + $0.Struct? policy, + $0.Struct? input, + $core.int? timeoutSec, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? metadata, + $core.String? sessionId, + RunSessionMode? sessionMode, + $core.bool? background, + }) { + final result = create(); + if (runId != null) result.runId = runId; + if (adapter != null) result.adapter = adapter; + if (target != null) result.target = target; + if (workspace != null) result.workspace = workspace; + if (policy != null) result.policy = policy; + if (input != null) result.input = input; + if (timeoutSec != null) result.timeoutSec = timeoutSec; + if (metadata != null) result.metadata.addEntries(metadata); + if (sessionId != null) result.sessionId = sessionId; + if (sessionMode != null) result.sessionMode = sessionMode; + if (background != null) result.background = background; + return result; + } + + RunRequest._(); + + factory RunRequest.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory RunRequest.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'RunRequest', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'runId') + ..aOS(2, _omitFieldNames ? '' : 'adapter') + ..aOS(3, _omitFieldNames ? '' : 'target') + ..aOS(4, _omitFieldNames ? '' : 'workspace') + ..aOM<$0.Struct>(5, _omitFieldNames ? '' : 'policy', + subBuilder: $0.Struct.create) + ..aOM<$0.Struct>(6, _omitFieldNames ? '' : 'input', + subBuilder: $0.Struct.create) + ..aI(7, _omitFieldNames ? '' : 'timeoutSec') + ..m<$core.String, $core.String>(8, _omitFieldNames ? '' : 'metadata', + entryClassName: 'RunRequest.MetadataEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..aOS(9, _omitFieldNames ? '' : 'sessionId') + ..aE(10, _omitFieldNames ? '' : 'sessionMode', + enumValues: RunSessionMode.values) + ..aOB(11, _omitFieldNames ? '' : 'background') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + RunRequest clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + RunRequest copyWith(void Function(RunRequest) updates) => + super.copyWith((message) => updates(message as RunRequest)) as RunRequest; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static RunRequest create() => RunRequest._(); + @$core.override + RunRequest createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static RunRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static RunRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get runId => $_getSZ(0); + @$pb.TagNumber(1) + set runId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasRunId() => $_has(0); + @$pb.TagNumber(1) + void clearRunId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get adapter => $_getSZ(1); + @$pb.TagNumber(2) + set adapter($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasAdapter() => $_has(1); + @$pb.TagNumber(2) + void clearAdapter() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get target => $_getSZ(2); + @$pb.TagNumber(3) + set target($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasTarget() => $_has(2); + @$pb.TagNumber(3) + void clearTarget() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get workspace => $_getSZ(3); + @$pb.TagNumber(4) + set workspace($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasWorkspace() => $_has(3); + @$pb.TagNumber(4) + void clearWorkspace() => $_clearField(4); + + @$pb.TagNumber(5) + $0.Struct get policy => $_getN(4); + @$pb.TagNumber(5) + set policy($0.Struct value) => $_setField(5, value); + @$pb.TagNumber(5) + $core.bool hasPolicy() => $_has(4); + @$pb.TagNumber(5) + void clearPolicy() => $_clearField(5); + @$pb.TagNumber(5) + $0.Struct ensurePolicy() => $_ensure(4); + + @$pb.TagNumber(6) + $0.Struct get input => $_getN(5); + @$pb.TagNumber(6) + set input($0.Struct value) => $_setField(6, value); + @$pb.TagNumber(6) + $core.bool hasInput() => $_has(5); + @$pb.TagNumber(6) + void clearInput() => $_clearField(6); + @$pb.TagNumber(6) + $0.Struct ensureInput() => $_ensure(5); + + @$pb.TagNumber(7) + $core.int get timeoutSec => $_getIZ(6); + @$pb.TagNumber(7) + set timeoutSec($core.int value) => $_setSignedInt32(6, value); + @$pb.TagNumber(7) + $core.bool hasTimeoutSec() => $_has(6); + @$pb.TagNumber(7) + void clearTimeoutSec() => $_clearField(7); + + @$pb.TagNumber(8) + $pb.PbMap<$core.String, $core.String> get metadata => $_getMap(7); + + @$pb.TagNumber(9) + $core.String get sessionId => $_getSZ(8); + @$pb.TagNumber(9) + set sessionId($core.String value) => $_setString(8, value); + @$pb.TagNumber(9) + $core.bool hasSessionId() => $_has(8); + @$pb.TagNumber(9) + void clearSessionId() => $_clearField(9); + + @$pb.TagNumber(10) + RunSessionMode get sessionMode => $_getN(9); + @$pb.TagNumber(10) + set sessionMode(RunSessionMode value) => $_setField(10, value); + @$pb.TagNumber(10) + $core.bool hasSessionMode() => $_has(9); + @$pb.TagNumber(10) + void clearSessionMode() => $_clearField(10); + + @$pb.TagNumber(11) + $core.bool get background => $_getBF(10); + @$pb.TagNumber(11) + set background($core.bool value) => $_setBool(10, value); + @$pb.TagNumber(11) + $core.bool hasBackground() => $_has(10); + @$pb.TagNumber(11) + void clearBackground() => $_clearField(11); +} + +/// RunEvent is a streaming execution event. +class RunEvent extends $pb.GeneratedMessage { + factory RunEvent({ + $core.String? runId, + $core.String? type, + $core.String? delta, + $core.String? message, + $core.String? error, + Usage? usage, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? metadata, + $fixnum.Int64? timestamp, + $core.String? sessionId, + $core.bool? background, + $core.String? nodeId, + $core.String? nodeAlias, + }) { + final result = create(); + if (runId != null) result.runId = runId; + if (type != null) result.type = type; + if (delta != null) result.delta = delta; + if (message != null) result.message = message; + if (error != null) result.error = error; + if (usage != null) result.usage = usage; + if (metadata != null) result.metadata.addEntries(metadata); + if (timestamp != null) result.timestamp = timestamp; + if (sessionId != null) result.sessionId = sessionId; + if (background != null) result.background = background; + if (nodeId != null) result.nodeId = nodeId; + if (nodeAlias != null) result.nodeAlias = nodeAlias; + return result; + } + + RunEvent._(); + + factory RunEvent.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory RunEvent.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'RunEvent', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'runId') + ..aOS(2, _omitFieldNames ? '' : 'type') + ..aOS(3, _omitFieldNames ? '' : 'delta') + ..aOS(4, _omitFieldNames ? '' : 'message') + ..aOS(5, _omitFieldNames ? '' : 'error') + ..aOM(6, _omitFieldNames ? '' : 'usage', subBuilder: Usage.create) + ..m<$core.String, $core.String>(7, _omitFieldNames ? '' : 'metadata', + entryClassName: 'RunEvent.MetadataEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..aInt64(8, _omitFieldNames ? '' : 'timestamp') + ..aOS(9, _omitFieldNames ? '' : 'sessionId') + ..aOB(10, _omitFieldNames ? '' : 'background') + ..aOS(11, _omitFieldNames ? '' : 'nodeId') + ..aOS(12, _omitFieldNames ? '' : 'nodeAlias') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + RunEvent clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + RunEvent copyWith(void Function(RunEvent) updates) => + super.copyWith((message) => updates(message as RunEvent)) as RunEvent; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static RunEvent create() => RunEvent._(); + @$core.override + RunEvent createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static RunEvent getDefault() => + _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static RunEvent? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get runId => $_getSZ(0); + @$pb.TagNumber(1) + set runId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasRunId() => $_has(0); + @$pb.TagNumber(1) + void clearRunId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get type => $_getSZ(1); + @$pb.TagNumber(2) + set type($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasType() => $_has(1); + @$pb.TagNumber(2) + void clearType() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get delta => $_getSZ(2); + @$pb.TagNumber(3) + set delta($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasDelta() => $_has(2); + @$pb.TagNumber(3) + void clearDelta() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get message => $_getSZ(3); + @$pb.TagNumber(4) + set message($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasMessage() => $_has(3); + @$pb.TagNumber(4) + void clearMessage() => $_clearField(4); + + @$pb.TagNumber(5) + $core.String get error => $_getSZ(4); + @$pb.TagNumber(5) + set error($core.String value) => $_setString(4, value); + @$pb.TagNumber(5) + $core.bool hasError() => $_has(4); + @$pb.TagNumber(5) + void clearError() => $_clearField(5); + + @$pb.TagNumber(6) + Usage get usage => $_getN(5); + @$pb.TagNumber(6) + set usage(Usage value) => $_setField(6, value); + @$pb.TagNumber(6) + $core.bool hasUsage() => $_has(5); + @$pb.TagNumber(6) + void clearUsage() => $_clearField(6); + @$pb.TagNumber(6) + Usage ensureUsage() => $_ensure(5); + + @$pb.TagNumber(7) + $pb.PbMap<$core.String, $core.String> get metadata => $_getMap(6); + + @$pb.TagNumber(8) + $fixnum.Int64 get timestamp => $_getI64(7); + @$pb.TagNumber(8) + set timestamp($fixnum.Int64 value) => $_setInt64(7, value); + @$pb.TagNumber(8) + $core.bool hasTimestamp() => $_has(7); + @$pb.TagNumber(8) + void clearTimestamp() => $_clearField(8); + + @$pb.TagNumber(9) + $core.String get sessionId => $_getSZ(8); + @$pb.TagNumber(9) + set sessionId($core.String value) => $_setString(8, value); + @$pb.TagNumber(9) + $core.bool hasSessionId() => $_has(8); + @$pb.TagNumber(9) + void clearSessionId() => $_clearField(9); + + @$pb.TagNumber(10) + $core.bool get background => $_getBF(9); + @$pb.TagNumber(10) + set background($core.bool value) => $_setBool(9, value); + @$pb.TagNumber(10) + $core.bool hasBackground() => $_has(9); + @$pb.TagNumber(10) + void clearBackground() => $_clearField(10); + + @$pb.TagNumber(11) + $core.String get nodeId => $_getSZ(10); + @$pb.TagNumber(11) + set nodeId($core.String value) => $_setString(10, value); + @$pb.TagNumber(11) + $core.bool hasNodeId() => $_has(10); + @$pb.TagNumber(11) + void clearNodeId() => $_clearField(11); + + @$pb.TagNumber(12) + $core.String get nodeAlias => $_getSZ(11); + @$pb.TagNumber(12) + set nodeAlias($core.String value) => $_setString(11, value); + @$pb.TagNumber(12) + $core.bool hasNodeAlias() => $_has(11); + @$pb.TagNumber(12) + void clearNodeAlias() => $_clearField(12); +} + +/// EdgeNodeEvent is a general edge-node lifecycle/control event envelope. +/// It is separate from RunEvent, which is reserved for adapter execution streams. +class EdgeNodeEvent extends $pb.GeneratedMessage { + factory EdgeNodeEvent({ + $core.String? eventId, + $core.String? type, + $core.String? source, + $core.String? nodeId, + $core.String? alias, + $core.String? reason, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? metadata, + $fixnum.Int64? timestamp, + }) { + final result = create(); + if (eventId != null) result.eventId = eventId; + if (type != null) result.type = type; + if (source != null) result.source = source; + if (nodeId != null) result.nodeId = nodeId; + if (alias != null) result.alias = alias; + if (reason != null) result.reason = reason; + if (metadata != null) result.metadata.addEntries(metadata); + if (timestamp != null) result.timestamp = timestamp; + return result; + } + + EdgeNodeEvent._(); + + factory EdgeNodeEvent.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory EdgeNodeEvent.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'EdgeNodeEvent', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'eventId') + ..aOS(2, _omitFieldNames ? '' : 'type') + ..aOS(3, _omitFieldNames ? '' : 'source') + ..aOS(4, _omitFieldNames ? '' : 'nodeId') + ..aOS(5, _omitFieldNames ? '' : 'alias') + ..aOS(6, _omitFieldNames ? '' : 'reason') + ..m<$core.String, $core.String>(7, _omitFieldNames ? '' : 'metadata', + entryClassName: 'EdgeNodeEvent.MetadataEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..aInt64(8, _omitFieldNames ? '' : 'timestamp') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + EdgeNodeEvent clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + EdgeNodeEvent copyWith(void Function(EdgeNodeEvent) updates) => + super.copyWith((message) => updates(message as EdgeNodeEvent)) + as EdgeNodeEvent; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EdgeNodeEvent create() => EdgeNodeEvent._(); + @$core.override + EdgeNodeEvent createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static EdgeNodeEvent getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static EdgeNodeEvent? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get eventId => $_getSZ(0); + @$pb.TagNumber(1) + set eventId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasEventId() => $_has(0); + @$pb.TagNumber(1) + void clearEventId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get type => $_getSZ(1); + @$pb.TagNumber(2) + set type($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasType() => $_has(1); + @$pb.TagNumber(2) + void clearType() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get source => $_getSZ(2); + @$pb.TagNumber(3) + set source($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasSource() => $_has(2); + @$pb.TagNumber(3) + void clearSource() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get nodeId => $_getSZ(3); + @$pb.TagNumber(4) + set nodeId($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasNodeId() => $_has(3); + @$pb.TagNumber(4) + void clearNodeId() => $_clearField(4); + + @$pb.TagNumber(5) + $core.String get alias => $_getSZ(4); + @$pb.TagNumber(5) + set alias($core.String value) => $_setString(4, value); + @$pb.TagNumber(5) + $core.bool hasAlias() => $_has(4); + @$pb.TagNumber(5) + void clearAlias() => $_clearField(5); + + @$pb.TagNumber(6) + $core.String get reason => $_getSZ(5); + @$pb.TagNumber(6) + set reason($core.String value) => $_setString(5, value); + @$pb.TagNumber(6) + $core.bool hasReason() => $_has(5); + @$pb.TagNumber(6) + void clearReason() => $_clearField(6); + + @$pb.TagNumber(7) + $pb.PbMap<$core.String, $core.String> get metadata => $_getMap(6); + + @$pb.TagNumber(8) + $fixnum.Int64 get timestamp => $_getI64(7); + @$pb.TagNumber(8) + set timestamp($fixnum.Int64 value) => $_setInt64(7, value); + @$pb.TagNumber(8) + $core.bool hasTimestamp() => $_has(7); + @$pb.TagNumber(8) + void clearTimestamp() => $_clearField(8); +} + +class Usage extends $pb.GeneratedMessage { + factory Usage({ + $core.int? inputTokens, + $core.int? outputTokens, + }) { + final result = create(); + if (inputTokens != null) result.inputTokens = inputTokens; + if (outputTokens != null) result.outputTokens = outputTokens; + return result; + } + + Usage._(); + + factory Usage.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory Usage.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'Usage', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aI(1, _omitFieldNames ? '' : 'inputTokens') + ..aI(2, _omitFieldNames ? '' : 'outputTokens') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + Usage clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + Usage copyWith(void Function(Usage) updates) => + super.copyWith((message) => updates(message as Usage)) as Usage; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Usage create() => Usage._(); + @$core.override + Usage createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static Usage getDefault() => + _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Usage? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get inputTokens => $_getIZ(0); + @$pb.TagNumber(1) + set inputTokens($core.int value) => $_setSignedInt32(0, value); + @$pb.TagNumber(1) + $core.bool hasInputTokens() => $_has(0); + @$pb.TagNumber(1) + void clearInputTokens() => $_clearField(1); + + @$pb.TagNumber(2) + $core.int get outputTokens => $_getIZ(1); + @$pb.TagNumber(2) + set outputTokens($core.int value) => $_setSignedInt32(1, value); + @$pb.TagNumber(2) + $core.bool hasOutputTokens() => $_has(1); + @$pb.TagNumber(2) + void clearOutputTokens() => $_clearField(2); +} + +/// Heartbeat is sent by both sides to keep the connection alive. +class Heartbeat extends $pb.GeneratedMessage { + factory Heartbeat({ + $fixnum.Int64? timestamp, + }) { + final result = create(); + if (timestamp != null) result.timestamp = timestamp; + return result; + } + + Heartbeat._(); + + factory Heartbeat.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory Heartbeat.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'Heartbeat', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aInt64(1, _omitFieldNames ? '' : 'timestamp') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + Heartbeat clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + Heartbeat copyWith(void Function(Heartbeat) updates) => + super.copyWith((message) => updates(message as Heartbeat)) as Heartbeat; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Heartbeat create() => Heartbeat._(); + @$core.override + Heartbeat createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static Heartbeat getDefault() => + _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Heartbeat? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get timestamp => $_getI64(0); + @$pb.TagNumber(1) + set timestamp($fixnum.Int64 value) => $_setInt64(0, value); + @$pb.TagNumber(1) + $core.bool hasTimestamp() => $_has(0); + @$pb.TagNumber(1) + void clearTimestamp() => $_clearField(1); +} + +/// CancelRequest asks the node to cancel a running execution. +class CancelRequest extends $pb.GeneratedMessage { + factory CancelRequest({ + $core.String? runId, + $core.String? adapter, + $core.String? target, + $core.String? sessionId, + CancelAction? action, + }) { + final result = create(); + if (runId != null) result.runId = runId; + if (adapter != null) result.adapter = adapter; + if (target != null) result.target = target; + if (sessionId != null) result.sessionId = sessionId; + if (action != null) result.action = action; + return result; + } + + CancelRequest._(); + + factory CancelRequest.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory CancelRequest.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'CancelRequest', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'runId') + ..aOS(2, _omitFieldNames ? '' : 'adapter') + ..aOS(3, _omitFieldNames ? '' : 'target') + ..aOS(4, _omitFieldNames ? '' : 'sessionId') + ..aE(5, _omitFieldNames ? '' : 'action', + enumValues: CancelAction.values) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + CancelRequest clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + CancelRequest copyWith(void Function(CancelRequest) updates) => + super.copyWith((message) => updates(message as CancelRequest)) + as CancelRequest; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CancelRequest create() => CancelRequest._(); + @$core.override + CancelRequest createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static CancelRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static CancelRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get runId => $_getSZ(0); + @$pb.TagNumber(1) + set runId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasRunId() => $_has(0); + @$pb.TagNumber(1) + void clearRunId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get adapter => $_getSZ(1); + @$pb.TagNumber(2) + set adapter($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasAdapter() => $_has(1); + @$pb.TagNumber(2) + void clearAdapter() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get target => $_getSZ(2); + @$pb.TagNumber(3) + set target($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasTarget() => $_has(2); + @$pb.TagNumber(3) + void clearTarget() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get sessionId => $_getSZ(3); + @$pb.TagNumber(4) + set sessionId($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasSessionId() => $_has(3); + @$pb.TagNumber(4) + void clearSessionId() => $_clearField(4); + + @$pb.TagNumber(5) + CancelAction get action => $_getN(4); + @$pb.TagNumber(5) + set action(CancelAction value) => $_setField(5, value); + @$pb.TagNumber(5) + $core.bool hasAction() => $_has(4); + @$pb.TagNumber(5) + void clearAction() => $_clearField(5); +} + +class NodeCommandRequest extends $pb.GeneratedMessage { + factory NodeCommandRequest({ + $core.String? requestId, + NodeCommandType? type, + $core.String? adapter, + $core.String? target, + $core.String? sessionId, + $core.int? timeoutSec, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? metadata, + }) { + final result = create(); + if (requestId != null) result.requestId = requestId; + if (type != null) result.type = type; + if (adapter != null) result.adapter = adapter; + if (target != null) result.target = target; + if (sessionId != null) result.sessionId = sessionId; + if (timeoutSec != null) result.timeoutSec = timeoutSec; + if (metadata != null) result.metadata.addEntries(metadata); + return result; + } + + NodeCommandRequest._(); + + factory NodeCommandRequest.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory NodeCommandRequest.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'NodeCommandRequest', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'requestId') + ..aE(2, _omitFieldNames ? '' : 'type', + enumValues: NodeCommandType.values) + ..aOS(3, _omitFieldNames ? '' : 'adapter') + ..aOS(4, _omitFieldNames ? '' : 'target') + ..aOS(5, _omitFieldNames ? '' : 'sessionId') + ..aI(6, _omitFieldNames ? '' : 'timeoutSec') + ..m<$core.String, $core.String>(7, _omitFieldNames ? '' : 'metadata', + entryClassName: 'NodeCommandRequest.MetadataEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeCommandRequest clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeCommandRequest copyWith(void Function(NodeCommandRequest) updates) => + super.copyWith((message) => updates(message as NodeCommandRequest)) + as NodeCommandRequest; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static NodeCommandRequest create() => NodeCommandRequest._(); + @$core.override + NodeCommandRequest createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static NodeCommandRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static NodeCommandRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get requestId => $_getSZ(0); + @$pb.TagNumber(1) + set requestId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasRequestId() => $_has(0); + @$pb.TagNumber(1) + void clearRequestId() => $_clearField(1); + + @$pb.TagNumber(2) + NodeCommandType get type => $_getN(1); + @$pb.TagNumber(2) + set type(NodeCommandType value) => $_setField(2, value); + @$pb.TagNumber(2) + $core.bool hasType() => $_has(1); + @$pb.TagNumber(2) + void clearType() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get adapter => $_getSZ(2); + @$pb.TagNumber(3) + set adapter($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasAdapter() => $_has(2); + @$pb.TagNumber(3) + void clearAdapter() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get target => $_getSZ(3); + @$pb.TagNumber(4) + set target($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasTarget() => $_has(3); + @$pb.TagNumber(4) + void clearTarget() => $_clearField(4); + + @$pb.TagNumber(5) + $core.String get sessionId => $_getSZ(4); + @$pb.TagNumber(5) + set sessionId($core.String value) => $_setString(4, value); + @$pb.TagNumber(5) + $core.bool hasSessionId() => $_has(4); + @$pb.TagNumber(5) + void clearSessionId() => $_clearField(5); + + @$pb.TagNumber(6) + $core.int get timeoutSec => $_getIZ(5); + @$pb.TagNumber(6) + set timeoutSec($core.int value) => $_setSignedInt32(5, value); + @$pb.TagNumber(6) + $core.bool hasTimeoutSec() => $_has(5); + @$pb.TagNumber(6) + void clearTimeoutSec() => $_clearField(6); + + @$pb.TagNumber(7) + $pb.PbMap<$core.String, $core.String> get metadata => $_getMap(6); +} + +class NodeCommandResponse extends $pb.GeneratedMessage { + factory NodeCommandResponse({ + $core.String? requestId, + NodeCommandType? type, + $core.String? adapter, + $core.String? target, + $core.String? sessionId, + AgentUsageStatus? usageStatus, + $core.String? error, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? result, + }) { + final result$ = create(); + if (requestId != null) result$.requestId = requestId; + if (type != null) result$.type = type; + if (adapter != null) result$.adapter = adapter; + if (target != null) result$.target = target; + if (sessionId != null) result$.sessionId = sessionId; + if (usageStatus != null) result$.usageStatus = usageStatus; + if (error != null) result$.error = error; + if (result != null) result$.result.addEntries(result); + return result$; + } + + NodeCommandResponse._(); + + factory NodeCommandResponse.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory NodeCommandResponse.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'NodeCommandResponse', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'requestId') + ..aE(2, _omitFieldNames ? '' : 'type', + enumValues: NodeCommandType.values) + ..aOS(3, _omitFieldNames ? '' : 'adapter') + ..aOS(4, _omitFieldNames ? '' : 'target') + ..aOS(5, _omitFieldNames ? '' : 'sessionId') + ..aOM(6, _omitFieldNames ? '' : 'usageStatus', + subBuilder: AgentUsageStatus.create) + ..aOS(7, _omitFieldNames ? '' : 'error') + ..m<$core.String, $core.String>(8, _omitFieldNames ? '' : 'result', + entryClassName: 'NodeCommandResponse.ResultEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeCommandResponse clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeCommandResponse copyWith(void Function(NodeCommandResponse) updates) => + super.copyWith((message) => updates(message as NodeCommandResponse)) + as NodeCommandResponse; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static NodeCommandResponse create() => NodeCommandResponse._(); + @$core.override + NodeCommandResponse createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static NodeCommandResponse getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static NodeCommandResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get requestId => $_getSZ(0); + @$pb.TagNumber(1) + set requestId($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasRequestId() => $_has(0); + @$pb.TagNumber(1) + void clearRequestId() => $_clearField(1); + + @$pb.TagNumber(2) + NodeCommandType get type => $_getN(1); + @$pb.TagNumber(2) + set type(NodeCommandType value) => $_setField(2, value); + @$pb.TagNumber(2) + $core.bool hasType() => $_has(1); + @$pb.TagNumber(2) + void clearType() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get adapter => $_getSZ(2); + @$pb.TagNumber(3) + set adapter($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasAdapter() => $_has(2); + @$pb.TagNumber(3) + void clearAdapter() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get target => $_getSZ(3); + @$pb.TagNumber(4) + set target($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasTarget() => $_has(3); + @$pb.TagNumber(4) + void clearTarget() => $_clearField(4); + + @$pb.TagNumber(5) + $core.String get sessionId => $_getSZ(4); + @$pb.TagNumber(5) + set sessionId($core.String value) => $_setString(4, value); + @$pb.TagNumber(5) + $core.bool hasSessionId() => $_has(4); + @$pb.TagNumber(5) + void clearSessionId() => $_clearField(5); + + @$pb.TagNumber(6) + AgentUsageStatus get usageStatus => $_getN(5); + @$pb.TagNumber(6) + set usageStatus(AgentUsageStatus value) => $_setField(6, value); + @$pb.TagNumber(6) + $core.bool hasUsageStatus() => $_has(5); + @$pb.TagNumber(6) + void clearUsageStatus() => $_clearField(6); + @$pb.TagNumber(6) + AgentUsageStatus ensureUsageStatus() => $_ensure(5); + + @$pb.TagNumber(7) + $core.String get error => $_getSZ(6); + @$pb.TagNumber(7) + set error($core.String value) => $_setString(6, value); + @$pb.TagNumber(7) + $core.bool hasError() => $_has(6); + @$pb.TagNumber(7) + void clearError() => $_clearField(7); + + /// result carries free-form key/value data for non-usage-status command types + /// (capabilities, session_list, transport_status). usage_status keeps its + /// dedicated typed payload. + @$pb.TagNumber(8) + $pb.PbMap<$core.String, $core.String> get result => $_getMap(7); +} + +class AgentUsageStatus extends $pb.GeneratedMessage { + factory AgentUsageStatus({ + $core.String? rawOutput, + $core.String? dailyLimit, + $core.String? dailyResetTime, + $core.String? weeklyLimit, + $core.String? weeklyResetTime, + $core.Iterable<$core.MapEntry<$core.String, $core.String>>? metadata, + }) { + final result = create(); + if (rawOutput != null) result.rawOutput = rawOutput; + if (dailyLimit != null) result.dailyLimit = dailyLimit; + if (dailyResetTime != null) result.dailyResetTime = dailyResetTime; + if (weeklyLimit != null) result.weeklyLimit = weeklyLimit; + if (weeklyResetTime != null) result.weeklyResetTime = weeklyResetTime; + if (metadata != null) result.metadata.addEntries(metadata); + return result; + } + + AgentUsageStatus._(); + + factory AgentUsageStatus.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory AgentUsageStatus.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'AgentUsageStatus', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'rawOutput') + ..aOS(2, _omitFieldNames ? '' : 'dailyLimit') + ..aOS(3, _omitFieldNames ? '' : 'dailyResetTime') + ..aOS(4, _omitFieldNames ? '' : 'weeklyLimit') + ..aOS(5, _omitFieldNames ? '' : 'weeklyResetTime') + ..m<$core.String, $core.String>(6, _omitFieldNames ? '' : 'metadata', + entryClassName: 'AgentUsageStatus.MetadataEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('iop')) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + AgentUsageStatus clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + AgentUsageStatus copyWith(void Function(AgentUsageStatus) updates) => + super.copyWith((message) => updates(message as AgentUsageStatus)) + as AgentUsageStatus; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static AgentUsageStatus create() => AgentUsageStatus._(); + @$core.override + AgentUsageStatus createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static AgentUsageStatus getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static AgentUsageStatus? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get rawOutput => $_getSZ(0); + @$pb.TagNumber(1) + set rawOutput($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasRawOutput() => $_has(0); + @$pb.TagNumber(1) + void clearRawOutput() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get dailyLimit => $_getSZ(1); + @$pb.TagNumber(2) + set dailyLimit($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasDailyLimit() => $_has(1); + @$pb.TagNumber(2) + void clearDailyLimit() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get dailyResetTime => $_getSZ(2); + @$pb.TagNumber(3) + set dailyResetTime($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasDailyResetTime() => $_has(2); + @$pb.TagNumber(3) + void clearDailyResetTime() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get weeklyLimit => $_getSZ(3); + @$pb.TagNumber(4) + set weeklyLimit($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasWeeklyLimit() => $_has(3); + @$pb.TagNumber(4) + void clearWeeklyLimit() => $_clearField(4); + + @$pb.TagNumber(5) + $core.String get weeklyResetTime => $_getSZ(4); + @$pb.TagNumber(5) + set weeklyResetTime($core.String value) => $_setString(4, value); + @$pb.TagNumber(5) + $core.bool hasWeeklyResetTime() => $_has(4); + @$pb.TagNumber(5) + void clearWeeklyResetTime() => $_clearField(5); + + @$pb.TagNumber(6) + $pb.PbMap<$core.String, $core.String> get metadata => $_getMap(5); +} + +/// Error is returned when a request fails at the transport layer. +class Error extends $pb.GeneratedMessage { + factory Error({ + $core.String? code, + $core.String? message, + }) { + final result = create(); + if (code != null) result.code = code; + if (message != null) result.message = message; + return result; + } + + Error._(); + + factory Error.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory Error.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'Error', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'code') + ..aOS(2, _omitFieldNames ? '' : 'message') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + Error clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + Error copyWith(void Function(Error) updates) => + super.copyWith((message) => updates(message as Error)) as Error; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Error create() => Error._(); + @$core.override + Error createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static Error getDefault() => + _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Error? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get code => $_getSZ(0); + @$pb.TagNumber(1) + set code($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasCode() => $_has(0); + @$pb.TagNumber(1) + void clearCode() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get message => $_getSZ(1); + @$pb.TagNumber(2) + set message($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasMessage() => $_has(1); + @$pb.TagNumber(2) + void clearMessage() => $_clearField(2); +} + +/// RegisterRequest is sent by node to edge immediately on connect. +class RegisterRequest extends $pb.GeneratedMessage { + factory RegisterRequest({ + $core.String? token, + }) { + final result = create(); + if (token != null) result.token = token; + return result; + } + + RegisterRequest._(); + + factory RegisterRequest.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory RegisterRequest.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'RegisterRequest', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'token') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + RegisterRequest clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + RegisterRequest copyWith(void Function(RegisterRequest) updates) => + super.copyWith((message) => updates(message as RegisterRequest)) + as RegisterRequest; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static RegisterRequest create() => RegisterRequest._(); + @$core.override + RegisterRequest createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static RegisterRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static RegisterRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get token => $_getSZ(0); + @$pb.TagNumber(1) + set token($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasToken() => $_has(0); + @$pb.TagNumber(1) + void clearToken() => $_clearField(1); +} + +/// RegisterResponse is sent by edge to node in response to RegisterRequest. +class RegisterResponse extends $pb.GeneratedMessage { + factory RegisterResponse({ + $core.bool? accepted, + $core.String? nodeId, + $core.String? alias, + $core.String? reason, + NodeConfigPayload? config, + }) { + final result = create(); + if (accepted != null) result.accepted = accepted; + if (nodeId != null) result.nodeId = nodeId; + if (alias != null) result.alias = alias; + if (reason != null) result.reason = reason; + if (config != null) result.config = config; + return result; + } + + RegisterResponse._(); + + factory RegisterResponse.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory RegisterResponse.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'RegisterResponse', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOB(1, _omitFieldNames ? '' : 'accepted') + ..aOS(2, _omitFieldNames ? '' : 'nodeId') + ..aOS(3, _omitFieldNames ? '' : 'alias') + ..aOS(4, _omitFieldNames ? '' : 'reason') + ..aOM(5, _omitFieldNames ? '' : 'config', + subBuilder: NodeConfigPayload.create) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + RegisterResponse clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + RegisterResponse copyWith(void Function(RegisterResponse) updates) => + super.copyWith((message) => updates(message as RegisterResponse)) + as RegisterResponse; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static RegisterResponse create() => RegisterResponse._(); + @$core.override + RegisterResponse createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static RegisterResponse getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static RegisterResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.bool get accepted => $_getBF(0); + @$pb.TagNumber(1) + set accepted($core.bool value) => $_setBool(0, value); + @$pb.TagNumber(1) + $core.bool hasAccepted() => $_has(0); + @$pb.TagNumber(1) + void clearAccepted() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get nodeId => $_getSZ(1); + @$pb.TagNumber(2) + set nodeId($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasNodeId() => $_has(1); + @$pb.TagNumber(2) + void clearNodeId() => $_clearField(2); + + @$pb.TagNumber(3) + $core.String get alias => $_getSZ(2); + @$pb.TagNumber(3) + set alias($core.String value) => $_setString(2, value); + @$pb.TagNumber(3) + $core.bool hasAlias() => $_has(2); + @$pb.TagNumber(3) + void clearAlias() => $_clearField(3); + + @$pb.TagNumber(4) + $core.String get reason => $_getSZ(3); + @$pb.TagNumber(4) + set reason($core.String value) => $_setString(3, value); + @$pb.TagNumber(4) + $core.bool hasReason() => $_has(3); + @$pb.TagNumber(4) + void clearReason() => $_clearField(4); + + @$pb.TagNumber(5) + NodeConfigPayload get config => $_getN(4); + @$pb.TagNumber(5) + set config(NodeConfigPayload value) => $_setField(5, value); + @$pb.TagNumber(5) + $core.bool hasConfig() => $_has(4); + @$pb.TagNumber(5) + void clearConfig() => $_clearField(5); + @$pb.TagNumber(5) + NodeConfigPayload ensureConfig() => $_ensure(4); +} + +/// NodeConfigPayload carries all configuration edge pushes to the node. +class NodeConfigPayload extends $pb.GeneratedMessage { + factory NodeConfigPayload({ + $core.Iterable? adapters, + NodeRuntimeConfig? runtime, + }) { + final result = create(); + if (adapters != null) result.adapters.addAll(adapters); + if (runtime != null) result.runtime = runtime; + return result; + } + + NodeConfigPayload._(); + + factory NodeConfigPayload.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory NodeConfigPayload.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'NodeConfigPayload', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..pPM(1, _omitFieldNames ? '' : 'adapters', + subBuilder: AdapterConfig.create) + ..aOM(2, _omitFieldNames ? '' : 'runtime', + subBuilder: NodeRuntimeConfig.create) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeConfigPayload clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeConfigPayload copyWith(void Function(NodeConfigPayload) updates) => + super.copyWith((message) => updates(message as NodeConfigPayload)) + as NodeConfigPayload; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static NodeConfigPayload create() => NodeConfigPayload._(); + @$core.override + NodeConfigPayload createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static NodeConfigPayload getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static NodeConfigPayload? _defaultInstance; + + @$pb.TagNumber(1) + $pb.PbList get adapters => $_getList(0); + + @$pb.TagNumber(2) + NodeRuntimeConfig get runtime => $_getN(1); + @$pb.TagNumber(2) + set runtime(NodeRuntimeConfig value) => $_setField(2, value); + @$pb.TagNumber(2) + $core.bool hasRuntime() => $_has(1); + @$pb.TagNumber(2) + void clearRuntime() => $_clearField(2); + @$pb.TagNumber(2) + NodeRuntimeConfig ensureRuntime() => $_ensure(1); +} + +enum AdapterConfig_Config { cli, ollama, vllm, notSet } + +/// AdapterConfig describes one adapter to enable on the node. +class AdapterConfig extends $pb.GeneratedMessage { + factory AdapterConfig({ + $core.String? type, + $core.bool? enabled, + $0.Struct? settings, + CLIAdapterConfig? cli, + OllamaAdapterConfig? ollama, + VllmAdapterConfig? vllm, + }) { + final result = create(); + if (type != null) result.type = type; + if (enabled != null) result.enabled = enabled; + if (settings != null) result.settings = settings; + if (cli != null) result.cli = cli; + if (ollama != null) result.ollama = ollama; + if (vllm != null) result.vllm = vllm; + return result; + } + + AdapterConfig._(); + + factory AdapterConfig.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory AdapterConfig.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static const $core.Map<$core.int, AdapterConfig_Config> + _AdapterConfig_ConfigByTag = { + 4: AdapterConfig_Config.cli, + 5: AdapterConfig_Config.ollama, + 6: AdapterConfig_Config.vllm, + 0: AdapterConfig_Config.notSet + }; + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'AdapterConfig', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..oo(0, [4, 5, 6]) + ..aOS(1, _omitFieldNames ? '' : 'type') + ..aOB(2, _omitFieldNames ? '' : 'enabled') + ..aOM<$0.Struct>(3, _omitFieldNames ? '' : 'settings', + subBuilder: $0.Struct.create) + ..aOM(4, _omitFieldNames ? '' : 'cli', + subBuilder: CLIAdapterConfig.create) + ..aOM(5, _omitFieldNames ? '' : 'ollama', + subBuilder: OllamaAdapterConfig.create) + ..aOM(6, _omitFieldNames ? '' : 'vllm', + subBuilder: VllmAdapterConfig.create) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + AdapterConfig clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + AdapterConfig copyWith(void Function(AdapterConfig) updates) => + super.copyWith((message) => updates(message as AdapterConfig)) + as AdapterConfig; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static AdapterConfig create() => AdapterConfig._(); + @$core.override + AdapterConfig createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static AdapterConfig getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static AdapterConfig? _defaultInstance; + + @$pb.TagNumber(4) + @$pb.TagNumber(5) + @$pb.TagNumber(6) + AdapterConfig_Config whichConfig() => + _AdapterConfig_ConfigByTag[$_whichOneof(0)]!; + @$pb.TagNumber(4) + @$pb.TagNumber(5) + @$pb.TagNumber(6) + void clearConfig() => $_clearField($_whichOneof(0)); + + @$pb.TagNumber(1) + $core.String get type => $_getSZ(0); + @$pb.TagNumber(1) + set type($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasType() => $_has(0); + @$pb.TagNumber(1) + void clearType() => $_clearField(1); + + @$pb.TagNumber(2) + $core.bool get enabled => $_getBF(1); + @$pb.TagNumber(2) + set enabled($core.bool value) => $_setBool(1, value); + @$pb.TagNumber(2) + $core.bool hasEnabled() => $_has(1); + @$pb.TagNumber(2) + void clearEnabled() => $_clearField(2); + + @$pb.TagNumber(3) + $0.Struct get settings => $_getN(2); + @$pb.TagNumber(3) + set settings($0.Struct value) => $_setField(3, value); + @$pb.TagNumber(3) + $core.bool hasSettings() => $_has(2); + @$pb.TagNumber(3) + void clearSettings() => $_clearField(3); + @$pb.TagNumber(3) + $0.Struct ensureSettings() => $_ensure(2); + + @$pb.TagNumber(4) + CLIAdapterConfig get cli => $_getN(3); + @$pb.TagNumber(4) + set cli(CLIAdapterConfig value) => $_setField(4, value); + @$pb.TagNumber(4) + $core.bool hasCli() => $_has(3); + @$pb.TagNumber(4) + void clearCli() => $_clearField(4); + @$pb.TagNumber(4) + CLIAdapterConfig ensureCli() => $_ensure(3); + + @$pb.TagNumber(5) + OllamaAdapterConfig get ollama => $_getN(4); + @$pb.TagNumber(5) + set ollama(OllamaAdapterConfig value) => $_setField(5, value); + @$pb.TagNumber(5) + $core.bool hasOllama() => $_has(4); + @$pb.TagNumber(5) + void clearOllama() => $_clearField(5); + @$pb.TagNumber(5) + OllamaAdapterConfig ensureOllama() => $_ensure(4); + + @$pb.TagNumber(6) + VllmAdapterConfig get vllm => $_getN(5); + @$pb.TagNumber(6) + set vllm(VllmAdapterConfig value) => $_setField(6, value); + @$pb.TagNumber(6) + $core.bool hasVllm() => $_has(5); + @$pb.TagNumber(6) + void clearVllm() => $_clearField(6); + @$pb.TagNumber(6) + VllmAdapterConfig ensureVllm() => $_ensure(5); +} + +class CLIAdapterConfig extends $pb.GeneratedMessage { + factory CLIAdapterConfig({ + $core.Iterable<$core.MapEntry<$core.String, CLIProfileConfig>>? profiles, + }) { + final result = create(); + if (profiles != null) result.profiles.addEntries(profiles); + return result; + } + + CLIAdapterConfig._(); + + factory CLIAdapterConfig.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory CLIAdapterConfig.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'CLIAdapterConfig', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..m<$core.String, CLIProfileConfig>(1, _omitFieldNames ? '' : 'profiles', + entryClassName: 'CLIAdapterConfig.ProfilesEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OM, + valueCreator: CLIProfileConfig.create, + valueDefaultOrMaker: CLIProfileConfig.getDefault, + packageName: const $pb.PackageName('iop')) + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + CLIAdapterConfig clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + CLIAdapterConfig copyWith(void Function(CLIAdapterConfig) updates) => + super.copyWith((message) => updates(message as CLIAdapterConfig)) + as CLIAdapterConfig; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CLIAdapterConfig create() => CLIAdapterConfig._(); + @$core.override + CLIAdapterConfig createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static CLIAdapterConfig getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static CLIAdapterConfig? _defaultInstance; + + @$pb.TagNumber(1) + $pb.PbMap<$core.String, CLIProfileConfig> get profiles => $_getMap(0); +} + +class CLIProfileConfig extends $pb.GeneratedMessage { + factory CLIProfileConfig({ + $core.String? command, + $core.Iterable<$core.String>? args, + $core.Iterable<$core.String>? env, + $core.bool? persistent, + $core.bool? terminal, + $core.int? responseIdleTimeoutMs, + $core.int? startupIdleTimeoutMs, + $core.String? outputFormat, + CLICompletionMarker? completionMarker, + $core.String? mode, + $core.Iterable<$core.String>? resumeArgs, + }) { + final result = create(); + if (command != null) result.command = command; + if (args != null) result.args.addAll(args); + if (env != null) result.env.addAll(env); + if (persistent != null) result.persistent = persistent; + if (terminal != null) result.terminal = terminal; + if (responseIdleTimeoutMs != null) + result.responseIdleTimeoutMs = responseIdleTimeoutMs; + if (startupIdleTimeoutMs != null) + result.startupIdleTimeoutMs = startupIdleTimeoutMs; + if (outputFormat != null) result.outputFormat = outputFormat; + if (completionMarker != null) result.completionMarker = completionMarker; + if (mode != null) result.mode = mode; + if (resumeArgs != null) result.resumeArgs.addAll(resumeArgs); + return result; + } + + CLIProfileConfig._(); + + factory CLIProfileConfig.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory CLIProfileConfig.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'CLIProfileConfig', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'command') + ..pPS(2, _omitFieldNames ? '' : 'args') + ..pPS(3, _omitFieldNames ? '' : 'env') + ..aOB(4, _omitFieldNames ? '' : 'persistent') + ..aOB(5, _omitFieldNames ? '' : 'terminal') + ..aI(6, _omitFieldNames ? '' : 'responseIdleTimeoutMs') + ..aI(7, _omitFieldNames ? '' : 'startupIdleTimeoutMs') + ..aOS(8, _omitFieldNames ? '' : 'outputFormat') + ..aOM(9, _omitFieldNames ? '' : 'completionMarker', + subBuilder: CLICompletionMarker.create) + ..aOS(10, _omitFieldNames ? '' : 'mode') + ..pPS(11, _omitFieldNames ? '' : 'resumeArgs') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + CLIProfileConfig clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + CLIProfileConfig copyWith(void Function(CLIProfileConfig) updates) => + super.copyWith((message) => updates(message as CLIProfileConfig)) + as CLIProfileConfig; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CLIProfileConfig create() => CLIProfileConfig._(); + @$core.override + CLIProfileConfig createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static CLIProfileConfig getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static CLIProfileConfig? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get command => $_getSZ(0); + @$pb.TagNumber(1) + set command($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasCommand() => $_has(0); + @$pb.TagNumber(1) + void clearCommand() => $_clearField(1); + + @$pb.TagNumber(2) + $pb.PbList<$core.String> get args => $_getList(1); + + @$pb.TagNumber(3) + $pb.PbList<$core.String> get env => $_getList(2); + + @$pb.TagNumber(4) + $core.bool get persistent => $_getBF(3); + @$pb.TagNumber(4) + set persistent($core.bool value) => $_setBool(3, value); + @$pb.TagNumber(4) + $core.bool hasPersistent() => $_has(3); + @$pb.TagNumber(4) + void clearPersistent() => $_clearField(4); + + @$pb.TagNumber(5) + $core.bool get terminal => $_getBF(4); + @$pb.TagNumber(5) + set terminal($core.bool value) => $_setBool(4, value); + @$pb.TagNumber(5) + $core.bool hasTerminal() => $_has(4); + @$pb.TagNumber(5) + void clearTerminal() => $_clearField(5); + + @$pb.TagNumber(6) + $core.int get responseIdleTimeoutMs => $_getIZ(5); + @$pb.TagNumber(6) + set responseIdleTimeoutMs($core.int value) => $_setSignedInt32(5, value); + @$pb.TagNumber(6) + $core.bool hasResponseIdleTimeoutMs() => $_has(5); + @$pb.TagNumber(6) + void clearResponseIdleTimeoutMs() => $_clearField(6); + + @$pb.TagNumber(7) + $core.int get startupIdleTimeoutMs => $_getIZ(6); + @$pb.TagNumber(7) + set startupIdleTimeoutMs($core.int value) => $_setSignedInt32(6, value); + @$pb.TagNumber(7) + $core.bool hasStartupIdleTimeoutMs() => $_has(6); + @$pb.TagNumber(7) + void clearStartupIdleTimeoutMs() => $_clearField(7); + + @$pb.TagNumber(8) + $core.String get outputFormat => $_getSZ(7); + @$pb.TagNumber(8) + set outputFormat($core.String value) => $_setString(7, value); + @$pb.TagNumber(8) + $core.bool hasOutputFormat() => $_has(7); + @$pb.TagNumber(8) + void clearOutputFormat() => $_clearField(8); + + @$pb.TagNumber(9) + CLICompletionMarker get completionMarker => $_getN(8); + @$pb.TagNumber(9) + set completionMarker(CLICompletionMarker value) => $_setField(9, value); + @$pb.TagNumber(9) + $core.bool hasCompletionMarker() => $_has(8); + @$pb.TagNumber(9) + void clearCompletionMarker() => $_clearField(9); + @$pb.TagNumber(9) + CLICompletionMarker ensureCompletionMarker() => $_ensure(8); + + @$pb.TagNumber(10) + $core.String get mode => $_getSZ(9); + @$pb.TagNumber(10) + set mode($core.String value) => $_setString(9, value); + @$pb.TagNumber(10) + $core.bool hasMode() => $_has(9); + @$pb.TagNumber(10) + void clearMode() => $_clearField(10); + + @$pb.TagNumber(11) + $pb.PbList<$core.String> get resumeArgs => $_getList(10); +} + +class CLICompletionMarker extends $pb.GeneratedMessage { + factory CLICompletionMarker({ + $core.String? line, + $core.String? regex, + }) { + final result = create(); + if (line != null) result.line = line; + if (regex != null) result.regex = regex; + return result; + } + + CLICompletionMarker._(); + + factory CLICompletionMarker.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory CLICompletionMarker.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'CLICompletionMarker', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'line') + ..aOS(2, _omitFieldNames ? '' : 'regex') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + CLICompletionMarker clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + CLICompletionMarker copyWith(void Function(CLICompletionMarker) updates) => + super.copyWith((message) => updates(message as CLICompletionMarker)) + as CLICompletionMarker; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CLICompletionMarker create() => CLICompletionMarker._(); + @$core.override + CLICompletionMarker createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static CLICompletionMarker getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static CLICompletionMarker? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get line => $_getSZ(0); + @$pb.TagNumber(1) + set line($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasLine() => $_has(0); + @$pb.TagNumber(1) + void clearLine() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get regex => $_getSZ(1); + @$pb.TagNumber(2) + set regex($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasRegex() => $_has(1); + @$pb.TagNumber(2) + void clearRegex() => $_clearField(2); +} + +class OllamaAdapterConfig extends $pb.GeneratedMessage { + factory OllamaAdapterConfig({ + $core.String? baseUrl, + $core.int? contextSize, + }) { + final result = create(); + if (baseUrl != null) result.baseUrl = baseUrl; + if (contextSize != null) result.contextSize = contextSize; + return result; + } + + OllamaAdapterConfig._(); + + factory OllamaAdapterConfig.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory OllamaAdapterConfig.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'OllamaAdapterConfig', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'baseUrl') + ..aI(2, _omitFieldNames ? '' : 'contextSize') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + OllamaAdapterConfig clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + OllamaAdapterConfig copyWith(void Function(OllamaAdapterConfig) updates) => + super.copyWith((message) => updates(message as OllamaAdapterConfig)) + as OllamaAdapterConfig; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static OllamaAdapterConfig create() => OllamaAdapterConfig._(); + @$core.override + OllamaAdapterConfig createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static OllamaAdapterConfig getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static OllamaAdapterConfig? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get baseUrl => $_getSZ(0); + @$pb.TagNumber(1) + set baseUrl($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasBaseUrl() => $_has(0); + @$pb.TagNumber(1) + void clearBaseUrl() => $_clearField(1); + + @$pb.TagNumber(2) + $core.int get contextSize => $_getIZ(1); + @$pb.TagNumber(2) + set contextSize($core.int value) => $_setSignedInt32(1, value); + @$pb.TagNumber(2) + $core.bool hasContextSize() => $_has(1); + @$pb.TagNumber(2) + void clearContextSize() => $_clearField(2); +} + +class VllmAdapterConfig extends $pb.GeneratedMessage { + factory VllmAdapterConfig({ + $core.String? endpoint, + }) { + final result = create(); + if (endpoint != null) result.endpoint = endpoint; + return result; + } + + VllmAdapterConfig._(); + + factory VllmAdapterConfig.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory VllmAdapterConfig.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'VllmAdapterConfig', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'endpoint') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + VllmAdapterConfig clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + VllmAdapterConfig copyWith(void Function(VllmAdapterConfig) updates) => + super.copyWith((message) => updates(message as VllmAdapterConfig)) + as VllmAdapterConfig; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static VllmAdapterConfig create() => VllmAdapterConfig._(); + @$core.override + VllmAdapterConfig createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static VllmAdapterConfig getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static VllmAdapterConfig? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get endpoint => $_getSZ(0); + @$pb.TagNumber(1) + set endpoint($core.String value) => $_setString(0, value); + @$pb.TagNumber(1) + $core.bool hasEndpoint() => $_has(0); + @$pb.TagNumber(1) + void clearEndpoint() => $_clearField(1); +} + +/// NodeRuntimeConfig is the runtime tuning pushed to the node. +class NodeRuntimeConfig extends $pb.GeneratedMessage { + factory NodeRuntimeConfig({ + $core.int? concurrency, + $core.String? workspaceRoot, + }) { + final result = create(); + if (concurrency != null) result.concurrency = concurrency; + if (workspaceRoot != null) result.workspaceRoot = workspaceRoot; + return result; + } + + NodeRuntimeConfig._(); + + factory NodeRuntimeConfig.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory NodeRuntimeConfig.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'NodeRuntimeConfig', + package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), + createEmptyInstance: create) + ..aI(1, _omitFieldNames ? '' : 'concurrency') + ..aOS(2, _omitFieldNames ? '' : 'workspaceRoot') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeRuntimeConfig clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + NodeRuntimeConfig copyWith(void Function(NodeRuntimeConfig) updates) => + super.copyWith((message) => updates(message as NodeRuntimeConfig)) + as NodeRuntimeConfig; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static NodeRuntimeConfig create() => NodeRuntimeConfig._(); + @$core.override + NodeRuntimeConfig createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static NodeRuntimeConfig getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static NodeRuntimeConfig? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get concurrency => $_getIZ(0); + @$pb.TagNumber(1) + set concurrency($core.int value) => $_setSignedInt32(0, value); + @$pb.TagNumber(1) + $core.bool hasConcurrency() => $_has(0); + @$pb.TagNumber(1) + void clearConcurrency() => $_clearField(1); + + @$pb.TagNumber(2) + $core.String get workspaceRoot => $_getSZ(1); + @$pb.TagNumber(2) + set workspaceRoot($core.String value) => $_setString(1, value); + @$pb.TagNumber(2) + $core.bool hasWorkspaceRoot() => $_has(1); + @$pb.TagNumber(2) + void clearWorkspaceRoot() => $_clearField(2); +} + +const $core.bool _omitFieldNames = + $core.bool.fromEnvironment('protobuf.omit_field_names'); +const $core.bool _omitMessageNames = + $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/apps/client/lib/gen/proto/iop/runtime.pbenum.dart b/apps/client/lib/gen/proto/iop/runtime.pbenum.dart new file mode 100644 index 0000000..9f1b1d7 --- /dev/null +++ b/apps/client/lib/gen/proto/iop/runtime.pbenum.dart @@ -0,0 +1,100 @@ +// This is a generated file - do not edit. +// +// Generated from proto/iop/runtime.proto. + +// @dart = 3.3 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class RunSessionMode extends $pb.ProtobufEnum { + static const RunSessionMode RUN_SESSION_MODE_UNSPECIFIED = + RunSessionMode._(0, _omitEnumNames ? '' : 'RUN_SESSION_MODE_UNSPECIFIED'); + static const RunSessionMode RUN_SESSION_MODE_CREATE_IF_MISSING = + RunSessionMode._( + 1, _omitEnumNames ? '' : 'RUN_SESSION_MODE_CREATE_IF_MISSING'); + static const RunSessionMode RUN_SESSION_MODE_REQUIRE_EXISTING = + RunSessionMode._( + 2, _omitEnumNames ? '' : 'RUN_SESSION_MODE_REQUIRE_EXISTING'); + + static const $core.List values = [ + RUN_SESSION_MODE_UNSPECIFIED, + RUN_SESSION_MODE_CREATE_IF_MISSING, + RUN_SESSION_MODE_REQUIRE_EXISTING, + ]; + + static final $core.List _byValue = + $pb.ProtobufEnum.$_initByValueList(values, 2); + static RunSessionMode? valueOf($core.int value) => + value < 0 || value >= _byValue.length ? null : _byValue[value]; + + const RunSessionMode._(super.value, super.name); +} + +class CancelAction extends $pb.ProtobufEnum { + static const CancelAction CANCEL_ACTION_UNSPECIFIED = + CancelAction._(0, _omitEnumNames ? '' : 'CANCEL_ACTION_UNSPECIFIED'); + static const CancelAction CANCEL_ACTION_CANCEL_RUN = + CancelAction._(1, _omitEnumNames ? '' : 'CANCEL_ACTION_CANCEL_RUN'); + static const CancelAction CANCEL_ACTION_TERMINATE_SESSION = CancelAction._( + 2, _omitEnumNames ? '' : 'CANCEL_ACTION_TERMINATE_SESSION'); + + static const $core.List values = [ + CANCEL_ACTION_UNSPECIFIED, + CANCEL_ACTION_CANCEL_RUN, + CANCEL_ACTION_TERMINATE_SESSION, + ]; + + static final $core.List _byValue = + $pb.ProtobufEnum.$_initByValueList(values, 2); + static CancelAction? valueOf($core.int value) => + value < 0 || value >= _byValue.length ? null : _byValue[value]; + + const CancelAction._(super.value, super.name); +} + +class NodeCommandType extends $pb.ProtobufEnum { + static const NodeCommandType NODE_COMMAND_TYPE_UNSPECIFIED = + NodeCommandType._( + 0, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_UNSPECIFIED'); + static const NodeCommandType NODE_COMMAND_TYPE_USAGE_STATUS = + NodeCommandType._( + 1, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_USAGE_STATUS'); + static const NodeCommandType NODE_COMMAND_TYPE_CAPABILITIES = + NodeCommandType._( + 2, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_CAPABILITIES'); + static const NodeCommandType NODE_COMMAND_TYPE_SESSION_LIST = + NodeCommandType._( + 3, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_SESSION_LIST'); + static const NodeCommandType NODE_COMMAND_TYPE_TRANSPORT_STATUS = + NodeCommandType._( + 4, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_TRANSPORT_STATUS'); + static const NodeCommandType NODE_COMMAND_TYPE_OLLAMA_API = NodeCommandType._( + 5, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_OLLAMA_API'); + + static const $core.List values = [ + NODE_COMMAND_TYPE_UNSPECIFIED, + NODE_COMMAND_TYPE_USAGE_STATUS, + NODE_COMMAND_TYPE_CAPABILITIES, + NODE_COMMAND_TYPE_SESSION_LIST, + NODE_COMMAND_TYPE_TRANSPORT_STATUS, + NODE_COMMAND_TYPE_OLLAMA_API, + ]; + + static final $core.List _byValue = + $pb.ProtobufEnum.$_initByValueList(values, 5); + static NodeCommandType? valueOf($core.int value) => + value < 0 || value >= _byValue.length ? null : _byValue[value]; + + const NodeCommandType._(super.value, super.name); +} + +const $core.bool _omitEnumNames = + $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/apps/portal/lib/gen/proto/iop/runtime.pbjson.dart b/apps/client/lib/gen/proto/iop/runtime.pbjson.dart similarity index 82% rename from apps/portal/lib/gen/proto/iop/runtime.pbjson.dart rename to apps/client/lib/gen/proto/iop/runtime.pbjson.dart index b989678..3507ba9 100644 --- a/apps/portal/lib/gen/proto/iop/runtime.pbjson.dart +++ b/apps/client/lib/gen/proto/iop/runtime.pbjson.dart @@ -1,13 +1,15 @@ +// This is a generated file - do not edit. // -// Generated code. Do not modify. -// source: proto/iop/runtime.proto -// -// @dart = 2.12 +// Generated from proto/iop/runtime.proto. + +// @dart = 3.3 // ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import +// ignore_for_file: constant_identifier_names +// ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_relative_imports +// ignore_for_file: unused_import import 'dart:convert' as $convert; import 'dart:core' as $core; @@ -54,6 +56,7 @@ const NodeCommandType$json = { {'1': 'NODE_COMMAND_TYPE_CAPABILITIES', '2': 2}, {'1': 'NODE_COMMAND_TYPE_SESSION_LIST', '2': 3}, {'1': 'NODE_COMMAND_TYPE_TRANSPORT_STATUS', '2': 4}, + {'1': 'NODE_COMMAND_TYPE_OLLAMA_API', '2': 5}, ], }; @@ -62,7 +65,8 @@ final $typed_data.Uint8List nodeCommandTypeDescriptor = $convert.base64Decode( 'Cg9Ob2RlQ29tbWFuZFR5cGUSIQodTk9ERV9DT01NQU5EX1RZUEVfVU5TUEVDSUZJRUQQABIiCh' '5OT0RFX0NPTU1BTkRfVFlQRV9VU0FHRV9TVEFUVVMQARIiCh5OT0RFX0NPTU1BTkRfVFlQRV9D' 'QVBBQklMSVRJRVMQAhIiCh5OT0RFX0NPTU1BTkRfVFlQRV9TRVNTSU9OX0xJU1QQAxImCiJOT0' - 'RFX0NPTU1BTkRfVFlQRV9UUkFOU1BPUlRfU1RBVFVTEAQ='); + 'RFX0NPTU1BTkRfVFlQRV9UUkFOU1BPUlRfU1RBVFVTEAQSIAocTk9ERV9DT01NQU5EX1RZUEVf' + 'T0xMQU1BX0FQSRAF'); @$core.Deprecated('Use runRequestDescriptor instead') const RunRequest$json = { @@ -72,12 +76,40 @@ const RunRequest$json = { {'1': 'adapter', '3': 2, '4': 1, '5': 9, '10': 'adapter'}, {'1': 'target', '3': 3, '4': 1, '5': 9, '10': 'target'}, {'1': 'workspace', '3': 4, '4': 1, '5': 9, '10': 'workspace'}, - {'1': 'policy', '3': 5, '4': 1, '5': 11, '6': '.google.protobuf.Struct', '10': 'policy'}, - {'1': 'input', '3': 6, '4': 1, '5': 11, '6': '.google.protobuf.Struct', '10': 'input'}, + { + '1': 'policy', + '3': 5, + '4': 1, + '5': 11, + '6': '.google.protobuf.Struct', + '10': 'policy' + }, + { + '1': 'input', + '3': 6, + '4': 1, + '5': 11, + '6': '.google.protobuf.Struct', + '10': 'input' + }, {'1': 'timeout_sec', '3': 7, '4': 1, '5': 5, '10': 'timeoutSec'}, - {'1': 'metadata', '3': 8, '4': 3, '5': 11, '6': '.iop.RunRequest.MetadataEntry', '10': 'metadata'}, + { + '1': 'metadata', + '3': 8, + '4': 3, + '5': 11, + '6': '.iop.RunRequest.MetadataEntry', + '10': 'metadata' + }, {'1': 'session_id', '3': 9, '4': 1, '5': 9, '10': 'sessionId'}, - {'1': 'session_mode', '3': 10, '4': 1, '5': 14, '6': '.iop.RunSessionMode', '10': 'sessionMode'}, + { + '1': 'session_mode', + '3': 10, + '4': 1, + '5': 14, + '6': '.iop.RunSessionMode', + '10': 'sessionMode' + }, {'1': 'background', '3': 11, '4': 1, '5': 8, '10': 'background'}, ], '3': [RunRequest_MetadataEntry$json], @@ -115,7 +147,14 @@ const RunEvent$json = { {'1': 'message', '3': 4, '4': 1, '5': 9, '10': 'message'}, {'1': 'error', '3': 5, '4': 1, '5': 9, '10': 'error'}, {'1': 'usage', '3': 6, '4': 1, '5': 11, '6': '.iop.Usage', '10': 'usage'}, - {'1': 'metadata', '3': 7, '4': 3, '5': 11, '6': '.iop.RunEvent.MetadataEntry', '10': 'metadata'}, + { + '1': 'metadata', + '3': 7, + '4': 3, + '5': 11, + '6': '.iop.RunEvent.MetadataEntry', + '10': 'metadata' + }, {'1': 'timestamp', '3': 8, '4': 1, '5': 3, '10': 'timestamp'}, {'1': 'session_id', '3': 9, '4': 1, '5': 9, '10': 'sessionId'}, {'1': 'background', '3': 10, '4': 1, '5': 8, '10': 'background'}, @@ -156,7 +195,14 @@ const EdgeNodeEvent$json = { {'1': 'node_id', '3': 4, '4': 1, '5': 9, '10': 'nodeId'}, {'1': 'alias', '3': 5, '4': 1, '5': 9, '10': 'alias'}, {'1': 'reason', '3': 6, '4': 1, '5': 9, '10': 'reason'}, - {'1': 'metadata', '3': 7, '4': 3, '5': 11, '6': '.iop.EdgeNodeEvent.MetadataEntry', '10': 'metadata'}, + { + '1': 'metadata', + '3': 7, + '4': 3, + '5': 11, + '6': '.iop.EdgeNodeEvent.MetadataEntry', + '10': 'metadata' + }, {'1': 'timestamp', '3': 8, '4': 1, '5': 3, '10': 'timestamp'}, ], '3': [EdgeNodeEvent_MetadataEntry$json], @@ -204,8 +250,8 @@ const Heartbeat$json = { }; /// Descriptor for `Heartbeat`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List heartbeatDescriptor = $convert.base64Decode( - 'CglIZWFydGJlYXQSHAoJdGltZXN0YW1wGAEgASgDUgl0aW1lc3RhbXA='); +final $typed_data.Uint8List heartbeatDescriptor = $convert + .base64Decode('CglIZWFydGJlYXQSHAoJdGltZXN0YW1wGAEgASgDUgl0aW1lc3RhbXA='); @$core.Deprecated('Use cancelRequestDescriptor instead') const CancelRequest$json = { @@ -215,7 +261,14 @@ const CancelRequest$json = { {'1': 'adapter', '3': 2, '4': 1, '5': 9, '10': 'adapter'}, {'1': 'target', '3': 3, '4': 1, '5': 9, '10': 'target'}, {'1': 'session_id', '3': 4, '4': 1, '5': 9, '10': 'sessionId'}, - {'1': 'action', '3': 5, '4': 1, '5': 14, '6': '.iop.CancelAction', '10': 'action'}, + { + '1': 'action', + '3': 5, + '4': 1, + '5': 14, + '6': '.iop.CancelAction', + '10': 'action' + }, ], }; @@ -230,12 +283,26 @@ const NodeCommandRequest$json = { '1': 'NodeCommandRequest', '2': [ {'1': 'request_id', '3': 1, '4': 1, '5': 9, '10': 'requestId'}, - {'1': 'type', '3': 2, '4': 1, '5': 14, '6': '.iop.NodeCommandType', '10': 'type'}, + { + '1': 'type', + '3': 2, + '4': 1, + '5': 14, + '6': '.iop.NodeCommandType', + '10': 'type' + }, {'1': 'adapter', '3': 3, '4': 1, '5': 9, '10': 'adapter'}, {'1': 'target', '3': 4, '4': 1, '5': 9, '10': 'target'}, {'1': 'session_id', '3': 5, '4': 1, '5': 9, '10': 'sessionId'}, {'1': 'timeout_sec', '3': 6, '4': 1, '5': 5, '10': 'timeoutSec'}, - {'1': 'metadata', '3': 7, '4': 3, '5': 11, '6': '.iop.NodeCommandRequest.MetadataEntry', '10': 'metadata'}, + { + '1': 'metadata', + '3': 7, + '4': 3, + '5': 11, + '6': '.iop.NodeCommandRequest.MetadataEntry', + '10': 'metadata' + }, ], '3': [NodeCommandRequest_MetadataEntry$json], }; @@ -265,13 +332,34 @@ const NodeCommandResponse$json = { '1': 'NodeCommandResponse', '2': [ {'1': 'request_id', '3': 1, '4': 1, '5': 9, '10': 'requestId'}, - {'1': 'type', '3': 2, '4': 1, '5': 14, '6': '.iop.NodeCommandType', '10': 'type'}, + { + '1': 'type', + '3': 2, + '4': 1, + '5': 14, + '6': '.iop.NodeCommandType', + '10': 'type' + }, {'1': 'adapter', '3': 3, '4': 1, '5': 9, '10': 'adapter'}, {'1': 'target', '3': 4, '4': 1, '5': 9, '10': 'target'}, {'1': 'session_id', '3': 5, '4': 1, '5': 9, '10': 'sessionId'}, - {'1': 'usage_status', '3': 6, '4': 1, '5': 11, '6': '.iop.AgentUsageStatus', '10': 'usageStatus'}, + { + '1': 'usage_status', + '3': 6, + '4': 1, + '5': 11, + '6': '.iop.AgentUsageStatus', + '10': 'usageStatus' + }, {'1': 'error', '3': 7, '4': 1, '5': 9, '10': 'error'}, - {'1': 'result', '3': 8, '4': 3, '5': 11, '6': '.iop.NodeCommandResponse.ResultEntry', '10': 'result'}, + { + '1': 'result', + '3': 8, + '4': 3, + '5': 11, + '6': '.iop.NodeCommandResponse.ResultEntry', + '10': 'result' + }, ], '3': [NodeCommandResponse_ResultEntry$json], }; @@ -305,7 +393,14 @@ const AgentUsageStatus$json = { {'1': 'daily_reset_time', '3': 3, '4': 1, '5': 9, '10': 'dailyResetTime'}, {'1': 'weekly_limit', '3': 4, '4': 1, '5': 9, '10': 'weeklyLimit'}, {'1': 'weekly_reset_time', '3': 5, '4': 1, '5': 9, '10': 'weeklyResetTime'}, - {'1': 'metadata', '3': 6, '4': 3, '5': 11, '6': '.iop.AgentUsageStatus.MetadataEntry', '10': 'metadata'}, + { + '1': 'metadata', + '3': 6, + '4': 3, + '5': 11, + '6': '.iop.AgentUsageStatus.MetadataEntry', + '10': 'metadata' + }, ], '3': [AgentUsageStatus_MetadataEntry$json], }; @@ -351,8 +446,8 @@ const RegisterRequest$json = { }; /// Descriptor for `RegisterRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List registerRequestDescriptor = $convert.base64Decode( - 'Cg9SZWdpc3RlclJlcXVlc3QSFAoFdG9rZW4YASABKAlSBXRva2Vu'); +final $typed_data.Uint8List registerRequestDescriptor = $convert + .base64Decode('Cg9SZWdpc3RlclJlcXVlc3QSFAoFdG9rZW4YASABKAlSBXRva2Vu'); @$core.Deprecated('Use registerResponseDescriptor instead') const RegisterResponse$json = { @@ -362,7 +457,14 @@ const RegisterResponse$json = { {'1': 'node_id', '3': 2, '4': 1, '5': 9, '10': 'nodeId'}, {'1': 'alias', '3': 3, '4': 1, '5': 9, '10': 'alias'}, {'1': 'reason', '3': 4, '4': 1, '5': 9, '10': 'reason'}, - {'1': 'config', '3': 5, '4': 1, '5': 11, '6': '.iop.NodeConfigPayload', '10': 'config'}, + { + '1': 'config', + '3': 5, + '4': 1, + '5': 11, + '6': '.iop.NodeConfigPayload', + '10': 'config' + }, ], }; @@ -376,8 +478,22 @@ final $typed_data.Uint8List registerResponseDescriptor = $convert.base64Decode( const NodeConfigPayload$json = { '1': 'NodeConfigPayload', '2': [ - {'1': 'adapters', '3': 1, '4': 3, '5': 11, '6': '.iop.AdapterConfig', '10': 'adapters'}, - {'1': 'runtime', '3': 2, '4': 1, '5': 11, '6': '.iop.NodeRuntimeConfig', '10': 'runtime'}, + { + '1': 'adapters', + '3': 1, + '4': 3, + '5': 11, + '6': '.iop.AdapterConfig', + '10': 'adapters' + }, + { + '1': 'runtime', + '3': 2, + '4': 1, + '5': 11, + '6': '.iop.NodeRuntimeConfig', + '10': 'runtime' + }, ], }; @@ -393,10 +509,41 @@ const AdapterConfig$json = { '2': [ {'1': 'type', '3': 1, '4': 1, '5': 9, '10': 'type'}, {'1': 'enabled', '3': 2, '4': 1, '5': 8, '10': 'enabled'}, - {'1': 'settings', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.Struct', '10': 'settings'}, - {'1': 'cli', '3': 4, '4': 1, '5': 11, '6': '.iop.CLIAdapterConfig', '9': 0, '10': 'cli'}, - {'1': 'ollama', '3': 5, '4': 1, '5': 11, '6': '.iop.OllamaAdapterConfig', '9': 0, '10': 'ollama'}, - {'1': 'vllm', '3': 6, '4': 1, '5': 11, '6': '.iop.VllmAdapterConfig', '9': 0, '10': 'vllm'}, + { + '1': 'settings', + '3': 3, + '4': 1, + '5': 11, + '6': '.google.protobuf.Struct', + '10': 'settings' + }, + { + '1': 'cli', + '3': 4, + '4': 1, + '5': 11, + '6': '.iop.CLIAdapterConfig', + '9': 0, + '10': 'cli' + }, + { + '1': 'ollama', + '3': 5, + '4': 1, + '5': 11, + '6': '.iop.OllamaAdapterConfig', + '9': 0, + '10': 'ollama' + }, + { + '1': 'vllm', + '3': 6, + '4': 1, + '5': 11, + '6': '.iop.VllmAdapterConfig', + '9': 0, + '10': 'vllm' + }, ], '8': [ {'1': 'config'}, @@ -415,7 +562,14 @@ final $typed_data.Uint8List adapterConfigDescriptor = $convert.base64Decode( const CLIAdapterConfig$json = { '1': 'CLIAdapterConfig', '2': [ - {'1': 'profiles', '3': 1, '4': 3, '5': 11, '6': '.iop.CLIAdapterConfig.ProfilesEntry', '10': 'profiles'}, + { + '1': 'profiles', + '3': 1, + '4': 3, + '5': 11, + '6': '.iop.CLIAdapterConfig.ProfilesEntry', + '10': 'profiles' + }, ], '3': [CLIAdapterConfig_ProfilesEntry$json], }; @@ -425,7 +579,14 @@ const CLIAdapterConfig_ProfilesEntry$json = { '1': 'ProfilesEntry', '2': [ {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'}, - {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.iop.CLIProfileConfig', '10': 'value'}, + { + '1': 'value', + '3': 2, + '4': 1, + '5': 11, + '6': '.iop.CLIProfileConfig', + '10': 'value' + }, ], '7': {'7': true}, }; @@ -446,10 +607,29 @@ const CLIProfileConfig$json = { {'1': 'env', '3': 3, '4': 3, '5': 9, '10': 'env'}, {'1': 'persistent', '3': 4, '4': 1, '5': 8, '10': 'persistent'}, {'1': 'terminal', '3': 5, '4': 1, '5': 8, '10': 'terminal'}, - {'1': 'response_idle_timeout_ms', '3': 6, '4': 1, '5': 5, '10': 'responseIdleTimeoutMs'}, - {'1': 'startup_idle_timeout_ms', '3': 7, '4': 1, '5': 5, '10': 'startupIdleTimeoutMs'}, + { + '1': 'response_idle_timeout_ms', + '3': 6, + '4': 1, + '5': 5, + '10': 'responseIdleTimeoutMs' + }, + { + '1': 'startup_idle_timeout_ms', + '3': 7, + '4': 1, + '5': 5, + '10': 'startupIdleTimeoutMs' + }, {'1': 'output_format', '3': 8, '4': 1, '5': 9, '10': 'outputFormat'}, - {'1': 'completion_marker', '3': 9, '4': 1, '5': 11, '6': '.iop.CLICompletionMarker', '10': 'completionMarker'}, + { + '1': 'completion_marker', + '3': 9, + '4': 1, + '5': 11, + '6': '.iop.CLICompletionMarker', + '10': 'completionMarker' + }, {'1': 'mode', '3': 10, '4': 1, '5': 9, '10': 'mode'}, {'1': 'resume_args', '3': 11, '4': 3, '5': 9, '10': 'resumeArgs'}, ], @@ -519,4 +699,3 @@ const NodeRuntimeConfig$json = { final $typed_data.Uint8List nodeRuntimeConfigDescriptor = $convert.base64Decode( 'ChFOb2RlUnVudGltZUNvbmZpZxIgCgtjb25jdXJyZW5jeRgBIAEoBVILY29uY3VycmVuY3kSJQ' 'oOd29ya3NwYWNlX3Jvb3QYAiABKAlSDXdvcmtzcGFjZVJvb3Q='); - diff --git a/apps/portal/lib/gen/proto/iop/runtime.pbserver.dart b/apps/client/lib/gen/proto/iop/runtime.pbserver.dart similarity index 99% rename from apps/portal/lib/gen/proto/iop/runtime.pbserver.dart rename to apps/client/lib/gen/proto/iop/runtime.pbserver.dart index 56fe1bd..3db2da5 100644 --- a/apps/portal/lib/gen/proto/iop/runtime.pbserver.dart +++ b/apps/client/lib/gen/proto/iop/runtime.pbserver.dart @@ -11,4 +11,3 @@ // ignore_for_file: unnecessary_import, unnecessary_this, unused_import export 'runtime.pb.dart'; - diff --git a/apps/portal/lib/iop_wire/portal_wire_client.dart b/apps/client/lib/iop_wire/client_wire_client.dart similarity index 66% rename from apps/portal/lib/iop_wire/portal_wire_client.dart rename to apps/client/lib/iop_wire/client_wire_client.dart index 9c8d3cd..33e7193 100644 --- a/apps/portal/lib/iop_wire/portal_wire_client.dart +++ b/apps/client/lib/iop_wire/client_wire_client.dart @@ -2,35 +2,33 @@ import 'package:proto_socket/proto_socket.dart'; import '../gen/proto/iop/control.pb.dart'; import 'parser_map.dart'; -class PortalWireClient extends WsProtobufClient { - PortalWireClient( +class ClientWireClient extends WsProtobufClient { + ClientWireClient( dynamic ws, { int heartbeatIntervalTime = 5000, int heartbeatWaitTime = 5000, }) : super( - ws, - heartbeatIntervalTime, - heartbeatWaitTime, - Map.from(portalParserMap), - ); + ws, + heartbeatIntervalTime, + heartbeatWaitTime, + Map.from(clientParserMap), + ); - /// Connect to the Control Plane Wire endpoint and return a PortalWireClient. - static Future connect( + /// Connect to the Control Plane Wire endpoint and return a ClientWireClient. + static Future connect( String host, int port, { - String path = '/portal', + String path = '/client', bool secure = false, }) async { final ws = secure ? await WsProtobufClient.connectSecure(host, port, path: path) : await WsProtobufClient.connect(host, port, path: path); - return PortalWireClient(ws); + return ClientWireClient(ws); } /// Parse a full WebSocket URL and connect. - static Future connectToUrl( - String urlString, - ) async { + static Future connectToUrl(String urlString) async { final uri = Uri.parse(urlString); final host = uri.host.isEmpty ? 'localhost' : uri.host; final isSecure = uri.scheme == 'wss'; @@ -41,17 +39,17 @@ class PortalWireClient extends WsProtobufClient { final ws = isSecure ? await WsProtobufClient.connectSecure(host, port, path: path) : await WsProtobufClient.connect(host, port, path: path); - return PortalWireClient(ws); + return ClientWireClient(ws); } /// Sends a Hello request to the Control Plane. - Future hello({ + Future hello({ required String clientId, required String clientVersion, Duration timeout = const Duration(seconds: 3), }) async { - return await sendRequest( - PortalHelloRequest() + return await sendRequest( + ClientHelloRequest() ..clientId = clientId ..clientVersion = clientVersion, timeout: timeout, diff --git a/apps/client/lib/iop_wire/parser_map.dart b/apps/client/lib/iop_wire/parser_map.dart new file mode 100644 index 0000000..3bea912 --- /dev/null +++ b/apps/client/lib/iop_wire/parser_map.dart @@ -0,0 +1,9 @@ +import 'package:protobuf/protobuf.dart'; +import '../gen/proto/iop/control.pb.dart'; + +final Map)> clientParserMap = { + 'iop.ClientHelloRequest': ClientHelloRequest.fromBuffer, + 'iop.ClientHelloResponse': ClientHelloResponse.fromBuffer, + 'ClientHelloRequest': ClientHelloRequest.fromBuffer, + 'ClientHelloResponse': ClientHelloResponse.fromBuffer, +}; diff --git a/apps/portal/lib/main.dart b/apps/client/lib/main.dart similarity index 83% rename from apps/portal/lib/main.dart rename to apps/client/lib/main.dart index 3e8f0b6..b807daf 100644 --- a/apps/portal/lib/main.dart +++ b/apps/client/lib/main.dart @@ -1,19 +1,19 @@ import 'package:flutter/material.dart'; -import 'portal_config.dart'; -import 'iop_wire/portal_wire_client.dart'; +import 'client_config.dart'; +import 'iop_wire/client_wire_client.dart'; void main() { - runApp(const IopPortalApp()); + runApp(const IopClientApp()); } -class IopPortalApp extends StatelessWidget { - final PortalWireClient? testClient; - const IopPortalApp({super.key, this.testClient}); +class IopClientApp extends StatelessWidget { + final ClientWireClient? testClient; + const IopClientApp({super.key, this.testClient}); @override Widget build(BuildContext context) { return MaterialApp( - title: 'IOP Portal', + title: 'IOP Client', debugShowCheckedModeBanner: false, theme: ThemeData.dark(useMaterial3: true).copyWith( colorScheme: ColorScheme.fromSeed( @@ -24,26 +24,27 @@ class IopPortalApp extends StatelessWidget { ), scaffoldBackgroundColor: const Color(0xFF0F172A), ), - home: PortalHomePage(testClient: testClient), + home: ClientHomePage(testClient: testClient), ); } } -class PortalHomePage extends StatefulWidget { - final PortalWireClient? testClient; - const PortalHomePage({super.key, this.testClient}); +class ClientHomePage extends StatefulWidget { + final ClientWireClient? testClient; + const ClientHomePage({super.key, this.testClient}); @override - State createState() => _PortalHomePageState(); + State createState() => _ClientHomePageState(); } -class _PortalHomePageState extends State with SingleTickerProviderStateMixin { +class _ClientHomePageState extends State + with SingleTickerProviderStateMixin { late AnimationController _pulseController; late Animation _pulseAnimation; String _wireStatus = 'Disconnected'; String _statusMessage = 'Not connected'; - PortalWireClient? _client; + ClientWireClient? _client; @override void initState() { @@ -52,7 +53,7 @@ class _PortalHomePageState extends State with SingleTickerProvid duration: const Duration(seconds: 2), vsync: this, )..repeat(reverse: true); - + _pulseAnimation = Tween(begin: 0.6, end: 1.0).animate( CurvedAnimation(parent: _pulseController, curve: Curves.easeInOut), ); @@ -74,20 +75,25 @@ class _PortalHomePageState extends State with SingleTickerProvid if (!mounted) return; setState(() { _wireStatus = 'Connecting'; - _statusMessage = 'Connecting to ${PortalConfig.controlPlaneWireUrl}...'; + _statusMessage = 'Connecting to ${ClientConfig.controlPlaneWireUrl}...'; }); try { - PortalWireClient client; + ClientWireClient client; if (widget.testClient != null) { client = widget.testClient!; } else { - client = await PortalWireClient.connectToUrl(PortalConfig.controlPlaneWireUrl); + client = await ClientWireClient.connectToUrl( + ClientConfig.controlPlaneWireUrl, + ); } _client = client; // Hello handshake - final response = await client.hello(clientId: 'portal-ui', clientVersion: '1.0.0'); + final response = await client.hello( + clientId: 'client-ui', + clientVersion: '1.0.0', + ); if (!mounted) return; setState(() { @@ -123,15 +129,15 @@ class _PortalHomePageState extends State with SingleTickerProvid gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, - colors: [ - Color(0xFF0F172A), - Color(0xFF1E1B4B), - ], + colors: [Color(0xFF0F172A), Color(0xFF1E1B4B)], ), ), child: SafeArea( child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 32.0), + padding: const EdgeInsets.symmetric( + horizontal: 24.0, + vertical: 32.0, + ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -143,7 +149,7 @@ class _PortalHomePageState extends State with SingleTickerProvid crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( - 'IOP Portal', + 'IOP Client', style: TextStyle( fontSize: 32.0, fontWeight: FontWeight.w800, @@ -167,12 +173,19 @@ class _PortalHomePageState extends State with SingleTickerProvid animation: _pulseAnimation, builder: (context, child) { return Container( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), decoration: BoxDecoration( - color: const Color(0xFF10B981).withOpacity(0.15 * _pulseAnimation.value), + color: const Color( + 0xFF10B981, + ).withOpacity(0.15 * _pulseAnimation.value), borderRadius: BorderRadius.circular(20), border: Border.all( - color: const Color(0xFF10B981).withOpacity(0.5 * _pulseAnimation.value), + color: const Color( + 0xFF10B981, + ).withOpacity(0.5 * _pulseAnimation.value), width: 1.5, ), ), @@ -204,7 +217,7 @@ class _PortalHomePageState extends State with SingleTickerProvid ], ), const SizedBox(height: 48), - + // Dashboard Cards Section Expanded( child: ListView( @@ -215,9 +228,15 @@ class _PortalHomePageState extends State with SingleTickerProvid icon: Icons.cloud_queue_rounded, accentColor: const Color(0xFF6366F1), children: [ - _buildConfigRow('Control Plane HTTP Endpoint', PortalConfig.controlPlaneHttpUrl), + _buildConfigRow( + 'Control Plane HTTP Endpoint', + ClientConfig.controlPlaneHttpUrl, + ), const SizedBox(height: 12), - _buildConfigRow('Control Plane Wire WebSocket Endpoint', PortalConfig.controlPlaneWireUrl), + _buildConfigRow( + 'Control Plane Wire WebSocket Endpoint', + ClientConfig.controlPlaneWireUrl, + ), const SizedBox(height: 16), const Divider(color: Colors.white10), const SizedBox(height: 12), @@ -238,15 +257,12 @@ class _PortalHomePageState extends State with SingleTickerProvid ], ), ), - + // Footer Center( child: Text( '© 2026 Antigravity & Toki Labs. All rights reserved.', - style: TextStyle( - fontSize: 12, - color: Colors.grey[600], - ), + style: TextStyle(fontSize: 12, color: Colors.grey[600]), ), ), ], @@ -300,7 +316,9 @@ class _PortalHomePageState extends State with SingleTickerProvid height: 12, child: CircularProgressIndicator( strokeWidth: 1.5, - valueColor: AlwaysStoppedAnimation(Color(0xFFF59E0B)), + valueColor: AlwaysStoppedAnimation( + Color(0xFFF59E0B), + ), ), ) else @@ -365,10 +383,7 @@ class _PortalHomePageState extends State with SingleTickerProvid decoration: BoxDecoration( color: const Color(0xFF1E293B).withOpacity(0.6), borderRadius: BorderRadius.circular(24), - border: Border.all( - color: Colors.white.withOpacity(0.08), - width: 1, - ), + border: Border.all(color: Colors.white.withOpacity(0.08), width: 1), ), child: ClipRRect( borderRadius: BorderRadius.circular(24), @@ -385,11 +400,7 @@ class _PortalHomePageState extends State with SingleTickerProvid color: accentColor.withOpacity(0.15), borderRadius: BorderRadius.circular(12), ), - child: Icon( - icon, - color: accentColor, - size: 24, - ), + child: Icon(icon, color: accentColor, size: 24), ), const SizedBox(width: 16), Text( diff --git a/apps/portal/linux/.gitignore b/apps/client/linux/.gitignore similarity index 100% rename from apps/portal/linux/.gitignore rename to apps/client/linux/.gitignore diff --git a/apps/portal/linux/CMakeLists.txt b/apps/client/linux/CMakeLists.txt similarity index 98% rename from apps/portal/linux/CMakeLists.txt rename to apps/client/linux/CMakeLists.txt index a5f6687..b7008b7 100644 --- a/apps/portal/linux/CMakeLists.txt +++ b/apps/client/linux/CMakeLists.txt @@ -4,10 +4,10 @@ project(runner LANGUAGES CXX) # The name of the executable created for the application. Change this to change # the on-disk name of your application. -set(BINARY_NAME "iop_portal") +set(BINARY_NAME "iop_client") # The unique GTK application identifier for this application. See: # https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.iop_portal") +set(APPLICATION_ID "com.example.iop_client") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. diff --git a/apps/portal/linux/flutter/CMakeLists.txt b/apps/client/linux/flutter/CMakeLists.txt similarity index 100% rename from apps/portal/linux/flutter/CMakeLists.txt rename to apps/client/linux/flutter/CMakeLists.txt diff --git a/apps/portal/linux/flutter/generated_plugin_registrant.cc b/apps/client/linux/flutter/generated_plugin_registrant.cc similarity index 100% rename from apps/portal/linux/flutter/generated_plugin_registrant.cc rename to apps/client/linux/flutter/generated_plugin_registrant.cc diff --git a/apps/portal/linux/flutter/generated_plugin_registrant.h b/apps/client/linux/flutter/generated_plugin_registrant.h similarity index 100% rename from apps/portal/linux/flutter/generated_plugin_registrant.h rename to apps/client/linux/flutter/generated_plugin_registrant.h diff --git a/apps/portal/linux/flutter/generated_plugins.cmake b/apps/client/linux/flutter/generated_plugins.cmake similarity index 100% rename from apps/portal/linux/flutter/generated_plugins.cmake rename to apps/client/linux/flutter/generated_plugins.cmake diff --git a/apps/portal/linux/runner/CMakeLists.txt b/apps/client/linux/runner/CMakeLists.txt similarity index 100% rename from apps/portal/linux/runner/CMakeLists.txt rename to apps/client/linux/runner/CMakeLists.txt diff --git a/apps/portal/linux/runner/main.cc b/apps/client/linux/runner/main.cc similarity index 100% rename from apps/portal/linux/runner/main.cc rename to apps/client/linux/runner/main.cc diff --git a/apps/portal/linux/runner/my_application.cc b/apps/client/linux/runner/my_application.cc similarity index 98% rename from apps/portal/linux/runner/my_application.cc rename to apps/client/linux/runner/my_application.cc index d4da2e0..9ceba49 100644 --- a/apps/portal/linux/runner/my_application.cc +++ b/apps/client/linux/runner/my_application.cc @@ -45,11 +45,11 @@ static void my_application_activate(GApplication* application) { if (use_header_bar) { GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "iop_portal"); + gtk_header_bar_set_title(header_bar, "iop_client"); gtk_header_bar_set_show_close_button(header_bar, TRUE); gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); } else { - gtk_window_set_title(window, "iop_portal"); + gtk_window_set_title(window, "iop_client"); } gtk_window_set_default_size(window, 1280, 720); diff --git a/apps/portal/linux/runner/my_application.h b/apps/client/linux/runner/my_application.h similarity index 100% rename from apps/portal/linux/runner/my_application.h rename to apps/client/linux/runner/my_application.h diff --git a/apps/portal/macos/.gitignore b/apps/client/macos/.gitignore similarity index 100% rename from apps/portal/macos/.gitignore rename to apps/client/macos/.gitignore diff --git a/apps/portal/macos/Flutter/Flutter-Debug.xcconfig b/apps/client/macos/Flutter/Flutter-Debug.xcconfig similarity index 100% rename from apps/portal/macos/Flutter/Flutter-Debug.xcconfig rename to apps/client/macos/Flutter/Flutter-Debug.xcconfig diff --git a/apps/portal/macos/Flutter/Flutter-Release.xcconfig b/apps/client/macos/Flutter/Flutter-Release.xcconfig similarity index 100% rename from apps/portal/macos/Flutter/Flutter-Release.xcconfig rename to apps/client/macos/Flutter/Flutter-Release.xcconfig diff --git a/apps/portal/macos/Flutter/GeneratedPluginRegistrant.swift b/apps/client/macos/Flutter/GeneratedPluginRegistrant.swift similarity index 100% rename from apps/portal/macos/Flutter/GeneratedPluginRegistrant.swift rename to apps/client/macos/Flutter/GeneratedPluginRegistrant.swift diff --git a/apps/portal/macos/Runner.xcodeproj/project.pbxproj b/apps/client/macos/Runner.xcodeproj/project.pbxproj similarity index 97% rename from apps/portal/macos/Runner.xcodeproj/project.pbxproj rename to apps/client/macos/Runner.xcodeproj/project.pbxproj index cb3c053..1f2af1e 100644 --- a/apps/portal/macos/Runner.xcodeproj/project.pbxproj +++ b/apps/client/macos/Runner.xcodeproj/project.pbxproj @@ -64,7 +64,7 @@ 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* iop_portal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "iop_portal.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10ED2044A3C60003C045 /* iop_client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "iop_client.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; @@ -131,7 +131,7 @@ 33CC10EE2044A3C60003C045 /* Products */ = { isa = PBXGroup; children = ( - 33CC10ED2044A3C60003C045 /* iop_portal.app */, + 33CC10ED2044A3C60003C045 /* iop_client.app */, 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, ); name = Products; @@ -217,7 +217,7 @@ ); name = Runner; productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* iop_portal.app */; + productReference = 33CC10ED2044A3C60003C045 /* iop_client.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -385,10 +385,10 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.iopPortal.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = com.example.iopClient.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iop_portal.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iop_portal"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iop_client.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iop_client"; }; name = Debug; }; @@ -399,10 +399,10 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.iopPortal.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = com.example.iopClient.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iop_portal.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iop_portal"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iop_client.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iop_client"; }; name = Release; }; @@ -413,10 +413,10 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.iopPortal.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = com.example.iopClient.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iop_portal.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iop_portal"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iop_client.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iop_client"; }; name = Profile; }; diff --git a/apps/portal/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/apps/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from apps/portal/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to apps/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/apps/portal/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/apps/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 95% rename from apps/portal/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to apps/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 19a2ecf..0a7aa7f 100644 --- a/apps/portal/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/apps/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -15,7 +15,7 @@ @@ -31,7 +31,7 @@ @@ -66,7 +66,7 @@ @@ -83,7 +83,7 @@ diff --git a/apps/portal/macos/Runner.xcworkspace/contents.xcworkspacedata b/apps/client/macos/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from apps/portal/macos/Runner.xcworkspace/contents.xcworkspacedata rename to apps/client/macos/Runner.xcworkspace/contents.xcworkspacedata diff --git a/apps/portal/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/apps/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from apps/portal/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to apps/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/apps/portal/macos/Runner/AppDelegate.swift b/apps/client/macos/Runner/AppDelegate.swift similarity index 100% rename from apps/portal/macos/Runner/AppDelegate.swift rename to apps/client/macos/Runner/AppDelegate.swift diff --git a/apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png similarity index 100% rename from apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png rename to apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png diff --git a/apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png similarity index 100% rename from apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png rename to apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png diff --git a/apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png similarity index 100% rename from apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png rename to apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png diff --git a/apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png similarity index 100% rename from apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png rename to apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png diff --git a/apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png similarity index 100% rename from apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png rename to apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png diff --git a/apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png similarity index 100% rename from apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png rename to apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png diff --git a/apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png similarity index 100% rename from apps/portal/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png rename to apps/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png diff --git a/apps/portal/macos/Runner/Base.lproj/MainMenu.xib b/apps/client/macos/Runner/Base.lproj/MainMenu.xib similarity index 100% rename from apps/portal/macos/Runner/Base.lproj/MainMenu.xib rename to apps/client/macos/Runner/Base.lproj/MainMenu.xib diff --git a/apps/portal/macos/Runner/Configs/AppInfo.xcconfig b/apps/client/macos/Runner/Configs/AppInfo.xcconfig similarity index 87% rename from apps/portal/macos/Runner/Configs/AppInfo.xcconfig rename to apps/client/macos/Runner/Configs/AppInfo.xcconfig index 427c7f4..7bb4ac9 100644 --- a/apps/portal/macos/Runner/Configs/AppInfo.xcconfig +++ b/apps/client/macos/Runner/Configs/AppInfo.xcconfig @@ -5,10 +5,10 @@ // 'flutter create' template. // The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = iop_portal +PRODUCT_NAME = iop_client // The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.example.iopPortal +PRODUCT_BUNDLE_IDENTIFIER = com.example.iopClient // The copyright displayed in application information PRODUCT_COPYRIGHT = Copyright © 2026 com.example. All rights reserved. diff --git a/apps/portal/macos/Runner/Configs/Debug.xcconfig b/apps/client/macos/Runner/Configs/Debug.xcconfig similarity index 100% rename from apps/portal/macos/Runner/Configs/Debug.xcconfig rename to apps/client/macos/Runner/Configs/Debug.xcconfig diff --git a/apps/portal/macos/Runner/Configs/Release.xcconfig b/apps/client/macos/Runner/Configs/Release.xcconfig similarity index 100% rename from apps/portal/macos/Runner/Configs/Release.xcconfig rename to apps/client/macos/Runner/Configs/Release.xcconfig diff --git a/apps/portal/macos/Runner/Configs/Warnings.xcconfig b/apps/client/macos/Runner/Configs/Warnings.xcconfig similarity index 100% rename from apps/portal/macos/Runner/Configs/Warnings.xcconfig rename to apps/client/macos/Runner/Configs/Warnings.xcconfig diff --git a/apps/portal/macos/Runner/DebugProfile.entitlements b/apps/client/macos/Runner/DebugProfile.entitlements similarity index 100% rename from apps/portal/macos/Runner/DebugProfile.entitlements rename to apps/client/macos/Runner/DebugProfile.entitlements diff --git a/apps/portal/macos/Runner/Info.plist b/apps/client/macos/Runner/Info.plist similarity index 100% rename from apps/portal/macos/Runner/Info.plist rename to apps/client/macos/Runner/Info.plist diff --git a/apps/portal/macos/Runner/MainFlutterWindow.swift b/apps/client/macos/Runner/MainFlutterWindow.swift similarity index 100% rename from apps/portal/macos/Runner/MainFlutterWindow.swift rename to apps/client/macos/Runner/MainFlutterWindow.swift diff --git a/apps/portal/macos/Runner/Release.entitlements b/apps/client/macos/Runner/Release.entitlements similarity index 100% rename from apps/portal/macos/Runner/Release.entitlements rename to apps/client/macos/Runner/Release.entitlements diff --git a/apps/portal/macos/RunnerTests/RunnerTests.swift b/apps/client/macos/RunnerTests/RunnerTests.swift similarity index 100% rename from apps/portal/macos/RunnerTests/RunnerTests.swift rename to apps/client/macos/RunnerTests/RunnerTests.swift diff --git a/apps/portal/nginx.conf b/apps/client/nginx.conf similarity index 100% rename from apps/portal/nginx.conf rename to apps/client/nginx.conf diff --git a/apps/portal/pubspec.lock b/apps/client/pubspec.lock similarity index 98% rename from apps/portal/pubspec.lock rename to apps/client/pubspec.lock index 0b1079d..ca4b607 100644 --- a/apps/portal/pubspec.lock +++ b/apps/client/pubspec.lock @@ -158,10 +158,10 @@ packages: dependency: "direct main" description: name: protobuf - sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" + sha256: "75ec242d22e950bdcc79ee38dd520ce4ee0bc491d7fadc4ea47694604d22bf06" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "6.0.0" sky_engine: dependency: transitive description: flutter diff --git a/apps/portal/pubspec.yaml b/apps/client/pubspec.yaml similarity index 99% rename from apps/portal/pubspec.yaml rename to apps/client/pubspec.yaml index 587802d..4b8efce 100644 --- a/apps/portal/pubspec.yaml +++ b/apps/client/pubspec.yaml @@ -1,4 +1,4 @@ -name: iop_portal +name: iop_client description: "A new Flutter project." # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. @@ -35,7 +35,7 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - protobuf: ^3.1.0 + protobuf: ^6.0.0 fixnum: ^1.1.0 proto_socket: path: ../../../proto-socket/dart diff --git a/apps/client/test/client_config_test.dart b/apps/client/test/client_config_test.dart new file mode 100644 index 0000000..c39274c --- /dev/null +++ b/apps/client/test/client_config_test.dart @@ -0,0 +1,9 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:iop_client/client_config.dart'; + +void main() { + test('ClientConfig default values', () { + expect(ClientConfig.controlPlaneHttpUrl, 'http://localhost:9080'); + expect(ClientConfig.controlPlaneWireUrl, 'ws://localhost:19080/client'); + }); +} diff --git a/apps/portal/test/iop_wire/portal_wire_client_test.dart b/apps/client/test/iop_wire/client_wire_client_test.dart similarity index 65% rename from apps/portal/test/iop_wire/portal_wire_client_test.dart rename to apps/client/test/iop_wire/client_wire_client_test.dart index 43b8551..f5ee02d 100644 --- a/apps/portal/test/iop_wire/portal_wire_client_test.dart +++ b/apps/client/test/iop_wire/client_wire_client_test.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; -import 'package:iop_portal/iop_wire/portal_wire_client.dart'; -import 'package:iop_portal/gen/proto/iop/control.pb.dart'; +import 'package:iop_client/iop_wire/client_wire_client.dart'; +import 'package:iop_client/gen/proto/iop/control.pb.dart'; import 'package:protobuf/protobuf.dart'; import 'package:fixnum/fixnum.dart'; @@ -30,30 +30,30 @@ class FakeWebSocket implements WebSocket { } } -class FakePortalWireClient extends PortalWireClient { - FakePortalWireClient() : super(FakeWebSocket()); +class FakeClientWireClient extends ClientWireClient { + FakeClientWireClient() : super(FakeWebSocket()); bool helloCalled = false; - late PortalHelloRequest lastRequest; + late ClientHelloRequest lastRequest; @override bool get isAlive => true; @override - Future sendRequest( - Req data, { - Duration timeout = const Duration(seconds: 30), - }) async { - if (data is PortalHelloRequest) { + Future sendRequest< + Req extends GeneratedMessage, + Res extends GeneratedMessage + >(Req data, {Duration timeout = const Duration(seconds: 30)}) async { + if (data is ClientHelloRequest) { helloCalled = true; lastRequest = data; - - final response = PortalHelloResponse() + + final response = ClientHelloResponse() ..ready = true ..protocol = 'iop-wire' ..serverTimeUnixNano = Int64(123456789) ..message = 'Welcome'; - + return response as Res; } throw UnimplementedError(); @@ -61,15 +61,18 @@ class FakePortalWireClient extends PortalWireClient { } void main() { - test('PortalWireClient hello request mapping', () async { - final client = FakePortalWireClient(); - - final response = await client.hello(clientId: 'client-123', clientVersion: '1.0.0'); - + test('ClientWireClient hello request mapping', () async { + final client = FakeClientWireClient(); + + final response = await client.hello( + clientId: 'client-123', + clientVersion: '1.0.0', + ); + expect(client.helloCalled, isTrue); expect(client.lastRequest.clientId, equals('client-123')); expect(client.lastRequest.clientVersion, equals('1.0.0')); - + expect(response.ready, isTrue); expect(response.protocol, equals('iop-wire')); expect(response.serverTimeUnixNano, equals(Int64(123456789))); diff --git a/apps/portal/test/iop_wire/generated_proto_import_test.dart b/apps/client/test/iop_wire/generated_proto_import_test.dart similarity index 73% rename from apps/portal/test/iop_wire/generated_proto_import_test.dart rename to apps/client/test/iop_wire/generated_proto_import_test.dart index d24ee97..301c491 100644 --- a/apps/portal/test/iop_wire/generated_proto_import_test.dart +++ b/apps/client/test/iop_wire/generated_proto_import_test.dart @@ -1,22 +1,22 @@ import 'package:flutter_test/flutter_test.dart'; -import 'package:iop_portal/gen/proto/iop/control.pb.dart'; -import 'package:iop_portal/gen/proto/iop/runtime.pb.dart'; -import 'package:iop_portal/gen/proto/iop/node.pb.dart'; -import 'package:iop_portal/gen/proto/iop/job.pb.dart'; -import 'package:iop_portal/gen/google/protobuf/struct.pb.dart'; +import 'package:iop_client/gen/proto/iop/control.pb.dart'; +import 'package:iop_client/gen/proto/iop/runtime.pb.dart'; +import 'package:iop_client/gen/proto/iop/node.pb.dart'; +import 'package:iop_client/gen/proto/iop/job.pb.dart'; +import 'package:protobuf/well_known_types/google/protobuf/struct.pb.dart'; void main() { test('Generated proto compile guard and field verification', () { // Verify control.pb.dart - final helloReq = PortalHelloRequest()..clientId = 'portal-test'; - expect(helloReq.clientId, equals('portal-test')); + final helloReq = ClientHelloRequest()..clientId = 'client-test'; + expect(helloReq.clientId, equals('client-test')); // Verify runtime.pb.dart with google.protobuf.Struct fields final runReq = RunRequest() ..runId = 'run-999' ..policy = Struct() ..input = Struct(); - + expect(runReq.runId, equals('run-999')); expect(runReq.policy, isNotNull); expect(runReq.input, isNotNull); diff --git a/apps/client/test/iop_wire/parser_map_test.dart b/apps/client/test/iop_wire/parser_map_test.dart new file mode 100644 index 0000000..7315847 --- /dev/null +++ b/apps/client/test/iop_wire/parser_map_test.dart @@ -0,0 +1,40 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:iop_client/iop_wire/parser_map.dart'; +import 'package:iop_client/gen/proto/iop/control.pb.dart'; + +void main() { + test( + 'Parser map should contain ClientHelloRequest and ClientHelloResponse', + () { + expect(clientParserMap.containsKey('iop.ClientHelloRequest'), isTrue); + expect(clientParserMap.containsKey('iop.ClientHelloResponse'), isTrue); + expect(clientParserMap.containsKey('ClientHelloRequest'), isTrue); + expect(clientParserMap.containsKey('ClientHelloResponse'), isTrue); + + // Verify parser works + final req = ClientHelloRequest() + ..clientId = 'test-client' + ..clientVersion = '1.0.0'; + final reqBytes = req.writeToBuffer(); + + final parserReq = clientParserMap['ClientHelloRequest']; + expect(parserReq, isNotNull); + final parsedReq = parserReq!(reqBytes) as ClientHelloRequest; + expect(parsedReq.clientId, equals('test-client')); + expect(parsedReq.clientVersion, equals('1.0.0')); + + final res = ClientHelloResponse() + ..ready = true + ..protocol = 'proto' + ..message = 'welcome'; + final resBytes = res.writeToBuffer(); + + final parserRes = clientParserMap['ClientHelloResponse']; + expect(parserRes, isNotNull); + final parsedRes = parserRes!(resBytes) as ClientHelloResponse; + expect(parsedRes.ready, isTrue); + expect(parsedRes.protocol, equals('proto')); + expect(parsedRes.message, equals('welcome')); + }, + ); +} diff --git a/apps/client/test/widget_test.dart b/apps/client/test/widget_test.dart new file mode 100644 index 0000000..aa02c58 --- /dev/null +++ b/apps/client/test/widget_test.dart @@ -0,0 +1,111 @@ +import 'dart:async'; +import 'dart:io'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:iop_client/main.dart'; +import 'package:iop_client/client_config.dart'; +import 'package:iop_client/iop_wire/client_wire_client.dart'; +import 'package:iop_client/gen/proto/iop/control.pb.dart'; +import 'package:protobuf/protobuf.dart'; +import 'package:fixnum/fixnum.dart'; + +class FakeWebSocket implements WebSocket { + final _controller = StreamController(); + + @override + StreamSubscription listen( + void Function(dynamic event)? onData, { + Function? onError, + void Function()? onDone, + bool? cancelOnError, + }) { + return _controller.stream.listen( + onData, + onError: onError, + onDone: onDone, + cancelOnError: cancelOnError, + ); + } + + @override + dynamic noSuchMethod(Invocation invocation) { + return null; + } +} + +class FakeClientWireClient extends ClientWireClient { + final bool shouldSuccess; + final String mockMessage; + + FakeClientWireClient({ + this.shouldSuccess = true, + this.mockMessage = 'Welcome to Toki CP!', + }) : super(FakeWebSocket()); + + @override + bool get isAlive => true; + + @override + Future sendRequest< + Req extends GeneratedMessage, + Res extends GeneratedMessage + >(Req data, {Duration timeout = const Duration(seconds: 30)}) async { + if (data is ClientHelloRequest) { + final response = ClientHelloResponse() + ..ready = shouldSuccess + ..protocol = 'iop-wire-v1' + ..serverTimeUnixNano = Int64(1716584400) + ..message = mockMessage; + return response as Res; + } + throw UnimplementedError(); + } +} + +void main() { + testWidgets('Client App basic rendering and success handshake test', ( + WidgetTester tester, + ) async { + final fakeClient = FakeClientWireClient(shouldSuccess: true); + + await tester.pumpWidget(IopClientApp(testClient: fakeClient)); + await tester.pump(); + await tester.pump(const Duration(milliseconds: 100)); + + expect(find.text('IOP Client'), findsOneWidget); + expect(find.text('HEALTH: OK'), findsOneWidget); + + expect( + find.text(ClientConfig.controlPlaneHttpUrl, findRichText: true), + findsOneWidget, + ); + expect( + find.text(ClientConfig.controlPlaneWireUrl, findRichText: true), + findsOneWidget, + ); + + expect(find.text('Connected'), findsOneWidget); + expect( + find.textContaining('Handshake Success: Welcome to Toki CP!'), + findsOneWidget, + ); + }); + + testWidgets('Client App connection error state test', ( + WidgetTester tester, + ) async { + final fakeClient = FakeClientWireClient( + shouldSuccess: false, + mockMessage: 'Invalid Version', + ); + + await tester.pumpWidget(IopClientApp(testClient: fakeClient)); + await tester.pump(); + await tester.pump(const Duration(milliseconds: 100)); + + expect(find.text('Error'), findsOneWidget); + expect( + find.textContaining('Handshake Rejected: Invalid Version'), + findsOneWidget, + ); + }); +} diff --git a/apps/portal/web/favicon.png b/apps/client/web/favicon.png similarity index 100% rename from apps/portal/web/favicon.png rename to apps/client/web/favicon.png diff --git a/apps/portal/web/icons/Icon-192.png b/apps/client/web/icons/Icon-192.png similarity index 100% rename from apps/portal/web/icons/Icon-192.png rename to apps/client/web/icons/Icon-192.png diff --git a/apps/portal/web/icons/Icon-512.png b/apps/client/web/icons/Icon-512.png similarity index 100% rename from apps/portal/web/icons/Icon-512.png rename to apps/client/web/icons/Icon-512.png diff --git a/apps/portal/web/icons/Icon-maskable-192.png b/apps/client/web/icons/Icon-maskable-192.png similarity index 100% rename from apps/portal/web/icons/Icon-maskable-192.png rename to apps/client/web/icons/Icon-maskable-192.png diff --git a/apps/portal/web/icons/Icon-maskable-512.png b/apps/client/web/icons/Icon-maskable-512.png similarity index 100% rename from apps/portal/web/icons/Icon-maskable-512.png rename to apps/client/web/icons/Icon-maskable-512.png diff --git a/apps/portal/web/index.html b/apps/client/web/index.html similarity index 93% rename from apps/portal/web/index.html rename to apps/client/web/index.html index b6b9ce1..7e682ea 100644 --- a/apps/portal/web/index.html +++ b/apps/client/web/index.html @@ -23,13 +23,13 @@ - + - iop_portal + iop_client diff --git a/apps/portal/web/manifest.json b/apps/client/web/manifest.json similarity index 93% rename from apps/portal/web/manifest.json rename to apps/client/web/manifest.json index 6ab732f..c4994f7 100644 --- a/apps/portal/web/manifest.json +++ b/apps/client/web/manifest.json @@ -1,6 +1,6 @@ { - "name": "iop_portal", - "short_name": "iop_portal", + "name": "iop_client", + "short_name": "iop_client", "start_url": ".", "display": "standalone", "background_color": "#0175C2", diff --git a/apps/portal/windows/.gitignore b/apps/client/windows/.gitignore similarity index 100% rename from apps/portal/windows/.gitignore rename to apps/client/windows/.gitignore diff --git a/apps/portal/windows/CMakeLists.txt b/apps/client/windows/CMakeLists.txt similarity index 98% rename from apps/portal/windows/CMakeLists.txt rename to apps/client/windows/CMakeLists.txt index c1c5459..f614438 100644 --- a/apps/portal/windows/CMakeLists.txt +++ b/apps/client/windows/CMakeLists.txt @@ -1,10 +1,10 @@ # Project-level configuration. cmake_minimum_required(VERSION 3.14) -project(iop_portal LANGUAGES CXX) +project(iop_client LANGUAGES CXX) # The name of the executable created for the application. Change this to change # the on-disk name of your application. -set(BINARY_NAME "iop_portal") +set(BINARY_NAME "iop_client") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. diff --git a/apps/portal/windows/flutter/CMakeLists.txt b/apps/client/windows/flutter/CMakeLists.txt similarity index 100% rename from apps/portal/windows/flutter/CMakeLists.txt rename to apps/client/windows/flutter/CMakeLists.txt diff --git a/apps/portal/windows/flutter/generated_plugin_registrant.cc b/apps/client/windows/flutter/generated_plugin_registrant.cc similarity index 100% rename from apps/portal/windows/flutter/generated_plugin_registrant.cc rename to apps/client/windows/flutter/generated_plugin_registrant.cc diff --git a/apps/portal/windows/flutter/generated_plugin_registrant.h b/apps/client/windows/flutter/generated_plugin_registrant.h similarity index 100% rename from apps/portal/windows/flutter/generated_plugin_registrant.h rename to apps/client/windows/flutter/generated_plugin_registrant.h diff --git a/apps/portal/windows/flutter/generated_plugins.cmake b/apps/client/windows/flutter/generated_plugins.cmake similarity index 100% rename from apps/portal/windows/flutter/generated_plugins.cmake rename to apps/client/windows/flutter/generated_plugins.cmake diff --git a/apps/portal/windows/runner/CMakeLists.txt b/apps/client/windows/runner/CMakeLists.txt similarity index 100% rename from apps/portal/windows/runner/CMakeLists.txt rename to apps/client/windows/runner/CMakeLists.txt diff --git a/apps/portal/windows/runner/Runner.rc b/apps/client/windows/runner/Runner.rc similarity index 92% rename from apps/portal/windows/runner/Runner.rc rename to apps/client/windows/runner/Runner.rc index 34e6f5b..2a9cfe1 100644 --- a/apps/portal/windows/runner/Runner.rc +++ b/apps/client/windows/runner/Runner.rc @@ -90,12 +90,12 @@ BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "iop_portal" "\0" + VALUE "FileDescription", "iop_client" "\0" VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "iop_portal" "\0" + VALUE "InternalName", "iop_client" "\0" VALUE "LegalCopyright", "Copyright (C) 2026 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "iop_portal.exe" "\0" - VALUE "ProductName", "iop_portal" "\0" + VALUE "OriginalFilename", "iop_client.exe" "\0" + VALUE "ProductName", "iop_client" "\0" VALUE "ProductVersion", VERSION_AS_STRING "\0" END END diff --git a/apps/portal/windows/runner/flutter_window.cpp b/apps/client/windows/runner/flutter_window.cpp similarity index 100% rename from apps/portal/windows/runner/flutter_window.cpp rename to apps/client/windows/runner/flutter_window.cpp diff --git a/apps/portal/windows/runner/flutter_window.h b/apps/client/windows/runner/flutter_window.h similarity index 100% rename from apps/portal/windows/runner/flutter_window.h rename to apps/client/windows/runner/flutter_window.h diff --git a/apps/portal/windows/runner/main.cpp b/apps/client/windows/runner/main.cpp similarity index 95% rename from apps/portal/windows/runner/main.cpp rename to apps/client/windows/runner/main.cpp index a45296d..672ab22 100644 --- a/apps/portal/windows/runner/main.cpp +++ b/apps/client/windows/runner/main.cpp @@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, FlutterWindow window(project); Win32Window::Point origin(10, 10); Win32Window::Size size(1280, 720); - if (!window.Create(L"iop_portal", origin, size)) { + if (!window.Create(L"iop_client", origin, size)) { return EXIT_FAILURE; } window.SetQuitOnClose(true); diff --git a/apps/portal/windows/runner/resource.h b/apps/client/windows/runner/resource.h similarity index 100% rename from apps/portal/windows/runner/resource.h rename to apps/client/windows/runner/resource.h diff --git a/apps/portal/windows/runner/resources/app_icon.ico b/apps/client/windows/runner/resources/app_icon.ico similarity index 100% rename from apps/portal/windows/runner/resources/app_icon.ico rename to apps/client/windows/runner/resources/app_icon.ico diff --git a/apps/portal/windows/runner/runner.exe.manifest b/apps/client/windows/runner/runner.exe.manifest similarity index 100% rename from apps/portal/windows/runner/runner.exe.manifest rename to apps/client/windows/runner/runner.exe.manifest diff --git a/apps/portal/windows/runner/utils.cpp b/apps/client/windows/runner/utils.cpp similarity index 100% rename from apps/portal/windows/runner/utils.cpp rename to apps/client/windows/runner/utils.cpp diff --git a/apps/portal/windows/runner/utils.h b/apps/client/windows/runner/utils.h similarity index 100% rename from apps/portal/windows/runner/utils.h rename to apps/client/windows/runner/utils.h diff --git a/apps/portal/windows/runner/win32_window.cpp b/apps/client/windows/runner/win32_window.cpp similarity index 100% rename from apps/portal/windows/runner/win32_window.cpp rename to apps/client/windows/runner/win32_window.cpp diff --git a/apps/portal/windows/runner/win32_window.h b/apps/client/windows/runner/win32_window.h similarity index 100% rename from apps/portal/windows/runner/win32_window.h rename to apps/client/windows/runner/win32_window.h diff --git a/apps/control-plane/README.md b/apps/control-plane/README.md index 21495ff..6e99fd5 100644 --- a/apps/control-plane/README.md +++ b/apps/control-plane/README.md @@ -6,7 +6,7 @@ 현재 Control Plane은 실행 가능한 최소 서버 스캐폴드 단계다. Node를 직접 등록하거나 직접 스케줄링하는 계층으로 확정하지 않는다. Control Plane은 Edge를 통해 시스템을 제어하고, Edge가 자신의 로컬 런타임 상태와 Node registry를 운영하는 방향을 따른다. -IOP의 프론트엔드는 Control Plane 내부 UI가 아니라 Flutter-first Portal로 둔다. Portal의 기준 구현은 `apps/portal`의 Flutter 앱이고, web 배포는 `apps/portal/Dockerfile`이 빌드한 Flutter Web 산출물을 compose `web` 서비스에서 nginx로 정적 서빙한다. Portal-Control Plane 통신은 proto-socket WebSocket/WSS를 우선하고, Control Plane-Edge 통신은 edge-node에서 사용 중인 proto-socket 흐름을 IOP Wire Protocol 기준으로 확장한다. `net/http`는 health/readiness/bootstrap 같은 보조 endpoint 용도로만 둔다. +IOP의 프론트엔드는 Control Plane 내부 UI가 아니라 Flutter-first Client로 둔다. Client의 기준 구현은 `apps/client`의 Flutter 앱이고, web 배포는 `apps/client/Dockerfile`이 빌드한 Flutter Web 산출물을 compose `web` 서비스에서 nginx로 정적 서빙한다. Client-Control Plane 통신은 proto-socket WebSocket/WSS를 우선하고, Control Plane-Edge 통신은 edge-node에서 사용 중인 proto-socket 흐름을 IOP Wire Protocol 기준으로 확장한다. `net/http`는 health/readiness/bootstrap 같은 보조 endpoint 용도로만 둔다. ## 현재 실행 표면 diff --git a/apps/control-plane/cmd/control-plane/main.go b/apps/control-plane/cmd/control-plane/main.go index c9fe112..fe25f14 100644 --- a/apps/control-plane/cmd/control-plane/main.go +++ b/apps/control-plane/cmd/control-plane/main.go @@ -149,14 +149,14 @@ func run(ctx context.Context, cfg controlPlaneConfig, logger *zap.Logger) error if cfg.Redis.URL != "" { logger.Info("control-plane redis configured", redisLogFields(cfg.Redis.URL, cfg.Redis.KeyPrefix)...) } - portalServer, err := wire.NewPortalServer(cfg.Server.WireListen, logger) + clientServer, err := wire.NewClientServer(cfg.Server.WireListen, logger) if err != nil { return fmt.Errorf("wire server: %w", err) } - if err := portalServer.Start(ctx); err != nil { + if err := clientServer.Start(ctx); err != nil { return fmt.Errorf("start wire server: %w", err) } - defer func() { _ = portalServer.Stop() }() + defer func() { _ = clientServer.Stop() }() server := &http.Server{ Addr: cfg.Server.Listen, diff --git a/apps/control-plane/internal/wire/portal.go b/apps/control-plane/internal/wire/client.go similarity index 60% rename from apps/control-plane/internal/wire/portal.go rename to apps/control-plane/internal/wire/client.go index 5b6c728..22d3226 100644 --- a/apps/control-plane/internal/wire/portal.go +++ b/apps/control-plane/internal/wire/client.go @@ -11,20 +11,20 @@ import ( "google.golang.org/protobuf/proto" "nhooyr.io/websocket" - iop "iop/proto/gen/iop" proto_socket "git.toki-labs.com/toki/proto-socket/go" + iop "iop/proto/gen/iop" ) -// PortalServer wraps the proto-socket WebSocket server for Portal-Control Plane communication. -type PortalServer struct { +// ClientServer wraps the proto-socket WebSocket server for Client-Control Plane communication. +type ClientServer struct { server *proto_socket.WsServer logger *zap.Logger host string port int } -// NewPortalServer creates a new PortalServer instance listening on the specified address. -func NewPortalServer(listenAddr string, logger *zap.Logger) (*PortalServer, error) { +// NewClientServer creates a new ClientServer instance listening on the specified address. +func NewClientServer(listenAddr string, logger *zap.Logger) (*ClientServer, error) { host, portStr, err := net.SplitHostPort(listenAddr) if err != nil { return nil, fmt.Errorf("invalid listen address %q: %w", listenAddr, err) @@ -35,12 +35,12 @@ func NewPortalServer(listenAddr string, logger *zap.Logger) (*PortalServer, erro } parserMap := proto_socket.ParserMap{ - proto_socket.TypeNameOf(&iop.PortalHelloRequest{}): func(b []byte) (proto.Message, error) { - req := &iop.PortalHelloRequest{} + proto_socket.TypeNameOf(&iop.ClientHelloRequest{}): func(b []byte) (proto.Message, error) { + req := &iop.ClientHelloRequest{} return req, proto.Unmarshal(b, req) }, - proto_socket.TypeNameOf(&iop.PortalHelloResponse{}): func(b []byte) (proto.Message, error) { - res := &iop.PortalHelloResponse{} + proto_socket.TypeNameOf(&iop.ClientHelloResponse{}): func(b []byte) (proto.Message, error) { + res := &iop.ClientHelloResponse{} return res, proto.Unmarshal(b, res) }, } @@ -56,15 +56,15 @@ func NewPortalServer(listenAddr string, logger *zap.Logger) (*PortalServer, erro }, } - wsServer := proto_socket.NewWsServerWithOptions(host, port, "/portal", opts, func(conn *websocket.Conn) *proto_socket.WsClient { + wsServer := proto_socket.NewWsServerWithOptions(host, port, "/client", opts, func(conn *websocket.Conn) *proto_socket.WsClient { client := proto_socket.NewWsClient(conn, proto_socket.DefaultHeartbeatIntervalSec, proto_socket.DefaultHeartbeatWaitSec, parserMap) - proto_socket.AddRequestListenerTyped(&client.Communicator, func(req *iop.PortalHelloRequest) (*iop.PortalHelloResponse, error) { - logger.Info("portal client hello request received", + proto_socket.AddRequestListenerTyped(&client.Communicator, func(req *iop.ClientHelloRequest) (*iop.ClientHelloResponse, error) { + logger.Info("client hello request received", zap.String("client_id", req.ClientId), zap.String("client_version", req.ClientVersion), ) - return &iop.PortalHelloResponse{ + return &iop.ClientHelloResponse{ Ready: true, Protocol: Protocol, ServerTimeUnixNano: time.Now().UnixNano(), @@ -76,10 +76,10 @@ func NewPortalServer(listenAddr string, logger *zap.Logger) (*PortalServer, erro }) wsServer.OnClientConnected = func(client *proto_socket.WsClient) { - logger.Info("portal client connected via proto-socket WS") + logger.Info("client connected via proto-socket WS") } - return &PortalServer{ + return &ClientServer{ server: wsServer, logger: logger, host: host, @@ -87,28 +87,28 @@ func NewPortalServer(listenAddr string, logger *zap.Logger) (*PortalServer, erro }, nil } -// Start starts the portal wire WebSocket server. -func (s *PortalServer) Start(ctx context.Context) error { - s.logger.Info("starting portal wire WS server", +// Start starts the client wire WebSocket server. +func (s *ClientServer) Start(ctx context.Context) error { + s.logger.Info("starting client wire WS server", zap.String("host", s.host), zap.Int("port", s.port), - zap.String("path", "/portal"), + zap.String("path", "/client"), ) return s.server.Start(ctx) } -// Stop stops the portal wire WebSocket server. -func (s *PortalServer) Stop() error { - s.logger.Info("stopping portal wire WS server") +// Stop stops the client wire WebSocket server. +func (s *ClientServer) Stop() error { + s.logger.Info("stopping client wire WS server") return s.server.Stop() } // Host returns the host the server is listening on. -func (s *PortalServer) Host() string { +func (s *ClientServer) Host() string { return s.host } // Port returns the port the server is listening on. -func (s *PortalServer) Port() int { +func (s *ClientServer) Port() int { return s.port } diff --git a/apps/control-plane/internal/wire/portal_test.go b/apps/control-plane/internal/wire/client_test.go similarity index 75% rename from apps/control-plane/internal/wire/portal_test.go rename to apps/control-plane/internal/wire/client_test.go index 13762bc..c96f36f 100644 --- a/apps/control-plane/internal/wire/portal_test.go +++ b/apps/control-plane/internal/wire/client_test.go @@ -11,8 +11,8 @@ import ( "google.golang.org/protobuf/proto" "nhooyr.io/websocket" - iop "iop/proto/gen/iop" proto_socket "git.toki-labs.com/toki/proto-socket/go" + iop "iop/proto/gen/iop" ) func getFreePort(t *testing.T) int { @@ -25,14 +25,14 @@ func getFreePort(t *testing.T) int { return ln.Addr().(*net.TCPAddr).Port } -func TestPortalServerHandshake(t *testing.T) { +func TestClientServerHandshake(t *testing.T) { logger := zaptest.NewLogger(t) port := getFreePort(t) listenAddr := fmt.Sprintf("127.0.0.1:%d", port) - server, err := NewPortalServer(listenAddr, logger) + server, err := NewClientServer(listenAddr, logger) if err != nil { - t.Fatalf("NewPortalServer failed: %v", err) + t.Fatalf("NewClientServer failed: %v", err) } ctx, cancel := context.WithCancel(context.Background()) @@ -48,14 +48,14 @@ func TestPortalServerHandshake(t *testing.T) { // Give a tiny moment for server to bind time.Sleep(50 * time.Millisecond) - // Dial to the portal endpoint + // Dial to the client endpoint parserMap := proto_socket.ParserMap{ - proto_socket.TypeNameOf(&iop.PortalHelloRequest{}): func(b []byte) (proto.Message, error) { - req := &iop.PortalHelloRequest{} + proto_socket.TypeNameOf(&iop.ClientHelloRequest{}): func(b []byte) (proto.Message, error) { + req := &iop.ClientHelloRequest{} return req, proto.Unmarshal(b, req) }, - proto_socket.TypeNameOf(&iop.PortalHelloResponse{}): func(b []byte) (proto.Message, error) { - res := &iop.PortalHelloResponse{} + proto_socket.TypeNameOf(&iop.ClientHelloResponse{}): func(b []byte) (proto.Message, error) { + res := &iop.ClientHelloResponse{} return res, proto.Unmarshal(b, res) }, } @@ -65,7 +65,7 @@ func TestPortalServerHandshake(t *testing.T) { ctx, "127.0.0.1", port, - "/portal", + "/client", proto_socket.DefaultHeartbeatIntervalSec, proto_socket.DefaultHeartbeatWaitSec, parserMap, @@ -75,13 +75,13 @@ func TestPortalServerHandshake(t *testing.T) { } defer client.Close() - // Send PortalHelloRequest and wait for PortalHelloResponse - req := &iop.PortalHelloRequest{ + // Send ClientHelloRequest and wait for ClientHelloResponse + req := &iop.ClientHelloRequest{ ClientId: "test-client-id", ClientVersion: "1.0.0", } - res, err := proto_socket.SendRequestTyped[*iop.PortalHelloRequest, *iop.PortalHelloResponse]( + res, err := proto_socket.SendRequestTyped[*iop.ClientHelloRequest, *iop.ClientHelloResponse]( &client.Communicator, req, 2*time.Second, @@ -104,14 +104,14 @@ func TestPortalServerHandshake(t *testing.T) { } } -func TestPortalServerHandshakeWithBrowserOrigin(t *testing.T) { +func TestClientServerHandshakeWithBrowserOrigin(t *testing.T) { logger := zaptest.NewLogger(t) port := getFreePort(t) listenAddr := fmt.Sprintf("127.0.0.1:%d", port) - server, err := NewPortalServer(listenAddr, logger) + server, err := NewClientServer(listenAddr, logger) if err != nil { - t.Fatalf("NewPortalServer failed: %v", err) + t.Fatalf("NewClientServer failed: %v", err) } ctx, cancel := context.WithCancel(context.Background()) @@ -127,12 +127,12 @@ func TestPortalServerHandshakeWithBrowserOrigin(t *testing.T) { time.Sleep(50 * time.Millisecond) parserMap := proto_socket.ParserMap{ - proto_socket.TypeNameOf(&iop.PortalHelloRequest{}): func(b []byte) (proto.Message, error) { - req := &iop.PortalHelloRequest{} + proto_socket.TypeNameOf(&iop.ClientHelloRequest{}): func(b []byte) (proto.Message, error) { + req := &iop.ClientHelloRequest{} return req, proto.Unmarshal(b, req) }, - proto_socket.TypeNameOf(&iop.PortalHelloResponse{}): func(b []byte) (proto.Message, error) { - res := &iop.PortalHelloResponse{} + proto_socket.TypeNameOf(&iop.ClientHelloResponse{}): func(b []byte) (proto.Message, error) { + res := &iop.ClientHelloResponse{} return res, proto.Unmarshal(b, res) }, } @@ -143,7 +143,7 @@ func TestPortalServerHandshakeWithBrowserOrigin(t *testing.T) { "Origin": {"http://localhost:3000"}, }, } - conn, _, err := websocket.Dial(ctx, fmt.Sprintf("ws://127.0.0.1:%d/portal", port), dialOpts) + conn, _, err := websocket.Dial(ctx, fmt.Sprintf("ws://127.0.0.1:%d/client", port), dialOpts) if err != nil { t.Fatalf("failed to Dial with Origin: %v", err) } @@ -152,13 +152,13 @@ func TestPortalServerHandshakeWithBrowserOrigin(t *testing.T) { client := proto_socket.NewWsClient(conn, proto_socket.DefaultHeartbeatIntervalSec, proto_socket.DefaultHeartbeatWaitSec, parserMap) defer client.Close() - // Send PortalHelloRequest - req := &iop.PortalHelloRequest{ + // Send ClientHelloRequest + req := &iop.ClientHelloRequest{ ClientId: "browser-client", ClientVersion: "1.0.0", } - res, err := proto_socket.SendRequestTyped[*iop.PortalHelloRequest, *iop.PortalHelloResponse]( + res, err := proto_socket.SendRequestTyped[*iop.ClientHelloRequest, *iop.ClientHelloResponse]( &client.Communicator, req, 2*time.Second, diff --git a/apps/control-plane/internal/wire/wire.go b/apps/control-plane/internal/wire/wire.go index 2bae4c9..7c5e51c 100644 --- a/apps/control-plane/internal/wire/wire.go +++ b/apps/control-plane/internal/wire/wire.go @@ -6,7 +6,7 @@ package wire const Protocol = "protobuf-socket" // Endpoint is the reserved Control Plane wire endpoint configuration, -// realized by PortalServer for Portal-Control Plane communication. +// realized by ClientServer for Client-Control Plane communication. type Endpoint struct { Listen string } diff --git a/apps/edge/README.md b/apps/edge/README.md index 20f234c..699311f 100644 --- a/apps/edge/README.md +++ b/apps/edge/README.md @@ -24,7 +24,7 @@ ops console은 edge-local diagnostic surface이고, HTTP/API는 central/remote m 실행 요청과 이벤트는 같은 TCP 연결을 공유하지만, 메시지 타입과 내부 파이프라인은 분리한다. `RunRequest`, `CancelRequest`, `NodeCommandRequest`는 edge가 node에 보내는 command/request 계열이고, `RunEvent`, `EdgeNodeEvent`는 node와 edge 내부에서 발생한 event 계열이다. -`internal/events.Bus`는 Edge 안의 in-process fanout과 bounded replay를 담당한다. 현재 replay는 늦게 붙은 console/API handler를 위한 최근 이벤트 버퍼이지 durable history가 아니며, Node local SQLite 실행 이력과 다른 책임이다. 전역 이력 저장, audit, query API는 후속 Control Plane/Portal 경계에서 별도 설계한다. +`internal/events.Bus`는 Edge 안의 in-process fanout과 bounded replay를 담당한다. 현재 replay는 늦게 붙은 console/API handler를 위한 최근 이벤트 버퍼이지 durable history가 아니며, Node local SQLite 실행 이력과 다른 책임이다. 전역 이력 저장, audit, query API는 후속 Control Plane/Client 경계에서 별도 설계한다. ## 원격 CLI adapter 개발 진단 흐름 diff --git a/apps/portal/lib/gen/google/protobuf/struct.pb.dart b/apps/portal/lib/gen/google/protobuf/struct.pb.dart deleted file mode 100644 index 847ddda..0000000 --- a/apps/portal/lib/gen/google/protobuf/struct.pb.dart +++ /dev/null @@ -1,283 +0,0 @@ -// -// Generated code. Do not modify. -// source: google/protobuf/struct.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:core' as $core; - -import 'package:protobuf/protobuf.dart' as $pb; -import 'package:protobuf/src/protobuf/mixins/well_known.dart' as $mixin; - -import 'struct.pbenum.dart'; - -export 'struct.pbenum.dart'; - -/// `Struct` represents a structured data value, consisting of fields -/// which map to dynamically typed values. In some languages, `Struct` -/// might be supported by a native representation. For example, in -/// scripting languages like JS a struct is represented as an -/// object. The details of that representation are described together -/// with the proto support for the language. -/// -/// The JSON representation for `Struct` is JSON object. -class Struct extends $pb.GeneratedMessage with $mixin.StructMixin { - factory Struct({ - $core.Map<$core.String, Value>? fields, - }) { - final $result = create(); - if (fields != null) { - $result.fields.addAll(fields); - } - return $result; - } - Struct._() : super(); - factory Struct.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory Struct.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Struct', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create, toProto3Json: $mixin.StructMixin.toProto3JsonHelper, fromProto3Json: $mixin.StructMixin.fromProto3JsonHelper) - ..m<$core.String, Value>(1, _omitFieldNames ? '' : 'fields', entryClassName: 'Struct.FieldsEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OM, valueCreator: Value.create, valueDefaultOrMaker: Value.getDefault, packageName: const $pb.PackageName('google.protobuf')) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - Struct clone() => Struct()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - Struct copyWith(void Function(Struct) updates) => super.copyWith((message) => updates(message as Struct)) as Struct; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static Struct create() => Struct._(); - Struct createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static Struct getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static Struct? _defaultInstance; - - /// Unordered map of dynamically typed values. - @$pb.TagNumber(1) - $core.Map<$core.String, Value> get fields => $_getMap(0); -} - -enum Value_Kind { - nullValue, - numberValue, - stringValue, - boolValue, - structValue, - listValue, - notSet -} - -/// `Value` represents a dynamically typed value which can be either -/// null, a number, a string, a boolean, a recursive struct value, or a -/// list of values. A producer of value is expected to set one of these -/// variants. Absence of any variant indicates an error. -/// -/// The JSON representation for `Value` is JSON value. -class Value extends $pb.GeneratedMessage with $mixin.ValueMixin { - factory Value({ - NullValue? nullValue, - $core.double? numberValue, - $core.String? stringValue, - $core.bool? boolValue, - Struct? structValue, - ListValue? listValue, - }) { - final $result = create(); - if (nullValue != null) { - $result.nullValue = nullValue; - } - if (numberValue != null) { - $result.numberValue = numberValue; - } - if (stringValue != null) { - $result.stringValue = stringValue; - } - if (boolValue != null) { - $result.boolValue = boolValue; - } - if (structValue != null) { - $result.structValue = structValue; - } - if (listValue != null) { - $result.listValue = listValue; - } - return $result; - } - Value._() : super(); - factory Value.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory Value.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static const $core.Map<$core.int, Value_Kind> _Value_KindByTag = { - 1 : Value_Kind.nullValue, - 2 : Value_Kind.numberValue, - 3 : Value_Kind.stringValue, - 4 : Value_Kind.boolValue, - 5 : Value_Kind.structValue, - 6 : Value_Kind.listValue, - 0 : Value_Kind.notSet - }; - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Value', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create, toProto3Json: $mixin.ValueMixin.toProto3JsonHelper, fromProto3Json: $mixin.ValueMixin.fromProto3JsonHelper) - ..oo(0, [1, 2, 3, 4, 5, 6]) - ..e(1, _omitFieldNames ? '' : 'nullValue', $pb.PbFieldType.OE, defaultOrMaker: NullValue.NULL_VALUE, valueOf: NullValue.valueOf, enumValues: NullValue.values) - ..a<$core.double>(2, _omitFieldNames ? '' : 'numberValue', $pb.PbFieldType.OD) - ..aOS(3, _omitFieldNames ? '' : 'stringValue') - ..aOB(4, _omitFieldNames ? '' : 'boolValue') - ..aOM(5, _omitFieldNames ? '' : 'structValue', subBuilder: Struct.create) - ..aOM(6, _omitFieldNames ? '' : 'listValue', subBuilder: ListValue.create) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - Value clone() => Value()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - Value copyWith(void Function(Value) updates) => super.copyWith((message) => updates(message as Value)) as Value; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static Value create() => Value._(); - Value createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static Value getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static Value? _defaultInstance; - - Value_Kind whichKind() => _Value_KindByTag[$_whichOneof(0)]!; - void clearKind() => clearField($_whichOneof(0)); - - /// Represents a null value. - @$pb.TagNumber(1) - NullValue get nullValue => $_getN(0); - @$pb.TagNumber(1) - set nullValue(NullValue v) { setField(1, v); } - @$pb.TagNumber(1) - $core.bool hasNullValue() => $_has(0); - @$pb.TagNumber(1) - void clearNullValue() => clearField(1); - - /// Represents a double value. - @$pb.TagNumber(2) - $core.double get numberValue => $_getN(1); - @$pb.TagNumber(2) - set numberValue($core.double v) { $_setDouble(1, v); } - @$pb.TagNumber(2) - $core.bool hasNumberValue() => $_has(1); - @$pb.TagNumber(2) - void clearNumberValue() => clearField(2); - - /// Represents a string value. - @$pb.TagNumber(3) - $core.String get stringValue => $_getSZ(2); - @$pb.TagNumber(3) - set stringValue($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasStringValue() => $_has(2); - @$pb.TagNumber(3) - void clearStringValue() => clearField(3); - - /// Represents a boolean value. - @$pb.TagNumber(4) - $core.bool get boolValue => $_getBF(3); - @$pb.TagNumber(4) - set boolValue($core.bool v) { $_setBool(3, v); } - @$pb.TagNumber(4) - $core.bool hasBoolValue() => $_has(3); - @$pb.TagNumber(4) - void clearBoolValue() => clearField(4); - - /// Represents a structured value. - @$pb.TagNumber(5) - Struct get structValue => $_getN(4); - @$pb.TagNumber(5) - set structValue(Struct v) { setField(5, v); } - @$pb.TagNumber(5) - $core.bool hasStructValue() => $_has(4); - @$pb.TagNumber(5) - void clearStructValue() => clearField(5); - @$pb.TagNumber(5) - Struct ensureStructValue() => $_ensure(4); - - /// Represents a repeated `Value`. - @$pb.TagNumber(6) - ListValue get listValue => $_getN(5); - @$pb.TagNumber(6) - set listValue(ListValue v) { setField(6, v); } - @$pb.TagNumber(6) - $core.bool hasListValue() => $_has(5); - @$pb.TagNumber(6) - void clearListValue() => clearField(6); - @$pb.TagNumber(6) - ListValue ensureListValue() => $_ensure(5); -} - -/// `ListValue` is a wrapper around a repeated field of values. -/// -/// The JSON representation for `ListValue` is JSON array. -class ListValue extends $pb.GeneratedMessage with $mixin.ListValueMixin { - factory ListValue({ - $core.Iterable? values, - }) { - final $result = create(); - if (values != null) { - $result.values.addAll(values); - } - return $result; - } - ListValue._() : super(); - factory ListValue.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory ListValue.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListValue', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create, toProto3Json: $mixin.ListValueMixin.toProto3JsonHelper, fromProto3Json: $mixin.ListValueMixin.fromProto3JsonHelper) - ..pc(1, _omitFieldNames ? '' : 'values', $pb.PbFieldType.PM, subBuilder: Value.create) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - ListValue clone() => ListValue()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - ListValue copyWith(void Function(ListValue) updates) => super.copyWith((message) => updates(message as ListValue)) as ListValue; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static ListValue create() => ListValue._(); - ListValue createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static ListValue getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static ListValue? _defaultInstance; - - /// Repeated field of dynamically typed values. - @$pb.TagNumber(1) - $core.List get values => $_getList(0); -} - - -const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); -const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/apps/portal/lib/gen/google/protobuf/struct.pbenum.dart b/apps/portal/lib/gen/google/protobuf/struct.pbenum.dart deleted file mode 100644 index bf7c571..0000000 --- a/apps/portal/lib/gen/google/protobuf/struct.pbenum.dart +++ /dev/null @@ -1,34 +0,0 @@ -// -// Generated code. Do not modify. -// source: google/protobuf/struct.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:core' as $core; - -import 'package:protobuf/protobuf.dart' as $pb; - -/// `NullValue` is a singleton enumeration to represent the null value for the -/// `Value` type union. -/// -/// The JSON representation for `NullValue` is JSON `null`. -class NullValue extends $pb.ProtobufEnum { - static const NullValue NULL_VALUE = NullValue._(0, _omitEnumNames ? '' : 'NULL_VALUE'); - - static const $core.List values = [ - NULL_VALUE, - ]; - - static final $core.Map<$core.int, NullValue> _byValue = $pb.ProtobufEnum.initByValue(values); - static NullValue? valueOf($core.int value) => _byValue[value]; - - const NullValue._($core.int v, $core.String n) : super(v, n); -} - - -const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/apps/portal/lib/gen/google/protobuf/struct.pbjson.dart b/apps/portal/lib/gen/google/protobuf/struct.pbjson.dart deleted file mode 100644 index ffa25fa..0000000 --- a/apps/portal/lib/gen/google/protobuf/struct.pbjson.dart +++ /dev/null @@ -1,90 +0,0 @@ -// -// Generated code. Do not modify. -// source: google/protobuf/struct.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:convert' as $convert; -import 'dart:core' as $core; -import 'dart:typed_data' as $typed_data; - -@$core.Deprecated('Use nullValueDescriptor instead') -const NullValue$json = { - '1': 'NullValue', - '2': [ - {'1': 'NULL_VALUE', '2': 0}, - ], -}; - -/// Descriptor for `NullValue`. Decode as a `google.protobuf.EnumDescriptorProto`. -final $typed_data.Uint8List nullValueDescriptor = $convert.base64Decode( - 'CglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAA'); - -@$core.Deprecated('Use structDescriptor instead') -const Struct$json = { - '1': 'Struct', - '2': [ - {'1': 'fields', '3': 1, '4': 3, '5': 11, '6': '.google.protobuf.Struct.FieldsEntry', '10': 'fields'}, - ], - '3': [Struct_FieldsEntry$json], -}; - -@$core.Deprecated('Use structDescriptor instead') -const Struct_FieldsEntry$json = { - '1': 'FieldsEntry', - '2': [ - {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'}, - {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.google.protobuf.Value', '10': 'value'}, - ], - '7': {'7': true}, -}; - -/// Descriptor for `Struct`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List structDescriptor = $convert.base64Decode( - 'CgZTdHJ1Y3QSOwoGZmllbGRzGAEgAygLMiMuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdC5GaWVsZH' - 'NFbnRyeVIGZmllbGRzGlEKC0ZpZWxkc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVl' - 'GAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAE='); - -@$core.Deprecated('Use valueDescriptor instead') -const Value$json = { - '1': 'Value', - '2': [ - {'1': 'null_value', '3': 1, '4': 1, '5': 14, '6': '.google.protobuf.NullValue', '9': 0, '10': 'nullValue'}, - {'1': 'number_value', '3': 2, '4': 1, '5': 1, '9': 0, '10': 'numberValue'}, - {'1': 'string_value', '3': 3, '4': 1, '5': 9, '9': 0, '10': 'stringValue'}, - {'1': 'bool_value', '3': 4, '4': 1, '5': 8, '9': 0, '10': 'boolValue'}, - {'1': 'struct_value', '3': 5, '4': 1, '5': 11, '6': '.google.protobuf.Struct', '9': 0, '10': 'structValue'}, - {'1': 'list_value', '3': 6, '4': 1, '5': 11, '6': '.google.protobuf.ListValue', '9': 0, '10': 'listValue'}, - ], - '8': [ - {'1': 'kind'}, - ], -}; - -/// Descriptor for `Value`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List valueDescriptor = $convert.base64Decode( - 'CgVWYWx1ZRI7CgpudWxsX3ZhbHVlGAEgASgOMhouZ29vZ2xlLnByb3RvYnVmLk51bGxWYWx1ZU' - 'gAUgludWxsVmFsdWUSIwoMbnVtYmVyX3ZhbHVlGAIgASgBSABSC251bWJlclZhbHVlEiMKDHN0' - 'cmluZ192YWx1ZRgDIAEoCUgAUgtzdHJpbmdWYWx1ZRIfCgpib29sX3ZhbHVlGAQgASgISABSCW' - 'Jvb2xWYWx1ZRI8CgxzdHJ1Y3RfdmFsdWUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0' - 'SABSC3N0cnVjdFZhbHVlEjsKCmxpc3RfdmFsdWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuTG' - 'lzdFZhbHVlSABSCWxpc3RWYWx1ZUIGCgRraW5k'); - -@$core.Deprecated('Use listValueDescriptor instead') -const ListValue$json = { - '1': 'ListValue', - '2': [ - {'1': 'values', '3': 1, '4': 3, '5': 11, '6': '.google.protobuf.Value', '10': 'values'}, - ], -}; - -/// Descriptor for `ListValue`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List listValueDescriptor = $convert.base64Decode( - 'CglMaXN0VmFsdWUSLgoGdmFsdWVzGAEgAygLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgZ2YW' - 'x1ZXM='); - diff --git a/apps/portal/lib/gen/google/protobuf/struct.pbserver.dart b/apps/portal/lib/gen/google/protobuf/struct.pbserver.dart deleted file mode 100644 index b92ae61..0000000 --- a/apps/portal/lib/gen/google/protobuf/struct.pbserver.dart +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated code. Do not modify. -// source: google/protobuf/struct.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names -// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -export 'struct.pb.dart'; - diff --git a/apps/portal/lib/gen/proto/iop/control.pb.dart b/apps/portal/lib/gen/proto/iop/control.pb.dart deleted file mode 100644 index c365742..0000000 --- a/apps/portal/lib/gen/proto/iop/control.pb.dart +++ /dev/null @@ -1,410 +0,0 @@ -// -// Generated code. Do not modify. -// source: proto/iop/control.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:core' as $core; - -import 'package:fixnum/fixnum.dart' as $fixnum; -import 'package:protobuf/protobuf.dart' as $pb; - -/// PolicyRule is a placeholder for future edge-level routing/resource constraints. -class PolicyRule extends $pb.GeneratedMessage { - factory PolicyRule({ - $core.String? name, - $core.String? expression, - $core.Map<$core.String, $core.String>? params, - }) { - final $result = create(); - if (name != null) { - $result.name = name; - } - if (expression != null) { - $result.expression = expression; - } - if (params != null) { - $result.params.addAll(params); - } - return $result; - } - PolicyRule._() : super(); - factory PolicyRule.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory PolicyRule.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PolicyRule', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'name') - ..aOS(2, _omitFieldNames ? '' : 'expression') - ..m<$core.String, $core.String>(3, _omitFieldNames ? '' : 'params', entryClassName: 'PolicyRule.ParamsEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - PolicyRule clone() => PolicyRule()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - PolicyRule copyWith(void Function(PolicyRule) updates) => super.copyWith((message) => updates(message as PolicyRule)) as PolicyRule; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static PolicyRule create() => PolicyRule._(); - PolicyRule createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static PolicyRule getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static PolicyRule? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get name => $_getSZ(0); - @$pb.TagNumber(1) - set name($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasName() => $_has(0); - @$pb.TagNumber(1) - void clearName() => clearField(1); - - @$pb.TagNumber(2) - $core.String get expression => $_getSZ(1); - @$pb.TagNumber(2) - set expression($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasExpression() => $_has(1); - @$pb.TagNumber(2) - void clearExpression() => clearField(2); - - @$pb.TagNumber(3) - $core.Map<$core.String, $core.String> get params => $_getMap(2); -} - -/// ScheduleRequest is a legacy placeholder for future Control Plane orchestration. -/// It must not be treated as an active contract for direct Node scheduling. -class ScheduleRequest extends $pb.GeneratedMessage { - factory ScheduleRequest({ - $core.String? jobId, - $core.String? target, - $core.Iterable? policies, - $core.Map<$core.String, $core.String>? metadata, - }) { - final $result = create(); - if (jobId != null) { - $result.jobId = jobId; - } - if (target != null) { - $result.target = target; - } - if (policies != null) { - $result.policies.addAll(policies); - } - if (metadata != null) { - $result.metadata.addAll(metadata); - } - return $result; - } - ScheduleRequest._() : super(); - factory ScheduleRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory ScheduleRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ScheduleRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'jobId') - ..aOS(2, _omitFieldNames ? '' : 'target') - ..pc(3, _omitFieldNames ? '' : 'policies', $pb.PbFieldType.PM, subBuilder: PolicyRule.create) - ..m<$core.String, $core.String>(4, _omitFieldNames ? '' : 'metadata', entryClassName: 'ScheduleRequest.MetadataEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - ScheduleRequest clone() => ScheduleRequest()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - ScheduleRequest copyWith(void Function(ScheduleRequest) updates) => super.copyWith((message) => updates(message as ScheduleRequest)) as ScheduleRequest; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static ScheduleRequest create() => ScheduleRequest._(); - ScheduleRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static ScheduleRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static ScheduleRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get jobId => $_getSZ(0); - @$pb.TagNumber(1) - set jobId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasJobId() => $_has(0); - @$pb.TagNumber(1) - void clearJobId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get target => $_getSZ(1); - @$pb.TagNumber(2) - set target($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasTarget() => $_has(1); - @$pb.TagNumber(2) - void clearTarget() => clearField(2); - - @$pb.TagNumber(3) - $core.List get policies => $_getList(2); - - @$pb.TagNumber(4) - $core.Map<$core.String, $core.String> get metadata => $_getMap(3); -} - -/// ScheduleResponse is a legacy placeholder. Future scheduling should be -/// reworked around Edge-owned runtime state instead of bypassing Edge. -class ScheduleResponse extends $pb.GeneratedMessage { - factory ScheduleResponse({ - $core.String? nodeId, - $core.String? address, - $core.String? token, - }) { - final $result = create(); - if (nodeId != null) { - $result.nodeId = nodeId; - } - if (address != null) { - $result.address = address; - } - if (token != null) { - $result.token = token; - } - return $result; - } - ScheduleResponse._() : super(); - factory ScheduleResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory ScheduleResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ScheduleResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'nodeId') - ..aOS(2, _omitFieldNames ? '' : 'address') - ..aOS(3, _omitFieldNames ? '' : 'token') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - ScheduleResponse clone() => ScheduleResponse()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - ScheduleResponse copyWith(void Function(ScheduleResponse) updates) => super.copyWith((message) => updates(message as ScheduleResponse)) as ScheduleResponse; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static ScheduleResponse create() => ScheduleResponse._(); - ScheduleResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static ScheduleResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static ScheduleResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get nodeId => $_getSZ(0); - @$pb.TagNumber(1) - set nodeId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasNodeId() => $_has(0); - @$pb.TagNumber(1) - void clearNodeId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get address => $_getSZ(1); - @$pb.TagNumber(2) - set address($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasAddress() => $_has(1); - @$pb.TagNumber(2) - void clearAddress() => clearField(2); - - @$pb.TagNumber(3) - $core.String get token => $_getSZ(2); - @$pb.TagNumber(3) - set token($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasToken() => $_has(2); - @$pb.TagNumber(3) - void clearToken() => clearField(3); -} - -class PortalHelloRequest extends $pb.GeneratedMessage { - factory PortalHelloRequest({ - $core.String? clientId, - $core.String? clientVersion, - }) { - final $result = create(); - if (clientId != null) { - $result.clientId = clientId; - } - if (clientVersion != null) { - $result.clientVersion = clientVersion; - } - return $result; - } - PortalHelloRequest._() : super(); - factory PortalHelloRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory PortalHelloRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PortalHelloRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'clientId') - ..aOS(2, _omitFieldNames ? '' : 'clientVersion') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - PortalHelloRequest clone() => PortalHelloRequest()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - PortalHelloRequest copyWith(void Function(PortalHelloRequest) updates) => super.copyWith((message) => updates(message as PortalHelloRequest)) as PortalHelloRequest; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static PortalHelloRequest create() => PortalHelloRequest._(); - PortalHelloRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static PortalHelloRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static PortalHelloRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get clientId => $_getSZ(0); - @$pb.TagNumber(1) - set clientId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasClientId() => $_has(0); - @$pb.TagNumber(1) - void clearClientId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get clientVersion => $_getSZ(1); - @$pb.TagNumber(2) - set clientVersion($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasClientVersion() => $_has(1); - @$pb.TagNumber(2) - void clearClientVersion() => clearField(2); -} - -class PortalHelloResponse extends $pb.GeneratedMessage { - factory PortalHelloResponse({ - $core.bool? ready, - $core.String? protocol, - $fixnum.Int64? serverTimeUnixNano, - $core.String? message, - }) { - final $result = create(); - if (ready != null) { - $result.ready = ready; - } - if (protocol != null) { - $result.protocol = protocol; - } - if (serverTimeUnixNano != null) { - $result.serverTimeUnixNano = serverTimeUnixNano; - } - if (message != null) { - $result.message = message; - } - return $result; - } - PortalHelloResponse._() : super(); - factory PortalHelloResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory PortalHelloResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PortalHelloResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOB(1, _omitFieldNames ? '' : 'ready') - ..aOS(2, _omitFieldNames ? '' : 'protocol') - ..aInt64(3, _omitFieldNames ? '' : 'serverTimeUnixNano') - ..aOS(4, _omitFieldNames ? '' : 'message') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - PortalHelloResponse clone() => PortalHelloResponse()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - PortalHelloResponse copyWith(void Function(PortalHelloResponse) updates) => super.copyWith((message) => updates(message as PortalHelloResponse)) as PortalHelloResponse; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static PortalHelloResponse create() => PortalHelloResponse._(); - PortalHelloResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static PortalHelloResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static PortalHelloResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.bool get ready => $_getBF(0); - @$pb.TagNumber(1) - set ready($core.bool v) { $_setBool(0, v); } - @$pb.TagNumber(1) - $core.bool hasReady() => $_has(0); - @$pb.TagNumber(1) - void clearReady() => clearField(1); - - @$pb.TagNumber(2) - $core.String get protocol => $_getSZ(1); - @$pb.TagNumber(2) - set protocol($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasProtocol() => $_has(1); - @$pb.TagNumber(2) - void clearProtocol() => clearField(2); - - @$pb.TagNumber(3) - $fixnum.Int64 get serverTimeUnixNano => $_getI64(2); - @$pb.TagNumber(3) - set serverTimeUnixNano($fixnum.Int64 v) { $_setInt64(2, v); } - @$pb.TagNumber(3) - $core.bool hasServerTimeUnixNano() => $_has(2); - @$pb.TagNumber(3) - void clearServerTimeUnixNano() => clearField(3); - - @$pb.TagNumber(4) - $core.String get message => $_getSZ(3); - @$pb.TagNumber(4) - set message($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasMessage() => $_has(3); - @$pb.TagNumber(4) - void clearMessage() => clearField(4); -} - - -const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); -const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/apps/portal/lib/gen/proto/iop/control.pbenum.dart b/apps/portal/lib/gen/proto/iop/control.pbenum.dart deleted file mode 100644 index 4441fa6..0000000 --- a/apps/portal/lib/gen/proto/iop/control.pbenum.dart +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated code. Do not modify. -// source: proto/iop/control.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - diff --git a/apps/portal/lib/gen/proto/iop/job.pb.dart b/apps/portal/lib/gen/proto/iop/job.pb.dart deleted file mode 100644 index aba533d..0000000 --- a/apps/portal/lib/gen/proto/iop/job.pb.dart +++ /dev/null @@ -1,343 +0,0 @@ -// -// Generated code. Do not modify. -// source: proto/iop/job.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:core' as $core; - -import 'package:fixnum/fixnum.dart' as $fixnum; -import 'package:protobuf/protobuf.dart' as $pb; - -import 'job.pbenum.dart'; - -export 'job.pbenum.dart'; - -class Job extends $pb.GeneratedMessage { - factory Job({ - $core.String? jobId, - $core.String? runId, - $core.String? nodeId, - $core.String? adapter, - $core.String? target, - JobStatus? status, - $fixnum.Int64? createdAt, - $fixnum.Int64? startedAt, - $fixnum.Int64? finishedAt, - $core.String? error, - $core.Map<$core.String, $core.String>? metadata, - }) { - final $result = create(); - if (jobId != null) { - $result.jobId = jobId; - } - if (runId != null) { - $result.runId = runId; - } - if (nodeId != null) { - $result.nodeId = nodeId; - } - if (adapter != null) { - $result.adapter = adapter; - } - if (target != null) { - $result.target = target; - } - if (status != null) { - $result.status = status; - } - if (createdAt != null) { - $result.createdAt = createdAt; - } - if (startedAt != null) { - $result.startedAt = startedAt; - } - if (finishedAt != null) { - $result.finishedAt = finishedAt; - } - if (error != null) { - $result.error = error; - } - if (metadata != null) { - $result.metadata.addAll(metadata); - } - return $result; - } - Job._() : super(); - factory Job.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory Job.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Job', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'jobId') - ..aOS(2, _omitFieldNames ? '' : 'runId') - ..aOS(3, _omitFieldNames ? '' : 'nodeId') - ..aOS(4, _omitFieldNames ? '' : 'adapter') - ..aOS(5, _omitFieldNames ? '' : 'target') - ..e(6, _omitFieldNames ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: JobStatus.JOB_STATUS_UNSPECIFIED, valueOf: JobStatus.valueOf, enumValues: JobStatus.values) - ..aInt64(7, _omitFieldNames ? '' : 'createdAt') - ..aInt64(8, _omitFieldNames ? '' : 'startedAt') - ..aInt64(9, _omitFieldNames ? '' : 'finishedAt') - ..aOS(10, _omitFieldNames ? '' : 'error') - ..m<$core.String, $core.String>(11, _omitFieldNames ? '' : 'metadata', entryClassName: 'Job.MetadataEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - Job clone() => Job()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - Job copyWith(void Function(Job) updates) => super.copyWith((message) => updates(message as Job)) as Job; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static Job create() => Job._(); - Job createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static Job getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static Job? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get jobId => $_getSZ(0); - @$pb.TagNumber(1) - set jobId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasJobId() => $_has(0); - @$pb.TagNumber(1) - void clearJobId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get runId => $_getSZ(1); - @$pb.TagNumber(2) - set runId($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasRunId() => $_has(1); - @$pb.TagNumber(2) - void clearRunId() => clearField(2); - - @$pb.TagNumber(3) - $core.String get nodeId => $_getSZ(2); - @$pb.TagNumber(3) - set nodeId($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasNodeId() => $_has(2); - @$pb.TagNumber(3) - void clearNodeId() => clearField(3); - - @$pb.TagNumber(4) - $core.String get adapter => $_getSZ(3); - @$pb.TagNumber(4) - set adapter($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasAdapter() => $_has(3); - @$pb.TagNumber(4) - void clearAdapter() => clearField(4); - - @$pb.TagNumber(5) - $core.String get target => $_getSZ(4); - @$pb.TagNumber(5) - set target($core.String v) { $_setString(4, v); } - @$pb.TagNumber(5) - $core.bool hasTarget() => $_has(4); - @$pb.TagNumber(5) - void clearTarget() => clearField(5); - - @$pb.TagNumber(6) - JobStatus get status => $_getN(5); - @$pb.TagNumber(6) - set status(JobStatus v) { setField(6, v); } - @$pb.TagNumber(6) - $core.bool hasStatus() => $_has(5); - @$pb.TagNumber(6) - void clearStatus() => clearField(6); - - @$pb.TagNumber(7) - $fixnum.Int64 get createdAt => $_getI64(6); - @$pb.TagNumber(7) - set createdAt($fixnum.Int64 v) { $_setInt64(6, v); } - @$pb.TagNumber(7) - $core.bool hasCreatedAt() => $_has(6); - @$pb.TagNumber(7) - void clearCreatedAt() => clearField(7); - - @$pb.TagNumber(8) - $fixnum.Int64 get startedAt => $_getI64(7); - @$pb.TagNumber(8) - set startedAt($fixnum.Int64 v) { $_setInt64(7, v); } - @$pb.TagNumber(8) - $core.bool hasStartedAt() => $_has(7); - @$pb.TagNumber(8) - void clearStartedAt() => clearField(8); - - @$pb.TagNumber(9) - $fixnum.Int64 get finishedAt => $_getI64(8); - @$pb.TagNumber(9) - set finishedAt($fixnum.Int64 v) { $_setInt64(8, v); } - @$pb.TagNumber(9) - $core.bool hasFinishedAt() => $_has(8); - @$pb.TagNumber(9) - void clearFinishedAt() => clearField(9); - - @$pb.TagNumber(10) - $core.String get error => $_getSZ(9); - @$pb.TagNumber(10) - set error($core.String v) { $_setString(9, v); } - @$pb.TagNumber(10) - $core.bool hasError() => $_has(9); - @$pb.TagNumber(10) - void clearError() => clearField(10); - - @$pb.TagNumber(11) - $core.Map<$core.String, $core.String> get metadata => $_getMap(10); -} - -class JobListRequest extends $pb.GeneratedMessage { - factory JobListRequest({ - JobStatus? statusFilter, - $core.int? limit, - $core.String? cursor, - }) { - final $result = create(); - if (statusFilter != null) { - $result.statusFilter = statusFilter; - } - if (limit != null) { - $result.limit = limit; - } - if (cursor != null) { - $result.cursor = cursor; - } - return $result; - } - JobListRequest._() : super(); - factory JobListRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory JobListRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'JobListRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..e(1, _omitFieldNames ? '' : 'statusFilter', $pb.PbFieldType.OE, defaultOrMaker: JobStatus.JOB_STATUS_UNSPECIFIED, valueOf: JobStatus.valueOf, enumValues: JobStatus.values) - ..a<$core.int>(2, _omitFieldNames ? '' : 'limit', $pb.PbFieldType.O3) - ..aOS(3, _omitFieldNames ? '' : 'cursor') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - JobListRequest clone() => JobListRequest()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - JobListRequest copyWith(void Function(JobListRequest) updates) => super.copyWith((message) => updates(message as JobListRequest)) as JobListRequest; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static JobListRequest create() => JobListRequest._(); - JobListRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static JobListRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static JobListRequest? _defaultInstance; - - @$pb.TagNumber(1) - JobStatus get statusFilter => $_getN(0); - @$pb.TagNumber(1) - set statusFilter(JobStatus v) { setField(1, v); } - @$pb.TagNumber(1) - $core.bool hasStatusFilter() => $_has(0); - @$pb.TagNumber(1) - void clearStatusFilter() => clearField(1); - - @$pb.TagNumber(2) - $core.int get limit => $_getIZ(1); - @$pb.TagNumber(2) - set limit($core.int v) { $_setSignedInt32(1, v); } - @$pb.TagNumber(2) - $core.bool hasLimit() => $_has(1); - @$pb.TagNumber(2) - void clearLimit() => clearField(2); - - @$pb.TagNumber(3) - $core.String get cursor => $_getSZ(2); - @$pb.TagNumber(3) - set cursor($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasCursor() => $_has(2); - @$pb.TagNumber(3) - void clearCursor() => clearField(3); -} - -class JobListResponse extends $pb.GeneratedMessage { - factory JobListResponse({ - $core.Iterable? jobs, - $core.String? next, - }) { - final $result = create(); - if (jobs != null) { - $result.jobs.addAll(jobs); - } - if (next != null) { - $result.next = next; - } - return $result; - } - JobListResponse._() : super(); - factory JobListResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory JobListResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'JobListResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..pc(1, _omitFieldNames ? '' : 'jobs', $pb.PbFieldType.PM, subBuilder: Job.create) - ..aOS(2, _omitFieldNames ? '' : 'next') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - JobListResponse clone() => JobListResponse()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - JobListResponse copyWith(void Function(JobListResponse) updates) => super.copyWith((message) => updates(message as JobListResponse)) as JobListResponse; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static JobListResponse create() => JobListResponse._(); - JobListResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static JobListResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static JobListResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.List get jobs => $_getList(0); - - @$pb.TagNumber(2) - $core.String get next => $_getSZ(1); - @$pb.TagNumber(2) - set next($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasNext() => $_has(1); - @$pb.TagNumber(2) - void clearNext() => clearField(2); -} - - -const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); -const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/apps/portal/lib/gen/proto/iop/job.pbenum.dart b/apps/portal/lib/gen/proto/iop/job.pbenum.dart deleted file mode 100644 index 2c19e25..0000000 --- a/apps/portal/lib/gen/proto/iop/job.pbenum.dart +++ /dev/null @@ -1,40 +0,0 @@ -// -// Generated code. Do not modify. -// source: proto/iop/job.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:core' as $core; - -import 'package:protobuf/protobuf.dart' as $pb; - -class JobStatus extends $pb.ProtobufEnum { - static const JobStatus JOB_STATUS_UNSPECIFIED = JobStatus._(0, _omitEnumNames ? '' : 'JOB_STATUS_UNSPECIFIED'); - static const JobStatus JOB_STATUS_PENDING = JobStatus._(1, _omitEnumNames ? '' : 'JOB_STATUS_PENDING'); - static const JobStatus JOB_STATUS_RUNNING = JobStatus._(2, _omitEnumNames ? '' : 'JOB_STATUS_RUNNING'); - static const JobStatus JOB_STATUS_COMPLETED = JobStatus._(3, _omitEnumNames ? '' : 'JOB_STATUS_COMPLETED'); - static const JobStatus JOB_STATUS_FAILED = JobStatus._(4, _omitEnumNames ? '' : 'JOB_STATUS_FAILED'); - static const JobStatus JOB_STATUS_CANCELLED = JobStatus._(5, _omitEnumNames ? '' : 'JOB_STATUS_CANCELLED'); - - static const $core.List values = [ - JOB_STATUS_UNSPECIFIED, - JOB_STATUS_PENDING, - JOB_STATUS_RUNNING, - JOB_STATUS_COMPLETED, - JOB_STATUS_FAILED, - JOB_STATUS_CANCELLED, - ]; - - static final $core.Map<$core.int, JobStatus> _byValue = $pb.ProtobufEnum.initByValue(values); - static JobStatus? valueOf($core.int value) => _byValue[value]; - - const JobStatus._($core.int v, $core.String n) : super(v, n); -} - - -const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/apps/portal/lib/gen/proto/iop/node.pb.dart b/apps/portal/lib/gen/proto/iop/node.pb.dart deleted file mode 100644 index 856f507..0000000 --- a/apps/portal/lib/gen/proto/iop/node.pb.dart +++ /dev/null @@ -1,273 +0,0 @@ -// -// Generated code. Do not modify. -// source: proto/iop/node.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:core' as $core; - -import 'package:protobuf/protobuf.dart' as $pb; - -import 'node.pbenum.dart'; - -export 'node.pbenum.dart'; - -/// NodeInfo is a legacy placeholder for node snapshots. -/// Current Edge-Node registration uses RegisterRequest/RegisterResponse in -/// runtime.proto, and Control Plane should observe nodes through Edge. -class NodeInfo extends $pb.GeneratedMessage { - factory NodeInfo({ - $core.String? nodeId, - $core.String? name, - $core.String? address, - $core.String? version, - NodeStatus? status, - $core.Map<$core.String, $core.String>? labels, - }) { - final $result = create(); - if (nodeId != null) { - $result.nodeId = nodeId; - } - if (name != null) { - $result.name = name; - } - if (address != null) { - $result.address = address; - } - if (version != null) { - $result.version = version; - } - if (status != null) { - $result.status = status; - } - if (labels != null) { - $result.labels.addAll(labels); - } - return $result; - } - NodeInfo._() : super(); - factory NodeInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory NodeInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NodeInfo', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'nodeId') - ..aOS(2, _omitFieldNames ? '' : 'name') - ..aOS(3, _omitFieldNames ? '' : 'address') - ..aOS(4, _omitFieldNames ? '' : 'version') - ..e(5, _omitFieldNames ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: NodeStatus.NODE_STATUS_UNSPECIFIED, valueOf: NodeStatus.valueOf, enumValues: NodeStatus.values) - ..m<$core.String, $core.String>(6, _omitFieldNames ? '' : 'labels', entryClassName: 'NodeInfo.LabelsEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - NodeInfo clone() => NodeInfo()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - NodeInfo copyWith(void Function(NodeInfo) updates) => super.copyWith((message) => updates(message as NodeInfo)) as NodeInfo; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static NodeInfo create() => NodeInfo._(); - NodeInfo createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static NodeInfo getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static NodeInfo? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get nodeId => $_getSZ(0); - @$pb.TagNumber(1) - set nodeId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasNodeId() => $_has(0); - @$pb.TagNumber(1) - void clearNodeId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get name => $_getSZ(1); - @$pb.TagNumber(2) - set name($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasName() => $_has(1); - @$pb.TagNumber(2) - void clearName() => clearField(2); - - @$pb.TagNumber(3) - $core.String get address => $_getSZ(2); - @$pb.TagNumber(3) - set address($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasAddress() => $_has(2); - @$pb.TagNumber(3) - void clearAddress() => clearField(3); - - @$pb.TagNumber(4) - $core.String get version => $_getSZ(3); - @$pb.TagNumber(4) - set version($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasVersion() => $_has(3); - @$pb.TagNumber(4) - void clearVersion() => clearField(4); - - @$pb.TagNumber(5) - NodeStatus get status => $_getN(4); - @$pb.TagNumber(5) - set status(NodeStatus v) { setField(5, v); } - @$pb.TagNumber(5) - $core.bool hasStatus() => $_has(4); - @$pb.TagNumber(5) - void clearStatus() => clearField(5); - - @$pb.TagNumber(6) - $core.Map<$core.String, $core.String> get labels => $_getMap(5); -} - -/// NodeRegisterRequest is a legacy placeholder and is not the active startup -/// contract. Nodes connect to Edge, not directly to Control Plane. -class NodeRegisterRequest extends $pb.GeneratedMessage { - factory NodeRegisterRequest({ - NodeInfo? info, - }) { - final $result = create(); - if (info != null) { - $result.info = info; - } - return $result; - } - NodeRegisterRequest._() : super(); - factory NodeRegisterRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory NodeRegisterRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NodeRegisterRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOM(1, _omitFieldNames ? '' : 'info', subBuilder: NodeInfo.create) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - NodeRegisterRequest clone() => NodeRegisterRequest()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - NodeRegisterRequest copyWith(void Function(NodeRegisterRequest) updates) => super.copyWith((message) => updates(message as NodeRegisterRequest)) as NodeRegisterRequest; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static NodeRegisterRequest create() => NodeRegisterRequest._(); - NodeRegisterRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static NodeRegisterRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static NodeRegisterRequest? _defaultInstance; - - @$pb.TagNumber(1) - NodeInfo get info => $_getN(0); - @$pb.TagNumber(1) - set info(NodeInfo v) { setField(1, v); } - @$pb.TagNumber(1) - $core.bool hasInfo() => $_has(0); - @$pb.TagNumber(1) - void clearInfo() => clearField(1); - @$pb.TagNumber(1) - NodeInfo ensureInfo() => $_ensure(0); -} - -/// NodeRegisterResponse is a legacy placeholder retained until the -/// Control Plane contracts are redesigned around Edge. -class NodeRegisterResponse extends $pb.GeneratedMessage { - factory NodeRegisterResponse({ - $core.bool? accepted, - $core.String? token, - $core.String? reason, - }) { - final $result = create(); - if (accepted != null) { - $result.accepted = accepted; - } - if (token != null) { - $result.token = token; - } - if (reason != null) { - $result.reason = reason; - } - return $result; - } - NodeRegisterResponse._() : super(); - factory NodeRegisterResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory NodeRegisterResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NodeRegisterResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOB(1, _omitFieldNames ? '' : 'accepted') - ..aOS(2, _omitFieldNames ? '' : 'token') - ..aOS(3, _omitFieldNames ? '' : 'reason') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - NodeRegisterResponse clone() => NodeRegisterResponse()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - NodeRegisterResponse copyWith(void Function(NodeRegisterResponse) updates) => super.copyWith((message) => updates(message as NodeRegisterResponse)) as NodeRegisterResponse; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static NodeRegisterResponse create() => NodeRegisterResponse._(); - NodeRegisterResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static NodeRegisterResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static NodeRegisterResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.bool get accepted => $_getBF(0); - @$pb.TagNumber(1) - set accepted($core.bool v) { $_setBool(0, v); } - @$pb.TagNumber(1) - $core.bool hasAccepted() => $_has(0); - @$pb.TagNumber(1) - void clearAccepted() => clearField(1); - - @$pb.TagNumber(2) - $core.String get token => $_getSZ(1); - @$pb.TagNumber(2) - set token($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasToken() => $_has(1); - @$pb.TagNumber(2) - void clearToken() => clearField(2); - - @$pb.TagNumber(3) - $core.String get reason => $_getSZ(2); - @$pb.TagNumber(3) - set reason($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasReason() => $_has(2); - @$pb.TagNumber(3) - void clearReason() => clearField(3); -} - - -const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); -const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/apps/portal/lib/gen/proto/iop/node.pbenum.dart b/apps/portal/lib/gen/proto/iop/node.pbenum.dart deleted file mode 100644 index aab5b69..0000000 --- a/apps/portal/lib/gen/proto/iop/node.pbenum.dart +++ /dev/null @@ -1,36 +0,0 @@ -// -// Generated code. Do not modify. -// source: proto/iop/node.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:core' as $core; - -import 'package:protobuf/protobuf.dart' as $pb; - -class NodeStatus extends $pb.ProtobufEnum { - static const NodeStatus NODE_STATUS_UNSPECIFIED = NodeStatus._(0, _omitEnumNames ? '' : 'NODE_STATUS_UNSPECIFIED'); - static const NodeStatus NODE_STATUS_ONLINE = NodeStatus._(1, _omitEnumNames ? '' : 'NODE_STATUS_ONLINE'); - static const NodeStatus NODE_STATUS_OFFLINE = NodeStatus._(2, _omitEnumNames ? '' : 'NODE_STATUS_OFFLINE'); - static const NodeStatus NODE_STATUS_DRAINING = NodeStatus._(3, _omitEnumNames ? '' : 'NODE_STATUS_DRAINING'); - - static const $core.List values = [ - NODE_STATUS_UNSPECIFIED, - NODE_STATUS_ONLINE, - NODE_STATUS_OFFLINE, - NODE_STATUS_DRAINING, - ]; - - static final $core.Map<$core.int, NodeStatus> _byValue = $pb.ProtobufEnum.initByValue(values); - static NodeStatus? valueOf($core.int value) => _byValue[value]; - - const NodeStatus._($core.int v, $core.String n) : super(v, n); -} - - -const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/apps/portal/lib/gen/proto/iop/runtime.pb.dart b/apps/portal/lib/gen/proto/iop/runtime.pb.dart deleted file mode 100644 index 3188d45..0000000 --- a/apps/portal/lib/gen/proto/iop/runtime.pb.dart +++ /dev/null @@ -1,2062 +0,0 @@ -// -// Generated code. Do not modify. -// source: proto/iop/runtime.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:core' as $core; - -import 'package:fixnum/fixnum.dart' as $fixnum; -import 'package:protobuf/protobuf.dart' as $pb; - -import '../../google/protobuf/struct.pb.dart' as $0; -import 'runtime.pbenum.dart'; - -export 'runtime.pbenum.dart'; - -/// RunRequest initiates an adapter execution on a node. -class RunRequest extends $pb.GeneratedMessage { - factory RunRequest({ - $core.String? runId, - $core.String? adapter, - $core.String? target, - $core.String? workspace, - $0.Struct? policy, - $0.Struct? input, - $core.int? timeoutSec, - $core.Map<$core.String, $core.String>? metadata, - $core.String? sessionId, - RunSessionMode? sessionMode, - $core.bool? background, - }) { - final $result = create(); - if (runId != null) { - $result.runId = runId; - } - if (adapter != null) { - $result.adapter = adapter; - } - if (target != null) { - $result.target = target; - } - if (workspace != null) { - $result.workspace = workspace; - } - if (policy != null) { - $result.policy = policy; - } - if (input != null) { - $result.input = input; - } - if (timeoutSec != null) { - $result.timeoutSec = timeoutSec; - } - if (metadata != null) { - $result.metadata.addAll(metadata); - } - if (sessionId != null) { - $result.sessionId = sessionId; - } - if (sessionMode != null) { - $result.sessionMode = sessionMode; - } - if (background != null) { - $result.background = background; - } - return $result; - } - RunRequest._() : super(); - factory RunRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory RunRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RunRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'runId') - ..aOS(2, _omitFieldNames ? '' : 'adapter') - ..aOS(3, _omitFieldNames ? '' : 'target') - ..aOS(4, _omitFieldNames ? '' : 'workspace') - ..aOM<$0.Struct>(5, _omitFieldNames ? '' : 'policy', subBuilder: $0.Struct.create) - ..aOM<$0.Struct>(6, _omitFieldNames ? '' : 'input', subBuilder: $0.Struct.create) - ..a<$core.int>(7, _omitFieldNames ? '' : 'timeoutSec', $pb.PbFieldType.O3) - ..m<$core.String, $core.String>(8, _omitFieldNames ? '' : 'metadata', entryClassName: 'RunRequest.MetadataEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..aOS(9, _omitFieldNames ? '' : 'sessionId') - ..e(10, _omitFieldNames ? '' : 'sessionMode', $pb.PbFieldType.OE, defaultOrMaker: RunSessionMode.RUN_SESSION_MODE_UNSPECIFIED, valueOf: RunSessionMode.valueOf, enumValues: RunSessionMode.values) - ..aOB(11, _omitFieldNames ? '' : 'background') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - RunRequest clone() => RunRequest()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - RunRequest copyWith(void Function(RunRequest) updates) => super.copyWith((message) => updates(message as RunRequest)) as RunRequest; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static RunRequest create() => RunRequest._(); - RunRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static RunRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static RunRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get runId => $_getSZ(0); - @$pb.TagNumber(1) - set runId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasRunId() => $_has(0); - @$pb.TagNumber(1) - void clearRunId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get adapter => $_getSZ(1); - @$pb.TagNumber(2) - set adapter($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasAdapter() => $_has(1); - @$pb.TagNumber(2) - void clearAdapter() => clearField(2); - - @$pb.TagNumber(3) - $core.String get target => $_getSZ(2); - @$pb.TagNumber(3) - set target($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasTarget() => $_has(2); - @$pb.TagNumber(3) - void clearTarget() => clearField(3); - - @$pb.TagNumber(4) - $core.String get workspace => $_getSZ(3); - @$pb.TagNumber(4) - set workspace($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasWorkspace() => $_has(3); - @$pb.TagNumber(4) - void clearWorkspace() => clearField(4); - - @$pb.TagNumber(5) - $0.Struct get policy => $_getN(4); - @$pb.TagNumber(5) - set policy($0.Struct v) { setField(5, v); } - @$pb.TagNumber(5) - $core.bool hasPolicy() => $_has(4); - @$pb.TagNumber(5) - void clearPolicy() => clearField(5); - @$pb.TagNumber(5) - $0.Struct ensurePolicy() => $_ensure(4); - - @$pb.TagNumber(6) - $0.Struct get input => $_getN(5); - @$pb.TagNumber(6) - set input($0.Struct v) { setField(6, v); } - @$pb.TagNumber(6) - $core.bool hasInput() => $_has(5); - @$pb.TagNumber(6) - void clearInput() => clearField(6); - @$pb.TagNumber(6) - $0.Struct ensureInput() => $_ensure(5); - - @$pb.TagNumber(7) - $core.int get timeoutSec => $_getIZ(6); - @$pb.TagNumber(7) - set timeoutSec($core.int v) { $_setSignedInt32(6, v); } - @$pb.TagNumber(7) - $core.bool hasTimeoutSec() => $_has(6); - @$pb.TagNumber(7) - void clearTimeoutSec() => clearField(7); - - @$pb.TagNumber(8) - $core.Map<$core.String, $core.String> get metadata => $_getMap(7); - - @$pb.TagNumber(9) - $core.String get sessionId => $_getSZ(8); - @$pb.TagNumber(9) - set sessionId($core.String v) { $_setString(8, v); } - @$pb.TagNumber(9) - $core.bool hasSessionId() => $_has(8); - @$pb.TagNumber(9) - void clearSessionId() => clearField(9); - - @$pb.TagNumber(10) - RunSessionMode get sessionMode => $_getN(9); - @$pb.TagNumber(10) - set sessionMode(RunSessionMode v) { setField(10, v); } - @$pb.TagNumber(10) - $core.bool hasSessionMode() => $_has(9); - @$pb.TagNumber(10) - void clearSessionMode() => clearField(10); - - @$pb.TagNumber(11) - $core.bool get background => $_getBF(10); - @$pb.TagNumber(11) - set background($core.bool v) { $_setBool(10, v); } - @$pb.TagNumber(11) - $core.bool hasBackground() => $_has(10); - @$pb.TagNumber(11) - void clearBackground() => clearField(11); -} - -/// RunEvent is a streaming execution event. -class RunEvent extends $pb.GeneratedMessage { - factory RunEvent({ - $core.String? runId, - $core.String? type, - $core.String? delta, - $core.String? message, - $core.String? error, - Usage? usage, - $core.Map<$core.String, $core.String>? metadata, - $fixnum.Int64? timestamp, - $core.String? sessionId, - $core.bool? background, - $core.String? nodeId, - $core.String? nodeAlias, - }) { - final $result = create(); - if (runId != null) { - $result.runId = runId; - } - if (type != null) { - $result.type = type; - } - if (delta != null) { - $result.delta = delta; - } - if (message != null) { - $result.message = message; - } - if (error != null) { - $result.error = error; - } - if (usage != null) { - $result.usage = usage; - } - if (metadata != null) { - $result.metadata.addAll(metadata); - } - if (timestamp != null) { - $result.timestamp = timestamp; - } - if (sessionId != null) { - $result.sessionId = sessionId; - } - if (background != null) { - $result.background = background; - } - if (nodeId != null) { - $result.nodeId = nodeId; - } - if (nodeAlias != null) { - $result.nodeAlias = nodeAlias; - } - return $result; - } - RunEvent._() : super(); - factory RunEvent.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory RunEvent.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RunEvent', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'runId') - ..aOS(2, _omitFieldNames ? '' : 'type') - ..aOS(3, _omitFieldNames ? '' : 'delta') - ..aOS(4, _omitFieldNames ? '' : 'message') - ..aOS(5, _omitFieldNames ? '' : 'error') - ..aOM(6, _omitFieldNames ? '' : 'usage', subBuilder: Usage.create) - ..m<$core.String, $core.String>(7, _omitFieldNames ? '' : 'metadata', entryClassName: 'RunEvent.MetadataEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..aInt64(8, _omitFieldNames ? '' : 'timestamp') - ..aOS(9, _omitFieldNames ? '' : 'sessionId') - ..aOB(10, _omitFieldNames ? '' : 'background') - ..aOS(11, _omitFieldNames ? '' : 'nodeId') - ..aOS(12, _omitFieldNames ? '' : 'nodeAlias') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - RunEvent clone() => RunEvent()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - RunEvent copyWith(void Function(RunEvent) updates) => super.copyWith((message) => updates(message as RunEvent)) as RunEvent; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static RunEvent create() => RunEvent._(); - RunEvent createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static RunEvent getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static RunEvent? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get runId => $_getSZ(0); - @$pb.TagNumber(1) - set runId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasRunId() => $_has(0); - @$pb.TagNumber(1) - void clearRunId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get type => $_getSZ(1); - @$pb.TagNumber(2) - set type($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasType() => $_has(1); - @$pb.TagNumber(2) - void clearType() => clearField(2); - - @$pb.TagNumber(3) - $core.String get delta => $_getSZ(2); - @$pb.TagNumber(3) - set delta($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasDelta() => $_has(2); - @$pb.TagNumber(3) - void clearDelta() => clearField(3); - - @$pb.TagNumber(4) - $core.String get message => $_getSZ(3); - @$pb.TagNumber(4) - set message($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasMessage() => $_has(3); - @$pb.TagNumber(4) - void clearMessage() => clearField(4); - - @$pb.TagNumber(5) - $core.String get error => $_getSZ(4); - @$pb.TagNumber(5) - set error($core.String v) { $_setString(4, v); } - @$pb.TagNumber(5) - $core.bool hasError() => $_has(4); - @$pb.TagNumber(5) - void clearError() => clearField(5); - - @$pb.TagNumber(6) - Usage get usage => $_getN(5); - @$pb.TagNumber(6) - set usage(Usage v) { setField(6, v); } - @$pb.TagNumber(6) - $core.bool hasUsage() => $_has(5); - @$pb.TagNumber(6) - void clearUsage() => clearField(6); - @$pb.TagNumber(6) - Usage ensureUsage() => $_ensure(5); - - @$pb.TagNumber(7) - $core.Map<$core.String, $core.String> get metadata => $_getMap(6); - - @$pb.TagNumber(8) - $fixnum.Int64 get timestamp => $_getI64(7); - @$pb.TagNumber(8) - set timestamp($fixnum.Int64 v) { $_setInt64(7, v); } - @$pb.TagNumber(8) - $core.bool hasTimestamp() => $_has(7); - @$pb.TagNumber(8) - void clearTimestamp() => clearField(8); - - @$pb.TagNumber(9) - $core.String get sessionId => $_getSZ(8); - @$pb.TagNumber(9) - set sessionId($core.String v) { $_setString(8, v); } - @$pb.TagNumber(9) - $core.bool hasSessionId() => $_has(8); - @$pb.TagNumber(9) - void clearSessionId() => clearField(9); - - @$pb.TagNumber(10) - $core.bool get background => $_getBF(9); - @$pb.TagNumber(10) - set background($core.bool v) { $_setBool(9, v); } - @$pb.TagNumber(10) - $core.bool hasBackground() => $_has(9); - @$pb.TagNumber(10) - void clearBackground() => clearField(10); - - @$pb.TagNumber(11) - $core.String get nodeId => $_getSZ(10); - @$pb.TagNumber(11) - set nodeId($core.String v) { $_setString(10, v); } - @$pb.TagNumber(11) - $core.bool hasNodeId() => $_has(10); - @$pb.TagNumber(11) - void clearNodeId() => clearField(11); - - @$pb.TagNumber(12) - $core.String get nodeAlias => $_getSZ(11); - @$pb.TagNumber(12) - set nodeAlias($core.String v) { $_setString(11, v); } - @$pb.TagNumber(12) - $core.bool hasNodeAlias() => $_has(11); - @$pb.TagNumber(12) - void clearNodeAlias() => clearField(12); -} - -/// EdgeNodeEvent is a general edge-node lifecycle/control event envelope. -/// It is separate from RunEvent, which is reserved for adapter execution streams. -class EdgeNodeEvent extends $pb.GeneratedMessage { - factory EdgeNodeEvent({ - $core.String? eventId, - $core.String? type, - $core.String? source, - $core.String? nodeId, - $core.String? alias, - $core.String? reason, - $core.Map<$core.String, $core.String>? metadata, - $fixnum.Int64? timestamp, - }) { - final $result = create(); - if (eventId != null) { - $result.eventId = eventId; - } - if (type != null) { - $result.type = type; - } - if (source != null) { - $result.source = source; - } - if (nodeId != null) { - $result.nodeId = nodeId; - } - if (alias != null) { - $result.alias = alias; - } - if (reason != null) { - $result.reason = reason; - } - if (metadata != null) { - $result.metadata.addAll(metadata); - } - if (timestamp != null) { - $result.timestamp = timestamp; - } - return $result; - } - EdgeNodeEvent._() : super(); - factory EdgeNodeEvent.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory EdgeNodeEvent.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EdgeNodeEvent', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'eventId') - ..aOS(2, _omitFieldNames ? '' : 'type') - ..aOS(3, _omitFieldNames ? '' : 'source') - ..aOS(4, _omitFieldNames ? '' : 'nodeId') - ..aOS(5, _omitFieldNames ? '' : 'alias') - ..aOS(6, _omitFieldNames ? '' : 'reason') - ..m<$core.String, $core.String>(7, _omitFieldNames ? '' : 'metadata', entryClassName: 'EdgeNodeEvent.MetadataEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..aInt64(8, _omitFieldNames ? '' : 'timestamp') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - EdgeNodeEvent clone() => EdgeNodeEvent()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - EdgeNodeEvent copyWith(void Function(EdgeNodeEvent) updates) => super.copyWith((message) => updates(message as EdgeNodeEvent)) as EdgeNodeEvent; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static EdgeNodeEvent create() => EdgeNodeEvent._(); - EdgeNodeEvent createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static EdgeNodeEvent getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static EdgeNodeEvent? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get eventId => $_getSZ(0); - @$pb.TagNumber(1) - set eventId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasEventId() => $_has(0); - @$pb.TagNumber(1) - void clearEventId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get type => $_getSZ(1); - @$pb.TagNumber(2) - set type($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasType() => $_has(1); - @$pb.TagNumber(2) - void clearType() => clearField(2); - - @$pb.TagNumber(3) - $core.String get source => $_getSZ(2); - @$pb.TagNumber(3) - set source($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasSource() => $_has(2); - @$pb.TagNumber(3) - void clearSource() => clearField(3); - - @$pb.TagNumber(4) - $core.String get nodeId => $_getSZ(3); - @$pb.TagNumber(4) - set nodeId($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasNodeId() => $_has(3); - @$pb.TagNumber(4) - void clearNodeId() => clearField(4); - - @$pb.TagNumber(5) - $core.String get alias => $_getSZ(4); - @$pb.TagNumber(5) - set alias($core.String v) { $_setString(4, v); } - @$pb.TagNumber(5) - $core.bool hasAlias() => $_has(4); - @$pb.TagNumber(5) - void clearAlias() => clearField(5); - - @$pb.TagNumber(6) - $core.String get reason => $_getSZ(5); - @$pb.TagNumber(6) - set reason($core.String v) { $_setString(5, v); } - @$pb.TagNumber(6) - $core.bool hasReason() => $_has(5); - @$pb.TagNumber(6) - void clearReason() => clearField(6); - - @$pb.TagNumber(7) - $core.Map<$core.String, $core.String> get metadata => $_getMap(6); - - @$pb.TagNumber(8) - $fixnum.Int64 get timestamp => $_getI64(7); - @$pb.TagNumber(8) - set timestamp($fixnum.Int64 v) { $_setInt64(7, v); } - @$pb.TagNumber(8) - $core.bool hasTimestamp() => $_has(7); - @$pb.TagNumber(8) - void clearTimestamp() => clearField(8); -} - -class Usage extends $pb.GeneratedMessage { - factory Usage({ - $core.int? inputTokens, - $core.int? outputTokens, - }) { - final $result = create(); - if (inputTokens != null) { - $result.inputTokens = inputTokens; - } - if (outputTokens != null) { - $result.outputTokens = outputTokens; - } - return $result; - } - Usage._() : super(); - factory Usage.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory Usage.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Usage', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..a<$core.int>(1, _omitFieldNames ? '' : 'inputTokens', $pb.PbFieldType.O3) - ..a<$core.int>(2, _omitFieldNames ? '' : 'outputTokens', $pb.PbFieldType.O3) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - Usage clone() => Usage()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - Usage copyWith(void Function(Usage) updates) => super.copyWith((message) => updates(message as Usage)) as Usage; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static Usage create() => Usage._(); - Usage createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static Usage getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static Usage? _defaultInstance; - - @$pb.TagNumber(1) - $core.int get inputTokens => $_getIZ(0); - @$pb.TagNumber(1) - set inputTokens($core.int v) { $_setSignedInt32(0, v); } - @$pb.TagNumber(1) - $core.bool hasInputTokens() => $_has(0); - @$pb.TagNumber(1) - void clearInputTokens() => clearField(1); - - @$pb.TagNumber(2) - $core.int get outputTokens => $_getIZ(1); - @$pb.TagNumber(2) - set outputTokens($core.int v) { $_setSignedInt32(1, v); } - @$pb.TagNumber(2) - $core.bool hasOutputTokens() => $_has(1); - @$pb.TagNumber(2) - void clearOutputTokens() => clearField(2); -} - -/// Heartbeat is sent by both sides to keep the connection alive. -class Heartbeat extends $pb.GeneratedMessage { - factory Heartbeat({ - $fixnum.Int64? timestamp, - }) { - final $result = create(); - if (timestamp != null) { - $result.timestamp = timestamp; - } - return $result; - } - Heartbeat._() : super(); - factory Heartbeat.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory Heartbeat.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Heartbeat', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aInt64(1, _omitFieldNames ? '' : 'timestamp') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - Heartbeat clone() => Heartbeat()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - Heartbeat copyWith(void Function(Heartbeat) updates) => super.copyWith((message) => updates(message as Heartbeat)) as Heartbeat; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static Heartbeat create() => Heartbeat._(); - Heartbeat createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static Heartbeat getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static Heartbeat? _defaultInstance; - - @$pb.TagNumber(1) - $fixnum.Int64 get timestamp => $_getI64(0); - @$pb.TagNumber(1) - set timestamp($fixnum.Int64 v) { $_setInt64(0, v); } - @$pb.TagNumber(1) - $core.bool hasTimestamp() => $_has(0); - @$pb.TagNumber(1) - void clearTimestamp() => clearField(1); -} - -/// CancelRequest asks the node to cancel a running execution. -class CancelRequest extends $pb.GeneratedMessage { - factory CancelRequest({ - $core.String? runId, - $core.String? adapter, - $core.String? target, - $core.String? sessionId, - CancelAction? action, - }) { - final $result = create(); - if (runId != null) { - $result.runId = runId; - } - if (adapter != null) { - $result.adapter = adapter; - } - if (target != null) { - $result.target = target; - } - if (sessionId != null) { - $result.sessionId = sessionId; - } - if (action != null) { - $result.action = action; - } - return $result; - } - CancelRequest._() : super(); - factory CancelRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory CancelRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CancelRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'runId') - ..aOS(2, _omitFieldNames ? '' : 'adapter') - ..aOS(3, _omitFieldNames ? '' : 'target') - ..aOS(4, _omitFieldNames ? '' : 'sessionId') - ..e(5, _omitFieldNames ? '' : 'action', $pb.PbFieldType.OE, defaultOrMaker: CancelAction.CANCEL_ACTION_UNSPECIFIED, valueOf: CancelAction.valueOf, enumValues: CancelAction.values) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - CancelRequest clone() => CancelRequest()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - CancelRequest copyWith(void Function(CancelRequest) updates) => super.copyWith((message) => updates(message as CancelRequest)) as CancelRequest; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static CancelRequest create() => CancelRequest._(); - CancelRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static CancelRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static CancelRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get runId => $_getSZ(0); - @$pb.TagNumber(1) - set runId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasRunId() => $_has(0); - @$pb.TagNumber(1) - void clearRunId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get adapter => $_getSZ(1); - @$pb.TagNumber(2) - set adapter($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasAdapter() => $_has(1); - @$pb.TagNumber(2) - void clearAdapter() => clearField(2); - - @$pb.TagNumber(3) - $core.String get target => $_getSZ(2); - @$pb.TagNumber(3) - set target($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasTarget() => $_has(2); - @$pb.TagNumber(3) - void clearTarget() => clearField(3); - - @$pb.TagNumber(4) - $core.String get sessionId => $_getSZ(3); - @$pb.TagNumber(4) - set sessionId($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasSessionId() => $_has(3); - @$pb.TagNumber(4) - void clearSessionId() => clearField(4); - - @$pb.TagNumber(5) - CancelAction get action => $_getN(4); - @$pb.TagNumber(5) - set action(CancelAction v) { setField(5, v); } - @$pb.TagNumber(5) - $core.bool hasAction() => $_has(4); - @$pb.TagNumber(5) - void clearAction() => clearField(5); -} - -class NodeCommandRequest extends $pb.GeneratedMessage { - factory NodeCommandRequest({ - $core.String? requestId, - NodeCommandType? type, - $core.String? adapter, - $core.String? target, - $core.String? sessionId, - $core.int? timeoutSec, - $core.Map<$core.String, $core.String>? metadata, - }) { - final $result = create(); - if (requestId != null) { - $result.requestId = requestId; - } - if (type != null) { - $result.type = type; - } - if (adapter != null) { - $result.adapter = adapter; - } - if (target != null) { - $result.target = target; - } - if (sessionId != null) { - $result.sessionId = sessionId; - } - if (timeoutSec != null) { - $result.timeoutSec = timeoutSec; - } - if (metadata != null) { - $result.metadata.addAll(metadata); - } - return $result; - } - NodeCommandRequest._() : super(); - factory NodeCommandRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory NodeCommandRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NodeCommandRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'requestId') - ..e(2, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: NodeCommandType.NODE_COMMAND_TYPE_UNSPECIFIED, valueOf: NodeCommandType.valueOf, enumValues: NodeCommandType.values) - ..aOS(3, _omitFieldNames ? '' : 'adapter') - ..aOS(4, _omitFieldNames ? '' : 'target') - ..aOS(5, _omitFieldNames ? '' : 'sessionId') - ..a<$core.int>(6, _omitFieldNames ? '' : 'timeoutSec', $pb.PbFieldType.O3) - ..m<$core.String, $core.String>(7, _omitFieldNames ? '' : 'metadata', entryClassName: 'NodeCommandRequest.MetadataEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - NodeCommandRequest clone() => NodeCommandRequest()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - NodeCommandRequest copyWith(void Function(NodeCommandRequest) updates) => super.copyWith((message) => updates(message as NodeCommandRequest)) as NodeCommandRequest; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static NodeCommandRequest create() => NodeCommandRequest._(); - NodeCommandRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static NodeCommandRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static NodeCommandRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get requestId => $_getSZ(0); - @$pb.TagNumber(1) - set requestId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasRequestId() => $_has(0); - @$pb.TagNumber(1) - void clearRequestId() => clearField(1); - - @$pb.TagNumber(2) - NodeCommandType get type => $_getN(1); - @$pb.TagNumber(2) - set type(NodeCommandType v) { setField(2, v); } - @$pb.TagNumber(2) - $core.bool hasType() => $_has(1); - @$pb.TagNumber(2) - void clearType() => clearField(2); - - @$pb.TagNumber(3) - $core.String get adapter => $_getSZ(2); - @$pb.TagNumber(3) - set adapter($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasAdapter() => $_has(2); - @$pb.TagNumber(3) - void clearAdapter() => clearField(3); - - @$pb.TagNumber(4) - $core.String get target => $_getSZ(3); - @$pb.TagNumber(4) - set target($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasTarget() => $_has(3); - @$pb.TagNumber(4) - void clearTarget() => clearField(4); - - @$pb.TagNumber(5) - $core.String get sessionId => $_getSZ(4); - @$pb.TagNumber(5) - set sessionId($core.String v) { $_setString(4, v); } - @$pb.TagNumber(5) - $core.bool hasSessionId() => $_has(4); - @$pb.TagNumber(5) - void clearSessionId() => clearField(5); - - @$pb.TagNumber(6) - $core.int get timeoutSec => $_getIZ(5); - @$pb.TagNumber(6) - set timeoutSec($core.int v) { $_setSignedInt32(5, v); } - @$pb.TagNumber(6) - $core.bool hasTimeoutSec() => $_has(5); - @$pb.TagNumber(6) - void clearTimeoutSec() => clearField(6); - - @$pb.TagNumber(7) - $core.Map<$core.String, $core.String> get metadata => $_getMap(6); -} - -class NodeCommandResponse extends $pb.GeneratedMessage { - factory NodeCommandResponse({ - $core.String? requestId, - NodeCommandType? type, - $core.String? adapter, - $core.String? target, - $core.String? sessionId, - AgentUsageStatus? usageStatus, - $core.String? error, - $core.Map<$core.String, $core.String>? result, - }) { - final $result = create(); - if (requestId != null) { - $result.requestId = requestId; - } - if (type != null) { - $result.type = type; - } - if (adapter != null) { - $result.adapter = adapter; - } - if (target != null) { - $result.target = target; - } - if (sessionId != null) { - $result.sessionId = sessionId; - } - if (usageStatus != null) { - $result.usageStatus = usageStatus; - } - if (error != null) { - $result.error = error; - } - if (result != null) { - $result.result.addAll(result); - } - return $result; - } - NodeCommandResponse._() : super(); - factory NodeCommandResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory NodeCommandResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NodeCommandResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'requestId') - ..e(2, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: NodeCommandType.NODE_COMMAND_TYPE_UNSPECIFIED, valueOf: NodeCommandType.valueOf, enumValues: NodeCommandType.values) - ..aOS(3, _omitFieldNames ? '' : 'adapter') - ..aOS(4, _omitFieldNames ? '' : 'target') - ..aOS(5, _omitFieldNames ? '' : 'sessionId') - ..aOM(6, _omitFieldNames ? '' : 'usageStatus', subBuilder: AgentUsageStatus.create) - ..aOS(7, _omitFieldNames ? '' : 'error') - ..m<$core.String, $core.String>(8, _omitFieldNames ? '' : 'result', entryClassName: 'NodeCommandResponse.ResultEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - NodeCommandResponse clone() => NodeCommandResponse()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - NodeCommandResponse copyWith(void Function(NodeCommandResponse) updates) => super.copyWith((message) => updates(message as NodeCommandResponse)) as NodeCommandResponse; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static NodeCommandResponse create() => NodeCommandResponse._(); - NodeCommandResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static NodeCommandResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static NodeCommandResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get requestId => $_getSZ(0); - @$pb.TagNumber(1) - set requestId($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasRequestId() => $_has(0); - @$pb.TagNumber(1) - void clearRequestId() => clearField(1); - - @$pb.TagNumber(2) - NodeCommandType get type => $_getN(1); - @$pb.TagNumber(2) - set type(NodeCommandType v) { setField(2, v); } - @$pb.TagNumber(2) - $core.bool hasType() => $_has(1); - @$pb.TagNumber(2) - void clearType() => clearField(2); - - @$pb.TagNumber(3) - $core.String get adapter => $_getSZ(2); - @$pb.TagNumber(3) - set adapter($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasAdapter() => $_has(2); - @$pb.TagNumber(3) - void clearAdapter() => clearField(3); - - @$pb.TagNumber(4) - $core.String get target => $_getSZ(3); - @$pb.TagNumber(4) - set target($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasTarget() => $_has(3); - @$pb.TagNumber(4) - void clearTarget() => clearField(4); - - @$pb.TagNumber(5) - $core.String get sessionId => $_getSZ(4); - @$pb.TagNumber(5) - set sessionId($core.String v) { $_setString(4, v); } - @$pb.TagNumber(5) - $core.bool hasSessionId() => $_has(4); - @$pb.TagNumber(5) - void clearSessionId() => clearField(5); - - @$pb.TagNumber(6) - AgentUsageStatus get usageStatus => $_getN(5); - @$pb.TagNumber(6) - set usageStatus(AgentUsageStatus v) { setField(6, v); } - @$pb.TagNumber(6) - $core.bool hasUsageStatus() => $_has(5); - @$pb.TagNumber(6) - void clearUsageStatus() => clearField(6); - @$pb.TagNumber(6) - AgentUsageStatus ensureUsageStatus() => $_ensure(5); - - @$pb.TagNumber(7) - $core.String get error => $_getSZ(6); - @$pb.TagNumber(7) - set error($core.String v) { $_setString(6, v); } - @$pb.TagNumber(7) - $core.bool hasError() => $_has(6); - @$pb.TagNumber(7) - void clearError() => clearField(7); - - /// result carries free-form key/value data for non-usage-status command types - /// (capabilities, session_list, transport_status). usage_status keeps its - /// dedicated typed payload. - @$pb.TagNumber(8) - $core.Map<$core.String, $core.String> get result => $_getMap(7); -} - -class AgentUsageStatus extends $pb.GeneratedMessage { - factory AgentUsageStatus({ - $core.String? rawOutput, - $core.String? dailyLimit, - $core.String? dailyResetTime, - $core.String? weeklyLimit, - $core.String? weeklyResetTime, - $core.Map<$core.String, $core.String>? metadata, - }) { - final $result = create(); - if (rawOutput != null) { - $result.rawOutput = rawOutput; - } - if (dailyLimit != null) { - $result.dailyLimit = dailyLimit; - } - if (dailyResetTime != null) { - $result.dailyResetTime = dailyResetTime; - } - if (weeklyLimit != null) { - $result.weeklyLimit = weeklyLimit; - } - if (weeklyResetTime != null) { - $result.weeklyResetTime = weeklyResetTime; - } - if (metadata != null) { - $result.metadata.addAll(metadata); - } - return $result; - } - AgentUsageStatus._() : super(); - factory AgentUsageStatus.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory AgentUsageStatus.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AgentUsageStatus', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'rawOutput') - ..aOS(2, _omitFieldNames ? '' : 'dailyLimit') - ..aOS(3, _omitFieldNames ? '' : 'dailyResetTime') - ..aOS(4, _omitFieldNames ? '' : 'weeklyLimit') - ..aOS(5, _omitFieldNames ? '' : 'weeklyResetTime') - ..m<$core.String, $core.String>(6, _omitFieldNames ? '' : 'metadata', entryClassName: 'AgentUsageStatus.MetadataEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('iop')) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - AgentUsageStatus clone() => AgentUsageStatus()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - AgentUsageStatus copyWith(void Function(AgentUsageStatus) updates) => super.copyWith((message) => updates(message as AgentUsageStatus)) as AgentUsageStatus; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static AgentUsageStatus create() => AgentUsageStatus._(); - AgentUsageStatus createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static AgentUsageStatus getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static AgentUsageStatus? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get rawOutput => $_getSZ(0); - @$pb.TagNumber(1) - set rawOutput($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasRawOutput() => $_has(0); - @$pb.TagNumber(1) - void clearRawOutput() => clearField(1); - - @$pb.TagNumber(2) - $core.String get dailyLimit => $_getSZ(1); - @$pb.TagNumber(2) - set dailyLimit($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasDailyLimit() => $_has(1); - @$pb.TagNumber(2) - void clearDailyLimit() => clearField(2); - - @$pb.TagNumber(3) - $core.String get dailyResetTime => $_getSZ(2); - @$pb.TagNumber(3) - set dailyResetTime($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasDailyResetTime() => $_has(2); - @$pb.TagNumber(3) - void clearDailyResetTime() => clearField(3); - - @$pb.TagNumber(4) - $core.String get weeklyLimit => $_getSZ(3); - @$pb.TagNumber(4) - set weeklyLimit($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasWeeklyLimit() => $_has(3); - @$pb.TagNumber(4) - void clearWeeklyLimit() => clearField(4); - - @$pb.TagNumber(5) - $core.String get weeklyResetTime => $_getSZ(4); - @$pb.TagNumber(5) - set weeklyResetTime($core.String v) { $_setString(4, v); } - @$pb.TagNumber(5) - $core.bool hasWeeklyResetTime() => $_has(4); - @$pb.TagNumber(5) - void clearWeeklyResetTime() => clearField(5); - - @$pb.TagNumber(6) - $core.Map<$core.String, $core.String> get metadata => $_getMap(5); -} - -/// Error is returned when a request fails at the transport layer. -class Error extends $pb.GeneratedMessage { - factory Error({ - $core.String? code, - $core.String? message, - }) { - final $result = create(); - if (code != null) { - $result.code = code; - } - if (message != null) { - $result.message = message; - } - return $result; - } - Error._() : super(); - factory Error.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory Error.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Error', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'code') - ..aOS(2, _omitFieldNames ? '' : 'message') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - Error clone() => Error()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - Error copyWith(void Function(Error) updates) => super.copyWith((message) => updates(message as Error)) as Error; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static Error create() => Error._(); - Error createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static Error getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static Error? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get code => $_getSZ(0); - @$pb.TagNumber(1) - set code($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasCode() => $_has(0); - @$pb.TagNumber(1) - void clearCode() => clearField(1); - - @$pb.TagNumber(2) - $core.String get message => $_getSZ(1); - @$pb.TagNumber(2) - set message($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasMessage() => $_has(1); - @$pb.TagNumber(2) - void clearMessage() => clearField(2); -} - -/// RegisterRequest is sent by node to edge immediately on connect. -class RegisterRequest extends $pb.GeneratedMessage { - factory RegisterRequest({ - $core.String? token, - }) { - final $result = create(); - if (token != null) { - $result.token = token; - } - return $result; - } - RegisterRequest._() : super(); - factory RegisterRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory RegisterRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RegisterRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'token') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - RegisterRequest clone() => RegisterRequest()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - RegisterRequest copyWith(void Function(RegisterRequest) updates) => super.copyWith((message) => updates(message as RegisterRequest)) as RegisterRequest; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static RegisterRequest create() => RegisterRequest._(); - RegisterRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static RegisterRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static RegisterRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get token => $_getSZ(0); - @$pb.TagNumber(1) - set token($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasToken() => $_has(0); - @$pb.TagNumber(1) - void clearToken() => clearField(1); -} - -/// RegisterResponse is sent by edge to node in response to RegisterRequest. -class RegisterResponse extends $pb.GeneratedMessage { - factory RegisterResponse({ - $core.bool? accepted, - $core.String? nodeId, - $core.String? alias, - $core.String? reason, - NodeConfigPayload? config, - }) { - final $result = create(); - if (accepted != null) { - $result.accepted = accepted; - } - if (nodeId != null) { - $result.nodeId = nodeId; - } - if (alias != null) { - $result.alias = alias; - } - if (reason != null) { - $result.reason = reason; - } - if (config != null) { - $result.config = config; - } - return $result; - } - RegisterResponse._() : super(); - factory RegisterResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory RegisterResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RegisterResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOB(1, _omitFieldNames ? '' : 'accepted') - ..aOS(2, _omitFieldNames ? '' : 'nodeId') - ..aOS(3, _omitFieldNames ? '' : 'alias') - ..aOS(4, _omitFieldNames ? '' : 'reason') - ..aOM(5, _omitFieldNames ? '' : 'config', subBuilder: NodeConfigPayload.create) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - RegisterResponse clone() => RegisterResponse()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - RegisterResponse copyWith(void Function(RegisterResponse) updates) => super.copyWith((message) => updates(message as RegisterResponse)) as RegisterResponse; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static RegisterResponse create() => RegisterResponse._(); - RegisterResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static RegisterResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static RegisterResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.bool get accepted => $_getBF(0); - @$pb.TagNumber(1) - set accepted($core.bool v) { $_setBool(0, v); } - @$pb.TagNumber(1) - $core.bool hasAccepted() => $_has(0); - @$pb.TagNumber(1) - void clearAccepted() => clearField(1); - - @$pb.TagNumber(2) - $core.String get nodeId => $_getSZ(1); - @$pb.TagNumber(2) - set nodeId($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasNodeId() => $_has(1); - @$pb.TagNumber(2) - void clearNodeId() => clearField(2); - - @$pb.TagNumber(3) - $core.String get alias => $_getSZ(2); - @$pb.TagNumber(3) - set alias($core.String v) { $_setString(2, v); } - @$pb.TagNumber(3) - $core.bool hasAlias() => $_has(2); - @$pb.TagNumber(3) - void clearAlias() => clearField(3); - - @$pb.TagNumber(4) - $core.String get reason => $_getSZ(3); - @$pb.TagNumber(4) - set reason($core.String v) { $_setString(3, v); } - @$pb.TagNumber(4) - $core.bool hasReason() => $_has(3); - @$pb.TagNumber(4) - void clearReason() => clearField(4); - - @$pb.TagNumber(5) - NodeConfigPayload get config => $_getN(4); - @$pb.TagNumber(5) - set config(NodeConfigPayload v) { setField(5, v); } - @$pb.TagNumber(5) - $core.bool hasConfig() => $_has(4); - @$pb.TagNumber(5) - void clearConfig() => clearField(5); - @$pb.TagNumber(5) - NodeConfigPayload ensureConfig() => $_ensure(4); -} - -/// NodeConfigPayload carries all configuration edge pushes to the node. -class NodeConfigPayload extends $pb.GeneratedMessage { - factory NodeConfigPayload({ - $core.Iterable? adapters, - NodeRuntimeConfig? runtime, - }) { - final $result = create(); - if (adapters != null) { - $result.adapters.addAll(adapters); - } - if (runtime != null) { - $result.runtime = runtime; - } - return $result; - } - NodeConfigPayload._() : super(); - factory NodeConfigPayload.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory NodeConfigPayload.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NodeConfigPayload', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..pc(1, _omitFieldNames ? '' : 'adapters', $pb.PbFieldType.PM, subBuilder: AdapterConfig.create) - ..aOM(2, _omitFieldNames ? '' : 'runtime', subBuilder: NodeRuntimeConfig.create) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - NodeConfigPayload clone() => NodeConfigPayload()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - NodeConfigPayload copyWith(void Function(NodeConfigPayload) updates) => super.copyWith((message) => updates(message as NodeConfigPayload)) as NodeConfigPayload; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static NodeConfigPayload create() => NodeConfigPayload._(); - NodeConfigPayload createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static NodeConfigPayload getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static NodeConfigPayload? _defaultInstance; - - @$pb.TagNumber(1) - $core.List get adapters => $_getList(0); - - @$pb.TagNumber(2) - NodeRuntimeConfig get runtime => $_getN(1); - @$pb.TagNumber(2) - set runtime(NodeRuntimeConfig v) { setField(2, v); } - @$pb.TagNumber(2) - $core.bool hasRuntime() => $_has(1); - @$pb.TagNumber(2) - void clearRuntime() => clearField(2); - @$pb.TagNumber(2) - NodeRuntimeConfig ensureRuntime() => $_ensure(1); -} - -enum AdapterConfig_Config { - cli, - ollama, - vllm, - notSet -} - -/// AdapterConfig describes one adapter to enable on the node. -class AdapterConfig extends $pb.GeneratedMessage { - factory AdapterConfig({ - $core.String? type, - $core.bool? enabled, - $0.Struct? settings, - CLIAdapterConfig? cli, - OllamaAdapterConfig? ollama, - VllmAdapterConfig? vllm, - }) { - final $result = create(); - if (type != null) { - $result.type = type; - } - if (enabled != null) { - $result.enabled = enabled; - } - if (settings != null) { - $result.settings = settings; - } - if (cli != null) { - $result.cli = cli; - } - if (ollama != null) { - $result.ollama = ollama; - } - if (vllm != null) { - $result.vllm = vllm; - } - return $result; - } - AdapterConfig._() : super(); - factory AdapterConfig.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory AdapterConfig.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static const $core.Map<$core.int, AdapterConfig_Config> _AdapterConfig_ConfigByTag = { - 4 : AdapterConfig_Config.cli, - 5 : AdapterConfig_Config.ollama, - 6 : AdapterConfig_Config.vllm, - 0 : AdapterConfig_Config.notSet - }; - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AdapterConfig', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..oo(0, [4, 5, 6]) - ..aOS(1, _omitFieldNames ? '' : 'type') - ..aOB(2, _omitFieldNames ? '' : 'enabled') - ..aOM<$0.Struct>(3, _omitFieldNames ? '' : 'settings', subBuilder: $0.Struct.create) - ..aOM(4, _omitFieldNames ? '' : 'cli', subBuilder: CLIAdapterConfig.create) - ..aOM(5, _omitFieldNames ? '' : 'ollama', subBuilder: OllamaAdapterConfig.create) - ..aOM(6, _omitFieldNames ? '' : 'vllm', subBuilder: VllmAdapterConfig.create) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - AdapterConfig clone() => AdapterConfig()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - AdapterConfig copyWith(void Function(AdapterConfig) updates) => super.copyWith((message) => updates(message as AdapterConfig)) as AdapterConfig; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static AdapterConfig create() => AdapterConfig._(); - AdapterConfig createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static AdapterConfig getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static AdapterConfig? _defaultInstance; - - AdapterConfig_Config whichConfig() => _AdapterConfig_ConfigByTag[$_whichOneof(0)]!; - void clearConfig() => clearField($_whichOneof(0)); - - @$pb.TagNumber(1) - $core.String get type => $_getSZ(0); - @$pb.TagNumber(1) - set type($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasType() => $_has(0); - @$pb.TagNumber(1) - void clearType() => clearField(1); - - @$pb.TagNumber(2) - $core.bool get enabled => $_getBF(1); - @$pb.TagNumber(2) - set enabled($core.bool v) { $_setBool(1, v); } - @$pb.TagNumber(2) - $core.bool hasEnabled() => $_has(1); - @$pb.TagNumber(2) - void clearEnabled() => clearField(2); - - @$pb.TagNumber(3) - $0.Struct get settings => $_getN(2); - @$pb.TagNumber(3) - set settings($0.Struct v) { setField(3, v); } - @$pb.TagNumber(3) - $core.bool hasSettings() => $_has(2); - @$pb.TagNumber(3) - void clearSettings() => clearField(3); - @$pb.TagNumber(3) - $0.Struct ensureSettings() => $_ensure(2); - - @$pb.TagNumber(4) - CLIAdapterConfig get cli => $_getN(3); - @$pb.TagNumber(4) - set cli(CLIAdapterConfig v) { setField(4, v); } - @$pb.TagNumber(4) - $core.bool hasCli() => $_has(3); - @$pb.TagNumber(4) - void clearCli() => clearField(4); - @$pb.TagNumber(4) - CLIAdapterConfig ensureCli() => $_ensure(3); - - @$pb.TagNumber(5) - OllamaAdapterConfig get ollama => $_getN(4); - @$pb.TagNumber(5) - set ollama(OllamaAdapterConfig v) { setField(5, v); } - @$pb.TagNumber(5) - $core.bool hasOllama() => $_has(4); - @$pb.TagNumber(5) - void clearOllama() => clearField(5); - @$pb.TagNumber(5) - OllamaAdapterConfig ensureOllama() => $_ensure(4); - - @$pb.TagNumber(6) - VllmAdapterConfig get vllm => $_getN(5); - @$pb.TagNumber(6) - set vllm(VllmAdapterConfig v) { setField(6, v); } - @$pb.TagNumber(6) - $core.bool hasVllm() => $_has(5); - @$pb.TagNumber(6) - void clearVllm() => clearField(6); - @$pb.TagNumber(6) - VllmAdapterConfig ensureVllm() => $_ensure(5); -} - -class CLIAdapterConfig extends $pb.GeneratedMessage { - factory CLIAdapterConfig({ - $core.Map<$core.String, CLIProfileConfig>? profiles, - }) { - final $result = create(); - if (profiles != null) { - $result.profiles.addAll(profiles); - } - return $result; - } - CLIAdapterConfig._() : super(); - factory CLIAdapterConfig.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory CLIAdapterConfig.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CLIAdapterConfig', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..m<$core.String, CLIProfileConfig>(1, _omitFieldNames ? '' : 'profiles', entryClassName: 'CLIAdapterConfig.ProfilesEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OM, valueCreator: CLIProfileConfig.create, valueDefaultOrMaker: CLIProfileConfig.getDefault, packageName: const $pb.PackageName('iop')) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - CLIAdapterConfig clone() => CLIAdapterConfig()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - CLIAdapterConfig copyWith(void Function(CLIAdapterConfig) updates) => super.copyWith((message) => updates(message as CLIAdapterConfig)) as CLIAdapterConfig; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static CLIAdapterConfig create() => CLIAdapterConfig._(); - CLIAdapterConfig createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static CLIAdapterConfig getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static CLIAdapterConfig? _defaultInstance; - - @$pb.TagNumber(1) - $core.Map<$core.String, CLIProfileConfig> get profiles => $_getMap(0); -} - -class CLIProfileConfig extends $pb.GeneratedMessage { - factory CLIProfileConfig({ - $core.String? command, - $core.Iterable<$core.String>? args, - $core.Iterable<$core.String>? env, - $core.bool? persistent, - $core.bool? terminal, - $core.int? responseIdleTimeoutMs, - $core.int? startupIdleTimeoutMs, - $core.String? outputFormat, - CLICompletionMarker? completionMarker, - $core.String? mode, - $core.Iterable<$core.String>? resumeArgs, - }) { - final $result = create(); - if (command != null) { - $result.command = command; - } - if (args != null) { - $result.args.addAll(args); - } - if (env != null) { - $result.env.addAll(env); - } - if (persistent != null) { - $result.persistent = persistent; - } - if (terminal != null) { - $result.terminal = terminal; - } - if (responseIdleTimeoutMs != null) { - $result.responseIdleTimeoutMs = responseIdleTimeoutMs; - } - if (startupIdleTimeoutMs != null) { - $result.startupIdleTimeoutMs = startupIdleTimeoutMs; - } - if (outputFormat != null) { - $result.outputFormat = outputFormat; - } - if (completionMarker != null) { - $result.completionMarker = completionMarker; - } - if (mode != null) { - $result.mode = mode; - } - if (resumeArgs != null) { - $result.resumeArgs.addAll(resumeArgs); - } - return $result; - } - CLIProfileConfig._() : super(); - factory CLIProfileConfig.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory CLIProfileConfig.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CLIProfileConfig', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'command') - ..pPS(2, _omitFieldNames ? '' : 'args') - ..pPS(3, _omitFieldNames ? '' : 'env') - ..aOB(4, _omitFieldNames ? '' : 'persistent') - ..aOB(5, _omitFieldNames ? '' : 'terminal') - ..a<$core.int>(6, _omitFieldNames ? '' : 'responseIdleTimeoutMs', $pb.PbFieldType.O3) - ..a<$core.int>(7, _omitFieldNames ? '' : 'startupIdleTimeoutMs', $pb.PbFieldType.O3) - ..aOS(8, _omitFieldNames ? '' : 'outputFormat') - ..aOM(9, _omitFieldNames ? '' : 'completionMarker', subBuilder: CLICompletionMarker.create) - ..aOS(10, _omitFieldNames ? '' : 'mode') - ..pPS(11, _omitFieldNames ? '' : 'resumeArgs') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - CLIProfileConfig clone() => CLIProfileConfig()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - CLIProfileConfig copyWith(void Function(CLIProfileConfig) updates) => super.copyWith((message) => updates(message as CLIProfileConfig)) as CLIProfileConfig; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static CLIProfileConfig create() => CLIProfileConfig._(); - CLIProfileConfig createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static CLIProfileConfig getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static CLIProfileConfig? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get command => $_getSZ(0); - @$pb.TagNumber(1) - set command($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasCommand() => $_has(0); - @$pb.TagNumber(1) - void clearCommand() => clearField(1); - - @$pb.TagNumber(2) - $core.List<$core.String> get args => $_getList(1); - - @$pb.TagNumber(3) - $core.List<$core.String> get env => $_getList(2); - - @$pb.TagNumber(4) - $core.bool get persistent => $_getBF(3); - @$pb.TagNumber(4) - set persistent($core.bool v) { $_setBool(3, v); } - @$pb.TagNumber(4) - $core.bool hasPersistent() => $_has(3); - @$pb.TagNumber(4) - void clearPersistent() => clearField(4); - - @$pb.TagNumber(5) - $core.bool get terminal => $_getBF(4); - @$pb.TagNumber(5) - set terminal($core.bool v) { $_setBool(4, v); } - @$pb.TagNumber(5) - $core.bool hasTerminal() => $_has(4); - @$pb.TagNumber(5) - void clearTerminal() => clearField(5); - - @$pb.TagNumber(6) - $core.int get responseIdleTimeoutMs => $_getIZ(5); - @$pb.TagNumber(6) - set responseIdleTimeoutMs($core.int v) { $_setSignedInt32(5, v); } - @$pb.TagNumber(6) - $core.bool hasResponseIdleTimeoutMs() => $_has(5); - @$pb.TagNumber(6) - void clearResponseIdleTimeoutMs() => clearField(6); - - @$pb.TagNumber(7) - $core.int get startupIdleTimeoutMs => $_getIZ(6); - @$pb.TagNumber(7) - set startupIdleTimeoutMs($core.int v) { $_setSignedInt32(6, v); } - @$pb.TagNumber(7) - $core.bool hasStartupIdleTimeoutMs() => $_has(6); - @$pb.TagNumber(7) - void clearStartupIdleTimeoutMs() => clearField(7); - - @$pb.TagNumber(8) - $core.String get outputFormat => $_getSZ(7); - @$pb.TagNumber(8) - set outputFormat($core.String v) { $_setString(7, v); } - @$pb.TagNumber(8) - $core.bool hasOutputFormat() => $_has(7); - @$pb.TagNumber(8) - void clearOutputFormat() => clearField(8); - - @$pb.TagNumber(9) - CLICompletionMarker get completionMarker => $_getN(8); - @$pb.TagNumber(9) - set completionMarker(CLICompletionMarker v) { setField(9, v); } - @$pb.TagNumber(9) - $core.bool hasCompletionMarker() => $_has(8); - @$pb.TagNumber(9) - void clearCompletionMarker() => clearField(9); - @$pb.TagNumber(9) - CLICompletionMarker ensureCompletionMarker() => $_ensure(8); - - @$pb.TagNumber(10) - $core.String get mode => $_getSZ(9); - @$pb.TagNumber(10) - set mode($core.String v) { $_setString(9, v); } - @$pb.TagNumber(10) - $core.bool hasMode() => $_has(9); - @$pb.TagNumber(10) - void clearMode() => clearField(10); - - @$pb.TagNumber(11) - $core.List<$core.String> get resumeArgs => $_getList(10); -} - -class CLICompletionMarker extends $pb.GeneratedMessage { - factory CLICompletionMarker({ - $core.String? line, - $core.String? regex, - }) { - final $result = create(); - if (line != null) { - $result.line = line; - } - if (regex != null) { - $result.regex = regex; - } - return $result; - } - CLICompletionMarker._() : super(); - factory CLICompletionMarker.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory CLICompletionMarker.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CLICompletionMarker', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'line') - ..aOS(2, _omitFieldNames ? '' : 'regex') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - CLICompletionMarker clone() => CLICompletionMarker()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - CLICompletionMarker copyWith(void Function(CLICompletionMarker) updates) => super.copyWith((message) => updates(message as CLICompletionMarker)) as CLICompletionMarker; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static CLICompletionMarker create() => CLICompletionMarker._(); - CLICompletionMarker createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static CLICompletionMarker getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static CLICompletionMarker? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get line => $_getSZ(0); - @$pb.TagNumber(1) - set line($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasLine() => $_has(0); - @$pb.TagNumber(1) - void clearLine() => clearField(1); - - @$pb.TagNumber(2) - $core.String get regex => $_getSZ(1); - @$pb.TagNumber(2) - set regex($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasRegex() => $_has(1); - @$pb.TagNumber(2) - void clearRegex() => clearField(2); -} - -class OllamaAdapterConfig extends $pb.GeneratedMessage { - factory OllamaAdapterConfig({ - $core.String? baseUrl, - $core.int? contextSize, - }) { - final $result = create(); - if (baseUrl != null) { - $result.baseUrl = baseUrl; - } - if (contextSize != null) { - $result.contextSize = contextSize; - } - return $result; - } - OllamaAdapterConfig._() : super(); - factory OllamaAdapterConfig.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory OllamaAdapterConfig.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'OllamaAdapterConfig', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'baseUrl') - ..a<$core.int>(2, _omitFieldNames ? '' : 'contextSize', $pb.PbFieldType.O3) - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - OllamaAdapterConfig clone() => OllamaAdapterConfig()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - OllamaAdapterConfig copyWith(void Function(OllamaAdapterConfig) updates) => super.copyWith((message) => updates(message as OllamaAdapterConfig)) as OllamaAdapterConfig; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static OllamaAdapterConfig create() => OllamaAdapterConfig._(); - OllamaAdapterConfig createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static OllamaAdapterConfig getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static OllamaAdapterConfig? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get baseUrl => $_getSZ(0); - @$pb.TagNumber(1) - set baseUrl($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasBaseUrl() => $_has(0); - @$pb.TagNumber(1) - void clearBaseUrl() => clearField(1); - - @$pb.TagNumber(2) - $core.int get contextSize => $_getIZ(1); - @$pb.TagNumber(2) - set contextSize($core.int v) { $_setSignedInt32(1, v); } - @$pb.TagNumber(2) - $core.bool hasContextSize() => $_has(1); - @$pb.TagNumber(2) - void clearContextSize() => clearField(2); -} - -class VllmAdapterConfig extends $pb.GeneratedMessage { - factory VllmAdapterConfig({ - $core.String? endpoint, - }) { - final $result = create(); - if (endpoint != null) { - $result.endpoint = endpoint; - } - return $result; - } - VllmAdapterConfig._() : super(); - factory VllmAdapterConfig.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory VllmAdapterConfig.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'VllmAdapterConfig', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..aOS(1, _omitFieldNames ? '' : 'endpoint') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - VllmAdapterConfig clone() => VllmAdapterConfig()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - VllmAdapterConfig copyWith(void Function(VllmAdapterConfig) updates) => super.copyWith((message) => updates(message as VllmAdapterConfig)) as VllmAdapterConfig; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static VllmAdapterConfig create() => VllmAdapterConfig._(); - VllmAdapterConfig createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static VllmAdapterConfig getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static VllmAdapterConfig? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get endpoint => $_getSZ(0); - @$pb.TagNumber(1) - set endpoint($core.String v) { $_setString(0, v); } - @$pb.TagNumber(1) - $core.bool hasEndpoint() => $_has(0); - @$pb.TagNumber(1) - void clearEndpoint() => clearField(1); -} - -/// NodeRuntimeConfig is the runtime tuning pushed to the node. -class NodeRuntimeConfig extends $pb.GeneratedMessage { - factory NodeRuntimeConfig({ - $core.int? concurrency, - $core.String? workspaceRoot, - }) { - final $result = create(); - if (concurrency != null) { - $result.concurrency = concurrency; - } - if (workspaceRoot != null) { - $result.workspaceRoot = workspaceRoot; - } - return $result; - } - NodeRuntimeConfig._() : super(); - factory NodeRuntimeConfig.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); - factory NodeRuntimeConfig.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); - - static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NodeRuntimeConfig', package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'), createEmptyInstance: create) - ..a<$core.int>(1, _omitFieldNames ? '' : 'concurrency', $pb.PbFieldType.O3) - ..aOS(2, _omitFieldNames ? '' : 'workspaceRoot') - ..hasRequiredFields = false - ; - - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - NodeRuntimeConfig clone() => NodeRuntimeConfig()..mergeFromMessage(this); - @$core.Deprecated( - 'Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - NodeRuntimeConfig copyWith(void Function(NodeRuntimeConfig) updates) => super.copyWith((message) => updates(message as NodeRuntimeConfig)) as NodeRuntimeConfig; - - $pb.BuilderInfo get info_ => _i; - - @$core.pragma('dart2js:noInline') - static NodeRuntimeConfig create() => NodeRuntimeConfig._(); - NodeRuntimeConfig createEmptyInstance() => create(); - static $pb.PbList createRepeated() => $pb.PbList(); - @$core.pragma('dart2js:noInline') - static NodeRuntimeConfig getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); - static NodeRuntimeConfig? _defaultInstance; - - @$pb.TagNumber(1) - $core.int get concurrency => $_getIZ(0); - @$pb.TagNumber(1) - set concurrency($core.int v) { $_setSignedInt32(0, v); } - @$pb.TagNumber(1) - $core.bool hasConcurrency() => $_has(0); - @$pb.TagNumber(1) - void clearConcurrency() => clearField(1); - - @$pb.TagNumber(2) - $core.String get workspaceRoot => $_getSZ(1); - @$pb.TagNumber(2) - set workspaceRoot($core.String v) { $_setString(1, v); } - @$pb.TagNumber(2) - $core.bool hasWorkspaceRoot() => $_has(1); - @$pb.TagNumber(2) - void clearWorkspaceRoot() => clearField(2); -} - - -const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); -const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/apps/portal/lib/gen/proto/iop/runtime.pbenum.dart b/apps/portal/lib/gen/proto/iop/runtime.pbenum.dart deleted file mode 100644 index 820b96c..0000000 --- a/apps/portal/lib/gen/proto/iop/runtime.pbenum.dart +++ /dev/null @@ -1,72 +0,0 @@ -// -// Generated code. Do not modify. -// source: proto/iop/runtime.proto -// -// @dart = 2.12 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import - -import 'dart:core' as $core; - -import 'package:protobuf/protobuf.dart' as $pb; - -class RunSessionMode extends $pb.ProtobufEnum { - static const RunSessionMode RUN_SESSION_MODE_UNSPECIFIED = RunSessionMode._(0, _omitEnumNames ? '' : 'RUN_SESSION_MODE_UNSPECIFIED'); - static const RunSessionMode RUN_SESSION_MODE_CREATE_IF_MISSING = RunSessionMode._(1, _omitEnumNames ? '' : 'RUN_SESSION_MODE_CREATE_IF_MISSING'); - static const RunSessionMode RUN_SESSION_MODE_REQUIRE_EXISTING = RunSessionMode._(2, _omitEnumNames ? '' : 'RUN_SESSION_MODE_REQUIRE_EXISTING'); - - static const $core.List values = [ - RUN_SESSION_MODE_UNSPECIFIED, - RUN_SESSION_MODE_CREATE_IF_MISSING, - RUN_SESSION_MODE_REQUIRE_EXISTING, - ]; - - static final $core.Map<$core.int, RunSessionMode> _byValue = $pb.ProtobufEnum.initByValue(values); - static RunSessionMode? valueOf($core.int value) => _byValue[value]; - - const RunSessionMode._($core.int v, $core.String n) : super(v, n); -} - -class CancelAction extends $pb.ProtobufEnum { - static const CancelAction CANCEL_ACTION_UNSPECIFIED = CancelAction._(0, _omitEnumNames ? '' : 'CANCEL_ACTION_UNSPECIFIED'); - static const CancelAction CANCEL_ACTION_CANCEL_RUN = CancelAction._(1, _omitEnumNames ? '' : 'CANCEL_ACTION_CANCEL_RUN'); - static const CancelAction CANCEL_ACTION_TERMINATE_SESSION = CancelAction._(2, _omitEnumNames ? '' : 'CANCEL_ACTION_TERMINATE_SESSION'); - - static const $core.List values = [ - CANCEL_ACTION_UNSPECIFIED, - CANCEL_ACTION_CANCEL_RUN, - CANCEL_ACTION_TERMINATE_SESSION, - ]; - - static final $core.Map<$core.int, CancelAction> _byValue = $pb.ProtobufEnum.initByValue(values); - static CancelAction? valueOf($core.int value) => _byValue[value]; - - const CancelAction._($core.int v, $core.String n) : super(v, n); -} - -class NodeCommandType extends $pb.ProtobufEnum { - static const NodeCommandType NODE_COMMAND_TYPE_UNSPECIFIED = NodeCommandType._(0, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_UNSPECIFIED'); - static const NodeCommandType NODE_COMMAND_TYPE_USAGE_STATUS = NodeCommandType._(1, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_USAGE_STATUS'); - static const NodeCommandType NODE_COMMAND_TYPE_CAPABILITIES = NodeCommandType._(2, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_CAPABILITIES'); - static const NodeCommandType NODE_COMMAND_TYPE_SESSION_LIST = NodeCommandType._(3, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_SESSION_LIST'); - static const NodeCommandType NODE_COMMAND_TYPE_TRANSPORT_STATUS = NodeCommandType._(4, _omitEnumNames ? '' : 'NODE_COMMAND_TYPE_TRANSPORT_STATUS'); - - static const $core.List values = [ - NODE_COMMAND_TYPE_UNSPECIFIED, - NODE_COMMAND_TYPE_USAGE_STATUS, - NODE_COMMAND_TYPE_CAPABILITIES, - NODE_COMMAND_TYPE_SESSION_LIST, - NODE_COMMAND_TYPE_TRANSPORT_STATUS, - ]; - - static final $core.Map<$core.int, NodeCommandType> _byValue = $pb.ProtobufEnum.initByValue(values); - static NodeCommandType? valueOf($core.int value) => _byValue[value]; - - const NodeCommandType._($core.int v, $core.String n) : super(v, n); -} - - -const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/apps/portal/lib/iop_wire/parser_map.dart b/apps/portal/lib/iop_wire/parser_map.dart deleted file mode 100644 index 152960f..0000000 --- a/apps/portal/lib/iop_wire/parser_map.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:protobuf/protobuf.dart'; -import '../gen/proto/iop/control.pb.dart'; - -final Map)> portalParserMap = { - 'iop.PortalHelloRequest': PortalHelloRequest.fromBuffer, - 'iop.PortalHelloResponse': PortalHelloResponse.fromBuffer, - 'PortalHelloRequest': PortalHelloRequest.fromBuffer, - 'PortalHelloResponse': PortalHelloResponse.fromBuffer, -}; diff --git a/apps/portal/test/iop_wire/parser_map_test.dart b/apps/portal/test/iop_wire/parser_map_test.dart deleted file mode 100644 index 806efcf..0000000 --- a/apps/portal/test/iop_wire/parser_map_test.dart +++ /dev/null @@ -1,37 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:iop_portal/iop_wire/parser_map.dart'; -import 'package:iop_portal/gen/proto/iop/control.pb.dart'; - -void main() { - test('Parser map should contain PortalHelloRequest and PortalHelloResponse', () { - expect(portalParserMap.containsKey('iop.PortalHelloRequest'), isTrue); - expect(portalParserMap.containsKey('iop.PortalHelloResponse'), isTrue); - expect(portalParserMap.containsKey('PortalHelloRequest'), isTrue); - expect(portalParserMap.containsKey('PortalHelloResponse'), isTrue); - - // Verify parser works - final req = PortalHelloRequest() - ..clientId = 'test-client' - ..clientVersion = '1.0.0'; - final reqBytes = req.writeToBuffer(); - - final parserReq = portalParserMap['PortalHelloRequest']; - expect(parserReq, isNotNull); - final parsedReq = parserReq!(reqBytes) as PortalHelloRequest; - expect(parsedReq.clientId, equals('test-client')); - expect(parsedReq.clientVersion, equals('1.0.0')); - - final res = PortalHelloResponse() - ..ready = true - ..protocol = 'proto' - ..message = 'welcome'; - final resBytes = res.writeToBuffer(); - - final parserRes = portalParserMap['PortalHelloResponse']; - expect(parserRes, isNotNull); - final parsedRes = parserRes!(resBytes) as PortalHelloResponse; - expect(parsedRes.ready, isTrue); - expect(parsedRes.protocol, equals('proto')); - expect(parsedRes.message, equals('welcome')); - }); -} diff --git a/apps/portal/test/portal_config_test.dart b/apps/portal/test/portal_config_test.dart deleted file mode 100644 index 24098f3..0000000 --- a/apps/portal/test/portal_config_test.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:iop_portal/portal_config.dart'; - -void main() { - test('PortalConfig default values', () { - expect(PortalConfig.controlPlaneHttpUrl, 'http://localhost:9080'); - expect(PortalConfig.controlPlaneWireUrl, 'ws://localhost:19080/portal'); - }); -} diff --git a/apps/portal/test/widget_test.dart b/apps/portal/test/widget_test.dart deleted file mode 100644 index ee686e9..0000000 --- a/apps/portal/test/widget_test.dart +++ /dev/null @@ -1,90 +0,0 @@ -import 'dart:async'; -import 'dart:io'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:iop_portal/main.dart'; -import 'package:iop_portal/portal_config.dart'; -import 'package:iop_portal/iop_wire/portal_wire_client.dart'; -import 'package:iop_portal/gen/proto/iop/control.pb.dart'; -import 'package:protobuf/protobuf.dart'; -import 'package:fixnum/fixnum.dart'; - -class FakeWebSocket implements WebSocket { - final _controller = StreamController(); - - @override - StreamSubscription listen( - void Function(dynamic event)? onData, { - Function? onError, - void Function()? onDone, - bool? cancelOnError, - }) { - return _controller.stream.listen( - onData, - onError: onError, - onDone: onDone, - cancelOnError: cancelOnError, - ); - } - - @override - dynamic noSuchMethod(Invocation invocation) { - return null; - } -} - -class FakePortalWireClient extends PortalWireClient { - final bool shouldSuccess; - final String mockMessage; - - FakePortalWireClient({this.shouldSuccess = true, this.mockMessage = 'Welcome to Toki CP!'}) - : super(FakeWebSocket()); - - @override - bool get isAlive => true; - - @override - Future sendRequest( - Req data, { - Duration timeout = const Duration(seconds: 30), - }) async { - if (data is PortalHelloRequest) { - final response = PortalHelloResponse() - ..ready = shouldSuccess - ..protocol = 'iop-wire-v1' - ..serverTimeUnixNano = Int64(1716584400) - ..message = mockMessage; - return response as Res; - } - throw UnimplementedError(); - } -} - -void main() { - testWidgets('Portal App basic rendering and success handshake test', (WidgetTester tester) async { - final fakeClient = FakePortalWireClient(shouldSuccess: true); - - await tester.pumpWidget(IopPortalApp(testClient: fakeClient)); - await tester.pump(); - await tester.pump(const Duration(milliseconds: 100)); - - expect(find.text('IOP Portal'), findsOneWidget); - expect(find.text('HEALTH: OK'), findsOneWidget); - - expect(find.text(PortalConfig.controlPlaneHttpUrl, findRichText: true), findsOneWidget); - expect(find.text(PortalConfig.controlPlaneWireUrl, findRichText: true), findsOneWidget); - - expect(find.text('Connected'), findsOneWidget); - expect(find.textContaining('Handshake Success: Welcome to Toki CP!'), findsOneWidget); - }); - - testWidgets('Portal App connection error state test', (WidgetTester tester) async { - final fakeClient = FakePortalWireClient(shouldSuccess: false, mockMessage: 'Invalid Version'); - - await tester.pumpWidget(IopPortalApp(testClient: fakeClient)); - await tester.pump(); - await tester.pump(const Duration(milliseconds: 100)); - - expect(find.text('Error'), findsOneWidget); - expect(find.textContaining('Handshake Rejected: Invalid Version'), findsOneWidget); - }); -} diff --git a/docker-compose.yml b/docker-compose.yml index ab4e441..cef0b6b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -58,10 +58,10 @@ services: web: build: context: .. - dockerfile: iop/apps/portal/Dockerfile + dockerfile: iop/apps/client/Dockerfile args: IOP_CONTROL_PLANE_HTTP_URL: "http://localhost:${IOP_CONTROL_PLANE_HTTP_PORT:-9080}" - IOP_CONTROL_PLANE_WIRE_URL: "ws://localhost:${IOP_CONTROL_PLANE_WIRE_PORT:-19080}/portal" + IOP_CONTROL_PLANE_WIRE_URL: "ws://localhost:${IOP_CONTROL_PLANE_WIRE_PORT:-19080}/client" restart: unless-stopped ports: - "${IOP_WEB_PORT:-3000}:3000" diff --git a/proto/gen/iop/control.pb.go b/proto/gen/iop/control.pb.go index 225a740..29c5f32 100644 --- a/proto/gen/iop/control.pb.go +++ b/proto/gen/iop/control.pb.go @@ -214,7 +214,7 @@ func (x *ScheduleResponse) GetToken() string { return "" } -type PortalHelloRequest struct { +type ClientHelloRequest struct { state protoimpl.MessageState `protogen:"open.v1"` ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` ClientVersion string `protobuf:"bytes,2,opt,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` @@ -222,20 +222,20 @@ type PortalHelloRequest struct { sizeCache protoimpl.SizeCache } -func (x *PortalHelloRequest) Reset() { - *x = PortalHelloRequest{} +func (x *ClientHelloRequest) Reset() { + *x = ClientHelloRequest{} mi := &file_proto_iop_control_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *PortalHelloRequest) String() string { +func (x *ClientHelloRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PortalHelloRequest) ProtoMessage() {} +func (*ClientHelloRequest) ProtoMessage() {} -func (x *PortalHelloRequest) ProtoReflect() protoreflect.Message { +func (x *ClientHelloRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_iop_control_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -247,26 +247,26 @@ func (x *PortalHelloRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PortalHelloRequest.ProtoReflect.Descriptor instead. -func (*PortalHelloRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientHelloRequest.ProtoReflect.Descriptor instead. +func (*ClientHelloRequest) Descriptor() ([]byte, []int) { return file_proto_iop_control_proto_rawDescGZIP(), []int{3} } -func (x *PortalHelloRequest) GetClientId() string { +func (x *ClientHelloRequest) GetClientId() string { if x != nil { return x.ClientId } return "" } -func (x *PortalHelloRequest) GetClientVersion() string { +func (x *ClientHelloRequest) GetClientVersion() string { if x != nil { return x.ClientVersion } return "" } -type PortalHelloResponse struct { +type ClientHelloResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Ready bool `protobuf:"varint,1,opt,name=ready,proto3" json:"ready,omitempty"` Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` @@ -276,20 +276,20 @@ type PortalHelloResponse struct { sizeCache protoimpl.SizeCache } -func (x *PortalHelloResponse) Reset() { - *x = PortalHelloResponse{} +func (x *ClientHelloResponse) Reset() { + *x = ClientHelloResponse{} mi := &file_proto_iop_control_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *PortalHelloResponse) String() string { +func (x *ClientHelloResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PortalHelloResponse) ProtoMessage() {} +func (*ClientHelloResponse) ProtoMessage() {} -func (x *PortalHelloResponse) ProtoReflect() protoreflect.Message { +func (x *ClientHelloResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_iop_control_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -301,33 +301,33 @@ func (x *PortalHelloResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PortalHelloResponse.ProtoReflect.Descriptor instead. -func (*PortalHelloResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientHelloResponse.ProtoReflect.Descriptor instead. +func (*ClientHelloResponse) Descriptor() ([]byte, []int) { return file_proto_iop_control_proto_rawDescGZIP(), []int{4} } -func (x *PortalHelloResponse) GetReady() bool { +func (x *ClientHelloResponse) GetReady() bool { if x != nil { return x.Ready } return false } -func (x *PortalHelloResponse) GetProtocol() string { +func (x *ClientHelloResponse) GetProtocol() string { if x != nil { return x.Protocol } return "" } -func (x *PortalHelloResponse) GetServerTimeUnixNano() int64 { +func (x *ClientHelloResponse) GetServerTimeUnixNano() int64 { if x != nil { return x.ServerTimeUnixNano } return 0 } -func (x *PortalHelloResponse) GetMessage() string { +func (x *ClientHelloResponse) GetMessage() string { if x != nil { return x.Message } @@ -361,10 +361,10 @@ const file_proto_iop_control_proto_rawDesc = "" + "\anode_id\x18\x01 \x01(\tR\x06nodeId\x12\x18\n" + "\aaddress\x18\x02 \x01(\tR\aaddress\x12\x14\n" + "\x05token\x18\x03 \x01(\tR\x05token\"X\n" + - "\x12PortalHelloRequest\x12\x1b\n" + + "\x12ClientHelloRequest\x12\x1b\n" + "\tclient_id\x18\x01 \x01(\tR\bclientId\x12%\n" + "\x0eclient_version\x18\x02 \x01(\tR\rclientVersion\"\x94\x01\n" + - "\x13PortalHelloResponse\x12\x14\n" + + "\x13ClientHelloResponse\x12\x14\n" + "\x05ready\x18\x01 \x01(\bR\x05ready\x12\x1a\n" + "\bprotocol\x18\x02 \x01(\tR\bprotocol\x121\n" + "\x15server_time_unix_nano\x18\x03 \x01(\x03R\x12serverTimeUnixNano\x12\x18\n" + @@ -387,8 +387,8 @@ var file_proto_iop_control_proto_goTypes = []any{ (*PolicyRule)(nil), // 0: iop.PolicyRule (*ScheduleRequest)(nil), // 1: iop.ScheduleRequest (*ScheduleResponse)(nil), // 2: iop.ScheduleResponse - (*PortalHelloRequest)(nil), // 3: iop.PortalHelloRequest - (*PortalHelloResponse)(nil), // 4: iop.PortalHelloResponse + (*ClientHelloRequest)(nil), // 3: iop.ClientHelloRequest + (*ClientHelloResponse)(nil), // 4: iop.ClientHelloResponse nil, // 5: iop.PolicyRule.ParamsEntry nil, // 6: iop.ScheduleRequest.MetadataEntry } diff --git a/proto/iop/control.proto b/proto/iop/control.proto index c69dbc5..a3aced3 100644 --- a/proto/iop/control.proto +++ b/proto/iop/control.proto @@ -28,12 +28,12 @@ message ScheduleResponse { string token = 3; } -message PortalHelloRequest { +message ClientHelloRequest { string client_id = 1; string client_version = 2; } -message PortalHelloResponse { +message ClientHelloResponse { bool ready = 1; string protocol = 2; int64 server_time_unix_nano = 3; diff --git a/scripts/dev/web.sh b/scripts/dev/web.sh index bd549bc..9281408 100755 --- a/scripts/dev/web.sh +++ b/scripts/dev/web.sh @@ -3,16 +3,16 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" -PORTAL_DIR="$REPO_ROOT/apps/portal" +CLIENT_DIR="$REPO_ROOT/apps/client" WEB_HOST="${IOP_WEB_HOST:-0.0.0.0}" WEB_PORT="${IOP_WEB_PORT:-3000}" IOP_CONTROL_PLANE_HTTP_URL="${IOP_CONTROL_PLANE_HTTP_URL:-http://localhost:9080}" -IOP_CONTROL_PLANE_WIRE_URL="${IOP_CONTROL_PLANE_WIRE_URL:-ws://localhost:19080/portal}" +IOP_CONTROL_PLANE_WIRE_URL="${IOP_CONTROL_PLANE_WIRE_URL:-ws://localhost:19080/client}" -cd "$PORTAL_DIR" -echo "[web] dir=$PORTAL_DIR" +cd "$CLIENT_DIR" +echo "[web] dir=$CLIENT_DIR" echo "[web] listen=$WEB_HOST:$WEB_PORT" echo "[web] control_plane_http=$IOP_CONTROL_PLANE_HTTP_URL" echo "[web] control_plane_wire=$IOP_CONTROL_PLANE_WIRE_URL"